From 2b08f29543c5115402d6d963e232493ce0d6d8ca Mon Sep 17 00:00:00 2001 From: Arthur Cinader Date: Thu, 30 Jun 2016 17:04:25 -0700 Subject: [PATCH 1/4] Allow for an optional mask for MatchTemplate_Demo --- .../MatchTemplate_Demo.cpp | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/samples/cpp/tutorial_code/Histograms_Matching/MatchTemplate_Demo.cpp b/samples/cpp/tutorial_code/Histograms_Matching/MatchTemplate_Demo.cpp index 0bf447d2f9..7cd07a5f03 100644 --- a/samples/cpp/tutorial_code/Histograms_Matching/MatchTemplate_Demo.cpp +++ b/samples/cpp/tutorial_code/Histograms_Matching/MatchTemplate_Demo.cpp @@ -13,7 +13,8 @@ using namespace std; using namespace cv; /// Global Variables -Mat img; Mat templ; Mat result; +bool use_mask; +Mat img; Mat templ; Mat mask; Mat result; const char* image_window = "Source Image"; const char* result_window = "Result window"; @@ -31,7 +32,7 @@ int main( int argc, char** argv ) if (argc < 3) { cout << "Not enough parameters" << endl; - cout << "Usage:\n./MatchTemplate_Demo " << endl; + cout << "Usage:\n./MatchTemplate_Demo []" << endl; return -1; } @@ -39,7 +40,12 @@ int main( int argc, char** argv ) img = imread( argv[1], IMREAD_COLOR ); templ = imread( argv[2], IMREAD_COLOR ); - if(img.empty() || templ.empty()) + if(argc > 3) { + use_mask = true; + mask = imread(argv[3], IMREAD_COLOR); + } + + if(img.empty() || templ.empty() || (use_mask && mask.empty())) { cout << "Can't read one of the images" << endl; return -1; @@ -76,7 +82,12 @@ void MatchingMethod( int, void* ) result.create( result_rows, result_cols, CV_32FC1 ); /// Do the Matching and Normalize - matchTemplate( img, templ, result, match_method ); + bool method_accepts_mask = CV_TM_SQDIFF == match_method || match_method == CV_TM_CCORR_NORMED; + if (use_mask && method_accepts_mask) + { matchTemplate( img, templ, result, match_method, mask); } + else + { matchTemplate( img, templ, result, match_method); } + normalize( result, result, 0, 1, NORM_MINMAX, -1, Mat() ); /// Localizing the best match with minMaxLoc From a6ade2b91418cfb2ea7c2e0b729243cb6ec3c8ac Mon Sep 17 00:00:00 2001 From: Arthur Cinader Date: Tue, 5 Jul 2016 12:58:47 -0400 Subject: [PATCH 2/4] Add the mask to the template matching demo documentation. --- .../images/Template_Matching_Mask_Example.jpg | Bin 0 -> 79095 bytes .../template_matching.markdown | 45 +++++++++++++++--- 2 files changed, 38 insertions(+), 7 deletions(-) create mode 100644 doc/tutorials/imgproc/histograms/template_matching/images/Template_Matching_Mask_Example.jpg diff --git a/doc/tutorials/imgproc/histograms/template_matching/images/Template_Matching_Mask_Example.jpg b/doc/tutorials/imgproc/histograms/template_matching/images/Template_Matching_Mask_Example.jpg new file mode 100644 index 0000000000000000000000000000000000000000..711faec3b153f378e367e1a2ea252c41e5173356 GIT binary patch literal 79095 zcmb@t1ytKzwq!NS48!NKaz%RdDd4+k3`3xJ{U-hC_phKv7Pi}~U&GyhaR1Yl!G#m2?PC&0nn zuzj$wama81c#p^h<#q5WtRH)YQwk*)5Kz@BuzuH_+z_U=`NQTNamubJqL=ce&erFL z=yT50!g?_peLLTtsZBzTw?y}7>E5L&DHk;uP8)F1!?zHvhn9{*Oo^V;&euR3URdA5#XY@+c$Zex z@PCr5Z1}&4{(sW^|3UKI5`Y*7Gks*(WB?H0EHNMQwByKr7xHw`tJnk~ySf)GQcLo37>g6wKK5U!yoTHAg6+^YVW3_6 z+3z6u9l&e88Udr7hjmw32^|vH?15$q&}rbJel^q&1S+4h%XT)4hkNMa*ZfIHRcK)* z5{}HEI1ClIP6JIP&V(bXVV?PiBJ;skLi>{g20z-?&G|_rXD!?9&OQ~U4VWj6H1D<3 zs0VIFUh7=vOZ6j9kRzgW8?wO&?l=hmI-~P5Ga#sSp0WQOCFHU5o9?#1?NSAi8_524 zpcFDOtXOTmMpTfCeD$0ALu$OJ#YK3e3!Qp-l*a>CqTn z^b;h02N2Qvi58d-p!_^jm1sq}W`|$RiAWqNJCtF+1Nf1i)!x3m0}L&qW|XfwHmdz9 zL24Gkke?qPRQzpK4d;lL>F}* zTVonQfuq%<%w~bz=6mW)>ihYilc)U#f179rld7PL|8}Mc%<0Ys=%LK2Qk(7oMIPPz zC4#edXfI?M zz`XAO&rnlRH2)A(c+Q`R2tcR}b$~tQ0r#+gMOBfScYrm!ZqdJV>!6~GfZPA@&x&kE zmP-b9TSA|77ge?0o4;L5rT?ct&_FimU-Rb*_CUKZWscFG%gc!JRyFS39)q$6QCkQt z_>;t2b>N=LzWTYqn80X*vLJGLfrry_ued#-jV0>Unv`A)G1 zi4X1o%r3i3skdGKtga%|Pt*Xf9?as^k=A9~X7{Od_z`hOOX5g9T4l=W zQu_{|4$@sm8h3yE-i(l~37)W8fs6)P?bbtNt%Md)iA8q+-Mza;B-N8W;9s&*- zVFs~gZNf~(iZu&ymkZ^GxCMma+t~Nf-bOm8smP%kWa?m^?d&0qCODvG(b8OQoQg|L zu%%M+B+DXwsTJRnF@=q+F=fl&A@zlQ57%=P&aOKMQH`+N1gLxp`PN&yvY+X<927IW zF1{#iN05c=WDEvs{9S>C=d28fNW?3wJAf4Qqb#K8_$IGiBS|uP)(e=!bs?L^@a&)I zwnp|Kzv2<(HeOuba{Ao?41~HzwogD}-xsbG{_ZZF>&%~+6;WlNj~ut;w@BRMt=Cz; zT@2fYVy4?375hI2E5!nW_D&rKrt6hJtC1C!v&XqlndTk$KW zr9y+JqEss8tBP2?&xl*1_K_-Xgz+z~08w3vE6kNCehEJ`A`SZTI=AT99PF?#o=cdj5olk{%$6i|D=PucD-`qq=TyqNo9Hyg zCgqkhPB2}ty=@(9Qkme6vyoqY#<}sUy$=sdwx?J&FuvU`O23A6PGIJYwfAB`Ey1_nQjEt~IzPn(N96 zSy&#> zhJ&Y0PT;i8r6fm`sePwuteXo7J#NpHSXRqwzffDNACkWI+Aer7@+^krH`hz~g$)OZ z=8-%e$+x=;k&HTI-)qt3ti`rMt^fwI^9NV{X zSe141zp1a7bU}sqg9}CvMCg+?XIDhXBMxp5uNQ!1i*Fy5I~uGq?{CJ3%`@q53B19KjH3nxdZIt&p=U| znLGR0N47q#%V{kkkh>=cJ#&<mcLmFZ=U0VX}c+p>JIRPlM1Tq!rf$S{lpHK z8YirnlmvQM<{C&`PLm|!qMeuCC%u=9UrE6i_1z$V#jiRtv1?I6Fid)8DCKR`XAluk zQ?9?zPGN#jbgAh4D49J8@cCrj{J?S@Xr1J6-t$zw?vwd#adnXNjBmd?w_E}ieQHTYTm%m$k? zg#sTQ4)jfki<5bf;IB&U)PByx)_8_WK{!qOMZ$NMb*Hv78ysvK@*4_w=S7!R1lcsZ zfdqQXlCsad60CF4V6+(&#+h7_@?AghttS4KRuUImUHn$H>C!tMDgERf1>4#eWhHh)NWXtgzd~l1h{f=m zUY$&!ZxLfR3I^GbIZ*J?ZK_pzFQ@?6BHcZ@=KNt@J7JNQ$exAAFtW$3uP16aC`jf> zUZH)mGnuOI?76s4`$PYs?KgHC4u$+FClcKBdg-E9Fa0luUk|}#j+K*qLRv}s`7IAz zbYC9GH~LFWO9_&{qBSPxhOgio;D6R_kOfT(7TY?6T&g&)$jAk;p3CCwEQgf5YU<0P zs$hAp?W|dJ#n_v^><)-GVJ-dTF9js2lX@?BZ~rumOBTS>dvyEJJxwL3voihmoTIMU zKMZd5m87s7VC=)@OW&3?3jWlnYh<^g#3hi-PI2U z*9;NTesc{ufp)330fc891mHv_sT+IcfN@B$1Cxil#O=z!P1g(HC?r|3D&J!%GWpm{ zH(cIvs*39gcH-smA>$n&#VJIHLojLCvEc9y;QaN^F4gU$YnA=LuQWG}9lyRyyG;&L z4(UF(->>?Lh2Qn;1tFz>P+TCZfVP-)u7i3Ao4XuuqyIWr8e>!%-p)6+N*?@~l5YXm z-UE0U8(eAz)wWo_<*u4W@)WKcJYLEus#~40^O|Y{+eLly4!z%PE^UTk`@47L#ufH5 zI?EfHyi+dHX8L{y;OP`5m#-6491gMoleJKate5CNUV5B4Dg_t$t>Ur9Vqci@2B)C4 zr74fM-GSHZJ|aHyux5oUES55Qt41YwA2Nh7>CFO%hifb)u(wIoj~^VcEOwWUzJ5=E zjl2W6Iwj;kS!t8ixC7*lPKlfhjJ^!nh4wNF2zQi0m)xiX^nH@|Pz{d~yL>y}61mv_ zTA%K`11PQd2RJ7JvV0QOWwqWNKRIWD=;Z6qK4Eq}$Z%#$KbZdZhScrMcq@VHPp|gt zT?xDNL5hP=)2EMFlTEoq@VZQxhLYa4DwB)EX{b66sw}FXQ65Aur&#mAZfh`vP~$?z zIKh_q2j>jscYrCsF;{rLP6(n&h$>-Zo$1`%;t=IHzL4{}cQGzvxPDneY2K zfq**C5!}sv|Dd_JjYyT@vW#w}7ko%SZPaJN=k?BXCi8Q7@{uWVi4GCD%)qiT`<`wW znr(+X*3B;eJFl0a;ZoYpdPrZAC;ksx#+>&o4_HFcoIEVTQ4M}=A;K=?%ItO1vz#sQ z%P~Xu%fCu78zeVf1?yi7MT-Gonjq`rIRo0*vcdztK|`R5~9v>GUH*xed@34Y&%nfeIaXY=+osW zvY1e;=-&hhKnfQxX)*c2ec{N>WA%4fF`xD(K3xF&={zI;`|!DC}bm9nLOeppt+ z&WZSc?hk}Vm*>xTm-dIQLYd(5%D=1>aRM@rPGGA#$BHhlw*RhNq^tCut?z^kPI| z`B7am-tW%ng`0VHsx)VVMIC@Ec6*T2hie!Yn7l2}fzWvETYEzS zsEzEcdaIP3W_I8Xtu2jge!{NFQqZG(I^6kupG{KafaiEM1_c>YLY@WYTj5VD*Bdp# z(NS?Gd`E*7!ekf4;HsVlU%KD7@rw^9Y^!{vhAehJUlL^eio$-n#CjyNds_2KC#^0a zCCo)Kewf~uax|PnX`uYRg(`0VKe%SI_UCluhZj$iOJI%JQ(PI8uGLT1+xnr4eMRl{ zZuD>0OXOnVIN7Jk!&%@J3>kDt9}9RUY73Zz>V#?2m^akrT9oI>iDae@;HgB^jG7D+ zT^F2Xj<-7qC6wEkpPUgiZ0@iATkcpp736M43?n=$5xEt+CqjY#-@B)ZXHTXSNEdZ{ zSU{TI#=adv(F1UDQ1HoZQi#k0W&|My8zH5Ei>MJ~xhuK;bh-~_751y^upjv$qg5dy zt^+OR)#jCN@=9euitb*2yaVK$WNKtaU#aIU`scOuq!xx$-%Ffs&UIPuSOL&3i$vHUn9K`yyezHnwH-wP#_<>R2@Ei~F4Xo_MvNBYufD$b_q9R#%~w*DbF9Wh~A z{)O#G4}UBhHhp*nc~O+{iv2p{%jLZ`zpNdnIN~u$;g~SjUsxi8TR(%-^OP&CW4N?_ z$ayIk9f{p`5OmoC#UI!MUHMXkcll!<~YKX4DfIR|Rkvuru^a+~kH)tt3$t71jNIdNc7W%lVh@Kw6LmigaAbKc! zjHJ`(oH%$r&C}d{eb%i%^*MM|?ag&KZIBMX^UYp>zRXK;&kW6nLNsOpXSY>QHe7I_ z9Q;IfKbkTf2d#^^E^;&fm67mAo1J8hN3y3Npew%ji6Q^C7(0ZiwTg*;|v0S14D06=D zAWM|4850ga$MGDimJQSz0i{`bx1%}`&ZIJ>+TCH)gBN*J>hB zfSM)BS5N1*df(-DF)VUgN6nEh3pPjFtn8r!yWz0HM_Uxh%;%H@Wn+m(1syscA8;@k zjPzzs3<{Y)&rC+C{-V$VM@qOQecAnHIE>#Hc4UcWUf`CV6nou}LMB(vV{$M-G6+(} zscB?&9E2c}t+F$jL*^eu?jXbA9`TQ2#2$dAJe0>d@6D8-5$uhf)U-=|i;NXK$XtQ1 zR#Z^rM?C2HB;B{P$dZ^_B+{@w^P7kJsC$2OQoO#Z+&ISgHb{Pua%xS|^AS#2|MjCp z8ofdB36az?bN<;$hev}>Gx{MFmW@XlXI1g!ven{~>uFYL7uQOYs6NCC?k6p*^3bL9 zEB7R~V#9p5J3wP@zstd3hqjcTKfN0ZgTRdEAW=~ZssfIh=2oL8y3f52f^cZmZyDPF z#V^9v>Nz_?zvseiq5plHekM>1~RnSu`Qo~>2yVO0$mOE)) zm12Ir=S6`UxcwfFe2Ia&oBUo87K2JhEQ~wsmp0PX&Z#3%Zra&%VfqPc5`(Xgd-O)x z5x+@`HRcm3OfRupJ;)A7t}UxGSRJ*Vu1=t&54zUD{=UkBE1N@cgLY&<9T)#sUm{ye zeq<$>eIfI&qMIRW1hY;YO& z^gyrDn_qEwcj4x-?hQO&xeCsVQcaR%n|zi+l>|N-WKYSVuxjAWVoNfuXr&{Mg`O>e zwDs&)_*GWlk&C;0tjyv_FX4-d#sPe740s%dwIJ|HT2m;~h}yZcCEZPH5H3tU zzIvGOu6BQII~&z!Y!8Mc_OBu8qqAClP+*XY*!?nr)c37Uzc@bQ{8ZxMwmchtvSd#W zi;EC=5y3F+^K#P3Bu#%NJ4t0z@UoH8Tx&1sc%&C)S=fZ8Jcx8i5m-qE+o1K4q=;(8 zmz-l6mc@sHYRp+x-yqYzm!U{yh;!h*bScJM4(kE;*?RnHjy!YYoj<=rPsU#c523A5 zUr`e?kSD0AhOQ}(mgUu$kH?kUSQ~l5jf#(O6Z#4T25<{{fm(;1ZhlYWw&qWcL+|fo zQJwX&hQ60Uqz@Y&d;55fq|v|lk>62(-3frY$P+>eB;NcReA^Dx&u6Q3mGry8|T{XWsA|=mpjR|a(33_)|-Bn zAI-qHI5kYxBFM{a(MBJS0tc4Itt2p2!nzU3-Pr^KYlc=lzjgm0G+P-6{6JKl1&iw* z@7tbu22<2S1T$l-o`a`X4y05}pKcYLGi#+bWahi6a=ErqftvipHD#`rl zS5+TLDHP`RGKE1Gkymzd1+Lr@MTU>}wQZWIR3FP=ABr96rAF<|eo({dR+;EdhGcm2 z#~|lN$bt-K?f{C7UUD;gkAM}T7G;&cZdW9lUiAcLP6qKutfqCfX$pSEUgKCQ0xtqf z9a&5BsXrm@}QWA)S`1j_(+g?}b; zIW}_w*m`@wm%T7jF`$=x%FK-ObdY*YT*c(YK`oR&T4eoXU`!#EHYwoc^MFfdPkWoj z_KplGCqUWP)MwA}^L9&Y`&!T3a^I;`w0?q&$(t-YF}qHpKE2XjKnAGCYQ3j!gmqI+ z<-_w7G}okHKzr3~ih;nCU;ggHgt^^OsaID|gN zzS4{u_YSVY2Zd)5YDWu4$x^{fZ0^q@&_v0VmD(Q_aD-bo$U(8dCE5G)eIJKA&>$cu zV}EFxeb!5Kz*#cNnMtpEhVG>p5 zh2IGyp#RXK{u(Qg&#OiBVc+bQ77RpoF{mZB@-*{q0y8rR?+UlVtC zN#*koovVGj))y*2)50~2wz|xK-RHs63}k((RgOtxk#CBU0AYF;tPHxJ#*lU|Js4kn zTGi94Dl+Gk@@C;UXFDsFOp&sm+5F?H+~dc$ttL+nV#+yc1f>UuO6`QjI6XT^Y003q zhw+T+GGzW7UR9A(@rqd5VIX=(Lvr7cWkrodzJ}`Z&oFmCYv%?Ckps!3Kn@Q|0%1+z zZgmHF8ZAB*e6BZ(zGc7JE5)se!(^m+Gd643ng1N$X3xK&LrHjNu1~|hcVuyOOn%N2 z9;7oUCv{+;-xVxfSl&-vm{bbP{WEzi5&t8FcPoM1O)z@pCjVYw8&9t*AY?F-5KO0R*2_S zoyc_GXc4e(gs$%qvv5nwwZWBLCMxf3jf{`h68(U^Xxu%iip+YL%f2wna9q>~r4%Bug@e*-+&?2W_R$Zu9;*mk)U~D5YG%(|pbaNsk=7t=<9| zna2~jA0E|6JHPC}_geH$w##83<#>;aHY_#}vs?_D0osDqn61*=us|nSkZn}fj6dX3 zFl4$J)VF(biiL<*5xx6nd zgi@l#4h~(E5j_7e%GV4X=)U90!0reJZJcy5w(mf zl4QfL5r%PZ*GtpTBuM4dx4>-2$@wJah;% zhjgESR_zmMzYrYZRsHB3*PC$gJ#NprQVFf2g~jaCWSAK6DN%8oK9oviy2iT94LiG8 zpgqNP(_MG*WX>!!`!ddi8$dqO@5bPeqC^R}dH^LQ++|fftxuGAO%3^My4R&%pTQ&* zm)SrXTCSmBs3<>LDz40F$3&{0`*mP^K=SLa?KLZbejkCU7xRbnPv|9D-U_MRZinSJ z^#WH5egm!&A;g(Uu>E>0tnMdyR*51P_djxE+0^T>|G@e|^3GgEXMy6ErpAZM*PP^7 zoKCk*6&&R-<>rPhZo@4Bq0ncfD3g<4g&|3xM6v4Oob?S@d~J&vwHm!;fFH0sDRJ!) z1Fj6EKMn!Ii_=qPGq9}l42|LCtV=irdDVzh`4-faN_1GBASW_~JYiM;Nn=H!qH|4nulRwLX6}SU zk8z%1i6`>qGjln|a!2n($1H$Z`G`FF2GbMNPC&NliVwX(LMC*0W536(s%Q6R$Wdnz z(EoyHU!(nSUhz_NAg?a6ckK#xIVk@VU?N3cpWXsBDDcHcS^tu^>bHu9#l%WAoM z%Lfxc7^~->`M&_h|MEvn0AYd)1rI{|Ag{C`LuwTOEsJXQQs9r)qEVpEWfx+hq~Xoq zh?-zLzSgCH$D7$frVFUsx0(Jai#fV^&S|iLwi~Mh!7GCEF{?+dlD9@P?@`~%CW;K8 ziz3zTb)zz;_@g9VGy{Zn;Ji+v2Kxp2H%3y{wzMWjRM5!`vJWyBq#FnfAVI@&k7sT~ z=Nq3wgxV=+IVstWK=%TK{F&nfMUBm!OO)DAOE-H@&`-sC@x4v~E#%JmceMDf!S~ud zXA{Uyl5WHm!FEXJs&lofhz1wB6<@~iQvAZtA_YTIAibW4Oij6`{iCqcr)sNA&!@u& zZ9q6wzr{dx!A4acgSED)l2vXAKj=J;mwtSgaM6BVT%6<`v#7Z<8kFzR`Vh}VHsfn5 z+3t9uaHA{flf6Mo4<$^-O(#WjKU@7%OwLaD#Wu?X*P=?3+{*ax*Frw69y&{Y9o=o6 zU7i{f>>JIj$q|JPGDT_Otw$5DqLOHd`9 zGaI&;nV+h4LecU-5Ri^E8V$aMV=Gm2u%0|gKnp%140Q^-&-dK3+p<&sWSN8HX&wWm z9!+~)x6|7{Hjzou0r6bix_t%lfP>Wb*H`SgKRCh(DqcrrJ_O`t-Qc<2@c6IS4i}nV zx0tX#QB2ltn}t2~4#RQ)(}@En=i5j1p{prU_iWo_f8%|TcQyP|)&=KxO`Q}=&PO#T z<|g)GsdTj2tRBALKDkLVR*`wngRw8k%aynqns37vuzm>%Cfx3J_6p00-Afdi=IL`b z0BDD%BZ=E$EpTZ*iVj=x@0A>HzvXQvv^^f(g5$7q8;&VwzVOkE@Y?Yd++)tlhHdD$ ze-;-xcrDOFNHwTWwbbHTdcEVJ#qab+OG|hq%)52gc0=eqkeu} zvodvW{yb*L!rOi6(z?7685#5R80)u4%R5$>n5tGW|1I5o)D;fPi z5@x@vk$u&yd`)%8W#dM{P>Urg+Fbg2lGqqnVdJ?pz&23`wr3mMl|0RFD&m?YcW$@7 zO)8(;*wATO>P4t}xMz;UXC zU|zigFywci;rnHI6#VxRO#Zh7xtnA~o$0QBk_}<;kRGjoGsN5hN=DTkG6iNrPuefU zu3uQqB(Bh&q<{9Gt=vvZeDRFsCL#S=_`bo@#};#hW_#=Wvklu-H#oUP3CH-=2lB|Z zr%NI|s1IdF6Fb>HJ|t~I0U=@4vHrWhN zUty^ycT+UM+VdKqLH4@DJxkrYWJhb4R*2OZt(yhk3I@Le?YfovY^;?(bfrgdWx|`` zqNBiYzJN9Gx8aVRq8FJ$gaf{6@&@;4lT-zU@*$=WCe0j{L~+}~(OzcO^4}CcVe6&E zN{8=@T(d}zHxt?ib>`i}ZaRF5r|rr6w_)4MGeZTgBs4G0g0)Y}LDb1n&Q%--3b!Oi zL1zZTZ(fYH2;~!3mrK2@%~oTb5%qm+uQ1m%K$JkZR8rP7rs8vU^=k0Z*@psbamLBH z=K6JWB7+t)h4-TyKq7<6P?n&)bD3-Fhb3A4UtEcsYL`E0>AyMRd*s4d{YUzJx6A80 zfRi}fu8>akPq_UT9YF^0_<~B%3)+w=P3xgEjaZZLi~Q=`7VO> zJRnih^*vL0qPO?h-oupJZ!rqpM*8InIUWV^8b;r;gB?V$IKJ=;fA|Gg0w=|cO=Ldi z<@+Ot*5{50QTt_1xcT}a@)h+ zw#!dHc;%7ne9c@D6w0qIVI8rbcrC;ZGUkD}IIbu(-T~}X+{#T3oK7@3)Si2;&Y-L8 z(-(i2K~4Kfdf9DO`b(B0$W&!45{_M0qer~#PFimmiCg)O5Yl%58)@@Z^MZKm>ju$+ z_@G-^WD1tlU{3+F5}CVQL8tP~^PObZwAA}%uSP5ts6`mF66Nq*)D8hXgQckh(&7jP zgt%heY>vUKfK9y|u_>Q!qQR6%rK6cwM~cL%ie|b@T>^!$Vt!`8@1Rc);^IPB0`vP* z@ll6}a1EWgk8pk#Sr_G1o48ue}1C0{DKO^ zN4d!+@EukcS#apv)0HcZSzPLTLp4Bx9Du;zqJMFDZ@J2EirPFL%~v=8*2^EU^q6j7 zuv)84iGQ3JX?rShQZwY3^6ZxbnB)(>9pENXb@E8$%H7wD^1iKIxbgJSvwf}cXSs_b z(OEEyqE5l0YZI<#;oYYrQeG`iWtrv2E?Sdkzt~k*ovr&KO91@TH{x*l*1ysu;m`pt!Gh3bFcHjaHs0BL^RW? zSjB+?aw$^zqwkezA?Ld=MgPeC5Es0V;Wx_POF*i)mt%+b`Y3Oel9gR@PKG@!DP`*E z-6xi_FQ9$KF*piw)lKAZlZ*j06e;W}gv}u+53E<>C9(iV1)4x&z>FxCYzc z{=)SYkXf!_e46jubywx;OGn;_c_X{&-~M$Zx~K;*oB8$L@lGnnoz?C_xF)GjV-<{ zjX779m4#g`2_o-3fDw-g09*iVJ#ku*KMxrmXeC@UySfyX53r`l5z$izFLa}-Afs!K zKz-SlfbT!h$*s^w6Vo#XnQxvRKWInV8lfvdXZ`1mUdUl&b08mu1tyC!&&*-RW6DMR ziLEEhQkNbWlFPz+7Go1^r0Xxij^GMjAGI18RqnPzSk`+D%w!2bZFSa)4^k4LDS0z9 zd4ZTF&8S1vuZ-`$tsw{1UD+{I{AN0>f_Ro;k5Y0%Y8f=5d`?~kD@ss0@?54jS>@gV za+W*=t#>WJt9DS)MBO$6Y4F$&b@#Y_viecbkYr3Xxxopq$}T5tLXGtfKzFc~22D%G zu=1<7Su*{c`=S}S{cb?qO|$)!X)8XVjeSWKWQ))3ywR ziK%q1J{q}$)k5v)4;pB13QRthQT83+SQz6A8F(w=5^#MWFi5%skRiKmA-hcH7Aoeb zcc_**zu2tm#!rgF^nO2YZ%5+UrpMU~oZ0=^vvSJVW?+R}W%MTjS1*6CU2=jUs5!XN z4)|jxvqNj(IXCTB$(K>&EA{7v_uj{0&9nmf%GvT1(7X0Uhp6mm{lI|yzLQU=={tag z8Zvgb2b3wDSX>fsEp*BYyf)Yl%MS6Bd%KOV1>ZgqZhpNGqA~3pOiB&Zzf~E}93_J=6$)Y`lm_;)#iJ_ zQcB1-sRC8zsE$u!IT}3ytx_2IIe4^5K6s#_Tg&~b>+E-kvZImQ&Z>z(Ats-YMjFcB z6d$@a>@ zT&sk5@;?ozfGo}8f7^hXCPi-1d5!_4^Q6-P6Ah&OL8q5boZ$H;mtCg|?aqP_UC?VA zOVcdd+0TI4Sfgf-c87LD8TQ{IyE%JWPjni3A+UlQl(LT=XY|Z|f2GP85qe`=ua-yo z=IDi&4^r%R7qqXA49(e1B|@%ECih_1?ZozWp@B?~`;5PtL)Wm8^IJlwXkOEM)_BW^I;Wb&ugw=JeONKOVu|m zJ8>jqTWcUIP8y36iP|BYETGd$Xmw4ukS~dp(e&4&m0OP=$etyahoX8@$%_4tg)Uwx zk;<=s^OiLJXn!ev;<#V*q=^-pAFy@N<%J;WXzp@uYwV2g`&6LLpH2!~(_m2TDOUBGJP z(9R*JHG5Z%AJ6R`9c{T3S|7SAaI0$Rcn4^axxCf+X}s3_*|p1bhHXl^A8N5@+93a; z$*4xnQ<8u&t--sz2A4i2&H%e~bi#-VoQPyVdxOTk!P zOzoL;o8qZui7WTglG>xuy;>$=8tMq4r3^i`w*ABoA2Tt&O*c)=HD}L}?hQzmj@*LgG|oCcTnM#F z@QeZNKEmusmPXLHOb`>NQp}brs(jLpQ)P-B)Y+Qad3&WRpB1@i(W_CjR&;5Rxmc)i zKLbg+xXtwZmEDWt@zX0rVEm73>KR7ux@>-xpPO2iiw*e0vg+5=S-}++OM8-@Y#A4J z#6x0*%rZdC5nlj<-fjj(V`b?JC+-RGGv_3Z zbtkZrJ5pz=v#2wZ>+MQ+OOuUTN%ucqH6~WM{DRk9GwFmA=j9 zn}NMHeFO32rBy+4$KKDj_8q@m=Tol~$hvmRIhEK@cV6BGuG!Kga1Zd<)p0%MC!aaS z{}qai=U6~K=I_ZeY|q<%gYGCd&-s#LZt`_b+Cm=I;E_j{K!UMMW~~qjG*)I9Ssps= zc^(^65-wZpRn*Na{#@gbrZK&SzZzeLB(VVOj2#7RuHBz$hx^x}@)iOvF7R zhnL~*=%H+qy{s;YzEF^kGrgB2K`P=c;@w+h?JhYU!QQGu*d1U*1Gdf>9mScm(OCzW z-NDIZ#O!B-MOsPnDsf^G!fS7jMqTH^lxJHB?1^DlITgapMfo#QHs!_@EH~J=h{=#A{M=%*v?@ojE9>;9N;f&-3Crj|`SGP?{)q*#(au;80 z$~vJa*g9&*y|Xs}1g|}h?tQ`7Bc;Tr)jJ=T++lB`_1ep*;0`eU{RD~-hmr0acl*X< zE>$NrR2-zMC$Y7pIA`g9x++V0Uo9WgJj0jDQpZLU$L8}p;B^rGQd?>PT zc`_|*=hm1kPZSbpS)_5hL{4j%qvvCBZMQWTwR#9dB!bOuSxZ-uCBB~J&flVlma5hH z#STG?KaLnX9zNXHi8E=Q?NWSaywJXqZnoTaZp;)fMS@6~)BOG5#cuoKG`y>;PuDQ^ zTD+HGuYYO@*rwpO78Pu70`Aw!1kdv~Oi}xN$z~b=$#z|x3Xz58ASqojyLA(^PJRa% zMEVp>LHvQDN8e4${_#$-QuaUn+gV(*c*xD6{9M@}Xs=e5pGyQ}2W~!PU(X#pe0&=R z`i?>QFv|LsX-MO|TiA{c=MQPu<()K#>-&v;BwbK=*ltO`j+`9jm=SN}S5Z-|XZp_M z?+b$H^?qbA0<|@xj<2SUsWL|crg*V#_G@r@{*1u|Zx`%;>ao=E>dQq@sd-@H8whgW zZMpIuGUo_EUNY#z~M5rj^uY~_^l;ZrTa{IKenJfmde9G!3x1*lSEyg zdq!qCpoI9A?>L=#U}I#o@5%7V2yi&IJ>1>)t8wQ=x;Ly;fOYF&dH(bH7mLn58<*Y} z1+quoK&;!ZAGBvRt?NVrGMF%M0fH?C-1dce4WqaOO9zLe5K+|>G4wRr}olZ zWM!bILEA*fPiwzo*9;+APv3(D%e74+nsN=|@~Sv#!YZDK5}q8_Ex}SptL-MZ`(Ow{U z+mS8t)=;+Z3+Eet4=lQ|(?2erqZeAXaN=yeD9mZl&~eNmu3egr?|z@buFgRgD0jh*Fo!wXLxjQ@-TDZ&rCsa7Y^``dvbF}ZgdtOb|$lRc-DXeS|zMiNp(cR9_=iZxug->3-=B5Qg(@-)&KR(&IPnh=W+uIom_;COIg;iCt=cdOq616k)(}`k zjXCAIDn3SLV&=kZGAE)YN_%*wVR8S=KflPNExU8}-Q+vhLHnXV*WQ25Z{?_Lz@`{O z=shYidwJ-ZCdZ9$XELOgGzI@H57K5#xn{<_qdpjVFn`HY#<0#7RA{;)ttS;*K;7d) zWio|vpjFZ8R>+L08-2v9)_J~$YCcofJg+vmwD_cJwtt2nPNfs|wO#FLgIQC{`#HJV zuN}^;D*b-O4#^nLoo4%lKM-5%Ng%UrWDvACJ?;M8AYRq_PJ8LhZ z{avQ}=|zHycmr_q(z$TBWlHf}KU(AqtOmy>fRo@%rb-EOyaoiRAzG`d)h@&%QS~l? z#~4Ky_!^mtz)`MA=XE9%7t*u-6JiB>>M*>qnbuZ{n*?-0Y61;iE46Ot(qisi-k*uv zIQQP0Y4v8J*v#w4c|4~|J&$XmBjY-k8!f3T zdlg7#swcF;V(g`huhE_(Qb_S9(gUX=zy_ z(2M0A4qslHTvGG^c3(shu>sr)CV;wighwep4t#(xNl}m`VxQW5yK^!4(~2K?i3aN- z3o3`Ul;-@Ny;=_=S0f=9bdISd{R`&!VW6+IedYCGX4hGAt)|IAe@jr2)~J_JJ@P)< zM-lBqeKTUHqfy4B`-hp=#dPGyuk-VVJlqE}xdsViAwyMPlDLhmB&i1UygG zYrde!O#YG}K%Y|9_?mI90Z}E!RIm99!}*_2D|glB_-M#zX@`>p+%Q*=wo?V>VZpG3TcPI`8iUijL zO9<)NzvnsUne(3W&Y5rK`(wi-44IvM@4eQwuC=b~E=3P}v{r0^$7<01tLOpXr|%TO zHqFN}s1LW@%+2$6m+q$BVxcjm`6foiGQ$HjT=JT;iM^02TGY1Db}R6KuiKN?4U*-z zZgke;(njw#C4a9Iq^LM@{;%3_phZ6iwCG#YdBVT? znQuTM%sL$B;Q@Hmte$De_nJAIs(m^Bk zY5l|(xQ_0`sy4h^ZJa~1vzYO$Mp`aM-_LIvXL-rzS6*%^{Tx@G`zC2G$!QuJ(laT@ zlip+;^ME9^V)yC>Pc=wK_1#K5mW z4;9vFAvNQ{t)!SmqNw-l2Due%ae6ZI#O-{$o4=TQ>E$hGU!q%Hcg|pEDjhSkdY8|8 zeyntaK_5KQJMQu{iW<3Id1A^b*nbwY5?lNg%2VZ1AlFgDQyflc(2KArmqsPER+d1p zl`|dfTfl?NyG%Mq8Ib>6`33o(O4zz#g)|a^T^HFZ$quMv&BV4l6ssayZv#d6SZASO zh6PHf!*+|aeW37*3P+MWLyf?NlU8`$Fpo8-ck&MlYpIg1mCwBy z^;5Y35A_;JuA-vN9j7GWCD01}i6%}6k7K==ybX*?hslLG@hkBzJ)Peh8U-SzjqwXH z&Gjl{+?$2Li@e0oOVhCZ@cJ80$!2&ms`}ss;*A~)c4z{-gmx=6RPwLTkp5a_q~z;(CzA9jL&XC{H4vo^ zBcbJhGM!-{tX^Ofo6R6hMJEXeK00O}UO(2Ru(P~HCD;Gl<@$KGORVt+4aF1}^2xyc zKoAg-g{<8q5rvL-@fg+XzwuL#Kd&O-h|YA(339xaoRGfwcm{$7occ1V`5g5BiM;!? z=BfV@qM4fTxHR;|(((ja1nP{kOe-7w*f zR&d9R;#0;O27od98Ay*hngy>t!FqudhN(UOg^2avjKsE=R&c}~_i~L2{FXQ=qC!ZTn38`q&z|p&71*xkq8L9CV*vpX{iBEa)>e>uV|J!*RExgqF$h zCJdv>U%X^a82V|>6q$=x7Q34M*l$`AQrH_kzugN$$K;8!Q^JBP%kmt9&o>u2CyZp! z)$OFDa5UfX2qDiOelDH6x01~7L)jSXa!Y%S4B|U_Y16$Zyu-q*V<%po;u)N;mtFiX z^NX5ZH}v@N@Ylb1fK+-L9I#gK{XycdGyWa%$+LM~S~wZxFCO?cb_P3vjM;(%Ac?1= zbIV0T5!sct=|Y2)cqqQ-^veHRF znsL^HqfLQJ3O<*Drr_2u;pZk~Za4#tZQ2`+AfOS~+IxAU-wWW`q#5)8c((&3a?{5P z-)rVLMw`Jh0UrcthHK7|W)0#*TkjwtWHcprnx{^Ds~7*-r*{$GK9f*pJH z-U{$5*=W%Ei`V1Vc^BXz%)b>4@YtADgJKk9RXJ!}tumm1wdDRh>2sL_+It z)JNhErfVj%zA(QpP@k16X=lEn<|%NH&MFdgcS;eC?=Kvda1Z7s!u=WQ&qrb%Qm-~e zgOQy#%LY2nBVTo=Zg$bKp*4`{EB&LZ=?ws~x9s&MZr*3gOcs-4kD?1sp8$nY0-l~`HPNGk3kj;C2Ik50?Em^tg(s$lb#$? zxW2_$iUIz0Vc9xE%uNPgwcQ2GQcmoVX;+!~a`$+b(g8KKV7}t^Y$BV0gT4 z^G3%Q=|BIbrTO)&FD9v*d#`V+zF^T^A@o#pnFP=&AY@TU`hg#hGdsGY3`kSN}{xNJ>PBaN7Xpqz)L0VG_W1%7lhR|F&jx_ z^ACGXs&7!q!{@aA{rhlu&Uv^pjF-6?yMZ(fN+X{_e^!c?BT(=!{Wu_6lLrHAqPXZ` zqkr*4get+nl_{K8YI#d#b!A!BkBE-3+BBgKVn1VRa*DD%9yZYWA)eO+JHb__XDE18 z-nULN_>e0orNC#<;*^u7PdS$yJXNx>GEr-pL%0&ARH68+0{9vX7L&s zN2sZ6PQr7hM~`}?g>D!;MVnP)CmD?Z(N2NG`E^hBB8J-dNaClrXgAhC_^6V>M!S7( zt&F0AvL0KJNBeCRU|Q9lA!`GD<^|1cWT$#VIDk%vdpq(J+l}t7S)mw~EkVa4Sp;{q z4Fr23j!I~Moer2(oxxa67Dg#G;79cysZ(6OLzlS?SW^BQG2D16F$#s!c%)?{%ZBm6&!dJWlWA6$9-GZoG)wzU;Et-tBg0tOJ}^UQZ{- z9^mcS-*X;lcui}A(?FZ^@N$sTIv_HWIs~M$R^l@jKF3@-(@h}l%2bR$*$5eq0x8IhK2F{w zN~87A7#B41H(}AB`=z=M8fH=kJdFw+$?j+sWgv;|~=yq~)5uAG67ygx!+?MtGEmOU#cA$nqZI^YRfM`pAZSIVh zXOOR2;j&K0@|Hko`^kdl*8kD2|1%hd1fz$*{JSgK*n(-HDz%>`ir8DHz9AL`$GwLA z*gx=$m@F`zvyffFbdp;&y{B=kmX*W}0a+lyf2so1%JD$NHZK|-x|N9fZrxOiyiEQY zTcs=6T&v}@E|+j-SrZ4}J|!W9ZL@ochQ2}y$L0o9*YuzCLWuw4mUQzD+llmpHsAua zHqBMW)Wo|-pRqS7GhFNLhIfMhzeU=~&p?qR@2FL?ZI`oVp<0tJ6l`VIdgB9`N#*a~ zW4<^VOv6_H3so~dyRE_R5YiNBN;e;!G#{CnXSf-V^##Dyz?I_-qtsPwa^*Zb%zWhD z=Dn)zvV9-le(Y9RUX{p7T1>RWf>j=7m13m<7IEAwhr=XE_})P0*Mrw18U)Ic1MQ#) z7gn_l&FNWaZ=*%W(K^{xm<(f-tflW_iNG2DtwB>^KR1}gjVs*P^U9Z$AZV_o16NGF z?Iz|Vv%I`3Z8p`|{@(d}bG$#4M~GR`mDiK=ch1KM%G(u#F#!j4>!QJwcP>E8BeStmN9ZYrc4(U3qLP~#yZLd#Mnyx!YT^#Ye-j{z$CJw%FQMbwp zjT5w=Q=6&EZ=EX0;-zz0Pk#|cUcuzqe_G^sn^S&?V$W$b`;Got;Da&!)l_q@Hl*22 zqz}$yrc!_3WR`k(&!8^#V>J7bBZ-v(eyoBH9VBcEZd8*JY@vS+iFR&WPP_hL`<xazu(SH&oNhi%^%Vlzz5|T7Ex$FShlb|D$hQn@lB31`MmFO6m*?3TN zw{G1xmaIDh1#>68J$}WV==a_^0*-zyMZ^2P54mM(Gzm_6wUTKQ8>B=R8v+t@*23#K zL4(7)q8OhiLII3cSU!CPJ2Yo`_>*E&*g(o(ymWWnMbOa0*V5@W{n)Rt-SA>R2tq%P z`ld0#aFj|#&}MnvMo;r+VLTgNFN6j*hKGX~p~L4;1|ui$T9v^s&n29o8}u`=Y~D6+ zHDw=aDso&Cfrn4Eu4}rA09Bbh}lUn zgmOAZPlu^^Or(#Hh)+LTo_%z<9sG&(-YVg55Y>8vHIp!6>FwwXz83#UQ8MmHAKq(9=V;&b&IU5W-a-ra1UykWV41_b^D>!RN|9jmVIrq>F_k&*w5E zk1LGrgN*73UC$+U^(h$6sjbx2H*XE5-a2wONQX^q!p1m3*zzuY0PH5xqVzeAF;qF| zUI@0WOYfhz!2kVQ*-%cPO^SSmdNJ}6tuc@tIN^OPV5-D5;gBp+r}pmjrXCylxw@Ma}g$4=& zvAgIOHo&iT^zxROJW60F7OJX^yiBzGF*5Et2dnJLJf+e@_XEi?{wc7~m6Pxj!e8(`0nJ_r)edda zYFf6_lwuvijcvcJFLrE_`y!`!d0EE#wWll>A3xGKJp3@c7=p})OTdvU=nC8)Ac&j; z<9^uEnz3VSOP3?C8h}^kjb^VI&=2860Xc^II30fU0QMJ8mrtLs2JJZ_tvj8gh*C`P zFW4t3mrNG9KrW6|FoY=D7wcI(SEieC4~M(Kwh6uFg*4EY28f%YU-#+amrRXFT8L{Z z_K3b;KXwSO1a5QrZZbG_{iyB^2RQ}yw2H}5{H|dY9{x@*#PvTZ|KCQ1e}4gb;n-3G z)Dns$QNPP!*5`%Jjks&m>Auh^dWn(nV+vS{s9SuCvL zuV5KN;7V-J8?e^2`IP(@hseuxc*U3tOw-MHYhRm?IEu})JF10)^&qd}NalH0e`FS} zKVz_^&;#xK1sRl;=V08Da?aT=f@vffE$cv%^9qcz&irXli|NtZ@>y3|)^nN@rr02{ z%p^v}wVuJ-J^Fy>`A^eC$2JrD0~D#L;qt&!!qL%)5A_^TdnYQ-FZa_&z9%%KHdy}@?KUX82-0GT|06~OV&>6F;l{YUnY5c3au+>4j`fr* z&4Jt5Ne1xoN8u4x>@S}L7NAWE4OfHAp_Z85#iO4aubbj$_cQ}l-dfWnz`6Idld4S_ ze{v>l-jwigtLv;XUN$U2xPR{V^sxCzc%k3E)5O5zh5q7|HK2X0F*Elch)U#K+;uk? z0cTJ`un3!^o)WqG@V%#Hy3LsLz;cEZvVaow=Rn}0c83Yh8h>{3^D3O|DswOYJ|u~E zUZ+oAh!(+l6zI09zHeF;L3)tMz^C_APH2ibE_sLD&^<8pAVfrsVlH5R+e~p#>`dx>s9#i008NK%iu*JnO{oeX|%Wc^T67I2LYeERT#$&u*z@N+ZrWc~3mH-^s# zVr~Q~+c`0LUsKW7?isijxSJU{m{^mq=58EW8Si530>7|n9rq{Yj3+W2y!TCYjZ_sD^tv$Ww3sZ90++CIbiGWAgQJDp2|(xx%Ply}JUV86_uL(9W7C8A@KGgRNi zT2V459g2&bZH1G0Z$|1) z92G`~k_D<1;Z%a&*!x8_*X5%LhAD%p>=;HJ{GAF6yCwPQ%R4-ji0W&l2!(o$syR?_ z^gxAA8#V;{qgkVgH${l~>18tzRq0^cORLF9M>r}8qm;I7S%#=mP46Qx$R0wz)Tkxv zg|tv6rxouDYdb7<7Cu`Hm?mBP-Iws{j4oRFPgx$`5ua`hPA>*gbMxAd_NLnfwwDbs zO#0wt_&NIy?DApLU%c}76>x+h4roJ8mjF{nzlG;;W$UG#yaTw`6UWcACcPf=YD|+D zY46Pr5!w(fy#!Hm;`twkcLA3(r)AHe%>cV@|E)H*UjSP0IIM-Jh5ixTCUs4rRGgqzxP|>Fncl&ev;3j?viC5-h?t>UcAX7gyj- z65jP18MDT zzJVd8P_Uc68rWVnfP*OE=)o9lTaX)&d1sDq^!`b_@&G6j;{(hhH2?kgZ_{SKCX0JYMJlC)VyWUmWUxuo#1xUn5;rA6s!~hex4Oo`{gDBp>xX}Ty zF(acu|KU~hj5A`G&aB(}Wj{!VE2W@^=#@n4#u~5~b`!v|3IO*BaB?2BlCT9H4vYrw z-3l1pE%+Dj8Gz{v0O+V$von4Q!QA_1Gk&v=iNX5hM`VFvH!}{9nDX_SBEEkth#`Nc zwjrq4>R&;AL2v2F2u3M~f@$Wa0-t|nRJf=f2opE`N9aXklMD6sjuCRGUOkE^@?g6+ zb7REyjo3YIg*saF5nmv!7h0O$u2_joJE4dfT}}N*`&^VFYDf z8EU6TdF7A=C|s|xE@3YjDa2}@c%O-&)Pa2{`}>qcfLP22ym>KbuB3@X5_sf!K_k*8 zb1tASiFsWP+4Ch%628nRI`7N6Bw`ln=4vfoJzI*xz*K4H+!#ouuC9;sqg%@4VVG@thL3P&-vkQHmRRFI!U%iHYYJk4cprgaLY`!$&FpMdOam zvG_k%X2I%e!enHK0S;GxX`79C*L8J<+jN)M>nX@MHS=-Dw<_qhLX=U|SPIO`vMl~Z zt7V{o?%iPfhYX(T=+JZ~mn*D}etf_kpboI#lKzVqF)Re*-NTt7gM!gbh>FzpX#e&o zE{9ry7p=^}gGyXP4X85u@8yT9f`*=bMn#`2FV>M#fBdsQYvEITjs7}woYKTA2=(h9 zl-7yfLR1$5LW5D`%&Ddk9Y>zwUE@#-`-u?xEO3WV&6{?*{%C!?yt8n`>WS5tVV14S z<0D$na{;8zpzk6G@ht9)`!x+^bQa=9d=`NxNZNlpLL0-LDS~92cR(B20IqSeaY)$S|m5v*6r#5$PHZ3!B4Kpb} z+&Yl^5QMRe(7VqWnBTu`s^ir2aP7*nxwLt^RkXa(r$2V7wHMS2LXX6}gr~x`nXs27 z6))>1&##9K8Kj6mK~}-5Et6@TS;Z6^?6m8`F!?=-b5lQOKB@vd)OD1!E^-1-S54=; zH|s2sbX2s}7_76!De@5|(!XYt`M?kG_a1}ij-3G^9qQO~^vd_8K#>DZb3}UL>+^O0 z?>tg&CrYp}UbN1c2x6fvj%aybq#AkefYIvN@AnC3TNN$mRM0Pe3Zqk2fBNl4k9^fS z8H?C^Ze0dd&M5Q}GAIyD8~DLml0VMe$+PjnbJM!Y%ra79(uiwB%wQ4DRi{cWMwIR0 zXUB;bAu!N=#x$+kKztWx9%en-xAvf6(chZuJdadPzN}e2P@cvzwm2`!(TRT>NYaj= zpuZ&~VXN!2IpMo?0b*v?;GAdQBZ05GWVP6Ve)pfwAevTJ1|>)4Nd6^7sPsiWQ@s(| zt6s-+#!r zbvN{Nhb@4Z<{79Vql^4E>whe3EP;?Cf_#Rp0QMYEZtRbl%7%WaX}W*&i|xj+V)@j- zvh+b9zFfmBuVlAF@uF75wB06X+LKuw$RLdNR*~2@PZ~>c#tk`w6&1lEN?T31)R|#&`D!mZT z|Fc?|-UODF#VR;3=Ec7y3Mz;!-TVEKGTz8oMydRg4VzN?~My zymmC@db>8Ha)*QM2h7odI#^}F&+9q-z>hy}*F;=;nu_jz76uJ{2?s+kZJF8nUs5{? ztelA92EpBam#!TvM=Io96{Kfmf?CEpBHNzU9pA}$%dk3r%*i!wCGzDCO0z8wzl-zT zD)<;1-`AO{`|+AP`G|=4OEtP-oC}&icCwdF)1dXX=EdjYl~`j^7Pc1hv2w7l;499V z=69T{EV4i~&xp0Ih&_mMqDi}meqajbZ#_h&8QSe8Ay+ipkr2Z4-;arSv2_X-A?De$J9 z?X%TztM&Mir#<;<-TBRfYLu(MBV3x*^O`ZnJ@cr=&|~OJW%gF47PjZg-H>Y2Kh(FQ z<1-4V0vJ)D1IAo5$_=RII#5o>823@ref^_Xl=qSZLR-S`0$O|x4-n%Dn`r4WN<{X< z@U+TW%rzsX>wL!EYk~hnp30uaOGL`;baZPM$nXz$I^!=Mr|M{Ygu@8`lwNAZ zsb%HQlH!?>4Mi&XZ*5XZ#SPc3*ficaKm!2-gEE_>1az>2D23&8;}(#PcG{-|2Cc*= zbp_r-4F(|qlhD5)?n)2*M|S__>e%XNmiAB9l(EHw`l$$yuGn}3OQ$(MJLb}9>&S{Q z?8=nJyi^X`?RQqdUJuWcbI?`j)FFIyw-J}hi{$||e^-yxeSVlEc470vAF$71y8@hP zzZhXxu)R|o{t?H*dv%NbGRV>QKNMg?z`iy!n{5JM5gPMxdkwC~z$cPu1$m&6?~T?` zuEm-YmHDTgqnxJTtgIWmt@ZJRWeTA`-8URAh~u$N+hN_Nwz-bo(m`7$nyS`zs2I^r z{Hv6Kf=YtX}6Nt3x@+=Q-*1?$uy z3vOG*iobZ`rH95X-}M!odn}`lxB7vx^esqoKrnPmN?^=*#8)J#1>)Iigp z;nPChgglG$ClHt$ZK3l|OZX&$xNJb#ZZl_MS| z$26AMqp{8D%>5F2lFgmE_1pP(@dl4$o3jWAAZk{6c2;$^aWNXC{YRtBn6JKd7^uKF zy3eF9VJIh!lF!GWs;ZYJq+}!X?S{@9sUk{I#HK0!izH~*XQXXrn|V@+VL4%M$E_p@ z4;x|tG+KLx4@yhc^Gs>&eo#MxG&y#+zyrD-0qYs9QYV3Z6@%JOd35otjokNUf!gne zLPO~Gg3@Lq#Bi==+u}j4?p?(h>E|Vf!;ixh<#$@(hKm{Rp>e0pjxRU(B8tYP**U^m zsC=!aw{#gc-sH=X^sp~=IpdX39`0wWFAeL1_e8L24Rr^o>(q|1mg@ypvDEc{3-z7j zD(f26IiiVbrSIsFy$`%h26{%TqY-BB2L)sS{y?23i#^7s zp!6>KN)ZxhQ+d?1hlaKz-tW3w#IgZ!A0cNIhls{)Z4sXEePsD z1DJh(2t)Y}@!OUIF{{upc`a-i{^M&cUR3yJ2L38Lf0a1K0;F&>GV|s``tkEJBM?`meqgpZlTv30TJ*XP{E~g#-Izx0)GIZh1+TyGIWf-WW{d469f9K-1GP6 zD3jZTwsJg*#Wq5=oHA1H)YTG4PMR{hztu83HJFE?wgB$W+NlQn;9LU}THg!t`ag5q z%o;5!w&lSy>?UN(G2s*>>J*CGdXk;y6vIqAxSW=`{}{)LH@JFs zP4!S&eZZI?H~G>A6LMsiF%v5R>9k_#ilG&qTHEHvNOjCxO|ZKSsfgI?3y-jo`^Op4 zqqmEAq9dB>-}MIt2HwzcBhpPx_Oz8adh-_Zxy#}|)tkK`r#qa!{WM-&M?`ePa#>pC z5#56&?z8qA0%Xgp(AQBA-PW0NZWR}0`pqeF>#twrOW3|LP1RQ0QX>%R<)j_;U3*tE zxof}_%%hUGh=Id`xZlRm9M#N99WHq*R=$%D(|2As=3bdpJ@kk=Upf;Z&eckh&JLUg z%g@6(B^$`2K*^1V_YR5+%AFn$%_X$|rYJ`A`Lu=?2fwj#&`4hBzrcEE2)?<$hW}0i zLn~5rP?=g#G`#-(IiAz_@ZdA_#rRX+&}O8IHFF`rI}H8FTQO#9jcDB-AtLIKkK#o zcfLmIQxzpE-iZ~z`{FMCK`EZs*mtW)4!-$E>e7!HiFSUgGF>8nw|O|=J%S~_esqJr zHH}~qWNW{bNSeLtdIF7Iy)9)DB`w5HU2f%7y>zTF;tKxfAy9Z0jwlM5!aMrkQ zl{Wt9Y||08IOfz?>-u2U$2|A-)3aq>Z64XzGA7{Uk@0HFmaDcr@3iHaRs=8EdMy4jtVm?Kv4(LkB^lEkmCqa; z`Le#Fp`{#2jdqW_Tql@JR;7!y$CDbXV5;9}-OQnC|6WeBJqXFp4upt92L&shKZZi& z@2w2#PBQu64NFNQAa9SeM67lLxLB0-QvOJmI66wc>5#&|+w32q-`YWRC+}&u`S(c} zp3lhd_%>=vKKa0f>N+PXakoO@==(0;Lhixaq9AThhMi~R3^=7^eQrxY8&=VM6&7Ft zNkoY*moGWLvaT~nLgD8gN&}FCa*(NN`?;vlULcRvftW&Q@^oELk_{KDsp8=0W2yovpR zL}Zt+m56SpYlE=iN$v)4s1@#=1kRmy$geMFi<%bM{VLRCiZyy`Xf3$sr&vCH+?ASO zm@-3t?s0hM<$p4aWz7#5`uaWr&eLi1yU$dk4D9H|J&sRUIB*)d0DOg@pS}Lo(JZ-e zuK;n#L0Cl>efg#?9VSOc7(RE8gfTYvk$P{Gh)^%Y7^e$-u?4GX7e?4fpyJ~4-kthD zGt1Q*!|9w>%bNUv1|U5G&B{#oIqokF=p~hwpy-C*fo2~8yrUUPrVfy7+hE{$K^N9x z9ypQpq3T}VbMPq_aJ5sxsI!=%WsVgs1n)~=C$3US;Mh7R)aRBu@diX4rji3;Xqc^lu06a zc5Z!kX!+G>o{cKK_|s>yARy6>XM}-KVRIHfsGw5N4Wp4|O`H3F-MH%SEUE>&Ss4Y; zW)IN?S_=OdGn5ma-q3@!kfV|G7ScHj4Qo@~n1UmXzj*9bm3?1JUg7zNwr#V_xGY&| zHGlUS^KaaIHSRfWFB3~p7WjFSM{Y1Rt9k!0Q@>b$x#~qpwl&wHU=mrbOU%%>h-ew| zP8Jj>%CbWkmTo*=oY{+Lyh!MIbkM*}s4Y$%;`hu}y;gClT~Q+EJ(z`27}%ey6#W_U zi`BEt0TWO`y-xYjS-IIUyGgp}t~j2$*Sve`ccnaD#>xR^3CY9H#`z0SpRL7rjVZeK zC1LdzCbsJa2(t!pYWAKj72bfqcvMR}l+O@|u1*lAlN$fB;Qqk6UF4u5sYf37Peb$Q zyH3V&wIiij|HCieK4m~z&87f)8=bp~&Wh|Z`09Fme9UC)zz}t0Ye4X;f*R|Ls_qvLjj|-^r?Ppu$O@KzP9nSAKOx=~^^0;ZztHQUc zGx!tVS$<5CV~^IRYvp!O2F>t9x9S%;iFoI1)HY&5$UO~^!Y5HU*v~w&j^!2>yt03>Gy?(b0Hv6o#5A9Ync zK#Qa=@v@f%k{%aVsmn8-=s?>Nt9#Ci7gBz>g30KQZ0xALl)%)ZNfZOky)GWyi9;cwOnr=Rym*}6V7NqkNe{s=xVEFNG>X;D6 zJdrzni9GMw5qt=o`t#w=m(K=)1oXJf);h|-!|*^F8yb!u@bWojNevFNvb0B|G3Cb1 ztWve9w8rK9T#f0Sz2dT>Z)dEV8mM0zNnH`yt;H6nbiq%xAbtt($^V`e`|o$St5hAK zO@t)kTxOW&Bxg2jc=pAohbnmTN*(ll4IY)|X$m&HI+82J(>>tRZNUX!A^{?syCo5P zbhiXHL#(%Y#tV;yqg^_H-pD&{30&zv;5#o63lxjPE(p-|M~Bsan&~$WjyHL6CT?u7 z-w)IQ?w+Coz5{{L!;ni*dE6gk-+y=4<*v~H0g${jM0rme;QCe zl(n+zO}nfa%I{sYirW(Ygs}av^O3+Ki1NrZ94W^8-L$*O;CvSFZR;W9P?sJ`s_(-G zAP2zA+oP9s!ha`N9!3jCJO-RA|-KmJ7DKnYg;c8Zy}k)Ls{(J1d5K+8`Nl){f2szu4ib9iljs z0VKthS#lzG7gZ#St()vv$tP5Cak7ildMQ<^P5e*NUeU~JJJt)wt(J#o#ekGkNENzBu>Ko>55S9E^#b}gD{K>PB#UsX6`L=?a`0lT(d~309d>?OGjJ#^q5V*LU zdH|2ok^e=n9U*ub&O|r;n2^8)s1RM!uNDS5cc^hP_e4KV7hUEnbhdpgE!s-bgeBHA zN%GIXnsBPKndN_HSr7B3=a8q}I=tNUP`tDyvUBohqD*Qzn);F$^46G}V(NU0$1qLi zo1u-iUrGX)y)mNKMO`%_LeZxj1N!~}BwJVQAVi%DB?-EOl}!G{dn|ZP{b0z?Hj6Y+ z{Zh+UzvemX*24ftPSZKnm*AgNX>#&cU+oszLuN^B()BlFD4HHEOW5$I?oguK`CkOe zQ5);FRQ@z)mS@BhIg)*`sj?^kIrcSPR+kFFRtk2#b9}4$tF>2*KnC^eF~w}QV~cHK zV6%zm>ypXYf?_!fHw7_wM#2PrE+x0x8%y|p$Xf-u#lwN&esb*g(1)CD}$LcX!z@WdD-7dpopws>pQ$`tQ6CM#au+G&zh#(=422>aJ_9x)s9 zg4LXV@NDch;}!zmzU><|Q>f%=(llKVJYgef{TxYMUj^=$i=97M51;+yIm^8`tY8GcxcS-i0Z z5GZTC3jmbe287i|4#~0xxXw470^d10!2^Z`)|XMzzoQ(t0D?ruKZrp4zmMtv?}-1u z|Ml-gBF+~|tAYXy*Rm|L1u@gcM}_#B9yPPpv@u;W{T0hTL5*wucu>vj90r^Bmx-iaM)7-Le`FgDvDVaTV*xMWJlytCo+EK%HL`?6_y z&9^isk%V0g*-}q0ejcLRR*)M1A?~0zL{2$W&eWNrKr8~343};!#^z0UcaqPL1x#&a zI5Bt3+Us#EtYUPV^-;HE8I4N~UIcJ0>?|jMo_wG!1|L+MiA%W_^s#6m>^6l1_BWOD zr?8_AzU51%xZoDWWKY+p4T=@!TrnqYFH1R%vlk}5-WKuh;K#SMEBT8T9MI`j<#^#& zxR`;?6xh8`v%eU2xKoemDBOf35WQ1)@u+aKHKe;etL{VACn)dac_?zWrF7pBSV$!_QTE}kQkCXS4Q>0D}$ zGK%(c9l=J)DlTe=Z4?_{6c2h`CK|M2demsU`T3#_d!wc4dwIMsXn&o-S$EqMo7~)= zZ^k^4%kRZ4HzEe(j4sOIR@mvct4ucf>syHha7bq~I^G4KfRs|bxs3y;oJdGm;5cSqwSJ8x~p z=@*Y=(^gnOo+o>&3$3PRi&l6<7_(RW^XcecuZEW1BeeQ0wW*bMe2~-bgv{wxokB0t zo+K$uSLqxxd%RaF?nn{5dcEuN{`XQN+fNlejo0CIMM`G_(F(7kj?(wqbZd9q_ldtK z+#N5F{M1BDXwl=nM>rz-hAM=5ZR}(ql)`^CZedlSInDa^?aCiZHo1F_{+WoTPxX4P z=af(0ADr1y>e?z`zLzh(#M9Nvq=}O6loWW1EMdaL#CvFdVhAIB)ZfoRT1eubY=)?K z)g0$a?WpnE8>23#xGY@%>J$F7*RqQJC*gTeJv+Qv+gg4I@!g25u-1I3GwZkeZ{x8J zSMFkkc=o4`9!+O8lj&PLBVFJp`*T6w)XrknaZbE}Bxz8oY;`a@Z z0p5JCKdL}0pB`0rzA*zGT-li{+|;atKq6*e;3oPRVn4uItv4$gsgF9zi@b??9QGAl z7_~m+DTj(*X_h@58C+lcdezCo{$hDA2Nf+@I2~{ppqbZFSKp++t0P#&gJWGA^>uOy z$M3iq{b^qB|9O#zi%##)hr4VQQ&wtlb9A|M$y4=sDJ9vaR=Ma836O~H?KD2AA%Vx; z-Vio-TPJ<{1xI12-LD)qI{BBCbIV7w-Gv8$nY zk56dCr!DfQ5!Z5BZnT;-sJu=xjF+K?h9y%DOc^gQEkS55)%OR~k}^8slPpaf@@xQg ziK|&W-4}}r$=c)Oo8~d5i_+;6)l9YwoSz5??Q&JVGxgcFk{`shh-nV;oD&5p%FgZ=~A#NS*$)jhJQ{MjmMlQ#eo2$B6Ve!u^X5yRl zi_fIz*Hd^|bUtvc&v1LYSknIDXP;JRYShti+-ERVv}AJ}u8SigEj${mTjj5d-H7}7 z008i15C?H2+QTFj(bnegBvAUQ33MA}{fOdVPe$8MCm=KUXl>;7eJPO|LD)7d%^KVG zdC)IA!-jM(f8A^5u&`qHviaRJrwVe(kkO|H%Ef0-e-r;029dtPH(S9012=7?cFz@Y zQs&;k0tp~QJ5sjc!%>VHNyd8`><$dp#&v5Cf1fT2wCJ-eP2I^Fr|RkFjFz1s-P);l zS9JyUZ9jy{ec8mbLw%*EwwpZSp_t^(+fYkLMh>Kn|O0!&;sa0@Q2EyFPD*B8G~&GvY1}f{ZHpeV*X2 zr!E$mlDQTB#UsA0E{Nt=DH(X=x4~gD)yRzt;RDe4KXGT{(h10`B%RY-$6x7(37iOxJg|HX>nJ z`kSV*q`}d11~TS0__;=jm=BMzWmy`wdy<9}s+r1Y3F*PO=Z^SwnJ?th#D+2umW?Opm zLSgDd{1tw~YY`%Umn@}*+O@Ak(5%lhJAxgezWePXjfdjA8vAn*eH6iO0`asip4zTM zo!*YlM+WXo*Dh8bLp?gU3moOLVm?%>Kdw>Un&Zc7*;B%<10!%7mkI5#{Bgi1$8+n~ z?Oa1fy5{?iv)M%(@J9y=*jAk+7ZH4u7`y}DZR{ApX2 zS|p`SXIG9R-mULedm{9m6s3X^ndd=2d#s9MpkAFt=8_fH5-S?S#vv6x5wrwt$uf+@ zdW@tT)4ExoK4uuAmb+{5r6+j3_BDoS1<-b{z($>&A@_v>&HwPHZ4#SyyM8!)%26D- z>N4u^rrr}Hvq_~DnRZH(nW`;WXFoYao3xP_#tmXy4~_f!;Xo{_GeqAfdGzGBYYej6 zksPJqZXqSM+4QX~qn`2mkHj3JI>zlZlDLN+VG>dmNSrFIBsBCjsyN2q1jgIzDikHz zqm#JPK_hF7eP~Qp zrH|SRt_W7r$y(ODhi`r)%W&nSY$Qc4_8;qd*M#E9K$Jf0 zit$>XGM#FAI+LSW`-yP&7ej3eg=KRzUlZq^7(u{~%+~x@jxoOK*FMx~G2L_na~%eO z*cH_Z!#z!zn2Ns7Lanf37 z>5Eg23oX(h7tFoLtv0BfCVoHY;brV9`JrY`~Vmkj>58&}nJi`mG=08<-=-)hm(2oT&o ze{5&Wl$S(74Y$rNeE$dEH+!0hYqn2Q?rgPmWZ-|0_LgB$wQbulhzN=>5~6gMbTd<< zd#U6u!J-64m~ju9#-WQyz*{nymO;wq^I}j89v_E^>*mLnX1BcJJxUF;EilIL`33p0 z;d|wiF?HxOS42EN*J*lsym7|VB%9_!kv8q+=t}=sN$EAH*reMc`&q>c7KRqg6s&~t z*q5Yh1yMt5HgEP?1JVojZY=9x^2B`$cTmRQ4;|!DPcINcZ0CiA2jU(^NPvALL8=20jVSfC8?1R=ceVe|*x!F|4gvjNQ-{lnSyl53BGrLH?vlCW z(DcD_v#IxWhAUdG68&+}ebfah6aH_>KPiM7)Qq-A-->m^BCE4D_k|Oh7uWk)F$;9n zpJJd;61<5Hp)Xt(CEoAPdh4iiF!Gwq0zG!DyWQw~-z)Ba@-&aGBaHD>ikBXVa45Ep>Q9Z{kaM5 zUhH8t&@mHE46V**AlP%QG?GO((0bVJ@{G{D6X?|AbNbeMd<1F&^*IDO!bQkU)3(5m zOIQhm<9?Vq2qf{Qz~rx0UwJ=r8*+KcPpZlvIYQ4YeBbG2m8D|$%$s}UrVHwJaDBp5 zog`3vayYE;j45wfmh3+9&zCw~N6wXYe3(wJr~{3btvg%hd#kRpR<(@IrGh55K#`!2f z1-9#^a++eDS(7Y*Y*P$mCat`VD3vSVdCK?uhy8tmrlJo74lZrb{;t%o8YT7~KmF#y zrgzYF@T1o+VN|HrT$#G#HYg#oEd6T=pQ_Xr4s&`oL9^O%k>&%Z?b}ujVIN4QxHg7( zJGzd>Rbq;nBUgTf4S|HY3A=gU^NGOjQMYqzKVpemZ;}b#U1cTF^NlJhGk+~=3HH~h#6a_PUnod_f}WzSyR*g%Iy%5()pEGBNox zy`G&;PS9cp7~`LI930+TOf4a>-dI6DuBJ}!Y$-H|!#+;S28C2e#pM6s9+o#2QCPmo zL#!zn>%%>@;&gnJtS1$|gX+JP^b7E2SIq7*b*C@^8j#>*%UDvW&Fm{}REv^vm!HXHB5QG#MYJy}!KsykG_-q- zH%-a89uZn?4bl5>WF-7qqrNr6`a61-Vq2cakB%Bmx0!{X*oO2j_T7^oZySb8!k3nE z84;uV$sXPoP8!Ek$`|o!>Bp-4emXSlP1(@IyOOJT? zrio)GGM17}iWk_;e!(?k5JBn)tZAE7vq_Df-?2pdzfvrVKD`)PNXUyNq;H`DQtXo+ z^1i*@5T)BIFTuXd%H5K2wHC-1qMZ1E!{Nw0hQY;HB5#NoYHd4APrP`fwEX#JpHD5f z2x02a{96aE7^0mysGyk-C&43@#T;@f#q2KsT7LQ| z#Ru+1pyL1haA_lAzJWC|P2zMiSl8^lHZDz>QW`DVoC2yqP9cZO`rVno76pSi>-qg{ z@YzXrkH|`n^hyeSSw6hX*%yT0t(#6tA5kXMN1~yHm!MypALPfd~A5+q* zC;1Fy3-Jsk>G9Qck{ok8NIiep$lecZSE3cjB{3}rTRWcwYp$dwNrK>ueNNootK&++ z$D8V{Q4y*o^CFsp_4QtkzosJS*|0;7*a~}Hu755Y^{Czd#m2oORZ+!suuFbUKdd`d z89L4Ro5|rMOGA=VA$Xtc2gACAO>-eKB3>??vsJMNk0MBS3y#dSA=A~t^9ippZNPdj zv#ix3Lo0f{q2%)+L2#S{>CRwhUFq(i_+(>si0J#^uUUCag}~7VP3lnI)o7i z6`W@Ahi1biH+Lept=ZnbIMDh72l_rdJds&kIt&h5HUy(pguuvlk0;kA<$VQQ3(Y4w zwDaWg9yvpfE%}aNf$*wcttHHp4W5M87Nw^ym|+#z4{53}Nx!Q;W>~+i#T_RXW^Q1aY1WZc@e0qT9P7>K_ejuM zI1fRsFTi)=+RI>6#Ks+ls^T+z_1aHzKG&O{Xz<5erm;wAiq+|iYZs+_k;CDx`4RxQ z3S)`~0q>_y{KAm#h9;af*7(Z~Kel3WHy*6}!;kweeRvtT{Kpm1P4v(EB>NC2ULdGM zg{!OB-Yn38=)u0#F6Mro7^;qF?VHT{17xiUuWh3bXZWsgyLxJWzx&OlGWqGAV zv<{6@WOKF5zLaU3P=HZqdt|xR54@rHVH4H2I`+tp$4WJz&v|)FxC70-uZj6y)O2q zQU$&3o{#(9zfiI!mHFkEwEI9*K~JQYn#{frmAXw_werf_t-!&!6e~QrWS+H%90Yw0 zYg4Efk>rJ4bfhmda><5QMkY1oaV{9r-RwJgn7rGFkYH5+9A&=VJc*KS^bUP zkEC!}zK6PlpH#bXu_ErQ!usU$D+okR9rA)H1$TGUoGIk#y>bQDlfYs3^@_MbI{L!I zoLkAx!`R0AZt_L*l$V+>7162e&RcBGfr_j+Jq>1X0W$oQGfiWXM=>=expbWw&+2pv zY*y3AEOe`W67*0t9VCA~Kt!bmN4e=>>q|;w97@9Hp)#dk>pIByiW``7&PR5iWsZ~R zXA0a$RK>M-Z!1Y#&YUl$yWQ7|7qI9H2*KEjY*vIiJD;h4esA21?AW#|`ivcpB5C~; z>B_FFE>PN~sa{Xu0RQB6!Fa6rVbQ%_n>CI^a3nDKk}Rln=snxu#CyJ^+~f1MvbA%s zrxAp`fx9wiMMgh^a}-=oPy}>J&r$>^jOk}MiNjZ#uk&ekmiXNkgOc?p`iBF}sqL+l zf19PUu{^S4;(j`&S(Equ=8yK{-{1+FkoJ@JU72kahOa6+}$VjC_W!*LS> zNe5APFmW*F0)>vH5{X9iHbA>BW>F)TrA9Mt-!9J&fw6x}4jgo5*ZT74OcMPTDvFE8 z`7120=x_(M?*9dl*iBIEA(Nwv><1UJ64lY8AA9H9SS-&sPW%p<&Q9(46qLbV$`9Cy z9p*12?^!{Scu0jj{>Iep0a_cXd>5u>K@X;|>jFuo5x>mz&k!9a*iMYK`!@+Gy4)?W zmKXva1Ygsr&-#gw3pP|qS!CPfdyT~q%^?&^_2UQi@KjG2?y=+{j+1RaQuZ>SC~Fun z#eh_mNQL0!stOWfG511A|7P^ExAo{E+-j;1%5H*tuHb#FkIa9=%ry?HxU$GPAV)QPF>xgkulk zmpadynWlEVjXQ;mF#x-im?54SPJG3aw}Z}{O*gOBzF*nwjlKGC*D#NMu2x3()ZTLO z?YOA_pfNx_fP>m-h*zSj+P+J)d2tqtmwwbgINA`e_eFslp)x%%q+dap` zXl|beW$f_m6n%+`-H~1N_w%*{)7>OI2RwG*pf@9l8PXd9p-g~mlWuLo!Zjpq2_509 zaHoR`+1IB*0Oh#x(i+}+i%C^ibKna@jKf3l=p6-uWF^{Ji-8oNr2{^ z3KZ>p0(X!aPj=`>T>yxg(q@GZW;ESbIk$$3ET|Hs!UZ?LtBHk_>EXV1Bw)z7aQxR} z<{@c4x4Mfo`$fRoT1Vm|u5X8qtUlJ{Fedw_7EtwQYa=hlzghFpBpvz z#kz(d3a1{C<#HRRiR2$9d}0pN+hr3280@#)Lz|_AbyXvfu)q~y<*)&Vl*x*cx98T9 z5|`zBxM|fCxX$?uJuySElYHp*TN!;Y@E$ENgBl#IHX;(B(2h6~iAoRy8v~%sk z`kUNKWig!S8+YXMW^fC>SaAc;pfB#D1V#K8`lGu`^ z@j^~B^%ku4whZ`I3dk7$!4yT5$v~qgKTobzO9us{rkTt_9mEVCCePl^wg=H|8Jk(4Zl7_JM5ZqarA_}axq zIxC&Wz4Q0B(>>mMiazg=)7biL>n_SavNhnSkop>~O7K4pGyl3N`ZwtK->LZjsq+56 z@+tpJ{L>+nQr~J+Pto0s6}aLTbkTN}!#QjQ&M8wq8Q1c~MsH17NoWn&(k5)TzVqAM zCY&>x0!SsG%@A076#~!`8B#!eK6V^k#2t613W-EzPn{p9n;;{D(02U@k-yHHK@tFb zTgmViMC%MT{-V0{K+Kz(exC+eg#)XBi1+~+AC?`U(Gzq4oi8{C1I3m@R@eCUNdI7* zC8Jls8(NPuT>6Yc+0bg!kbgZT6g7%!G}DBQK8_(QUIe7|bzI7c$=031O-84}1%Mi4 z=Z5c~3oD4x8$w+d+Bjj<7ijhWx>wr{8He=vgJC`@#_rdE2YB=RJYF>?57DZBoxfwd zQ|Si=0JM(Z!`X&70a}X3>lFPFSp|2@yHhjSQ{T5o0!bZH9b|%H?jAbxuPb=Za#yA7 zP?^PleZr0QO$JcRwk10?lBRISV))nK{JemVoI?t00&{d;bRmqEf^*-!_EG=W=~1ui zUnewz|9(GEO-$qc3|%P6f=;OTg8^&*`)={S?-ob-ZaLkg)MwwQH32^5>0fsXKv-ze#3bH&e*>R7(ic$ zm&v~$UyZg1FfPM(64=d+k#@(k%|^0?^uz!c{QYm~%@IurOiv@;O;LJPY~fr;N$>N< zY|sc$kB@-|fdvM9o;r(Oc9Gi<(A~>|2JsG@+7Arx;lF=>S6_hoAB?i&)IS(Xv5--( zOf~QhDCOVJ7f0D_ZB79Qi9J5h|Gqr;f$4>VOS;aWi4QUC(j1fktd2^ME8t1Rz?=as z>h}{&mklfshMTxNy~$K>&h3_W4MYXtcc9S?v|oT(85{{t3wXtr0I)Z1`80w9{Hk5K*eS-J*KNvt4#=vM| zNpz6u3RtT^?}SqGjsA9Sc)(vj5Ey?eB+aj`Ou~83pyTUd0ujBTZ%P4|4ykGG^VvWm zo6un*YeENa0dG?-jaX{aFH;=O{|}1m|Iki$$pC|1v=w}sTIcP{gU};GOwvqPVFmWk2b^C zWL#EQaFXDN&1m5#q0_Fh^pIG>X@)e1#vNCq-CGK-W51edtnu@O0xz%0%2$$&`}}sv zM*Zn}5-;PT`1>^gPE^O~Li5zR$d?ZJJeZ!PhcYKumSp&KfpoD;E!vv3lZgc$m1ZjD zZ5Gn`8dBfRz?L595eehnCspCs^HC)lir^}Gb-7Ucis5xex2jvWA3YBA;@F?UKbZtD z?3~1RhMpdE8NBQ^`)#+xLZ*#{_ehss`O~Rh=LK@h$v@Wl#-{#*4SD7zRW0Mvi$&;7 ztpXjRqXJD%B!i<8FE&AMU=D5c>h$0Pfu?EOI;tNGMb$Y=%#T6?3qDfjImoW<-0^7$ z{gmddc&!M<6M4#0?IP}_)sjls14@@ZPu~X?1EU@9>f3($Knx5Tr!3nGk;fh!eEks~ zN=)ThU4pk9cEgRxKvfrW;s(*9t(=|eLxr{1mD)@hB+W^*(H)BW0f(Pne{Ei_J&PA} zjS4D0IK$E)FnV=3X|A5@7X@R7@a;Mq6+B(=dL2|+y%1~*m+RYHxsvc`dhM*1%@pA4 z{RlBYlj6EhVk6*hnda*q^D6ePp7T0#-bvi~E_T#r4a|m&Q3UwxzXJ@Tj5K)6_Hl&M;{X-)$vV8SXGtR?t(Hq= zI2BLr7L&#j)aN&!oqV{si@`sVs#jO#r8ab0YYxbUsld4YlTGkv>Yp!j$PP0SGSnOs zS{4xBRCs6o#!N8hgg+<#aDN2Md?qp(~ zGTBzUU`ARy@ybJ-Jm5KL5>_40vVN0!BQaG4X^Vv^Ziyaq&YS~^4}+i3&7|XT`Lbm6 z^y%6fBYo`>RF~~|kfq!_e!-^!D2vZw_}xYeUCvbZ`s6(v%*c6!wS1Uf(uEFDSH>5$JBc) zefOp070;t3iL(uSx=n>EE<)ib;VQ;>&&ZKjCo|xk@~Jo*xRvwLZlcshtau(@#}n?e zOb~;iW!Jd#vy-e~IJ(jKilTlJ@s6`uQW3@fjJ8no<=|lFj3{e`%~H)zN!8*HQQu22 z64ok>?eQrrx{{@Aoj8$E_Qy2A=>c+9h2gd6!5bedp{l1nimn7W)_d(n9-=V~`zGlS z=xlcCs$$C&am*eobhai%BPmJP`0j?XZ_3t>EiCBnL+XTW^y8#oolN!7`(qo1_%DSU zI~(G1vskoG#fWfePv*oQQq!5o`FbfMU3OD-JE@tA`m&?=;_5{28#T2$CKQdA+fH&; zX4-y*B}GqTU1UFg@W6#Iw04*#-)Rs5hGoMl)?oPajWtAuNZW^?nZxn!{jaxtgUi#G zN0}j39u{t!;U;f)wh$e;mC5GaRC#OD=&_wj$aw1p&ACvgy34)VA7v9bhd~7^7gD0o z;>?hYqvnr$jFM|!0fR8Co#X!~0n`6j0)`+vOeDhF%cj#YlR|gkX{f+T%Uyp@0JQv4 zV73l5brmvvSzQ*7f8R#y&^5Ak<${f9YQMVVd{Y3+604sz)jk@(NlV8vHsPIdz#ojG z!I&b)(ET%~v8flYG@E)gJVjd$LzkmO5e$Jms%#O`!sUrHp$A6GFpA_1U;26B+d3Ce zK*P|>Peut*j6`L_>y;Nrotm*1j+A$MTTI`pTz^rwc~k{!nk7-Za?yIN%gQ0fM(~3bx zcG5RqjxOI>yXT&-PKLZFakc#GxX|T5i3w6_L&Vcv^TNGJ<+4{?-?{Ee1_FJyyP$(B zE$+xR1y%e4-a2ih-DsMRztxFiJL#q?Yh-P>lR*`S+C%)Z1S4^MRX%pw+eF%~Mou+p zMIk(Zh2?4k1QF(Xc}3X{4HK;{c%i;jqnGfpgR34J0%HzzdB97C)#0+o#j2MDvH*^^BsJraYr9JHhtI^)u^an0jM z*ngj8Hsy&Fna6o~qPCs3d(uc-oRDF8eQO$>W)Disn%}BT4EeENsyW_r>#44%3J4Pn zS6>A72O>b^O*5Pv_W9Ed-b72PjqhB>wtz_Y)Ra)xL*~HRlWnOc8N@gY3iHTA1{L4E z?9Eyms^%q~9rC)#C-;fhuBsND_4r^FC9(m2>t?Xx8R}(z9@BKmo7kk{tMeFBa6ijqEUX1F~b=p_bO}7Jrz%5|XidrLxEQsPX5w4r~dvnNgVa z6BT*U=qIWDd;`{=I37-$DFwCSEQ@xzx{Q7=^QpgUH=0|75y)9&bn{^v=tCW6h919t zR7=P+z}{Q|dg<|<(0FKIQu$F&`v68u(a%pQtXwN3I#FYa_udj=)HN+wmvF?73Hi1S z$W;vZXwc}UV9kE}98yzhfiHNhQYrcEVR27(HN?(G`wgGq%p|{JB-@CKuEqQdo zAGl6>Dxb<{x1ssu)UT7r_Ss8B<-3C>zIHtkqR`1~-Oi( zfi|DSW2*SevXdzei*mVD<8&KYMoT<)e7}Vs5?=YWNTiRgC9J-O$2yn{k8;&*|5g$E zgofG&wdLH};v8|I89>2|9w^_eGMOVvz8hB`%eARX9)anjV}^34k=8|7wN9hc8y%iB@D|70*e?#V!V1gx!!**km@U36|gLf@f&U7neJ7q-SW9uqBP z_G8ZGf!7ls7ynl!y9V4aP?Dp7gN&X(7n(rg7UO5`r^|hQ;_$$1dK$^-w|g$gpuy`u z7|6Aqhwkb^`vLNkm3k%|*3YIE6eKv`9IrlnM5cltKCR&~u5+mR{CTiVj8UM}!QRcg zbmMY<39KS8#Pi2j1H*jf+Fv2GM+O>R8H>t#>+*~b(wvMb$sRW7=6RGHVt@Q(G{Ma> zVS+eL0X&P07Pws>##hrB^q|0+a@$e>GAbjGZPsJ2gRzswD`3Qmc;`PB`}~>x$Kp8x z*`Z4%9$Y)|-T0pjLj@^yHOuj87hs8|MvvrS&lu09kpcy}OJ9%G zOjkJ}td8#BTTdx~vFHOSqx<`dvmBt*>V1r+E5H#(?UXBz-@NtWsi;T=dsDO<*(>NH z#z5kvYmZ1jfeMgOKV3ET`I_pMqG^8DOPP~7UKo!2^>Bwsqm`ccOyUzz%z%|BextIG zFkJw5lQL>=wnZn%o}PT}m>}CWjk{8kJq{a|OXwc3a44gCp2g7NrajE`1P zk$p;f5cFwb4S(N|CK{t2=ZM!dS8ViLurlXW1G!tzB#2Y1>GB+VS-j5apVniPCzY?Tv=wzv)y9F%^ zvie32M}jjThV_Rh)|N#Q{1>vvR{=$1QkIjb@huwuWpDnm*$}n4qX|nwC_#MRZGN1h zkh>Jai)89eC(oQC4xbEJMo|}pa$&22)%` z!JF}vt{vuc6UjI7vz@Qu7o7zpPPDnLSsOpS0;n^w;4Hf%RC?Ct3}iRkmjsS=jhk#X zAK1^sZ@Vu}c(cL(DZpCwXYL=1aW7$Uicew$?&Nwlm#e? zMbKh<1uuhW%+u6nZ_>@r4VRcqC(ggcs>)k$u>bzuv(Pl2oz=C>^HJ$Rj{ce$LGMjO z&G_A~WADqz=*F7rd*PV(lJ?YR(hoC6o8RQ)KCDf-_7mhZjuLyMb4T{7QOlu->iexi znXi{NZ>=j`E!#{33E@y?v2R8n^U|e$))5EY&2X-F*gZkX@vdr=ntWsw-v*(wnbLMM z-}0o=+ZLjgvaa6Lk6-aK{1WP&X3fK{Sve)|h5J|ex3L~15V9mhu@R06PaQFS&`I}j zMXlWnYG&zY=!IKnvYfpkOaHCGz*4-LLr~OYA47fHe2&Z38Sw%yJdf<1*27$;SE|B` zA%%F(b>_{tS*bQ$BHcSanwMT6U4MIz640v(H?Z@^;16xD&qZHb0 z&Qg_XNgwE=Ni|}x?rY`q$9xS?WvOUh^noq94mCbQ59i^d9G00M+~SGcvZ0OSUv@qMi}U>?;>$Ach(Sb+3|Zoli97A zdax>(&##Lz-Wp!=v?V&pSM*`g&-2pk1xS`587}d%aftb4+~oF!$^FhM?mdw357O3k z4`0IuFQ?yD(O!($??g#{m9gdCCxm90I^Gz$hJn;B$GbST_>6002V9m>OZv8>qu}I}q8$)SwQJiXeoaGO4?$fpw4@YyuFtTM6ap_691XFuCMaT!IgQ%d zIB4MQCSW+d>U_bg4k;e>_H~<6XQ*#_Mk{>6Xs%^FO*_}=BZy1z9KL%t!R*Nf(iGAy za&&C;sDHbbQ#D_uWf%K&q`WHDZW23rayh#+1S_AbZj z-DHos7eBBu%q7P|a;|Bv|N-!^yGpMRc= zfkBYh-26y9@`3s#}l$*5mwGP0@W9Uk9w z{K~nA88rR2w(ckmR!bZO*(pqKOE0q>SspysDDuJVT;bPvumnsC7e~^6c}Q?$4=iYiv0g z%oW%y@fJB$7b@k>8y%#r1P7Vone6kIv#OzF9mo8WWJIH4LwgbiI1spU1Mr7xMI}Cq zJrj#bLZr0~^;Y!+aYXHVXnmt53})f!LSJ3P{xU7x48w}XDl;G^kIDb=vG0_z&@#Wm z0qy2H34MoK7X}}{T0b=b6tY(F_vZG02?MYeGrI3a#fpH-dI1cLYH_zUv= zbc@Tyv|YriPZtxvV+iPf<$ACw_2qP}pY~TkoK4C~4tktdmI|cjE#tpBaemr5 zxJWDBh(@8;Vq6#7YqoFkL75|8cMuZ!{#J0~ZQ6jLPnzTeLmlFC^n4oYDB_*#g>AvN z1@SSbSDpb~;SlN)iBFSEu!7>l>^ilgBx|-c&Y1b%!_Px^l)knbJK|yc_!&uY2~yt$ z$nFmMky|c@EB<~^&Z;w!nwIlKh&HRgQMt^jgn00&gBOwFf=@z=Of{0y9$}j(zYb(b z5Q*7{nAz+!DV0tHG*Mvp8)|04Oqle<_7g$TBWf)}w36X0p(x4Mud0md(*@W52sQQpao>u?raw4acXB*jxM}lT5=E`Z z_6t)pjj%b4I9xc`JFqlq zIla-_zVig+4J4nFTOE@6O3HW|tLu~)Taq<&b>v=j2W&PE^;ps~$d9d2!@5PXm%xPRk9mr170f9`rU;b1n^-Edhs*{PNmA6FGbnvg$moh#yU9|h7t9h; zr@KZnJ?vXun!HQdC$s5L07|644m3}m7r&y6`y3a@bqr~Dx>_XuouYcf9X8` z9qBWN<3n6yC8<;;li^XO<&q`(Op50T2nY*h_%=1wp@t?LD!yYfv~F)GH74g@pQLnT z^K<;p2DkjWm4PH>BK_Ad#@tRa|6{rCKTn{R!K#qgAUY)BL$$njwI}LVs(qTpH}9(E z*UrWfKtwm=-oln%3D_zSL_Ixf19d&n44MWr9*}U7l~Csv7hsFKk8<0l)3!+Ks4R~- zk_dmq%()~hAR@qBmcT;5-;z$u5FD;pi(i%eW#MN7Y6EjUBxU!(+Z>E(R$A?v8&}u# z%;xK{A7EYRI^Cc_8pwGvHKGs86O*kXLHV#;383}O+-uZMmTolvs&VYowdIj)F6Dyg z_#rqUkZ1G$Kz`HN57$$3<%_ZnV${Uef}SvNhoP%w&d!BwoLUO`_KLv7Zorcpxr}RKaXDdujY>Oc929 z`EvCw;jt1!4awT+S&H&6uF)UlvmqNNcf`w0=J0?6`E)IPVeM4bVwm3 z0-e>=Ijg62Q+rpqVcajN8Y7>GfFcskZ=_JAlB1KPEp*9>cX;mGzFt2?W&-Az1u$*m zVd@{{FJLC7X!QVtex%d3p_c(KOPV`vm8T?z<<<+*4(pcT%jCK~DCjhVn}7?`a(~ew zgWRF!tF$ownG%bOT^h%NS4;xiJx^{R_nrX}M9oivOgi*!?qV2uoa6f4r; zL-V*>VmWs!WnnB=w)I#nVHp7Q7b;P}eHG&57C)diD+`JjOQH`((zZ}chqMj4A<5I? zC~2#*dg1ZsS%HQ{_bq0T@-#NE)7~bY`ZJXwMJyh|!k%IlbJg$E3tc;M;u;+3YUfJ} z#`iT@BT@+aAKPf;xWBhkZ3E3EjtQw&!1Gre*Xy+ftGV_?1b;l$Q2S2sHGMl8ZpIp{ zl7sZ>SUixjd#8^3pkEo|<71n%W|9Z$m=i9j#_u$H?21wLkz$d0$-y>?;VT&|)6*_V76P~I(+RU7MZk`=YU}C2U6*nwosmJjBPg|SA_oGoEX*93fvTQ7&TA5Zh4=o!* z>trwr56JGSJVf66l?O<@=I_A}dF8*envp3lGVsob`g34Zv5!69*b8R~dYRl>3cZM7 zwC$A1aDa7FG;C({eNssO{d_-uxjWsE_fiThyuHLEd$n6rThT`H`Cy7G)H{BHua!~- z!qEC#Z*D>Mx8!V}!?7P(*NT&4Yq8q8#*-^$1k+NrWcN#E>qBi!Pvvc%FwmKIElV6v z`Ge8UJA=@)mCB}_GIxYWi=&>3BxSe_kD@S$M|?~N=u-RxF&3e~5U2+(EAP_q8k;#9 z+*f$)4{*?1azi{3~!M zvxQB~8LXcg-v0oJ6W5ghC+H)#w4}VRN24B8ywA4UxiG&i-l4~3=ttg2*xsAOj?2hm z3T$_Ux&sa~!{V8%GeCvN3et?Z0#<^$f|1aCbNl&By-7TXXIW6pAq_n_FU4Ki{2)Z0u(mK(d)T%rB88`(mI~Eae)Tx z)o7sl2yliD`E)yf&1>Aza7+(zSKd1xAEMEO*|K6#eLpgxoVX0FSlXd~f0Yu>XsUsQ z*lVTtMsq?UQ>Q*GRVmjdsPK8)fF_KLGmG0y)Blcf+9iPWciXta&1dJec~@jsLm9SA{Vk}|@q96h z!B|Z4;n(Bjy(Z^+kcU@8E#0*j`Yd07QtYB|`WD5{rI}~^hIo0jy{o`EZAxo;W0Te7 zTvGf9H!Yq2Q&Y(w3_|3V<%{$FY_0X})Yv7ntHRS2)zTFTLj{iHv0=e23j&h)Zb#oH z1b8KOoe(2C-|0Xd>w4?n7Zs7BS-U8D0HUU!r)yA zQ7@5=^G$30?|2rHs1R2c_%-2WTX>{!168Jn{R4%W^O)?-wiez{1v}n&A-jmlTxLL2 z$uFP8U`{Q24sAOy3y(w9!H_h1m3fA*l0r5ba6IzpsI@RjP1UI`T-xu0zC ztKQiWj^eUrWoOH|71*!e)4tx?WSGd~%21gZL= z9u9AT%PEx`F1;wI!~PQ2B}2AXeTv*h>3KNk7Vj{QREy(&iLBZJHy)JaV7sB`a~D>PoN<->!clVOOuV!(ay!hQOh?$;-p2eM4fXTx%aTna?R}=uI87$y`nwh z0~ki%ep`vmuk5B6dKifL2b=LE=&rbv{hBOu_mZ=WrxKYeYS}Ws->R>6 z@n={SX}Bnkz;_R0zHwBAv%Z-Pd}J@KFSr!1?yHdYNmsDAq_UexZ#4u^IXB^5>0$~9 z=eFCD5E@H02su7p3?_Pe39coS@%$M;3osS zMqTRFq`vnDQX!R>tU$5}@|Tv_J;%2$Ous9|@9042dH8?CU#&qZJ^4DMR|M_x)fbQ~ zU@vniA`j^}#_ht8+?&k2L#X%4Oyc}ygven>4<~@a3$v*IvQ_ID54QuJdrJkQDoDQl z(xB;T9z8Z|u?=ytc;2A&pv_6Gi*7xoU_czMIpb(RCFPBy8(I6Q0fYMa23Dx=f}%s) z5vQIpjm`;OQ&;Phrg2%F-O!^0c< zlc(|2&r4Xb8<{Zir<`XyfT;F|J$FI6iM{HfUQ)tsDj{|!b*;9qsy9mL5G(1s$>aM; z6h0xvRWc`;j|==dIlWt+pR3;=EnQZ@?--JOUlet5z@y{Be%rhf9!}h35_;?ICHLSD z28iX!aKr$^lFnqg!|%G9tOb)8k}${j7<7w~KT1h1stgYKntMhT%wC+(@WfQNMLp`L zI;z`;*m@BEB$_7&eO38YLlN$@ydBKa(l5c{^6JI-P7H_5H(x{cIGqT z4yk*!t}m85#`N)}-YO)a#Z#y;tm6VcoL$lZ)uz0tio&%8o2$i{q{3XUVf>(*y*=@2 zj)?uwx+=fUN}h^a$qA6Xe%9nA6wS-7AC!OQExpF0i6;HD|%~bkw(Di~Jeex?YYEoB-CXj0`jGj~`h?hFu&e zsLJC7Ed@R9@@_&JjekyCi7`yx*C2d_Ex*7+9;OK4Lk-$(gE$nKTcd|Ijuhkf^&WBl zrjJ+AQs`0mnb(4}^kx(l?MN*Ybul)UU>WSRQy&Eh+o1K}YT2BJ8j6zagCqqNwbSfs zaR2~|_O3DK@Bz)^9{#C5WbJe*!oB%3D5eK zY^7Vbw-mk(iI+&u?>HRtq4wlj^Khq%`(pn6;ST4Dd^AxdLw)ql<}KUi83%uYD}$() z4u?fl81onEw#VZYfhVpTxWW_XU8qg&glDfOm=Q_mkgn8758Ckfhu8Vbo}(-d`z`Nd zddDZt(eyW1YM(0BVYj0!Ju@foQb#PZWd`dQo1;qkYfM#b3?5lL*C>n(%-oZ?sl89s zSC%jV-l2I1s4tOyW#j2T7!&3F{B8e>wzmvxtKIf~p|nV8p-5Y#KwD^Wx1xdK8r-G0 zyKA6=LvVL@iaWHW6nFO`2@WN}0wK?t&)VQo97Ax&*X)#OP8+R^NzonjV3# zH!&4J9Mx4>e2`q|8B`^SSsYU?w!0Yhz4Gsc*{N#fZw`7MXP|jbsXQ^JhFZC0LC%;ESo* zA0}0$NUML|#S44oi}6wjaWgr|l880-4WzT!f>nOW;+FKo7p=YqHKORNzQciu^Nc2g z!_$&wIXp0km32cx{s%DhNiSq$=(2_5(X?-k{GSUloRmmnH@cb~gRA{W^gyk?q4KMc zf&GCYB?TP@(u7mRhiFr8R7&A@N(uSXjk{iG(t=wke!@bX&-M;-B*1UCE$G?YAorYe zZSuLKsvGWU`)b_EqkSgqpMIWnRYQfAgI^)25kK}C(932gj)f!k^~_b>OFJT9?Oxn^H}b4}^*OG0@YZNJx-u(HLz;xX+y;)zw{}GtiHdYYt(x1<-n+1F95y z=n6^m1RY%W&J0|1VzlZ0#|MGDDCoiwvR`zwfbx;T)J5NkLJWIh>KGfyY(X7lRp1m; zv5l?)Xmp(cOeU!2|F5O~=l1`{t|b3!R~o_pd{=b;af1aHbR(vqeF2RF;j&b(05Ngw z;ef1Y>WIQv2gSyY2RLwd-&-XW-o8g)8QT;Y(4mff%gf3QPX@AH6#HSnOAPw44m1;q zpI}3F*}5wIL+z>|YXZBB)wCZ^13IvekT3=E_?@EcK)_zw?kuMQU(uV zeQfyYt?>BH6$;w@U--gaOAy~jj{*TxC6cDL!VPvh68qF?UGRKHyEkUcjho&kY$^CD zUcEWE#qc*cITjefTR7=W{svn#Y+&hT-NRvrc+7O{Sam@IS#mMLFkXG?|C2>bA8*qT^PNf{Y75{r4hjf(Hhv-oCLNY6>Y!u(0Ahn5|Jf=Yu@|Wy zAF?}l1x@pO$F|uxUUBM>swsR+6K$HKTs1IJja@$b6KO=g3stmp!Q-xjkq{_-;46%Nyttznq35B@%hz;p?gdlZ)v4)VxN68T>8@9 z*;c~1M=RCX>5JvFA}s%N94dL~C!#=0(@VFAFa_qz=r*Dw=HpXSN_uA29n$!1#CvuU zT8+CqtVfihtc^USO-z@Epo8*yozQjE0LE?l=1MsUNv1L5{HAHvDKNZx#K{Y%$-VzI zf4gq%Y?uyS0d9NofaKzkmI!2QuZ zzmdlPTYjID0_?C20y6?>P968|QUdwtO+mLvv$WAJ3N3deC*8O8N07-~8z9~g=R8li zQ^I@^Va2EeYHh=9!NuauK;Ux-jK0B|y+`+ZI;QKIH$?5ns!%f;J#*-Rz-ayy^ohYcW3n$lpA|^Nn#B{z zlM}JMYq2u#f1zF;b$Tjpi3|vge?t8jaMw{*l*q?1;$Py0W8_EpR>?sOeAYhBQ4-}0 zSL2$k^$8-~(4pl$cl_<5DIl)P10hqX=wLseuPdMnGubVWG)1-?=;@e-rG2(vF)iU< zxjQ(jQomz6>#6k@@1jNXEr(jfa}d`)@0PQ}nQNswFEDjk+pL6ki9WdpasfkYrI~(< zor5R#Cr9>5-24ouIR){1Ox(Zoo3F<_%bPu)65+2n-);iHk_*sWmF6rpr{Ld}D;6(O6H^KipRkRC1ji(Z#mL*5)ld)kq&C>1tpL$`&&iPinifRxuQK=6>^#byu;=8 zqM9`kz^~t>pUt6qUzkTb8sM9~=Kb>SH_`OKm(Kpcu1}M)HOz{2%_25(nXPsMUyHA1 z9^&9M`;>0ANBFqo4#j0QS&=@$78i54K25gTuwFdM_6zz8O9t}+rK!skWMtsr&2fd} zqM|%Zk+i6GdYm%2`W95UeaMwz7LVX8?%ieX>MKQg+I8GltC+nY%y4e!_%Y8=t->;c zYJW;QH}>4df_K#d@z*T?y zjF&6EBs!fweWW0Q^vgrTH22kmWgXO(#}3y<0?IPpB=iW^3_YqW^D4lz4@5F5F%Nq? z;$>a7aMR@R)-w!jcETqHIj^#ioPS~QV_I*1kAa(eRnstG!2i4_*yeJ3e+saUaL%g< zhL1L_$to1MGIgXfwssP7Z3n!S0akIx^l27478*h0Eb}Zq%U}06s;rDY|%j&diO>JxZYM>C1`gYSa3E;>a-RGO$+gm9Kw}(calWLS2Kmk%Z{pmkt|IGTC*_y|RDrH3;FG z=M3un$5!cjlqWE*brLFIj60$1OmT!_(mvI4@@v4txgosAc7bjtcX0achVG>)XZSJ& zY!$q!zmee;eaeEG>S|_dkTDajc~hfMQ?uhDzZK5s#dj6G)s>?Y7sh^iDa!RJ@<)zJPjOz@_yT7~)x{fBR}y4+sEW=VW_T*RxJ zdzRc8IIGu4aI@Z$g-hIn#fMMCy-qv;t@_oP&w}E1W8d}IMq!~YU(4EWnA3kVGdt(G z@c*o^yXT*@ru>ZIMDpbmaE~d8%^-IgXTZ@0gP*AFjY$&h+yFn`$o|m-ar*YUZjaQt zgXWQNh9gfhBrVIbB?EejP)1R{j|PQ;(BC$ z;O770Tm3_c=ilLmc1=;^(?tl?dq0ZKkMq!(ZKGl?Q)dCh<`AH#i+G(brv3HRE_eq(u+fj2WLkBqrF2>}Zj1v+6- z)h=qjcXiw7v*`Ku=;~cAH|%;#{z>Vs#d{xWpK<8B)#mNgA2W!O#7-uffx}TD5BI{% zJ&yT$<7zYMD-!%}Srb)y#;d5$cX3h`)H99)W8FAk>0G)SLr6sv1a&UcNc=he!lKp; zDbf;{-EK92ar3h}rm=Li_@H6|+2HRGHj|q}#%xEv@5P4^^0uh~`pgHjT7l|ct#JxQ zjYS_3tT-%Q#l^KYo?8${VjI0RQa`;Xl{S&|1c_Txm@4DLMs7ToVL_a^kkvldwjW<0Ngqva6v8={|Dyugm<-MkpL6{M0Lx(z(W&NKXLd>l!@l02w8Y{@Lq$+IKEAIu-$nqU!xQR_Qzz(}n(tKyPpGp9nfVTjbGNWqtis;L z@aEI#OHx#N>~IeD0&&r(3(oAa6dC%yIz~0J|x^&hXT%Gzh!t%41bQP^-3gz;3Wg}0Of%F$U`Vh8a z(}g5Xhu*HnRRW7}QG*hif&9vsa3NC%@mRsTM_ac$XX2|6A0Q$w z7^Mqb2l|ZPkre-hHLvDpkzPn6XmB5W#4vVc8~rnwxWrqz%}X6%Dca*9<7R%cPW0nG zKI+r2o(`}~XKRnih+A3)<&Mazan@fJoOv!Hh%7RlfG%aU60l|+e1t$qWdBOdnB+1- zAN*R2uJM;8NOCN-+|?$Mc31Mrqq+iL{-_K&7H1_LE-(rwG{}Y*!(q|0c=5Pk;ralUZEO)8QGThu{ z##3*ppW*Z@areE><*1RX`D(f`&`1*@PCM}Cw~Hi{f`clCxAkPX+Ph$J0T!PsaGmK7 zLT|4;LvKt8l5hHbJ;p=|1`bcstwRUobdMhdEB>8)9~%FH6#Qp;UqJHxU)FA@`a64t z10JGy{624{#gh@kZDjrSs}XJABJ^zLAF-Y1S2cI%96+u{45|5Q>Y{CUscxq_#MJ2Q z_SH@3e2xcRlj`>zf5LrgZQ9JbW0HmX@^OFJHSXvikX?H9uq1j-*WY9}NRP#j4I=N9 zt_;0=2hxf@L{!a~Dc(AJl+1eA_j~5@hDxwJuzh$Ua=M*v8P3AZoSNZA3h}km{Bymq zix^e@xSD=+E=Dii)jVByL0_69W#A;P(A90fUc}THmsq9nfx)|O6lEmKR*XwV zVL;tR>p)R>^{hN$WC2-kkWWD8x)n+V4i@J|a-nylHK8My+_5Ho3Sq;`L!+&tI~N7+ zpRAqz^V^dL9(9`soM+0cqrq-@9)mpya2GW1vEzH4b&5b zR7&hXNgaYasdWWL3NXE<#}*3nr$@z2pEMn!k9AZu)|EuIot^1hK4=hDS;zN_%3SKQ z3|9#wq3B)OFE#ph^TB#kUSsThS#*MiwnlZw^mmVXY$rFTH=DkuF0WInbSKw)5VMLR z>Xuy>E4v`bEL!az!_FL2IV6wiS+6a9<9yBZf>xdmqNXg(xpbj0k#qt4s3o`S5d|#| z5Adfa(KaDQjd8LKRH0l(aby?Xb~OW*NwmLqKTUX+biaiZWk2k|$wwa^cEWTd6 zn23GhZn0_g&&pFXT9vN>thbTjKd6Q`sj{?qJOSW89mpJTE@vEd?F|(9fpuaa4RQ3@ zW&h^{fb{r6oqPX}J9Txc^LKq8c^{Gr%Dgenfi(uqer=e2Vpvpc6>~ZEg_9uJn@;(}{`Yu%jH$P3x-C}2Qe_P3H&E%KIlEfRoCqy*74Q=I zp2%h;dBM34diylZayl^jq7@ofRK1#VKZ-PDl5C4tWrZ>{9V$Wn=l!R>Hg!iQ^OnzO z?)>`!F*~Deu?@dl30q<-%Yv^%s9>=Rnv~l1cr2$T$tcUuA?EZArf-VL&R+zDug&n7 z#fLR8KkzDR;5rXi%p~gej~ODxCuIY)v1(7YF}fz<&I;!loPIc4Y`dU7o~E{Nilpk} z)z;$p{nm9lSNI%q;s0XV{tdc`4mF_)K@|OFvQzOM&8ccFaa-Z`g8YMTdIzZl%8J{a zZS8U5+PKX)8!P->FMAsMCDSnPjfTWa{7b&y`@oF$FkL>&C-h`ce%w>h@_vemy6%a+ zN1EswTLdvsZp)6jcrKsGf1P1aDGY6cBkRYko*n;*{&5E8SRQ5HwshLVCO@#tIzq9+ zv)#UuMHY2%E4{;#BTb7>yjK`%qP&Jhi;BX%SYNj?T8{+IG*r+|9+$1~R48s4>eJi& z8`VThoy1{W2RAl%(x~qOy9%@sde}z7NBWy2-`-hB0Ew%oK7OVXL%X+9x|G%t4A&Ov zFHmKWO!0t5bdG#e9{=iN`cY0NH&Gp3Y)p%^Tb_I$6;Xr2SM&E5FX4h9uj9*vRTvL{W<9QHw3HPe$>CmGSaq?DO zKI;RCEf${%`6=&U(bq+^LBe?Ha|aDp^`64F-F=lo`K#-P$d)kn*WuFjEl#?J0%xwI zreWMux2sg;@;} z2Hm{q!`y}W;URu(kBjRfO*4d2qDSWce2ww4V+>}!!t$sLFprxAu@uaDiHJOwy%b~l z0k?|V)@qNl`_L?V$XEZZj+NyKzoZM7<rz%kHQp6Z zi+PlSJ1qQDq?**k=aFmK9{1p61f8)D_A6?c+i= zx;f?0DfLK^k%A3C)PvMuf~gH^-XKYtApY@3_=<3L#yjjZkAvLtME=Rz7V&|J1wlb! zmwC^OV)1I_$=#YfJ#yPbG1!^2}(-)GUA_Kv%>h+Jfi z+WrqP*Be|IgdD{|$-?@X$!BP;>;YO#CC_-MwCJJ?4ja z|4C8N9prU^1o$2Hm`LeW%YIH?jp9q$%++Rq(c3jU9*0yPnU<_fI)ms}xJ0a}WjYD& zmVyGxSegh7QcB$usXO%3!hss&>)H&F^6Su*UDLTNli{>eysY+V;ir_E34TfC_h-QsF9xiy5-z>PVwFl&)WWr;#ilp9b&RZIURfAkn;P-D?GO# z=J2PoL$Fr%98-IXG>Vru^04U{!U@!%KG2GprcIY-AXA!BwBl|oqLa9!!|l)d{dk*I zAzf>-@d?rKW>(`8BcJ4;>NbS?M$j*C>9sQmG)=4Jc`M6knEXTL$5aWDs`U0Y3MDfZeYE(pA!wJNKvc(Q(Ptv;KX+JwxD*$M z=U(6(tUZ4Yq-6Jc9XD*A5K<|%j{`PVzxT1LQr+%Ph#&*3LA<8A=Sc98%y%+@XvhyfD1t@N?(fuzp$3MBE)0!XmW>(qJ7{w+>nGTo z!oZy0F6Yx6Tq}=i2X`|=2g*p>Dr@43YB_TG&We_rK8-p6S=?GB2E_34%^KmCo?u6* z;JqNDU%}77F?pJS+MKh!oP5U?2EZZFO-e($d}GrdB(QGh{8|C-!7$zc)-CFMRz?08M}(m#V)6bYvD4OW47m7x1k-Gm4_L_fNIM{g^YmdwP6 zK}EftD1>U~Sz5TG+eqNNguTRWU4z7Q5 z4+0s7;Gd3mb7I`y112%0vrLZ*+h)>BZztl3pMMOYnr1iPN%(cWHTL~90gILXh$J3e zHn2z7X}w^3(;mUh2kOX4b`j3iwofhYlyMjpxfy^nt z_!>AI!dS}RPXqEEL1V$3o8jS>Iy;})=O*uRJA=gehVXUyNtb`jDu3ixb=M`k^J*+vlN=L{OORh4EK#DK#E-+$8{E!5*a4 za_?t+I7wY+jvABQf{R+#m*DXiA*t5PbCLNGOnK23NPdn&w znm?*8O&ab9O3h}ksRE@lv_wxf@Z#R5HzK7Oq``YzW|1Rj^>gPJgB<=f;T084d5K?wxE11(K%`ypCsHrZc&`W5B zCu*cB?m$dE`kPm3cWag}A!G9`bo*@T zFfU2i4?Qs5RO2$rD;Kca*;`|5WU2x-F?6k>h~jw3B;SIKh5fA4I!!-Qj{Eukowzfn z<9--BHVKVIu>D zghIGQ6>S2UZ_Z;q_KnQIRvZZ1@^}vAZSLFQ0-Du_LMSJU7dyK`&3`zzFvQvE{j&Z>0F1}y_f z-q6S3Z^=K5L$@N%l92)Rlp{$?5<)!i64DZG3Kk`2E!jC?6M+f`w z$6BC9YL~F+TROF7U)9K4waK(uY0exY@YtqR|3rH2Kn!uTW&U<)OiWYw*bPlmn8nMy z*`2aJD3-3!JBzQI$?48<5T=^w4aGG#?Rd3Q>(gfJSCN0 zYHoJRHM{Q>qYA7u6l&}YwB^32DnFDwIZu>PNW3Ae5FQE z+iPL)Fz>|KolHbbu7MuS_7AHBYpEJ%_1;&%)V5bZ?G$m{fUsM9fB>$>bK1c_+f!7! zoV7Q&6P~q9^Vv8qB=`i}bd-D+an8boXS9WIU+PN}1akS~vIQ#lcKx+J+I9PkgUmL2zz`st(wlkujJYkHI38zR+O4EMk7wrbwx z%pWw~la8bBc3ErnIa2IesmL)!zMnq%tx(;QWI^s9l>9l`bC$uspR0vjR*PM?d}VL! z5~wB*@IV$Z;kok`6i3=5W6-sfdGw)^K#k8~b8@S$q2|;D3FXOY2Gg?wt;w9#vy!J0 zBFgF!ctbN*^KGVjNSmPm4Rbid}_qcXcfDQ+qi=w~_#> zrLmuWZ5pI!0&qV_rogS!Z>sLx;tIFYby(CS37qH4~^1Q3__r=tB{ubG-jwcn|)&gJOjf4LUs9#idPy#M`~Z4iA% znOR9KDeJ1KLa?-7*6;`_5(d=r$*0U)k+?YmWnN|w@;yY5p58MLQ5O7ris%P=A4RO6 zz1zti*LSb18!)+2KNkJ$iHuR%c#O*0KiRo~m;%Gopz^8SdIiGGg}+Z%UKT-6g;){Dl?e@3E2z)MhC90Yd#YCRb$GyxfJ9Xngo|H6>ridQVC5rDMjiWWkXtet6jA!$-2_F`Oh zhi-cE;OwAbjH#20a;`|0kh7QFiG_aQtAu4r=S;z^ANf29CX1kyro4m2zp!QoFw9Wk zq1>51|NHrf`AjThLaU5XsvD|vY^TmyW5Ny%l5Q{RRKYqdF<{N?g{I{rO4-zR2w6Gg zyOx+x(Fr$B>SL(gzQ^Mi+*Y4qsIIp~OoMYH`EP*VMo74jZb-~+knj1kr+`Lk@pxGi zs6+hhs%QJi6m9nnrF1tGEb8|cmNBgvy1z43kl4xLWs59z7>n&s&qdEMsLk&`O)E(F zRd-1RW#jQ+(Eb8!y*!g~cOsFKD*BPToNa&Lo1GBdZ#Nl~MqgELvh0T+(oS9Qb0ti|!voYUe@So1*V{3g(u8Ix2J8YfG z;9jfFuN@#a?eF6K*d`gk*rR|8wrFqMYGy#{8e8GLE0l3~^wj=HTy=rRuZ%}D}Tj^+?V2N*9lXP7AxZ>-v6Gl~> zj1`wsXczR%4PBZ)bik1&Vq3kPPgLS?!?6<2KS(}eE*zK}E9mDxKf7isjZHR4qZe>B z26m(s?uosA^PQM?>_R;EXEK&f&dn}s{Nk&h@nwmSajCR$+4fAD676f#HgWL*0h$Ef z7y02x&5j(R?yU80UXEgW0jGj zI8`;5pTZGkJ^k2|APKzGrjbK4m-3qIOLwXpU1CD|vy-P|kBQyVg>&ArOTXj!rYbg# z1x*M%)i3C)4F8fxkxhi=eer&PUYZ6ySAgzCJS2uHOfKFI*m@XZ!fr({>h*tPYMy^# z?a4JjU}VJTD(Ha>V>~)Uf?j$O+V*jB0R~`ZE{zZv^?y=kG(f4D$+s6~1kor*5XXZK z`T#RK&0lvuaQFDqNlZ?K6O& zsht7Ju9y-@6a*FQkAg^n&K(>8)vs+}i-P|}(!Bymx^Mtz9=Kp39yuL3!I%KKfPK;h zjNSj|!VnnoKkmdNFD);v%nb&pozqn;1ET=|PNSd)kOD{!G~K7aNxQ@M2BQnjfN0n4 zPQD7n;77007I!%yHOvL10UX!o^fGjUGW?atma zUiR)^`HhNpf3ozq;uP=hKbqa=z1G{MU%PBF3nzi52{!IWB-}JG6;@U=;e99)@=anr zg~JYPwE{BJ(c0`^`B2uQp4y9#aYj%`=_azw02(To@`Y^kL^`mMr`>`{{qafS85hgSU zDEH$-a7gC0Q~T)pAYD(y3CE0*4T&FJ0vo4idefn8K|HEaU&g`ERb0eS@LprQ4>8L^ zJMJwufhQ=y_{_Q$y%SW44v!cY3nd$5-`k{ZzFfFY`c`?dyQ=x2CvLMzRB~6FGMu zp(H59D&9l)D*8V-eBIMtU=DUz%4(igW6m_lG+KChh%8l;i#q+Vo@R1^J+zRs$SB52 z+P$tj)gklHeqE!Zv$Nq77~R)A^Y)Wmb4Q9rlOIRkWU7M?of8FGEp;Vhbp`;P{FJfY z7%pA;(1YVQ6AFHURGcn7tb38rUS#xgSOK57Sx>jXdcX|F%eJnzY=TW4Cc4vSbEk#N?6mz%BZ+Z|(Dp?<)<+OdvQ)1vrG1)>IGY_5-PpQg z7kY5+0wU;8>15p;w!H9u>Pc&nRVgc_&C0@l zY1}|p;Aw^iG8~@*ztwxH3u7G{u;U;$N>QZt7CZ2WqYJv12M&0tfi2ZPyX5P+AA!HW zipO4XTHvRtAnXljJ&OD@-nqU~mTXI(z7PQ*T3a3|JY{uTmQOI3EI%l|-oA=l@1cC@ zG>|)}bSi3_NprfFqxwhE`>6?Z@HOI=K5uE`NAr+`-q**$X|%rIrCW1Fn;uShl)pF2 zCsIqL!BeC%BSo;|DTsf}fF?tP14Ez1`W12~FApBFZb%Pl|7LAyHOY9lQxoAOJYj>} zNp}AwWu~PTY>(cY1ab8gxxhLdiue-0UZ>n~Q#~GOd{DsH%!7Hz5Z@=WL^@5X99nTr1KU!73QZ~i*xTN3}26K=WR#TF=+-E$I`*UT@@p-M6g z3ZOtlvGEXwEfFS`rmWHjn!cf{W1m;DM>W}Q%T9`Wx3b#sR9rB$p2t+E#LM>*ZPzUg zpYy!1XdfMS6#p?@MEk*o$>D6S$oSs8#IZ)@F)3%?$vYeNWw{>%OsKNP?SnVDhWAoK z;$`#_LBm27Kbdf;B8|q%<-uI|ufPz<@o1a7U4oR7j3_!#tkWvr)1kY9dEUzFbG#yA z5nJUjoTB?S3m^O326mDSPOGMW9hJZye6;P+2jv#`-gMw`O&ra@dIeshv$Wb0>Bw60 zBni}ZiKko2XrrI|HS$(r$C4H9@ILS@FgndCD{f?kixyyc7A`}(7E>d5IW6ZSygseTXWKH%ipSNgLG9wxwARpf{(;FOPWrjn6gjg@dkumWI1jr9)%|c z2b(VL-6(eyUq(Z`9Dm8z*kCPp5(9*q`_op|$*b}3`Z%U|thaJiIZ;AyVovV+Uv;?* z>t5;jzgYL4ckx3-kILFSk8Lfm!3oA_1h|`h*Yc#Cd*SJj@ivn&m3{`zz1rn5R%HcB z{DAaRr3$O7S*yu;EUjiJO{<{oKQHI@-lu##@pYw`ef03en;o%l9?0D*9@7yBr&JAU zdn8wbH-q0rQ@O3vqhIIe6_~uih27oy-3)^&S=+wTX}6AoLI2f z$pe;E)&3~e;&*$Kn_z**eFw#7idCGPUqX+QB1HKN>W4pD1lRSpq17>lh?a~SL&dqS zp&**ea4!azqUKTd@hKy03Vi>U@p1ApT8Y0kxsfFJnfDWg1kFdSgG5|&M%K}_7^@yc zZ@LpY#h(p^lr6xGw}DsP7kKj1nWNU6rljak?RWCo-3)uzSPD@c8FauM*l?NB?ZDl9 z3rm({3p5WqqjBg)nC?R1#Az2kP(&|cbE=p9+;F4X=m3i=$VDT@-}*q)cr)DVi@zH3 zgtz!8mVA?#OmJR~6CU?zWBtHONYydTsNIKnKsTxBHDSg#*Quc=x-pKn1NKhaSva&T zwXst}KU89GN|(+3-TZkwrV4#Wa3qF@wP?Eh=>i7^1+Uwmq(rHD5?(bF(L?i;v)RniTD)=`Us<{`j$=*D|z?9>~zU{uz#5*&1_e z@hY-^RAR*SQp;KJM%+)^)2OhYocnasroVan495(VRqL>$aNuUP{NH+ zbP1Hw*WKSQ{_eO5?x~t>T&%@L9Igm&)R4b-d*$u>n#9Da=`n4)v(R(j<3$J;$zXw2 z(EaSNOzj_Ho4LM=S3O_Rd9iQNrHGQva)33?P2;qMxwT)`@Ma&M`6}V zweY7No`@2yc^H$dZmD`JCda25V5QizhDD4(oI{JqGslW)uV;{^j2s2P!440J* z=Rc1tzWw@Vo z8&Aew$(x^Ufh2LNvOA9$1&O}jdp;(DAfFk6XK{^47dHdcn}A~gt-El<20LbJ%RBis z7hU-JMc47V{y+D<{&mD|2ZXwz=K+p$zLh_xa3@i^v;wcReN0)<(dqTTH%vH8FwJDu zFRK4U@kU)WX3U_X>^-L^6pBSrghAzrr5xi?k!Ug9$3BF_!sw?N?&yDFN z#5kV3Q`)P#C(ZqU|CNlaM}|s*QFjiAd(>+%IuTQh&VUz#V?pZa@;oEVR1z_{8DOQ1M5*V+C!G$uL$4 z|C)E#))E)an^xZ}G@!01AD+j=Lmt!#Wd|DFbJ;gvdMb*?G%QKK#1G$(vYieuD6#do z=IDL#jTFiayy4lHvDq!2Y-_Bqa&7AaYwN$zOQftpqgO7WnJZ86B8)xz=_m8k&yLGZfp+3D zZPdfN5bvj}&H=mYJlA?v=e-w<{uTZbHj1T!HfYH>K6%72 zFD_9a_Q2;MINXu)wH2L!?+#u&B_3$wCq>=7P;37pKSc9Uestlo{3?$a=Xh(bQSP$- zRLQh+(R&7wCTHeRI{On*Ufn#&E#n}`)%^ge5W*dk&7EFhJO7f*LFd=hQ$p{a!j4og z#&DH+K39UJUQA^NF^D}^4G`&Rpx25DkzBlc$2^c7aWA7Zp=duvA^+h8&TLF*Jq;0{ zs_@XOy>Y_T&(pYC&W5HUQ$RZL{qt$nPyS?KuPP~3raFiL0SJ)`6nY93TPH=vvuL*- zmSRSCRIN^|V{-|I1Bbk9UN}Ykp=DnC)MaV@(*3L87BV|R!^P3FGUoWo@*^QCcD%!} zFn7my!uIhkN;^vOuq4wA9Q@Ru42%^;%3*mbyv8+)SjM^8S6<4^4)h*xrdf2T)AT4S z+SG(-Zf8T&7sp6;c4)S*4{i(*GRc_tC>=SLvYEE>eF;vgrngy6nQ=>B4)75~w9F&} zr*-w&Lmtk9rEm3dG|jGNt#O&CU195mR-&z|RMT0ph?DznC09ugu61`Dy509A=8vVX zxMOt$duG|Hr%UxuUPnsQqO+~O0s5DdJTVbLoi_LOZ}@B4RvF~;14G7{hC|B0yaPPP zYYwjpudP1n{D{{yDwdeU`c!3Q^O8tbl%X0y4ChQTMS|oJ{)akHxYCrzMG*fRos4c) zJ1a;CsmxP?4MCc4$_Y_R?9J!BsxoEG=bB-u8n4>}P~pA1u76JcX(#%>4!prYC=@8| z6g>izB90$~ZqU#){kbyZVfs*4z_^6^Cr>IuBqn7ygD%oWHoQp zEIw#WdL4s{cmwr@@q*S7PvVo6_5e)_fj+;Q2^)rQ!-cP2d^rAEfZBb&+@>rcb_y;Q zl^AHh2&yiikBEhm^j?fxTLe3k7q$Bh?0P4`mOTBMT}BC`v%qhbp&AF{gXObcv|G!Q zf* z4?7LE$uP@|Me{5#J4h~rO@=9{EHonBL(Q!$CP`;kDpq(U)|1e$s9{auSEy}CWGp&y zsBrnlKQb2-`_o-waJ0|=jA3Dg=j(W6E16~pn3CpH19|afZM?hKFKGz5e|FePCh0pl zdbZN%9mb`y%CSR`D!)g=s_oc<Z6`_ohcf_r$JT^Fs7BzAD6oKM3wVN)6bN~WW%d0Z&X z@sTAYUXk)N6&$^y<8$`6tm0pBtyBq zyVJyl+z)#bbv?!Wyly|clN*1_imez++ck(8h_RLS6Y>yb4w!~lM^UHvl29@(&Vm1o z*gn9s9R9UAYTD`Y)mENH$`dOOM|og~iakE1fs=5?d^KwW)4ogI4T|8;JxI+mB%!Ye4M-Du8hUn?rMQ>cLfI7?sx&i$Qo!g$I zg8nuIn=#LZRvx@iZqZDs5u^TGNd~CnUyeu97STeq-az8uW8(SR5Hd*W)f4`(8V~aP zf>y6B$<->>g+D^!)zET0m(m38o^$w(Ueq|@jl-er$Z~k_I%T9GlnZX2BD;PCi#Rbu zrz5NrEZ=wc=T**@(`Gj+G2{Jc9+UlgW^V(NIBHGG0Cz1mz38ZjM=(APszbE_4@nH-hW2WTt@nK0qykE6PaSuaV~u+GLp9g5kqp+ zkxAf}=@|Xh{mcz`X{ardwQ$s$Bq#EGHf8Y^MpLNFHzTfMPFl2c%d&Me#PtQ#8H2?e zw!OtC5i;RPbA2h(zuU2!M+AwfL*_WF?wneZEfc<_B0Jndtm>;X9;`K6Up;)R%K zc-%j=vHv=a2h7pilLq|=I5R&%;KDm&VwvfaX2UP>ljBb0 z6a^J`sqR9MB%_r}HfZEe@!E)4*t_%XkRT0`KxWiTCBW*Tzqhx}<&w{yI~Y1K7_iby zI;Ym(d&W#!e$YRn+b*=X{O%XU7Z>Z1F{^tTeBNu;U*3MgkVFrQ+cu;d*r%BqWa-SD z%rok=R=u}W(B5YFD6y@0yqQt-va_o0lQb}JN4dF<$4>Xg+^)W2s;kryH^;_Jn13am zR8_e@HB8R?*3ylxfr&@$rH6E(M6LA^s!ZGvsnU~I;NTw=qXL0}*jEgLqbB)jdB9$W zT)g&=@}J31YG*tN{rTl=#Dd=Bij2)MYB6hzxh$D~C95h&5vgMqaM2o2H5(26Rhu7V zz7cz`$^LyqY}@4JXu@zN!UF5w10twC^7Xo*pTdPHV>K@-!r;fHfUezvTxEV-!*@Z+ z+r3acw=*n%I7cb%OX`{EFj-#i*Fc)>@nu=MU(qm^AxdxA4#7T_EieY}eedDnjS0rDOZK2$~xVG>s3dkdVe&(_!nPvge=t)dHz&Hg#N*F^^Vt3D zzC7mowl&sw5-^@yH})aod2TNS$eIPheQMGt6dH&DYj`huSP8hY5qu9dFFO8zDm&}1 zsQRuCg9sxaAV^3^BOTH)G)PHGr=)auij;ul(A_hXNH?g&&^dHTcMdf$;5*Mx?^^F# z_p|QzhjadcbIxAh^V!$FcJpSF9-kviXmcOW)Um1GuaH^|K+_d?Iw@t5Z-Ua(UoY(> zx%VlW8%DEnnH5>)oCTlY$mOx(TT{+um|mwSdTQpR=K{}*+%?-fvTRSWd``b&_2!wt z&cFz+%fkjDxr5)i1Ttbgh2)@8m>SVWbn)8VGSzM9eAj=1oUf?Mu>*B;n_+|trIe%{ zUU(QA{P{dQxHWZZV+eI}-E@!Zy>s?|0Ck&ot5#DK2sh<8EGziB-%Dz!pA0Ssb)8O8 zGk8^Dd$Lz6Gpp;x*1i6<5ew~(mIMxjOZsAT5JAZ1R}E{8B)Rq|EUWR#qCZixRFmW} zd6;#JI4%g+jmf6|7+@pBX(s(KVEgWHBDl>w{PS8Tl$VKi##6;1f@#y#BtmpY8<#F6 zlFn77GC{H2C2)@{382#Q`RK5g6f>9~? zyRe&T_lg3JuzWc(I5^kO(`zMqMDuYZX{m=}bX_ahU|jB5T;4}YhOJxKNB1STA za{6*FmH+l-B0r5ZXVb2bh?hd+erXoZ891ju!9h&p1hoAXZ0s1Lu?q^)-PL`vZ1 zmFw$=lY~WoWXdDWN!S%GpBc+Pr*!`w=G$CD+?gDYp+peEbCy1Kbn(8(xia2HyD7?g znc!~&Q~ld&r#}cz9|4y@l?%QPsD-x;O)##Z?A9U|GYHyLR86FXgXM3#W&0?6lRVsQ z1NtV^`%yI8aPOt*OoFRtUkAC3s%7R8d#{`La`pNlDsk9(uM1X-cV*-*bhlE`E-L`r|)w{H4C$(9T)nzPK7faXN1ycW7?6)9pW zV@{$`zv{S$g5cjD7ezXHLiWRB=1tUkCM+4<`Y2x^7=B=;Bq}m{tmoAbYEqvrUSR1u zdLe_34}=EAj78riEz(1&Trs4n+#uN9a1Fg3H7bk4j&i`CQQ&UbW85^bcDpik-$Z>| zu#E@Fe3S4t7wdAPkC=)tiSi2IExf~MZCsU*thxPQDqPqM^CBOOY_DTf@TzAOp zP=+R}-s!lEOKvM9wn?K);CUlcf7uX+jDS3d@JzIHKR~6laRRJROeJg!m<|bP+ddfsDg+ zNFo~mmax1qfzHarcYtnC-BFeC2TCW$-H}1QM;F`XZHlL@b>3E`R7HZL#~WfhmGW%U z@2M@!3YQ$r@AvX_jGV~CeqqUi2 zIjwWB7zov;NS2~r<6vxQ#jLC5+HQrA;H_pOFY3uOAyIHbRa0X)R}PQ1UHrtn5HEMjJ;e36ez^HjQDc*btMku`@=ZB@aCL1Z@mg%ahaQV6gBe=&U0=rQ{tK6Ds-w!+OE>2Ut zGp=5o21o^;k)`)I+=)H9FJ5E^SrC8H5G86rc#rDYWltbYdlujy{SsQbCL2>q8~D{c zHS4CoyV{T%SKSi@uKFPQ=eUdQCG|iDb=mBxb}L`C6{1t;e=KXYf9P_$2dLo}iLD+l zF#Fp*5$Oh=yz1@NYJN_yqmw(hbJ`*w7@UywbiFPs3nnoHTAQ zi78D0ld;uRvK6mZv)yxvIo?ao!#u^!aqur1ZzFCuuV1Xn%&Bvy-(o*g%jKk{{-id4 zgr+y{IW@!YF!tznY9|XSTJ*thY8ye$6hv)-$@EZ43SA*WQU>MvUD zHuqNd+knLc+k2Cp zYz{gcq$6vjJqnrmkQd-iP>IcgQ^};{aW)C@E){xZp_0^7zaYtkY$nzmuUL_x@YdG0 z5an}*y{^wV&ehBbmz};=%dm_h;x_%Fg35t$ZEdR@8@ABfFS0Zg3r?jIr|&%Ln3E)3 zonW{yIY6yG16pmfvZG=l@luoR4cIL)-kgL*AB9OW*){3L2PUO~jvAJ6oZ#1kVa{Co z9~h^1*@{XqmgDYx20v7cW0@7L5UfD%u=m8r_+P)Nq!A1%8Yzy$UkYgiK`H%EF#C|D zl!FYO2e0_p^FGQzaTM-0jj-*$L`Br8`5C%DW~WEW*f|wz7K98{qF*$(Mnoa;ojeWm z@VNASFfJq;7q3N_8O?X^LyUNdNE-=eT9Y3oNw4k?vpCF`4wyY8E{W@iWb(3|Zco$Y zu;LlPnp8S*g8Z~zYqcXCp0ie$r-*(N0c*HmdBs@aDy3%}`w~dcC6`ZOiM%4p`{=4C z3Js$?2-li^=!VQ#W@2I|lD9p{6Tu(_7|Mr(RvoD=UY7vV=Lios0;{@C}rJBf?*T5 zT-OT{64M{nt2LwSb;$M7t?7_46@($9=3Y2#Zc763!5f%4;~6A{P=-ZS0y%kD>Tf_GRB>%(986Gk zxzGNIfMV_|Vi!j~-`86N3PJpE8Lf3*)GfvPgT>mgG_Z*`p-9K|`7c_PZf4^V>#Vu) zsE{&Q_zi|N;;>>~-mV&222XMitdZvvxPj#hFNo8`%nR3##;}Gzr%_a#w zaw$=WXvlAzYb(w2S{r@d2|g&7XI+xL72g)>-1#Xry0$Tz;!oU`=}`MbqTrhhKgv_> z=N60i8dF7AekRJn6>l)s^;Ia8XZ8ldkB@lzyU?RsP-9p2i}$8Yuz>9CkDbj=ARNTkG*~x*+ft!&vm0SsMJ~+peKjdBG@>d6ec6d}0|w_AJPoJkpd?$NT-%)7 z>_1>4`clyqQ$h$K#?gw(n(&r*@GztGhXenjQSbVq(fACKmr|bcJEYACxo}SIRKQy~ zPP9TrUc#or0*ir>EH9{Xxfnz~?2og~e@_KJg-~hpM-|j~Tz-0)&P>=`4@H0Vxj%%n z2T?gjv6h3WTD;=g>@hw4rM3{T4BLSk2U79$%~stHS5KK5*X64Oa8|jU%cDbrC#eDa z;YTRny;0U1`>@`#d;TT%HtP|?C2wGaA~7Y#+;^;(PeAwNI8$L3LNsbdy@&3<7X(w? zM+Ve}H#gz0u)(U3unB&#Nk)77XRj|tcz57!Rh|a9VQCuoASqz5LGFvgH}F%$KtAIl zqIr;%V&&(i*VeHXr#*H^G8X~n_=IILcspsB@0oIQty$^#(fco=p?xroo6Ep<7ese~ z@ruf)fmcL6idI+=DO!T_F5a%I`%~|hsfN{LRmpvkrR7bp(n>rPR!%ay3bZ_s z1mM0=BUFlmMWyIc*dqZ>P1O=}YniW#*GA`da*wWQ5IvkS&q8*Y0}CzMmzUpEq9(bM zv#h7}dLSb$Mk6T0cA6PMhomO2OU^%U7y9?^u&o3HVl~2Vha1s<=p@?b_dakK+{*Zw zM2<`fblhbS%hT`Je)`Gn{DA$A`BFj@b-?1Bs0nNis@hLK(O=HUVr8w>!74rC^0HE2iCfg)?cdnR4)@ugI}gO}Q+#%vTC zr?%=hDI97*Im*5AnQ<@&K>#PvxzGh;o`BiM3zpU33QTP*JoOREP!h>jYqaz8wO$)j zjwS7!_lufzvXwI((+Hofe$AZ+qW)F*uzz@7F3H#F<3$}_K6*~8=-g~85{=DuV&P9T zYA}bL&Amom>gXWZV^mti9OZX#Z&n8)>i!gE;7&f1DR0ZY6c%-$n2_bm|Ml!f;EK=S%-!52q# zIrsdn$C=Q)h|3&{{DF_sO1amW4m;v6H7}00@ye?0#8cWGF?*fJC8Y&^Nh&_|v=1L4 zc(Fs1u{l`o#55KKp*1m5Y|ZNbGZmFX^lCJaO`B>lr^J2hdUAlE9o$Dd>*%$@oPzrJ zAX55tVqQnQNFeVHlm$)8WLt7<9B4~z-7tLu_}_Wr|0hc`0bj+CD(^Wv?P? z|LgN-=T99ngYKEPx2w3f`(WfQfxm+HIahvj|EwtBi;%1vw{vl-MKzQDC zJ+GU&5^D#;PI87J#zJ>g#N`^$@BVM6`)Or>Va*~VH^Admp!cd-9Xmt*)EqeHNRhMm zaq#T>GidDc#@47cNm)spr9|207nVQZ!Wx9+JChe1TZvm^lDp5Gxm+Z7c>{|%VszhP z)&A5gdW>yDOFGS@)ixn;$v;yHlsJ2E8R&BVXJr51qg?-?P^l|CLk939j$(QPC(BA2 zNNy=8D;}#DXsE~jqAd)%9&rDs2x%iD;iTDIZHad06+Mj7VQ)zUUV9&>Y=yp9*=sl4 zrc{*_r%P4`BHV8$r&!5V5-y@-kDKhSXqE^3#AvKb4T9CJF4lSNCV0Tq43^WvM{7Da z?GIA)3L9`#B1SoInJcM0`@MTr%m^Ce@AYH{ASdR_Lp(ZHclL0ekhaEeB@nsxq~R}` zX*rsq2ib4mz`r#1VP z@>SkW_j+(U*W%Gx#fOS1JZUy+BTfe>#1VXyftHqOx^iP?UH0gHF}-)~PnK2vz-Las zR9y7p)j&3cn&}rU?6m2<)EE8eczIpUw`$#xebTei?}bi1I+N9kE@~S>#jk!krCMqE zmM_7yI{Tmb6nQ+LW+{hU&E&VpukzWH@X|9kTJ1PF-vFl`McwiS*OMWqG>cyyl`jRz zofRjRHg8Yd>b1c=oYyrz*}uK$;~=Y)`io*RN9G1>%KlLxc92<}D!%!PcVojbLp5pg zRif!NUR2FNI8Y}tK@L&vxj6KZ*T&ItIMg@hC7%JV>a9lj{3#k7W*9G{a6pLmW3l<382P zL~~i;rw8inuZQ^p@1M^d3S5k^rzp_w?0dfL`IOU^UScpvarCTI!R+~ro=2Y2d~wec zfFFVRd|)kRoE9%_wd#1!4{C-rLhFimX~T}$_$9%Vj&BQu*xo2-dEkvW$wH%#muRgt z>FPYnhU{Oxj>hm=`m0BI)9=%WO9D^)g_a zMZ-ti&k29+NuL#tgb~snDuH{t;mM2Ks6)c8ZXOe%J|Z4B$P}$8#wsa@^`W~%`9TB( zzS@KXe85LYq`o|yRDuB5QcqTUSB0U_Uj@VqF*S?-<-QGaP@KNFTUGiq!}wW=-@Uk$ zjUwh}7Iour-N82t3j&^{($6WO;xsyln@4xa;b8p>tX#WoZHG0%42C#7JUTjCgLz+H z{MH_eBau%7F4MTk56||W^O9TL`2+g9ygJ}Cxyav-w(!#FRbz=sc5O#hnF^4GczxT% zMqgPJ7G3k=*4P`P8T{zk*ir*T@UO;Woz|6>hY@1PlWYwynmJ~M00DJwsq}rD!_lmx zUYw;;5k>C}e5BH8`U{2^GhXc+@W9EvMZJPbMGHd?_R0CMIplReifYz1&_n)FT}1ur zikNL(+i?51QCC@g#75UsZZCpe6CbYeD$XNBLr~kytO5>EtvSbXIP||5fBqk&)qhaY zx{xtpgOsPWaETn@&#EDAK21NjTm0I)ehTFO36WhtMf9XUup(+4O6{Moepysv>ysgg zflV)Ab)0Q19C+=Vr%&g@lY&jB`r;ER7iITX6@rN6wQ1r^I~5T8V}^cAS^$XCwYLsr zDLG`@%dJ#eu9{fedyh4zp(VWhpizrT?k4$c95GU!vzO&nw`|M;F^b zKL!bG8Urr~D&nWmnY!YoR6O8ke+()(<$hGYY2(5Ng^iQ5Y_M=m+Fd-P5nUM zRNvjWTTc9DXQn6H22U?eo>98_-8@B@Nk+cBNYQDF@rhJo zf+Did-Pkybnfj%re^U2Bt!m(5vD8I+)|J;?LWXB{Y#h^1-7BSf*AWoc6|uO_2231Z zk2CtU5uLFy@DBMG&Ctud8rRAHR8g9rf~za9;YELGGUY`HyfHZIMlMP5P42V(42q6oDy6;GkzoX} zqGHrFDi?s{gRI4%RmX(E5d~m8GVj@gr8L&(iM1N6{MWme93FK|(%%<*0s*O^>k!9zF z{Qv~|Z1tYD31Yf$u8Rxui``qNs(R2CeR+GUoD3_cb!uW>o^*Ju9EcXq-ShvjQ4<)! z!&j)7ZRCfI#=!BJ0<8=1tjk$K2}`!@A`X3{ckTy2>aZ7VM9EdDA(r_)mX8#jjYT&s zaG>ARLkG*HOkMjAyR2$G2boG5cV5V@FtF4IVke;iZ_39Vbpx9i+coE4su#L`(Y63$ z6yC#yWMB5NAoRUorzf`*ZxQSTA_|wItV3bp#N0aIE5I5TLyexJKb8Skw)+I*ATAq` zFE4g0ZB1{7<3e&MHr4*3`(xeOzCK*Ax?l zox7;@l(~2&GCCg!WXkz5F6Mr(4)O+p*rHkJ!{gGrB;Q%Tnhqs5>)h)yxagJ8p2*kC zbZ|dBXe}(YYhFq9&C#+Qmt6PV%}1_q)r4FbnKSf_EcJHo9 z=yWGMx| Date: Mon, 11 Jul 2016 11:35:50 -0400 Subject: [PATCH 3/4] Implement PR feedback: 1. Explain grayscale input still read as three channel 2. Fix typo 3. Add more details to image match explanation to include the use of masks --- .../template_matching.markdown | 23 ++++++++++++------- .../MatchTemplate_Demo.cpp | 4 ++-- 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/doc/tutorials/imgproc/histograms/template_matching/template_matching.markdown b/doc/tutorials/imgproc/histograms/template_matching/template_matching.markdown index 5196f424a8..bdba55a799 100644 --- a/doc/tutorials/imgproc/histograms/template_matching/template_matching.markdown +++ b/doc/tutorials/imgproc/histograms/template_matching/template_matching.markdown @@ -20,7 +20,7 @@ Template matching is a technique for finding areas of an image that match (are s template image (patch). While the patch must be a rectangle it may be that not all of the -rectangle is relevent. In such a case, a mask can be used to isolate the portion of the patch +rectangle is relevant. In such a case, a mask can be used to isolate the portion of the patch that should be used to find the match. ### How does it work? @@ -60,7 +60,7 @@ that should be used to find the match. -# **Source image (I):** The image in which we expect to find a match to the template image -# **Template image (T):** The patch image which will be compared to the template image - -# **Mask image (M):** The mask, a greyscale image that masks the template + -# **Mask image (M):** The mask, a grayscale image that masks the template - Only two matching methods currently accept a mask: CV_TM_SQDIFF and CV_TM_CCORR_NORMED (see @@ -70,10 +70,13 @@ that should be used to find the match. - The mask must have the same dimensions as the template -- The mask should be a greyscale image where each pixel contains some value from black to white. +- The mask should be a grayscale image where each pixel contains some value from black to white. Pixels that are white are fully included in calculating the best match. Pixels that are black are excluded from the match. A value between black and white will include some of - the match proportion to how dark the pixel is. + the match in proportion to how dark the pixel is. Although the image should be a grayscale whose + output from the file command should look something like: "PNG image data, 128 x 128, 8-bit gray + +alpha, non-interlaced", opencv will read the image into an rgb matrix that will be applied + during the image match. ![](images/Template_Matching_Mask_Example.jpg) @@ -140,10 +143,14 @@ Explanation int match_method; int max_Trackbar = 5; @endcode --# Load the source image and template: +-# Load the source image, template, and optionally, if supported for the matching method, a mask: @code{.cpp} - img = imread( argv[1], IMREAD_COLOR ); - templ = imread( argv[2], IMREAD_COLOR ); + bool method_accepts_mask = (CV_TM_SQDIFF == match_method || match_method == CV_TM_CCORR_NORMED); + if (use_mask && method_accepts_mask) + { matchTemplate( img, templ, result, match_method, mask); } + else + { matchTemplate( img, templ, result, match_method); } + @endcode -# Create the windows to show the results: @code{.cpp} @@ -177,7 +184,7 @@ Explanation @endcode -# Perform the template matching operation: @code{.cpp} - bool method_accepts_mask = CV_TM_SQDIFF == match_method || match_method == CV_TM_CCORR_NORMED; + bool method_accepts_mask = (CV_TM_SQDIFF == match_method || match_method == CV_TM_CCORR_NORMED); if (use_mask && method_accepts_mask) { matchTemplate( img, templ, result, match_method, mask); } else diff --git a/samples/cpp/tutorial_code/Histograms_Matching/MatchTemplate_Demo.cpp b/samples/cpp/tutorial_code/Histograms_Matching/MatchTemplate_Demo.cpp index 7cd07a5f03..1042e2cff2 100644 --- a/samples/cpp/tutorial_code/Histograms_Matching/MatchTemplate_Demo.cpp +++ b/samples/cpp/tutorial_code/Histograms_Matching/MatchTemplate_Demo.cpp @@ -42,7 +42,7 @@ int main( int argc, char** argv ) if(argc > 3) { use_mask = true; - mask = imread(argv[3], IMREAD_COLOR); + mask = imread( argv[3], IMREAD_COLOR ); } if(img.empty() || templ.empty() || (use_mask && mask.empty())) @@ -82,7 +82,7 @@ void MatchingMethod( int, void* ) result.create( result_rows, result_cols, CV_32FC1 ); /// Do the Matching and Normalize - bool method_accepts_mask = CV_TM_SQDIFF == match_method || match_method == CV_TM_CCORR_NORMED; + bool method_accepts_mask = (CV_TM_SQDIFF == match_method || match_method == CV_TM_CCORR_NORMED); if (use_mask && method_accepts_mask) { matchTemplate( img, templ, result, match_method, mask); } else From bd7c21d83e10096e279bee099d56f7fad2d2b431 Mon Sep 17 00:00:00 2001 From: Arthur Cinader Date: Fri, 15 Jul 2016 09:57:12 -0400 Subject: [PATCH 4/4] Fix explanation to refelect how matching currently works. --- .../template_matching/template_matching.markdown | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/doc/tutorials/imgproc/histograms/template_matching/template_matching.markdown b/doc/tutorials/imgproc/histograms/template_matching/template_matching.markdown index bdba55a799..464fd8de16 100644 --- a/doc/tutorials/imgproc/histograms/template_matching/template_matching.markdown +++ b/doc/tutorials/imgproc/histograms/template_matching/template_matching.markdown @@ -70,13 +70,12 @@ that should be used to find the match. - The mask must have the same dimensions as the template -- The mask should be a grayscale image where each pixel contains some value from black to white. - Pixels that are white are fully included in calculating the best match. Pixels that are black - are excluded from the match. A value between black and white will include some of - the match in proportion to how dark the pixel is. Although the image should be a grayscale whose - output from the file command should look something like: "PNG image data, 128 x 128, 8-bit gray - +alpha, non-interlaced", opencv will read the image into an rgb matrix that will be applied - during the image match. +- The mask should have a CV_8U or CV_32F depth and the same number of channels + as the template image. In CV_8U case, the mask values are treated as binary, + i.e. zero and non-zero. In CV_32F case, the values should fall into [0..1] + range and the template pixels will be multiplied by the corresponding mask pixel + values. Since the input images in the sample have the CV_8UC3 type, the mask + is also read as color image. ![](images/Template_Matching_Mask_Example.jpg)