server/src/tests/Controllers/ViafControllerTest.php
author ymh <ymh.work@gmail.com>
Mon, 06 Jun 2016 01:10:25 +0200
changeset 170 31bee084df32
parent 23 037687868bc4
child 306 3fccf43160a7
permissions -rw-r--r--
Documents cn have more than one spatial sameas property
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
23
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
     1
<?php
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
     2
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
     3
use Mockery as m;
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
     4
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
     5
use CorpusParole\Services\ViafResolverException;
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
     6
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
     7
/**
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
     8
 *
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
     9
 */
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    10
class ViafControllerTest extends TestCase {
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    11
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    12
    private $viafResolver;
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    13
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    14
    public function setUp() {
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    15
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    16
        parent::setup();
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    17
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    18
        // create a mock of the post repository interface and inject it into the
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    19
        // IoC container
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    20
        $this->viafResolver = m::mock('CorpusParole\Services\ViafResolverInterface');
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    21
        $this->app->instance('CorpusParole\Services\ViafResolverInterface', $this->viafResolver);
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    22
    }
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    23
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    24
    public function tearDown() {
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    25
        m::close();
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    26
        parent::tearDown();
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    27
    }
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    28
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    29
    public function testShow() {
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    30
        $this->viafResolver
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    31
            ->shouldReceive('getNames')
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    32
            ->with(['93752300', '56666014'])
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    33
            ->once()
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    34
            ->andReturn([
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    35
                '56666014' => 'Guylaine Brun-Trigaud',
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    36
                '93752300' => 'Sonia Branca-Rosoff'
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    37
            ]);
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    38
        $response = $this->get('/api/v1/viaf/93752300,56666014')->
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    39
            seeJsonEquals(['viafids' => [
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    40
                '56666014' => 'Guylaine Brun-Trigaud',
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    41
                '93752300' => 'Sonia Branca-Rosoff'
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    42
            ]]);
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    43
    }
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    44
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    45
    public function testShowOne() {
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    46
        $this->viafResolver
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    47
            ->shouldReceive('getNames')
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    48
            ->with(['93752300'])
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    49
            ->once()
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    50
            ->andReturn([
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    51
                '93752300' => 'Sonia Branca-Rosoff'
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    52
            ]);
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    53
        $response = $this->get('/api/v1/viaf/93752300')->
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    54
            seeJsonEquals(['viafids' => [
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    55
                '93752300' => 'Sonia Branca-Rosoff'
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    56
            ]]);
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    57
    }
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    58
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    59
    public function testShowUnknown() {
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    60
        $this->viafResolver
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    61
            ->shouldReceive('getNames')
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    62
            ->with(['12345'])
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    63
            ->once()
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    64
            ->andReturn([
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    65
                '12345' => null
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    66
            ]);
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    67
        $response = $this->get('/api/v1/viaf/12345')->
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    68
            seeJsonEquals(['viafids' => [
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    69
                '12345' => null
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    70
            ]]);
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    71
    }
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    72
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    73
    public function testShowMalformed() {
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    74
        $this->viafResolver
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    75
            ->shouldReceive('getNames')
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    76
            ->with(['abcdef','ghij'])
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    77
            ->once()
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    78
            ->andThrow('CorpusParole\Services\ViafResolverException', "ViafId not in correct format", 400);
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    79
        $response = $this->get('/api/v1/viaf/abcdef,ghij');
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    80
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    81
        $this->assertResponseStatus(400);
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    82
    }
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    83
037687868bc4 add viaf resolver service & api
ymh <ymh.work@gmail.com>
parents:
diff changeset
    84
}
]Zdir#UjyUx  ua"֫4U/ 0uCϪ޶_UeR*/9܇YV.>y{9^8rc;Tkc{.|6Y/WuxÈw:Qp9G#sҕ  Fdo{Ux9TdAC* U.5x$=_P|yV`3uy6z ĦY *!8U3ޫ6:hr9Ár; s !0zwJlwq9Ƈa6;a64<8dChd<^9ҨdEjvte UU{Pz'ф;zVXVUeVTeb40d6RUJ" TddBls UFsU~BZ}d2"!ä? ZAhhn%v"z^ %d2  ,467CCCCc VT1 C(gt0k/Zyj= | 0`40hh`  0` 440hh`  Y"=o*GAqCCgJVJkWZ }j?}*4^W?UX>=;.ð hyUYD̑wv!ȏT7q,+pn;oI}x0v8!zTVPz0`xЮau0` ]zgqWʶPJ/>d\@bI6^`U/U`1S00R}Y"j6"$U_0`zoR6CCHhhe CT5 Ú ZEi=*eW`ڇ *4eU`aEb- Ƣ>=Tc(E8X$Y)O]U`=X*>4?`U`_Pē*Qd2Ub,PβF `⪿`(|Zʦ `d:w%vT!|ճJfbGrw={YW)H{V !cuW#cV !8a$``X20uץ^w⡫65 4669PCHwy"U(=Uzǔ660` 0`zՆUdR2%XaU;GJw{ʾA(HIaP%,|!`ʺʶ28u{7/@^ʴxT}YR" 5" !!(j؋l}SlP}h`CC}j2 X2 H_(jXUV^Jv|!߳ڋT07UV -CnCp7 Ua#!- : Eև#m; DžW!t;ÑCCt Eև#n0ʻ`YVu] "CPJO !b=fU`1V*B T,"?}F^h~}of```X0d0d0j~y\pV[J %,W7C!id<~Q`eCC!p268C>eU֪jahp0p2]hlp2aƮSCpUd7UuCc¡ **C!~u C^c« 4̃e`b92plX!%Q%_B0d=a PRO ۿH|"! CC>p;_* VeX:0ګJHPU I7+2xCCcE.$\Uu+q臚CP񇔊PGNXLBħX9ҮIM445 C!2Ed! Ur2`:CcUUEs U!Vgp^.$ZCJ]*UW7U; E!LW}ç"\ud*l){)URO d2 gzEQ:q,V%cU\Ii !/!Ƀt<9^q[CSlla3b#AՑG0`*P*wFPV E :ÑeW6tnCb. Pt#P7Udʮ!YCW$A:Px~]mNX940eV 2ڬuV9 (ʶثJW2; 2Ka%eJbSb%NoV}«C*/*_!0` 0` CCCP ʭZCO".V 2*,"z[f dʱ!j`0d8WK,ukH}׾%2*p7 ƫʇ QeXU`y*"hvWWJ?l2WA IV$3 I\ 0dTSc,PCC*|Cx|{,0eZ)rF C *n ʆHC= EUZZedZCjUU鑮H(e C!MjC! 62qU60j0p0`&Uu]PEʪ0`ʬ0e+P򹇄2 "`e C(Y UEWxмPJ]͡|jqc> e"&Ƒb- UV"Z2UzZU{ X %t:!d1 2X|`b,eaVVe CUWCH0`U,.(} CևX1פ;p?5U/8vC%*W`e"~=/*"#0?p*|~Ot{Vy*ld0`cCp GCccUrt20tp466= W07.GԋCCP ^ʎ`& B efCd0eERᡪ"ZzRZ  2E!! 0hhh` %l`dT2 U`VC*!dPjC "q!!v42cu2U`eVUR W̒^O`Jy*=T}UYV$2hX0aX1V~~~c0` <^C$K2`å ~ĩW >u0`4:V᫚<2.W U"٘Djlv2/9zC V[[CdPzA"E`^?ad8PdW1#tY22Ud<{ A+VeYVb C!Y*2|RX7CX5CjQYV_>2,p%qp5 Q6}fN<3=үOg Ƽ^z3XqWJwcN"p67 Ȳq+(d5 Pԋ!ʆH,5(FbDV%6h9`ޮ*WVʴGh`lvlp9 G60hz::lvE:Ph`VWoV0:J\C<ơ:: c r0r:xd\  CeWT!; ;U[hd:eUd4DhnnPyeWv Qs,̳3hU ,3d40`lp238 668 JeVU_!y %1Aw`;!+ oUnCthhhhjET2 U`hnR|ƪ8pړ[U27 o)^oW^cCR0` *Ut/486; Cc;ߗC`YUh`ʭUhj4:x ZU_`V=*+P?Gڕe^2/Hk*fzy< Sw|Hpz6o3{f1˄Y EY ENcMUxPU Cl>K$jC$]*]$^t2 w ECB5Wv#`W0-_ۻ\qtqh-*]2Ulq cUe®8V!}C0a'Y_LCU_h}Cڨhp=^2w')eXV ]*}׿_.>,;j{=gzJkr,RQ,X;xP=uCN@VU ˔IW-2š'Κo}-ynl{)'{b Nr+,%3U$7ynʮ@ӊg p=+l}A?ڨ h|4>;Á=}dA>#AC0G#4?qPo,^I; A& (JQ'UH9Ow՞Ӳ\ſ>^{o(|! ?@Nd2VjC6U> a9pr0~#p;Á6: QG0G#øCp`;Auzz pd6⡢SCpȕ AUzC0d<(vhs"vRj20[C̋h`c42);440`d=!cE: 710`Ha *jhqyô9Xq C8d>d.alln0al(eC!jE8:zÈr=GqZ"d;air6:Qp8j0r0`r69"<7 AzAy 0v0``< T; Qq2E C{ǐcp9F᱃0`90{:pExCp;a=<[7CHsC`a}z *4i?2}%' p̿jC00;A;?|=Z\Ճ0ta28AF:!ECPA4=jE46;q`:AWa>=ちd0{8hGÁt=FA!!0hy7\ q0t A:P cr9G#Ϋ苠xGatQj\-P {Yvk7P]jm^}Aӏqo^:񱞃/a<=?;iWxêqCcPCm240b-1d=F?`CCh|ƇaxUWpUu{{aq C0h`2c à86*0uh{phvp0yA4^a`U>c`#C9;A6<ơ  9 C Ehb.F-Ac0lw:49ơa44:C5 #PvƇhy F{ !40y r;C0~A6; cc`P0yh|G0hv`6Aw苰|FǨ xF" cv;14:A<ǘr6: j,cp>=è0xad4=ì=u ld7Qy;=F1#ExcQz|?|?c?Ͽơ4?@C\|Gq8jd*e?zf=upDʊaT0f 3d3`^uYjǭ3H45  F !rJCZUF\8,& ld?~d0BQ/|Е`>e+t0i449#X>-C ^<텃CM - ZZEF\HjζY,'\p:8ITReXI$ Zh;h~vq̋\ %ʇ`<|E&NL1D`#0TX X v"Mk3PhfC5kY ֆfk42hfP̔}ϲd02Y* 0`40h`U[p2UQr90` 0`UZU 0mW;G⫁p8p>{ƆCUx`9qU;r98X4<CsUn««CzA>^ʭ:_ jcu[0W;Uv{ثa0:`ߤ2Պ*WDu֫W= V*e\*8 jja\UwYW V_x HhW~86p*z9j殕hr='FfffffA7UӐy㊮UqU֪0akAYVU`t>>vUҬy]*0`#cc]/ݏݻ _n?YK+C."uPUXJ8*JMM`)XO`!T?L0dYWG*W@Sh8ʭhhd=P,*[JpV  !66ZU9Uq/~nE`Y *C*׼3UqW $ =zު!C*X>FεmeʫU *ʰqUYT# Cj>UeyAhtU:J?WE^Lq"x`Y5n ҪU*vU`W~A > 0` 0` U]U*VU{hhhtEU0`ʬ!! C 41)d<C 0`.>0}c0`0xCC 5 :"ʬuP "*‘v"{+)YZ4+ ;C*h`ʮU`R,ꔲ-aֽGxjW!d?WA Zlp7 CCx^ݨ/|t`n~ !e_X:U`1UW` 0`60` 0` 0`|{ ʬIø0` 0` 0`UU`,h`*TVC҆Q\`YUK; 4 4%he G8]e'00` r;l:aj#0y^U"Zy0`..zBȶ6*U7UYB`ªC 0`CPPoƉ: d0eVC mWʆqX= a=_UJʪWUzyU`4Uhhi nE"9"XL<DL%llldV 0`F (e xQ+([*hh`ʥz T8*%n%llyԋ 2(d)*xJn K.*]j*UCeC,}_.n7mܯ~GN4pW!UYUC89Cccr2Ck \⮵j J9W"WXd PP NW)S0` 0` 0` 0` 440` 0` 0` 0` 0` 0` T2z*0`!0`j!".4jݖ,"ᖪ%/m)5 d<> 0` 0`BmړU*~ګ`AJ}/C7$պVA[cc·48"뇰d02 b@S^p>RPϥE}C"w|n$ְfE [eV UULCUUAkPpVCUfn#v{692C!C$\W5]GQ1}c lwÐ`3U[:r6:! ÑlwÑlhy !p42U\AvC~JҕG\苬"2CZCBW]ֽtVhd01YWJC4$*ܧAT02PYV VKu\ZHr6}u%zH"C!YU{ !" UmHUJvU)< %VC(df[*ZJUYUXXJ:J{ ꯜuJ^r/= Oa0` 0~qCC 0`440` 0`CC 0`C*>ߟH!ڇQzPQY eU+.!ִ?TK7  ;CU<4:U)^G Hɨ~d2թVX P~qF (q Yt2 Uؿ)Ĩb2U)UXꯂ,\~\ Eȭ|!TS2 ,BYU>_wCCd;A}U* 0~  Y e ^d0`ʬ eXVU|lUE` U_MR:Ȇ*1S~#~D"}WzeW5@VDCCe   )X2U`t* *}5sSƫCP66466<.]!/ ؕc660` 0`3!,fd02(ĆeC2xȮ+>eJ>ue'LU2VHU>P⫁X>h}QԿ6"BU R'YM;mTNJ} ʰV~y!nZ|!PnU[UA6 Cp;C<Ƒu?]xWt vj- ; Q4Gd *njryj Q~e E',"hcCC!! cgw*ن`)ʮUhb%9^J t`eCC!p0v(uPW;`\UqV 2` PW^B;VaUl|d0``U0CPk"WaY**AH 03 032"`+ ʇl󧺡DDkHu_8eVC8}(r22CDzʲ :S#C C!SҪ>r+P`V x>YfE_8j) *U-/ΧHe}ChhjUW^\TWUyy >6Ju * :CP"r28d2H d0-`}lp8U}48hqE+zQ \pi  CPWuz>cWs e)h,P`2POAh`rmL`ġ%UoC9w!(rჸEh~קfq[ݢCکh`CUUI"oYU;uX 0b,EAr4413UeYT e[*b,Eh` GAr5 R X8 8].˵xjdgWV`v UeX Ua*X!&%ydhUU7VT{0I2!LI,p5HUʫ*+3hWp 0` 0`b CCC 0`NYRV=lyKBqqhaUKDCYCwV 0eU+!Ҩq8}Ʃ?-Wpl{j",*dTV%^ *U}__މ^cKU5U*`-ȫLFB~xUF[qU*eTX0KU^|=eW%\C!{`]QU`>0ʫå5)7P P.hjWC jT0r2ձuC!VUVC 0yʭ  0Pj:;["屘``C3P!VVUd!gUX*EWJVU`zT/1`C䋟l\x e"Mh,E!cZ2Ra0Ҡe#%YHW!U`! C!d>#pL0`QbD{ʲ !UWdJz*zYOW{UEU w*/90}CxȪj|ȸO¯WɡW J Uz#tʫ*r647chllz1U9#jE^E*(dd d>?d0q@!d,UJ䫷pjRZ 5 :לX0dS: :lneJz+P:0`vjֳ3h`X5 CCP22Eȕ40`eU|lUj  V E! 0hhh`hp5 ZUYUeVUeVHd0d0` 0p5C*⬉hXUh5V 0AeYVUh,/Up2wJ<2!=GZC  2 H? }+/8}Q+R-!*U [?0n骿d?"| 0`"0sCPx/`h`v9vW~Q^y**u[C]XUw(!VCЇ#{TW1ʣ]陘0 2C"Wd2T¬UUeVP`Fr5 e BT2P"ԋT2Eu 7CTMR/˙[#Gvޜbw2QC/94MCaseei+t2jC2C$ZCvJp2`(g: A2 Axl>`p! nlhvhst`l|F<#C!: n Q*12UJ$UEtW 0"2PUd9C+ҡd]FHC C'"Wc/_|8dJxנȮZ` 2ʇ%]Q}!< 4=ah}u!èx`ll`R,9^D]i,PZĭU-~H5C*d2*ʭ CCPYUUUZ J](|t t]ve_}s~J7v"6:8֪L0` p8Ct 7 CIVY eC$YHxkV)*ĉ1)[⬫_Z:@4C:```6Vꮃclr8CAu0u싑thuƵhlt;pU֫ƫar;쫥V ##Cx  #`tC!8r6;60lr44; cH9U`e]lʰ@XJ1Vᒭ jp5*=U(xh< 48 *40`` |G#YOxʑԔ pGԋT5 e C! pUY cjOp8!'cH Hp5C\AՃ*hh`PE< 0z󒯀툼`5 UU`h` /0`aC5wiWJz!UXuxC<_^T0,CQ>vfRf EʦCaSݺT=vpEhvEKP* JtU֩ID2 w0h`Z40b]" R [0j) 0` jEC0`'r_UW)`u\FbWj"^q vY Uy՜yħD"HC! C$Y /% E""~ ?D}j>zuH%W*F9 U~*T=$0UW0`~쟣PHxC\P ̆PSe_n*K`ȕ`_U*cR}(~Ocp㝎!sCCxGX;zC1LUaJʱ"`_? CʻU1X3-eʰ1^[y`eY h1Vefk-S1X1VU` 0`zxj e$Zʫ44?©6UiTzΪU7QaFU*FG, bڪd2e d?D?-ʫU9GaÑvu9UtGQuÑr0p;è$,O{W oa)S#Y C(j`┟1 0`\ 0b,TP bLs  t`P 4MJdDR ==P@꒚4@EF=LM=چ#L"a2hfjhQ@T}Fb}6H>? # *¶~_KRm/vw7z[Y7:[R{Ijɶ #:Ȉ!C^w=nT۲ۋ7ndpڵfɩ)I>Wj}sTe!Q"*6 G",;2UDDD"R.rtk MJM#5SɛkrOCyZĵ,;@/pUTEc/pU4;;$T|ړԢQ(z,@ܪ2JEPZUT1m^uj[؞i"lI<ͼ+ X$ݧ#ײWwz[¹qҞ0F?y h"nuͱd~p*bUIbD10mD*|׾}/U=L+6)FkKTrҕҳiՃ=n6l3d˄[M*F5#RD43~A u3ȭ'M4h&#u# "XdIY{zL'm78D͒;ڛ-0{=RD"q$m2y*y`CcWcs&67ρ<LkV$M ZkI3ża8>II7 d9\5Ut0I"kaL6h?> 4m)9Ǒ'l:JdWMLյl|n;QltNsu0põ-l-b-lbr{2L[U?Ԏ79l őwӕ JSɌa -Z+;w1'alUk|$MHDXG !˫dM”zʛ.;ދ I0101MBIx#SJݳƦtZ5"u9*?tb3p62x0L4:J?