aboutsummaryrefslogtreecommitdiffstats
path: root/tests/test_framework
diff options
context:
space:
mode:
authorAndreas Fischer <bantu@phpbb.com>2013-03-21 03:07:50 +0100
committerAndreas Fischer <bantu@phpbb.com>2013-03-21 03:07:50 +0100
commit15aec0bbb24be10da850f78d85a3d10880c6f28a (patch)
treebc659f47db2a2308f62d2b3f507689675930041c /tests/test_framework
parent1ac94699e456e8358ab88a0eec959f21333cb687 (diff)
downloadforums-15aec0bbb24be10da850f78d85a3d10880c6f28a.tar
forums-15aec0bbb24be10da850f78d85a3d10880c6f28a.tar.gz
forums-15aec0bbb24be10da850f78d85a3d10880c6f28a.tar.bz2
forums-15aec0bbb24be10da850f78d85a3d10880c6f28a.tar.xz
forums-15aec0bbb24be10da850f78d85a3d10880c6f28a.zip
[ticket/11460] Add methods for checkbox handling to phpbb_functional_test_case.
PHPBB3-11460
Diffstat (limited to 'tests/test_framework')
-rw-r--r--tests/test_framework/phpbb_functional_test_case.php64
1 files changed, 64 insertions, 0 deletions
diff --git a/tests/test_framework/phpbb_functional_test_case.php b/tests/test_framework/phpbb_functional_test_case.php
index 887dfea3b5..a62f5341ca 100644
--- a/tests/test_framework/phpbb_functional_test_case.php
+++ b/tests/test_framework/phpbb_functional_test_case.php
@@ -463,4 +463,68 @@ class phpbb_functional_test_case extends phpbb_test_case
$this->assertGreaterThan(0, count($nodes), $msg);
return $nodes;
}
+
+ /**
+ * Asserts that exactly one checkbox with name $name exists within the scope
+ * of $crawler and that the checkbox is checked.
+ *
+ * @param Symfony\Component\DomCrawler\Crawler $crawler
+ * @param string $name
+ * @param string $message
+ *
+ * @return null
+ */
+ public function assert_checkbox_is_checked($crawler, $name, $message = '')
+ {
+ $this->assertSame(
+ 'checked',
+ $this->assert_find_one_checkbox($crawler, $name)->attr('checked'),
+ $message ?: "Failed asserting that checkbox $name is checked."
+ );
+ }
+
+ /**
+ * Asserts that exactly one checkbox with name $name exists within the scope
+ * of $crawler and that the checkbox is unchecked.
+ *
+ * @param Symfony\Component\DomCrawler\Crawler $crawler
+ * @param string $name
+ * @param string $message
+ *
+ * @return null
+ */
+ public function assert_checkbox_is_unchecked($crawler, $name, $message = '')
+ {
+ $this->assertSame(
+ '',
+ $this->assert_find_one_checkbox($crawler, $name)->attr('checked'),
+ $message ?: "Failed asserting that checkbox $name is unchecked."
+ );
+ }
+
+ /**
+ * Searches for an input element of type checkbox with the name $name using
+ * $crawler. Contains an assertion that only one such checkbox exists within
+ * the scope of $crawler.
+ *
+ * @param Symfony\Component\DomCrawler\Crawler $crawler
+ * @param string $name
+ * @param string $message
+ *
+ * @return Symfony\Component\DomCrawler\Crawler
+ */
+ public function assert_find_one_checkbox($crawler, $name, $message = '')
+ {
+ $query = sprintf('//input[@type="checkbox" and @name="%s"]', $name);
+ $result = $crawler->filterXPath($query);
+
+ $this->assertEquals(
+ 1,
+ sizeof($result),
+ $message ?: 'Failed asserting that exactly one checkbox with name' .
+ " $name exists in crawler scope."
+ );
+
+ return $result;
+ }
}
3Y3j-=9*X3aYޯ` &B.7 =H:D'|! ƪ'\K]3 D˯Gۚx"(H}=a؀+-p 4uGLhV!P68 2'UۯmUשY;$ҐEK4$Za-$2AӒQ҂m8p 5.9Φ2mWG k|?EQ-V=;(Un8n vRMz?/A4[~Q1< ,Ob1Y Ԁ! <ّV5b0ڔy,oݞO=-5;A' pCX_~+<+@Q$w}Id%[R`{n͟zNJ'YpMd[?_vI2*b /]NO9PPqMSǫxi X Ws!Pj#F;wEGgxtsiⴱ#rJ,bqn'G%Rc"+nsCl|Q#MWTB0) Wٴc>6,M*a>B8BG%[ۼ| ˸]D gISa,m ZkgMV{8>VaaRD <ǁ) I0a>gnU^l>, U'#Di0L0ZadQ($}$!9zO`vW-4>aCfCƦ$7uڟmw#YTLu vS0@{N@T1h"8%V+g#)н I:(BZ@6{VL%@f2*RnJeA)vcW0`ͮaC-=q"EKQ |wU% 8F*FO! ֶ684NB RAXɾHԦ=.ĨoW`FQ -!C1%Vf I0BUkZ^f6^  }JpAmpb`0c̢ARS >RF2>g\sR4ܚo*BWZ,<Wcɐj6#ᑻ3.*D&%CeCגiK@0I+y@tiy)Shk#yNw%nGq:}Tz~{ x 0%;+Fm\Aҧw;:AI[g:Lwdu}FHYIC7ރw{{>h2k J{L_ \i8z5췺[[Cc<ʹM/ޚ[Ǜ 7?w=F(~?>: Sc-<3OS[P:IHvva'9ezpMNjuz`LЍ(;1<ߍxt*.=:Ͼ <8+"#/ /OsD[7PMn d{'__ K9'B%xګ;Tje MxEsV%/|acD6oQ!%BUI| cGsxQ]IPf1/|3tB08rN2 NΩŧ!Qa*Nx/|bLجT4 ` y,(2y1Y`*xaIzj톂D Ű%ؙqt_̯7J"xyo|=5eUsBn61٣"o܂ /o9y+f0JcV6fP8<^l3|܁-xyZ ο=i [Vс_2,tWi22.F}ha9-:ivN ?T8C+Q]2&sK,د_@>τ0NZ{(J %׈B4Ҷ]a'1uQ jC l8`$C~@5X(2R ,4홪<^H ,,"VdfP")J7 [ǒ;Iǘzf `R դ 9C!SlEаH24=C;BVjwhw#)h{t b BoZ{&FF%f3;e˭{[f0S*AF0NEx[>S$ ʊ)jst v<]1 &9.a4Iܻ崝e]99]Y?ΌKNCe/,PNl on>w^#!P]ݓ6>A ײB)^\l_YΝVBjg?L85Ti "߰{חgzbX?RJ;,~=LDmHI3r2CUX hwm S&Y%"@^_ȳУS]IY#i/i NNK _{$WiD)"$RAYA''!^"Hx0ƂŹ~ݩ4MMz6|܅ybwyS90xzQB _ Eo QcJ[QEu~ʮ$4M'>rn2T)EeK0`ZE^%^'Ä_9{)5eYoK 7 qñvK+ݖ0f{ ^pW=V&ᔑ ybI#Ox"!]e$/O^Hl?2qع~I?'6`s]TK#i ;m^[(D|~WFT1 4(x(P$%=( +gKfg)X[vi Lwwwx2;G}btE|)D<׊$ʃELgᗙCZ|qRm&c{ta{x= zw 裭)C,E(g8ΊV^&/b^f% $yzcH RF]FE 1}*%m4?V i,C)/=Ţ3:?{f#.sk̰${0,4J:DlJR9 #"%6/]scQZ DP{+yrcֺTa֏I#BCO@favVag}$7( |4cK.!6crqo͇/,XQ`Co!@D8_+ -wqk(H2c1x@P '\Zy"0d'Uj B*9}s{&!Lg79mGt0k,R (>yLv{δ13@BBF-C2հ6ื4JAm7Sr fbn)l,V]wJ\aFɸt>Oo&'U9" nyVw/g|RŇٿBBׁO,V19EJ7ju(_{y(Ԃl;ںIb^b/( 60L#Cb75>lxViG[_H-Dn俯W^ȧ6l@fM'!33oSߣeC2ֿo%NYIb,4@I^ίδ__&@ўnYÛXKK7p#Ni>of~О˟EI?% oMC͇\)IUjfRɢmYrXkKOMo<.Flpkd[Ex(=c~YF:) Z3C=e})BkI7ݎ3t3G$^DT?h[)nPA&<;HSC}L M 7Ms$_2LDnϦGF*kPS7t5 nDv+c@sMK덜'WR7L >qDRh8v5h' gBL}ψŖԖOb9#é0S5(j*RW zry811܀y"t{Vb^}kJ VܸMl:vhI.RKٶk@*u620p U6(NK'xs60v]Z/.BR/J"ǘ׾$~707sȒBPn6 \\f YoS d xC<߭;̽R &s?wOS_,U0GuE#ŮuSY\S`{rl'ˁIi o IR˸KgEԽbJ^{F6a~njk( 0]>v1%0(3dOr0l.MƠ?&. S[GTecۢCTTJt"=2٤'#66vT6R^ۻWU4jl`ewuU 0<Vt)'eP iNKI44v%@{{fbhҁ޿|q8c20.T O4nfaƱ|lO݄߬1#VSق $4(Q6]n2_CeYТпd # @ 4j 햏̈́c]gASynH pBU .6E׵{KDvhG* ]hZa0'HV'm!;|!/M(*- O!IwCEX'S~EwI*X_'L^2]7@=-A7 {~uF2<̐;Ƶ} )_1M(iՓΆ-INq(oZ ew9jN)GLg *.q-0&qL dZ,wcf1C6!XMP6*sGMv g/,Z[ pA~ɵ1`iOW蜍X{*9 æiILݐpd?Rw q3g٪'y翣 o Arמփp2F)d'faQF@a!d{8F=G2k.0p;;Lf. UΘ[ *|6ӭ?yP)t 30|QydwmLSVZgN4D0[/π;|o~/GRQ7U8SxZR]ۇ׳t MLUݛh,m]ԶT:`@:9啟1vO,h3kAsXرzSNyݤzМx+H7alcN V0p ÿ*}|ZT.ܐ/O@fMaEGƕSݯ>ꊇwu6rEI~5低//5CDH>LمKZGQcԀ"꫷C)qTb招$߿LƠ*4"pD:'`@Dx8mPGhVb^y5ڡ~:0W36pX:l*F1{zhQ#"?Х7x[֣,F\ *!ZVO8OazJۓ|.-38UG*pNmˈ&G*7;urVNMhQfPJC&xoV"ʆ C)I_ʔaZk२87_b˧QV_AqȬO1-^+CnaP!ga1UxưS]si_eg?ok*y&aȼՆ W[e'38LUIG*M4^F'w,4,&z=e@~wF)y]`9 ^ u;^&!ݕ$Ch6l@#|\jOcnb[ P'\@w)qvvL "]@V78* 4lAVcśԼ$D~ ?^=Gw Bw۴ѱ&[3\4ovWً*WM8G?$ZES@R #\V09gMM `CՖT< 3;DX;/:t<pFNJ/ r$~~}3)sՎk,D1JAz7Qc~꜆hmŸUj;p4Rq5~RR(5%TMܸX<̲ϣn"VIkv٪׹C~ p%PTJZ>jCr,BN+yQf?)U7 c8^|Cj{YQwjo$!zKgMLԥXm;f\vbű"FXtKҍtZm q iU %w2։?@R f+jc~k_MLXi8|2q&VU^*]IN/S34s6I5^#StP5J+oE2]@p&Ŭ2D=V.W>c tIFy:.ol.*-fkNZ I4 nH.I5.<)P՛ -Z)Ilsb:6ۂތ@L#ts!yK:#[eg>v&oa8P0Tԋ HV>q.'ӺWE3&hfHƜ U4ey즼EӠ[ "#a@[tS?XずvEv9MbV^vD]L:Mf\;is/MCdwבWMPEx$oF̂;! &3 鿜dqu6krmim5g)E5Nk~C3w'wz SGcIFCvF s*(7o% GF| R]wDmB[>V-|7:єwwi*7/<|[PCquȘm{(蚌E{G@7~IN@[2ɜ5-߽ہ?To3/KG݀bm_sH, pʙ-i%%G3&G]c/΢fdD᳕Y]/OaRqGlQMp1$y-dbL4CZ~B|d(&0*j iI!_lK x>;wxҖVz0:* 8u721ml9vv01OJXҏWVCg? j履Q9r5fBsA۰ma$먫HEН\ n)^g%c wJ>eu]T [9$+K^Y"q.-/];?o!'[ai5(Lw=rMCImR$Hh(WU7)i.v`ޝ& C*>=zf%i|j$#6Z?x;/{qH;x3qt0tx57:yulY%8VOV̡asI YEiqL}8 zL>̹+Td'22 o˜1@4IHy*/e"ywDx$/סsl3bz0A ]*Phϝr#<:.4FS4<:0#F6\7\t>kҮR r@J#Ld`u*=c)YA Q統+L\Yǔ7ީ\m ,ۯqyaA`=<{ρqS7}O5lGW ~!+IoT([~L S[DkOɈF's~TlTcߝjC'3ӕAUH״\p%A#z*l̹:PGfj%# l(`n-:sxعwp_nAAV ƍzoVQ .j/KCS.n>&#(Ʒە| (=?41Rʕ4d]ge"0H~(T U'ʹg};Zj6aUnbK bn)) opn,"q$(jS,L)v hqr +,=P ^8h n^qt~^oқCeZ{ي i][oaLt!wީg&/Nv_P7y uAZ1Qta<'O={p+UoD7@1yO.qyP.ח΢w"BQ YUkB 0{A ?ƸIi(\fj 'F^3=V9OypLTJ= U8: /0QҨuj ɄpGܸFqI'sGw0[#eEwp]d &G>4\@}i62Q,5i$Vm:UKT#RxM"4v;j9">M}YcToT< =TGBYZs hP`Ek6ǂ0<,JЀ2~+VhΥS(8 )NJGFa%5>6 -N-qJ, A ˕zٽď ,{%L?@*dUf@3]W,~95\wŝX~t*0 *}0C+m@٤S3,'NHl_Ҡم@M$AR\%k*$ZAGtO'2O]\Q.0g׸L &goزriZ%7_dx)yE-Wy+o8# ,ޫP5j,ԭJv iBxR:'b]r{az#?QHcDޤ6PaJO0+lgvv Vu>~7$p^˒XB!Dᚇv+уh S|l불\׍nߖWPmkxv6uܛnDHJ9u SI=,$3$.:)2tP}^dՅs^ ?_UZ?'jA5x̌ {Fsfe5yE}^Bg^?Q{'O d26Sw+] +uYw ((gѠƉ1B)(!JG%d`d\9zoF@V$9YRLYs$6 `:u$3`W&ױtrZP5B3"Zs Xv735(QB-~|6M'PH Ms#ý\MBǶ/Ļ;fK79Up4Y1Pfݳ 5<"ܯ]x̦ C44)t{ib%toDuenT2PB <վ!,^!{,oǎGLw3>FJ0wGq+d٠@QКN!?GiRRh`Xyo->1|YT{AnjxϼVV?T8PD[3PRKb9'-9MeHG`(6)[MQ^xٞ>8ZN(W4ᢨ6!5ȹܠRCbmȒfbibW|q< V E6z,s߂?8V>)BoxIk,>o+E}::b9Y8`v%2 zU`J#a_.θZ0̊BHlH+&D;}. gXջEf9N.h 3zr` hv:go70'_ȞE7D2zlf28 2^*j4 ʯ殨q ` K7!w3iI f"r3SX 203kɐ׺|w=F'M[ejn#>8^Q5_r±s/Ra $Fm$}z$w6~ifı(bȼְ8؃NȎǞnR neq-!I,RQWFMD~fI:ذ,N,.ݵ]cC0:W{Y/,Fy7'f0ItfƫLOoC]#&${ 1}qϒwDF֪H=Pt5^N{"w9σףd,!TYW?)pT&+Hk+QE;^s16)#giRu;ڔ5 %j=r%*@44rrzJ=u=@rG,X.^]H2~lP /ܔIa_9Ll ѥJ/Vk-נ_#aZb !M7NLȞ8YeJÇ,֡Mb9vj8c´N`%K2%5&"WG'_{3`F_=9hy5W-s;6M7⯌IDX%%=fRbVM֮Y.)1*a:%ْiG,6@DA/pTJ )UCVq%دcGURJ2 }TA~Sn c9;uJnJl-тXU^Ř4}0ԉk!:^#j胛EA`FCgO".!m. % p8W5#RpC Vrul i{;-WiOy `To:PՀ_۠uv2:el߱t<9DB*1}GZoJSR(gLNC/.b1嫟:|bꊕ0S "&KpCtځ/zѕHA)TYgM~RkS84h܍![a#xaB gN “L۞*忪'&fe8)%h'Nو{ ]@Ts1PE<4ȫQƕgU-zѩ=J1>޳uD K@Lufy ;F}=S͆vnԵ'Ў#8siUJ[ZR/! ;8'[@S6F i ZVZP<2G7Na]z 6Zr;۸FD/ f8Z( ĺSܖĉ/Jښ>W}e7NZN_h=G$[ٺ5I-|OqAD|vaK@2%R\:?O]VxGAkRu!'aX%6rWΦB*eǜI6op(Ki9{82 ؑBI]5-BڶuGȡ EJ{RY/N>Rd$2 ;5/8v5 L2DB*8{lijXUܞUz, RiMՔfʠvowIkBfdGk=qTz+l}H sHxi=E: x~{XZYsZ[Vbon3 N%n8),?q@ը[l%T`1>fRK te%urFe]w.Wj:+B.!D֊H~h;Ŵ21c0 s>M풆Jco#H"0k>L+K7eˑWhӳAEjLRVt ;+ *P?REHa['uU?O@CLhS ){8 |X'1Y|{oA~ė=X +:4e dRk3pErS vH'\c2tc2vEd/r]SuzاV[HN ,:ě_.k0ĭ-Epԡ9&R\ؓK YhJTv7.$aKcA]+Ŵ$c4qFJb(LY^fq/N ū?@k?Kj_ ']@41Y./ٜrOz9,"> NBr|G`3{k :AhFp?Ώ/ |ٚj DFjH`ܵ& ُ@\:Ő])h._@d-iepqHد-%vo6(\*;Z Nx D?t)4K5;MT0LnePT p+O'f.U^i9^H(%Ygq{hw Sy`*8LL!gDv0j)x>صoGk1FsoaMu("p^wtqRg,{&nR={GAjoޟ!Qnv:n\գ8(kRoL nJ ƌ_kӠ1q^PK-~ @nGLZ kMIĐvs q1W+K&dTX? iGizIZ}=THH_rfHV^ g-Z0쁝C9֗#Ⱥ,~brkNb]ھשo35+ȊQ TuX>m o|{kѝ4{*+2]YhI.z7L 7-e]ϐH|˹z6ި|3ޢ.6g@9UY!G /zj9yyɡEAylu`9CMT*6er\˄2ssTGnG(mFzkk 2B-*вYkH[}ୗ-]f>9{X/X8;\ǩQD-R#N@|ҋcµ[Po}_jV{h3(&g%=⯵dQjk~xj@ᖎ/[|~{SjO w\e/q4TUUӪ:k_g4gI!Q>.yR Z!Nv.+.t5t/fHŬߣN)hB#?]&[΅ߓi90d%?a;)C%(U'4Sô4TIT@l-j`Fv+Y0m˓ZKʧ̨WjrӒ"x6}j y]N%)$ȁǔ.=zE3iK-ےxںCGnYAPn}; w_f^0W'@l{եG'WK#QZLG(,tMI# k{tGX Z̤#>HFA &y~Q7hBƆa5?(-]{*} ʗDY͢{[Q܋D?^|4(yPq {\9{)e'{7:EQpg]$u"PtTf˂rGg(>(.owk] >"?VX$?[rT;x  ڎ1{0SۿI4De քQ8 m)#V`4P PVhMBQzl6둮CV=nG?(q.D x|Ÿ1FYevv$gϦz(F&@?ӻ"+2\YΪ@%Ue7}e4To6q~8'4AUXNE4`j+-Fg/ԉn+cKh5nT.G4|x M/׻& 0EՎb-_dR,\í `W& {@/!:B ِ"8+1_/=؞O1}7B׫_EC3 A̳Cָl (xT6Y {= j嗨? ??rT?+/t,6Zv&/~9=j0Ds{_t-Xn&94d\]Uda1q XI׻pGKRL hn``LёD0C4pyOkypkց^7)n\0sWtQ?)3^v qX6 My-1j~|?cacS5&PONseLVgH ty#;8Ve-^0 _].~m1vp4L>\24tU$Љ`*Q7 pU6]װʸiR=d ėRS<"D].b+y^6ǍD{AڇY:up<(TrL} U,U )1B/5zcimŠ>_ ;–Mf@~85yEfɭJ ڞOq*T{tB (fМ}y"ovP>IzBH)VIoZkg&즱'Jc\ >#qq%"] $]oy<Ѐ:h‘RP9=gAYz;:R ʟsA#W ~{f`#8RnI+K+M@NŇ*tC ÷h?tl16 ,ȓY7w:Z5fs1(l;23"TXٰu*߳YI&3 ~: '^[> ҄4=mo{b%uVUr6ǾtLL"VPkv.wR4M],pGuZ!10 ͫ}(GX6$3R96utSo%wM $_KmHFxEMe:ʙwR8TբgX6% ?pXA^LdՍѡ; ).6_`Cv'_2 ϙ]=-K"?J#@b 2/8ThxG^ׂd7iJc B*nJmiO#X} `j_5kSg6PJ^Vzf+qfmTPcwuP `ur{Zq;SY9<є]W(}x,Wc28$xT1^Ȝ\iHϔ ֓5!o6:tn=fbWTE@/[׌$8ҷo:GՓu=mm)kZ\#(ק(%/'%K0Yzr]L ͉J[d/+Sc!v PӔjEcn0'ʸV]fLzezDa"3 QON'GkA6tg79Kt4x(8x!uf4#D( Jȹ|$D\d#M\O(߬eZ{s滛o)e0s?V̤|"_Q4;|._꣙Yx;T׬w_Рɶl߱?.Ts#7',b?T9`Dt o+S-ϝdgCegkG\ڃcjo Y{M3Ͼ4"u냼LL,{ή&W2Kk]lxx2L8u+Lo }h[7b@Pc ֓ot8"Z>Y~ghi ]4Z V,"Xh4 %-9_dꛫr9]T̊bbI?czϏsͅh./LɲvjXPFx Ԝoo$78; H xXk,]ee#RO'+EL'GD9x拲iY 65)V}o|+"dr!{엄*{hVYqARgO{6T2ӎX>'#ħ6G9j*6#AW9V8NeD&fk̰P{W pNA,H H9 NhA@0؅"1@!QK?1j/_x{Y$`Id 6HUofv}z̛<Q doߣ䘁-Hcsbc.:B:X2_mx D[R#c}{jg].1Q2ѹ`9G4䙄課$WCz\xd{ pH'Lofn7xdcEX+ ވy^eգÅg#/AC|WE`,fCb_~ {/3`z687KPPyXyVYT +7c=)C~zX>U?Y5҉>OvSY-^ h(l;x)^$Y- {j|eRJj; ՍAIԴ')P߻y}a}Wd`B2ԣsȪfF. 9N'__q$WV 4SF)- ݗ5jQ'ĤXs/d\A7W!wo'+PR$RwvjAcA$ֶ1JGk*9i ~;>DF1b,QJښYhoٔCA3n91n;V(\ >6I-V& W-"[(ҪL)n|{D@$ފ^mdN3YnlLd?K 3b p\sv&T*e=>e,Ec(OQq  )ىX3 rVgש4q9s1JuZD,~pW^pt!9nW2_2ȓ75y>PAφCAњ3q33:&#_q}=Jjdn8"B 4{'D7/k]+6ڂud(csܪNM#Js)>7 YEvw&HY7]pY NPOޙMggM|u8L_)t#B7v4bi^vo߲!èD fe0]d.Pqc߰ aNC, X{bUz8/O) 31 @%KAO,IjҐnXǪ#=).J3MA$*84GVt-=R~MMvTj1_WJ,Q/ښ枯Ư&_N-6ΡjU%EHȾ YVCJe9N|8gfSYљY7cU;5Tck` OxFow8PճZcOڋ4DdjvPwml\[AyXW(0l]?l[\*߬WY5PJ'ϙC gL}Rs)Hfݘ"} o=.^n* >C8.ܨ]=_7#s{ Oenz",` m鏗!rIl棚KA)r5prUZ΋̎Mr;=IMz-CUR1ivI9È=o嬃FΙM;>Ą6兠/uGy6V,.[V#B-ծZ5v|,z,BE哑rl^14GLlQ?JؗV.?Q8ՋBwUM$ݤK6vO ņk|ϴ!3WC>Jc Jp"^}2$iRWE`Yk?-dms")WDy'/Èd|gO6 1LG8$2;UP 𓬋`/ưy)Ba4<GˁE%*- 4`H"|[O  kzkLL&HHɽHGr_߱0;R{{&[XH`|\R=?pr2n`ѬqNn2b=&JZ}m7J}"W.n83R w5 ?/yli, i@lYӜcV*RƂRZi*$RKU|t8Ӝ5VS '?uVoۈBeAN̖͝~{of€agK"[dǮlSL%m wgTw"VZEB]`R7<rK"`EpK \Pi[mÛzңr_:q%%]vo U0Y! iwл$θZ6"d YtKۭ4DRjyy ?gM UӀ#6Y-^'M:;/hO gl_^GtNż&]$~9@[Q N/8:h y/1SKqzy;RIe4Ukv{aBdec?"s|`i:Dg%d&5+d ޤZ4EAo1̄Ԋo 4*rof!w2 oZ}~Zs2U!\w.!%g>8(؁vU_&j'rL  Ŷ NoYs6lS+)Rwz MCѥXv"GbDž .`Y`JP=%@GĪi)|X#wuk{֒nM"\tq hK$"Y)n8̫~\Hms}{ ~wajIQ$̒=Ȕ_86y; }*6,}ޯ=CUVSqo:e:_pk?i{y9"y8[Ur2I}*'o:*{K)VUqP 2 0zX;fg#%co GGh.E,*rHگk϶e(慨 ee/ W![ᰯ&.)52s<$=J=">!{8!>ǡ|"j<<7y`Y^;P=kgwħTHHh Su_ W 탫b,Cm7uJejGfU&!9e=czq*z!5PVfZ0l/,ټlt^8?RpKRB}hEKq W*_[#js]К-'Ж~@| A@(MZm@Xxcr׀L0Πd<~\O&mt@bG2/ ءJ_Ɠyh1H$AB0j "Y@-A oUUo$bvC$Gٰ jy\nAf- +7l qzԷ`wW'?!'/]PfM$ {E n~V$W az{>N8 bݝ?6QbF[q9s~t%A,7O: BӜ4n4%@lRAi[Uڀ)bg~0%\ȧ4zdLnpy*v6fOSq3q _Doؠ? ;= bbZ%Ũ%#vv,AAGHB\otov4,M!z'sZJNT.CJ\zGJ(SmP 3a==F(g?&E{z# li@fĿҀX?k #^,kpp6uOא4Ob &}ߊbc cO9](\MKΗ65)|&K2 ?lШS5v8X^^j$-O$@_JB[V" 6JYyۄ g%RWv4ҖCSޝ =;,}EBaMԳ{57wSʈM'bLmSG(nY+gVcJ̩F4$G)$Ӷ6I> m Cy܌OM?ީ+^$+#sZjN ;kۢra{Xr 4b\)_<.)csց4 5ߏŌN{e$V1J;X- ٥d AWoG4x\ +``ǺxÇ.'cA>&J{Clɧ VO%!< $bz` 5۠o|zm 9Ξ}|Xr2 c?!.n3w9h[P,**C̓dFƵSM b*׼nûYk~,.VPZg֒o~_an " c>Sk`` nQd<3*Qr!>a8ٓX1P~G`>8*o*l#Ak<Ⱥf߰|*ԩf[,ёh:F4" ]&U5U*wjƑP@-Gk\^6giF&g)0]YRQ{sj_ nru_ʱWe/4 C]t8ׯc{{”R _ ۱@ČYmQ96 aZ%|}4k+Yt%h-X\mj)f! -M:̾ߌm.4lNݘ <19Jizl꛽R6#<3] m(n ]AYT0)CFCۭbuB+=S6nǓf'N^7<"H7Q3c e9:j)1mdwW1q6՘ KEm=d~-t'w[Z*8ls64QWݟNs.r_3N,0;\w(ϵxZ:,qKI7E 1"Xapd ECh\Z+q=j"ʁJD:p<+k75DBԉa#OjUaJ& 2!3|D1xUԹNQXޤYB5kݓ9Hx>Uu*O$0oZGj+&sZӿɹϖ#Hil=N=Vȶ0ҫWW]_;<'vd`z~HRxJgcsM;ߵ;g$iĒ yY951'dοjHn?7Ci)HFtWW[A%js=vHrk&=`AjsԺ&'Hy fA `1]r|A4WX38@B:z3EvƾHwN3Gr%*dRb\}`V;{" XZzG̷{;3C ]9~ӼG23lL`P#9u  Iʊ82]5]"^.MSPmҋ|ǭo`K}q)yK`1Z%mdb8Z5K 'M;; NK%2w갏9BSpRz#DLT:Itw>"܍>҅aZrGhhL S5pOJYPדbw̌ջzjPh׊ *`3?ȬyL` M3fEL(ҪsDZ 4^`S},NN4YANGeXE*x#|5+gv< vS( ַ(#d@p9% r T˹j@c\O%(ΗΔ.LkOE<͚5 EWcK5IqPZ5#J2FWu+Q Gξ}bjߩǤ"%]C+rS8­ 1jgI Xe бY$oMoL9YE(*>u\XlRwȸ_&4ax!&EPٺ(KSRA9*,[p ?- Y$ӐL)ǦxDcV7 ĬrC n@FscdST.<+*H4ru|PX{=jsE3sdnt0u*{(h$˧Sgtp7ؓMZ TgCIh~u6xLfNǻw /A8"Fš="4 aa'x3GeA=CcN?`&:7 4 K1Wq\}&6x~B ?2V0g',ao(H̸#>"'lAo1`WЅeWxv0P&RM;^VYkZʿD3W*dWӔD@T=7JeqͨlZz .D$!8Czmكmdb[/iu0%ST9QSC:=cc%q'€ :i%4W S#t w?pUϽ-u&j6~~ުw v\l9jKx\\p{Nbۺ%@b(]_6U$>݃換^-!f~%\FQ(3^!pyV+a۴/b*ѵf~6ՆAN)Y,:c0!pF!8hz)$=a,wMTk s_ht(Exo#GJ^|]ZZm:q_Q4ǮSXEzT4&,?vmޥaIf3@`5y=p6cqVI'4'Ъ; OuNk -}E4)$gшx~I-;vam5랫Ӎ.wҍ5mXUyκ 3sۉM"Pc1@i6f4d8'FvUg2_,f]NΨʥng$_?g  ݄Nxb#\ŗ^#R9s;OwWhTQ~B^\GX#a둻z^Cqh\b:&݇>8G4$qނ0;3ZˌiӍ!<&rm֦]9\b%tEe< o޸i~,X%&}gOX!7(hPRN{jfI#Ze̢R!>ʣd4v*3#&ɧG+٣~Zp)!^|h\0;e |#Qmv>.^1Wa,%l:X SZ˟ pE7dinv0篕jq.r|<~ HSRHU*FE"Bn.MIӀ>w~Te~`@6iBXLw ?\2Dନx96&+4{{'VR>IA=`vCq+cpgjIs꼎*cZm)A)4Dg`Lo.m^zAr'nx<%?W::(g>1f A-s@Akぁ;Ss9yzz낦(u}fw$ fv+4!jܒy i} xP*XIL m|Ι \䞪VuD{eЄBdLZX~yEQT"Mu֥ꗳ{f [8n.⌂4{7RttAv&%]?4|yfaSٺXxɋcЇHDS߇>WWѲ [Sp&zKF1WմahU u%0rhuH=~A(!QD>`Bڽ T0{DbQD+^O4$?ـ*]PcЗix4P(_*i 㽌&4EuBno?LUYXaBgDEce% i3JG'1"V2/5, !Sku&<]#FRrpgÿ^Aн+` tR^g %}&G]~ז_6FoŰ"SsKՓGW%)A9g]c:%`Y{w.\ףj<ٕ -`H,/#L*ԡN^,=P1ъa Zd5cRQ=V'_[z=~@X`&a_GRd{?$Tl񊣔8@pw %Z(0)NNE+9}IPZ뫂5~#4#mnP tIyrLlzjMb臵ä{>g1hOϱ4#;|OeO'k{νq)  J o5yZ ܓ}K*cX%-,p /Qc,X&i1ɭz"'x!LE%u 9b4G1Xne}y raT'k}Q j5z/V0է|cht˒kz< 8d.1nVwb3MvGK\+Gґ8\hg;{FzsH$2jվvywlpO x{컇JJPj7B})QimL7CdӗAI SЖꪶ%#hUWh[9!xTfx6e H4,2n ɿCG-k5c.w?[q bMZ'wȌ W K:ݩ3|$,IKD .0q7pd25ג;sFG(-0"V@x_zFQlD>#8a'-k߆oB',[Qh$i{JP1W-]7$Xw} T2PH-D0`g 3N[0oKV7&c).C XDҦb*݌P0R0 kM5NО+HIr%mpFUC'ͧ</ge[lo'ߓ-]GMx2^bs#? rfJi$o7DG=\yxr\xQH5ZBV 'k!}B:w BXIH<0]Y*H@6'LSRo| y Xӏ "ږɊ֝=4MaqZ½}!E`IHqZe^&v$IEDcR'z] rP"/^1]h1{*L{d$@:LNlrxzϚ08O 90RX HNq B>o+d,MFHkAu'C69:c_z95/RO3"y27jÚ-[n&׳/ {QZ7f^Y LVSi\yi(G»BOKtx /} >Ϗ䇫;xbӫT+s:TOn4{Qo.U05,(4x<[%?V]foaAMn8Pk(ܪւڝ;ܩy<_.o#VZxцJ'{i;EZ@P/PSƶWRKzPX1_P}}_2H=I%Mt'ɣh#TT_r憧yv~Ӭq9{ԾmԄǾ?Tt6n{S$+gɥFbG@\Aݙ}ARߩ|x6X{SoTBG♜GDcܘk9;r,3 Ǖ('T$uy~>94ӬhKGn ]Lcz1Vչa6󉂁S%W;^G6 ~ o۩gX1:(0I|]]Sy^@4A>[1z,Fa01|f:Į({mjV4YIlx%[pIT%u_Tz,LnMu̕‚9 [Tό.b%Vn$.<5h{rWjpW^|oh" C)~D% 4, q E#:y$bQ=)f[|XѝX~ԻngS ^{CN'iV~>0MM2 PMGX:tÚvNcH$# 6@"$*4%MidxRBͦ+~K\L^f~+Ú!E6O2lJfC[+h'/X^\e޹\7cʣQIx/fܦG3ĐX)a[P~j3gB>z_ԪR(s-3N;ΰsRc;^ 9ʎ<*|O GZj.w"W8;vb O)hYb.wH~J}aW| Vxuœ$ tƢY䮳T;N+(+#z&k.SqH 471eVB?lr>a/]aW5b> (;qoM$tOż4HH䶫(yv&b$u1g9lZi|gzr^]Ct!Ѫh! ~EKYuhY:@l2Ӱ?*= (GR_ѳ!K7 9BJeoh ]*kY{g*ɷӢ /l. vUŪ0uDI(v~%-i?A`n})G$q2φkFQw*3t+z=roRE4. t=A)XH+o 5蛒(('NFu"JQtaV6gZ94wmRPQrB_/}4m Wp4T">Y/r$4.!+ vJT=47ӗD]͜;ub|#FƞzINKtBw3!B?^~ߴAN wbҞ6XRa!a?ίtsA9S@>NS iY1/6 b -t@wRP Ԛm0\iY4Q3G~LNv&/Mh+-/,qSH~R1Y9B~E3B|!f@O5 *BqT%݈4ln`\Ư 󛐒y'v# XNoOھ ~enHJmUG,vhC 8d -M_ 'uGwyJLjz AuQs/{Vřtuۛ>|T [fBySz,7J]O^hnW:Ϊ`xTm9u:\Ft-Q"%G tW\}/9U_9 WYH8'--=N .p 'J."eNzs_pm.W>?*?s:NJ+5s@w/ 7 -h9ٝi iuKngiͧUF=e7^:Ks $KC1GJHsZ/ߜp5sA3S,H4od䘖OEvc9 dؓ]8P/r$gOzGeꪜlGrT uV$&>7POgy6jʻ^fb '3zZ07^?5U)~q jӰi*`mFS= ~j{ʸ3nz82?\O`VtN=:Q`. -3HMN݊6dR`zzW$V̜Ui'; V"}aM>rr"mv*~&*f/y EH?7^'P8_+& a0~ir]6[C$4P-YYl`f%^pJgipvPW\#DE}mų&|2)==?ClTOu蚄j9_=}ԗlPʐ♉aͬ)x/ij<@i FYMlW_ւm{a>"P*8J~״/VDΜe_cό.&7.%r"&ZST*eKy$T':Ofg#^lFFE7zP~( B^~OIفNqή55<~e)=G9tl\,~ 5c<oմ$)Xۨ ,Q)V4Vg>O蕳ٟ I^tY5G^UIݲb<")#̌'-&*Fȇ^(h ݉Lk QТZqrѼQ~ dB3NsE4'23\N<ڱYga{fe3+c,ԤGy;+mAL3Bf+r,+sk<[WD]oivמu04^h4fDw[qU=y |)mor!zՃ9x5<B>vM17vGNo>X^&vׇUP |R/xSfmG:LtKY15 Ȝ_*g'I-L^0 sƱ s93áǃ iY~溂¿CiR"5O<vjSni%hoK[Xx_1:#ӞLHT@} ,W kH=SJZu.tq&~DE209N̻'ApS}BfkzMlR+O \Vݎ2+h$ڃjUޢ ' 5]ZUm[.#c~3QK?=$75ѓJ=KΠ(uw\pPEr;`0[\4^} h=kki4C+TJ{3~i Vd-ŧ> _fx=ǦHZ(z#ny\L QJ˓%2@Ar!Q`Oq"dl!GM(Szdբk~Ѡ>J4;^\EdQ< ͒GAf"{=wLPQ8k׊SMX=~EF g]AU2XRW_84 uJvn#x򓨳gerL1{^q{0~>:D4NML3M/i`XF1WPgd(~Խa j(Ȗbά%z1<Ħ-I Oz=nI5P.xz)p8*B_^cE/}a7S!*i|Mg]!/Swr ZI,WHQV9a.빓ȓtb.