server/src/tests/Controllers/ViafControllerTest.php
author Chloe Laisne <chloe.laisne@gmail.com>
Wed, 20 Jul 2016 21:08:31 +0200
changeset 245 c9dd78a43b07
parent 23 037687868bc4
child 306 3fccf43160a7
permissions -rw-r--r--
Transcript model and erializer Transcript component Update Ember-cli to 2.6.3
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
}
x;aǩᇢ:O3dJ`("9-.i&&isV~YŶi40oLsKJϭ88$;7!f֮l1Uگ<2*ɅGnRvҗEF~$"Fh%*H\ sg_v+LQX󞳧2St|cRJIQ-h`"dxNʘזK6d፩WXbdjՎ9F=sļBv˂P.GmqmТQz ;=ŽV2tol΍*zyчcgMƧD `ԍpu]fX,= '6v;1{\}ܙ @PtX tEQCPӔR7 )"TJ$QB@E!QTd5QΝD HP[PNvt:݌"*Avim@y c+{,3@^3UJ͋Mժk J)C)HPiRBWHf%T(OcPo`!(R{ 2 P Ǡ2 LM)As`o NQcHJ$^H( ( Q$sBD!2#&O 5&GS @h4DAO$j)S6=OSMG4@ @M)BR24=@ %$Bi LxILDC6R@ d52zE?j(F@ P2_yM9ʟ[58!I}JXģ}F_SNivΞ)^~EOTQJ؆%uNFdjN)"PT;,eh454+`@ҲhkY +Vj#@L'TUO*B`$56m3MY4R,Ll(UME4C4k$V5,K(IL,XQ0hղb6Ԍ&+Q4 ֡Z5HBYbe-公"Z3$)hQ`؛6BYTV̉jɉ~mRZ+cAđm-_3?_{E޷Ľ}W{֍,eFƳELV'3mm=CIԮ,^*J9LvNCpPb-e.Eꉠ*q+{/9Ub윟{O$;uLFE,&:W5)N/=I9?o<ټ#5D`6 a=&LJDĭlmE7E>UNJM*p;Tj)a?xni7E4jA~ra9a2tNUVFjc@fv ƭ+^Vmn23m֮0\8ϯD(%i.zاiI#@ؚb{ʴ$I}%AzŢ&nz-풭SR7MIq|&y;>M2㙤ÈfQS5:o]ejDiPXOt~䓋2KǷcBI6@6 Hy?zO{9JR9 SZVEUW].qxqsGs8{GV˲+/EB Ҳs4 OG3")0IJI9@,$ZFi^J{cmqD6RGϩ$YtU鄮ʳ>zi3Lj"|MZT4qO|G9MO}k_:`^Љa/թ> hK]u녜;-H5eLـ&v%luCOV0f f[1rjd`9kM> fe.܌sn~zeLPlߝFOբYP]J*ko 2~lhիzYζK[BC8N3)0[1 -%k1lQ?œs'##=N)ag~a+>HelHp(V|{, hx q|},Nl{(l+RcLqhF@lt-(0}Wl1Bx^qI$4$z#]w5K[nj^y7$3@Oi3\ Ӓ!ڀ nVq_͢*g(fBFgQF,`+n& ߥ'{hwk2 ie8P"A -rky϶a]/ERu+-|>td&ŷ!;'`q*?KFb3C&/xLE]nJ.^Vspˬuf 3o4ϣT6J{ ^Y6j FJ3Uz&x)*H'f*.+&gp_W,Hύ^|h@" |Jf~n8ٕ-5#7'm]bfR S@e0NiKy^~=צ6bPwd;a&943\hʾrQkwHH/oN>ex`qS 14Y;2w9,Pi'/ I(xS+:6xH"z"rh:F'vOGҔF2!R͎VS>LbbEpBu/HuD>dRȸq,i zII%.9ڶEjebf12{E˷}"_sKaNio:ޱ挌uW3+9pRCžT)OS2TQޙqOk~~{_ܬmmSfc0֞>ΨuOܡ4Mғ$86tM)^bwMӺrpNӊxLNa;3֎hRa54i)ylٶhwoy__\&JI ]DzXaT0Iܙ䛚gfkykF01gXTU=op4`F1qsUy'zDC#FSR8/TJ<)21LL[}qbI0Ti9OץKm8mVa5a3&eU\]NUMT2KS$[;6Gt3 KDNP߾5weC11;d<&IWa0 Wr$ m;'p' p'q4 OT1119NSrUUOBlv6j{i4Mꘘ =iNɓ*ɓ2q2q2x'=dMMbby&O18&LU&*&=6M'$4NS6DNSNI]5Qx'$N>bzRlɲqO42q2q<ɉN:'"y&&&*'bv9NnRvvujh$Joh:EYxW\Բ3&=w/گ=YJ$8F>Hdp9#8qV5@ ="@$k4xѾG20BTJqNorϰ9tywǿq1=owEc"tF^5~)-,%k.w]F d{̟$8OOTt&Ӕprl;I}dM';y?;ޝ'OO4 ';'):Oz'OtNb|Ӓa18N'2}N't8vN J=Sbi:N144pNSDҬOi6 9NiN:O:LM1;~)'8M'tb|4ODOpӄ?;Iɴ'؜'i4=II6O19LUi10'i8U1>Ia8LM&xN10 tO49O 9OT*1;'wON>9NtN4LO4:O$2|ӄd2y'|&8N4i<pӲi?2y=SNdɉO S:OdND|iOxNNUm9NINɴ0y'dNS<&}SI}z'rNDLOvOSz'v'{'6'II6ڝ&M'I<')rO?OvOtN&O$|;&L>D&IvO6&' 4NSIm=IMʙSpiO$N䘋O4=8U=xO4:Ny' O$'8jxx%66q=tdBb UJU\"IP¯9|쪝PEqCA]2J2Sϑ@5WS?OSu E;CLH$A $i/~ZC$BD~r>)zÈJgSF=Z޿̳]D4$p$uô23tܶm8Èl"%loIӧ ȑS Et̸CY% #xNx{rQygRepȆR9I He[:Yњۧn-ӸōGDk1;]-B['֙N)7M)NSr)L5;SMOO9O*je9ST{))O妩ڟ<;)b<'pI}Siby'd4M'LObbi0MJr'xOt&'btLNm>iip'I' wNɤS<'riT=11>O?z&6NSi&' :M&&'ti>I<&Iҟ dzvOڟԞZ{S)=INSNwNI8N't'8'NLMM&LO110OdXNa='NIpM蘚LMxNbbbi>8N:M4Od|&~)M='t?A8O'djb|O$=NiNNɄ|>0i>8M؜ pNɄ=SII{1; 6Ob2}1<4ytxO"vL'tDLO8B>Grs4 ǰs]R%RbAp~DQ#P@bbNrn7Mk1<7ǿR0yix3FrgV c%;cƝ|;"=G$˪%I"yE)4:N>;$4B,17BA4pa|]1jL1 `kw(ɓY A/~Nc}wSXoK*Cfq#3nݚ7ћΦI2bfuT^.5aX޳n\on~Qn|n7JbíƔDEvgaI]H&S_Y]$hG$} $𢚟PsO2-I.9j~Z}ODU ҟ&&Ix'R==L' 5*^]]Uq4[Kq#">&wˤ 6{i<F ,ahJ"I㖂شL  '~_*ď.'-%7'ҚCKqZ޷mf()oYÛg M_jNcwQ-fLM&:VKAhMNp +S6v T0dStʗS2FJ.Iҩ--LP6Um&ҜTBMd5e%lFmVʫ1G>q'MZ&^3x5kq-g\uNu3~gZQ<ֻnk\Wsӹ+cBa{8ͱSÜs$<ӰNgʡ8yN(ryI1F(NdSqvS8Y9M2N42nv\sžT`q)?l&DO:+9PEwhDNVꕛz#) HͬJĘRצs\1h`-7"kVMٜM(68j9rcIQ:0&WV 5Y]+r`NCT 7MW'ަ-MMQ)_}OM/wvLLL5'Xr4\'릖aIS 4p1K ըdW)ST54Qy0OBj5&NqvN2vrqژ9ܘ#umFm53MjVm|ܚ'wtuA&Ս30]rq9-փ+iC(`pO4uOjjN' n[* G@5JE6j:0z059MݵM3%lfF4c+*6K,iH֡Mŵ4T+&w'T\S"z'ղy4S'pN#)RhtMQq8x̳,խlPlؚT.p'a8EL M|8 OD򧪝xSS[b}9fKWeL]%zTn((MHO4vSj3*$d&KbiIjZ8ԑNv NiTօ1CUȸVSdUF=؜a18CO5i†d*vi|8-5q b-6&4ENNbfMvMI5܋V16eÉMLSV̙G9wcbbbbbbd8ħB4*P8&jeQqJ5@ZYUhmQZhUE*քfDfkE ZR#kjŪ]ܴ-Y+[!mjeJ0IL6FSMV l[E-Rf5Z,02)adfmQc=&ɲ43̚Y6*U*LTdͩ)5&j0&ɬOi-4}n)udktZdɧZk?UNTʧ)~15LMSdT4a5S?J^UDAq0!6Ɉm4b;nr=#B#Fwck^׶;CxSnjN)2ۧT]SSKm=iڙ9NSSSSSSS2S9OtNi8NS8Ni8NO5MIޯ2ynΜӪjTODNSӔ4;&yST<6I䜧rI'd|n[mtO~}͆n6mͶN'IN&t2NI1~N;Ti0)e6M9MMMMMMMMMMMMMMMMMMMMO"rS)rM=oۭ~S6i7MS)֩&S{j=tMӊnwuNũ8=8&N&'9M'o$/ ʾ$ȟɓĻML45Ii:<&zZU1:hZM&L2dɓ'b/uOiwNSZM'cI&L2dɓ&L2d'&L2dɓ&L2dɓ&L2dɓ&L2dNvm;VɊbq>i~q82dɓ&L2bbx.~Jp?"n&iȟO1\ln;g>=ԚM&MOMӔm8Mvffg0̙0.|1>boiڛ'?Q?M&i㤾i'e w)G~&ww>StLNҗ)(?ܘ 2}jd'q7&L$$Oa52{çy_v\&&'`Lޓ*kpOyr\<ɔFO*q?St6Ni򧬞i8;'dɓS~I857S:'pi112dɓq;f\dY̻Ʉř6DM'nMӮbcIt~ ԫ@t|D&"]l{x'7_miMm4tT?k\'_jɑ<<'>Ijdʲv'd2| i14Ob}tLOMbm6>bvN'L5?b3X'J|S'Ot;~md2w'{SY7mdD:NLM& S$YYO{ |flIv?]@y&I68Nb~Bk}La$m0Cq82d?ep(0O4uQy9oBq*_̘e~G"r15\~$ܼ)~&;vOIK}j'8{})?9MӔm?K11:IjM'd'tdɓ&L2dɓ&L2dɓ&L2dɓ&L2dɓ&L2dɓ&L2dɓ&L2dɓ&L2dɓ&L2dɓ&L2dܫ 9N}ɉ?=4Ti?O˜&c'2dɓ&L2|iN4')p ɕ+~R;&' )>rvL2vO2d~7ɸ:Q?[L2dɓ&L2dɓ&L>SfB~>im6(ĜilI4}>9.N)bpNUbm9NSdbqL98NJLM)lL't_?{6&zp62dӺjdU2S ^윦IT1:N';tɓ&L2dɓ&L2dɓ&L2dɓ;uvgfL5 bu? dɓ'_`t'GO~ ꘞ>q}HOwgšj9O:-LZ1jbũSSS&L2dɓ&L2dɓ&L2dɓ&L2db.ɓ' e\5R.goG4N)2dɩdɓlyvNq8N'&L2dɓ&L2dɓ$vٶ /&$V#|HnK/:'m}D4ɓ&L8OܜN'S<&L2dɓ&L2dY?q=^L?x̛m=9NS9NEY^zW}ܶMN/eSqn.i11118n9&L2dɓ&&'q~~s؟LN鉴&yy49?O䧒pjbj6N\)$Y{rPHCSH]l^ <1L'wLfny<q|3tV[{6D8 dѡ 7$4rҮQw#L Le%Ȥh A he,LK8dӅ@NeloIdHJ$8~'A"Dx6WW|iٓ UF+2plGWdʱ= [ dY8&_iPNbr&O)*GD_Ƣ;R0#&LLO8O12wk,~%?ϑR bm4L'd10m4Mq;&L2vN'' 0MD:S ֮*'=Uv{WeV&8}5k}/B~7{Iy&S :U⧉TywͶboֽR{]9q\*Ll6KN&N'D˝œdĨ~~2jd1>4I''c@{c͠9J~*$kę;QYN'ŸP[.| G73&x g)>y5qZԹ ^7 dɲܧa?$ɓ'D&~Idd18LUSL2dɓ&L2dɓ&OҜLoG=/j1SW|: i;޺L04!?qG簾NS')Xi5Nu'SiLLLL2dSm| ɤÉ?''ڙ2d|lL,EWԗr_V{`O)mɓ)a|'/mC1͚ y޼|<DOjd>)''Idɓ' }Ufw_B~b>|}naYkyF#*oU‡9}E;TU'* (dN&'ɓ'*v|,ʹيQX=~?E\蝽uGSOtrnnb6eM+LB=vO\x[wQ̜v8&ݚeޘI8&4&ӄ4LL'o®];"8'I;գ |LTDK_iTT7ˬ1SDa9i1112dǗ<&LMԧyZ| zH~abO:L2dɓ&O Ӥ''O*2dɓ&L2dɓ&L2x'o|LO#GrL;_5'pO2dɓ&L2dɓ&L2}]#/Z2~ ɓ)&Lx/Ja=d;&L1?+ɕ~M*0~P]&Ldɻ{oq2dɓq82pґźmm9z}KkjXrFi5^Uɤɑ7+AfS,T;=SNQ㱠U3Lʆy?yޜ 60yͿO;U|& .N7>*d^)*ɓ&L< j{u<^ƼdL pOӉԫOtܫiBhU^ꘘI*؞zUtz㥖̕ Wg0^wʧ OPcí0V L* 'WmF G Ka4soS͵tӤN^a>sdɓ&N-0{}J[ Ҙ7ߦ^&#|iXN'h0 &:v?> h_뻽9LIJOT8N_R4TVL dL2dɓ&O4dbeL'T]|-&Iy%6+ִ|؝SY:OcМ9N@`$SBDfvwd>H9"tCLedo:P0L&@ɓ vRܚL{)&SҕGzfj,j&N&LY885M\ZDqQ~q)_Lq'uoo[ޣl+zIZNޜ99S;۔˗blݷ;Břd FK!RTʐaTJ)mmہ֛MKwiSW;kyuf6*]L\9L&8' h&')pMӂ-ĵSi11:NIt' t&iD8[&㎬X^$YbwN&LXܟy $\h![bU{'82dɓ&L2dɓ&L2dɓ&L2dɓ&Nɓ&L2dɓ&L2dɓ&L2dɓ&L2dɓ&L2dɓ&L:C'xdɓ&L2dɓ&L2dɓ&L8LL*\gm3_NNe$Y,2'&\K5T.TgzF՜5$MR`Zgyz ;Щ{iǖ˂bFS#'tɓbbqq2LdeX8t&&9n% O"|_wsnjs#mLʾ$*%z'H&;ձGlRuṄ!AJe%?(K!F$ֹ]0l4)HG=A¥KTAYSOʗIoeVլ5)4VO>uH۫3m0'tLOvM'm6Ni11i;m;*iWrNpIxNOda6ii;'d0't_ NzZZQ!xwsӀ<;+mWkt=Wbj.qG>#ǠdbsNSe9S7M)8yM)>6wODگIza;'tM昝6M 4LNMd<')|ӄ' wOD&NI'm<6O$^ɊMIO\'hpNNzDbm0L'tm=S>i;tN<&8Mbz'DUy&'tOda6iNm>1WpNm6XSTT aNkBąhAxvyĒrE} ƦVIbaRx<ժxz[w)q`zzۄ*& O-;ބL&1'eN| L)Z'Sy&hNN*LLe8'u.̵5;̞'=꽓5Pi4U6 4MfzzN+y_IxIa5JOxKN*ޟ11;Ir'K{ ZUWRd&L&LN&L(XUަeɩ97#9,"wmT=tMh*Q"NU;*Cw%@C>6ab^f`| g3$/iBHEcj[3[]i\}zA^XɉX<@cuV Mo? "<0pA{D|E`"<$8TڛT6i^=yWWx=BHX3G)U)&L2dɓ&L2dɓ`}*fr'8*U|[mk fVMT:s"k&WQ㰻?9pI6qR]*<ʷM(by'm6M&Im6E9*_j2dɩOrvUzCוǥJ?$:.6@D{*]v?③YKkMm- I.>8z~E5 1 UC$AT0?=_B_ 415{}ap[B>1> *#&6O ?jz&>yxNSm<'$䘛O Ob{cԨo;i6O$IꜦӤM'6NwM䜦m4L؊r 9Q[t"b MotGȍE{{ G$>OGU#:< M:Q -0@ȚMv.SDJ4UdJCl q\vxɽ;y;Wt+}q /l@Ċ$m 5MSK7v#4\'ILL(z&vꄕ(,*I)kTG 4 mWTP-D(0GGoY;DВgOװUa0OLNY4ͤf־.%*8My[&IIiWxjͱL9FdL2&&&RUZ߰L2q:Nq8Ạɓt'8J&tLLP"vQ>iɓ1*Wzy_yE_vu&G6Mmm ϱOjT8Tس 5>ɨɓ&L5jq2~_vL2dɓ8L2dɓ&L2q88LLNiLkjo<}E|>^+OmE}`$.W]D=^a1M&ST/ L2`G ߈Vv_Q'N.Ȧ .-^ؗ3j4Bx&LXjge螼m옛y[9*m&㧵wvJi~#Q2*wtӀD'1|%&eNjx&*<&&I:*)U"vMPitx*ܜQ1'*б32bdʴLVBʱ6*ޞ35ᶣ2U\)0 JɠM )ښZZӕu':9AoI^^[*nȹ'T]!v4DO4槰֏PZtca5=;iwkw:)dd8S'ʴL42MS14LL&J޷'2d>gdɓJD84LDR^^7qo''Njّ-Zڙ%2m+2YbE5[EBi-%lZ6i6=Er|OK$=&N^"ke_ũAFp=u)j-ՄOjz&L2{e&VMl^֭I,[TORz&L2dɓ̟b5@)OOcE\M^ ')aRE~4CB|4O.̕5|zj$a119қ|JڮOc[!1mj15QQ@1ZOL;=~d)^)&O'ګd2&O\"1=5WjJ>*{'eX*_ Zv\m{ʟy;br N]X?Ι2eZ52~_&=UXV&U~Y22iύq7 MËrOS%?$$pq5VL&IEMJd2e_~WOOW1Az~}aݶ7ꦟuOLE 'dN;"Ʉɉj5Ƅ?kuL'+>t_ 75o*U'L&&U|"jLnd' >۞B>?4f21L3g鍒KW| 4mZ}436j'RVFhVm#lS;*7B\q"kI$I$KiB>GKUj"&di2A;vL=Խ[mq̜S'S'lxҾLGљ{{s I?DBS}oL\5 Н*v}㩪Uf[N4&"r*ɉ P?(UMEU}qGd&O88\L8L< tuNZJ~tdʲa2h:&SN6RW0OˊUD#nIW=v'.IN=WnW-[(W%*]D R : @;`JZ4OL&ɢl' 0YSMm:NS ʭ&ɉzt&IvO4Үr*Wq2&Tx:駝7&iO a9U14O4<' ;'iWa9O4TFq1\LNbjK&4'bvVp&*{Ozܞ*2m_}_t[NL&H"R1<~aeZ.uQ{< %y=Uflijq12bb2dɉ0jW;kϏh7c|Zr4˂2f).H0qtN10e2T촧e6iq;&Nɂq18Wd'IژOVim̵Ei&)M𜦓0N&'*'dM xNYkz^DrxS <D SyԟXnLL .oWLk5W>tN<U㍎ɓyrmO]4d#dUZ2,LJe0&.~}ܕ>P5RrDV_U&LNSx&&LL'CL:G>ʲdq2rLN& g'Pʫ&\Jɨ_0âo+s\cmci\ ؜0L.iVbf'(7&8&mLcԞi?N M*MI/C|~4N}lꦽ yʇ%'OoݳE'>6W99q;ˑ|ddq<u_S z yFlU?ML$‘Kn6!I"jdڌT*y'Np&&'b8N 'DXN46Oؘp&zSTbN\EaU>m}SN{&'̫&pLু+XpNJؽ> H f  33n&ҟ*ڦx|NN|_U0&`N:lUO%_jb{5m2*">_o>>a㸞}C؜hU,Mi*s3 >re<˱WƋܠ ]*p!?JfW70EK2 ޜXHi:8\P\qnݖn"uՈ@C8J^$@)0UKxt]Eծz;k9ݻ%S 5o?u2wLLLbcMyn@'a2t*ʺM&&tirM&)Pt`6NS"N&&UwN&N :Mhf3,alfkT띱Ai2 ;)jpU7Du*ڧ%DLvN|dW8^]-6, ͫkސo<7lSddɄup9.jd؛)Y2͛62dvx<NMַ"[m&Eh>ܭ<-a̭I ;&&5K͝iI*?(4IY2\R^tCSSI{7gqfp:&j-, c)]Gnvؙ2dɓ&L2dɓ&L"q8'&L2u:L-ʹj/WbQ/Hl5N kN(9(2SfbkMmD߹5)z4vѰ9V:ssG;n@JX+7''r2pӱ2e<:Eᢛ^c '琧mEݙvvIœ'Y̶ 92srvګsUm ̓i=q}A`ք/INSi~g)i9&?+&A46T4ЫId> iPOJj"+xye Iz+>iq9!q825R>\s+*4*諲dɓkK&RVSSt9{墏OO"|8'bc%o?R}Bd}iNrJbb`' O)8P'iF&'1W Iԫٍih&LVN8r'+9L&JN!k*͚*i2i2aMJN\f'luR+9b}G8]hN~oQa=zɉ9L&&&LL2z&'5ژL&N&Nɓ&MDCSJ~l?wwe/>y\{s(LLL,LLMO:&I&&LL&&bi4Igxjz9NS)OOu 'RK}cZfYRLWnu'102!϶~4 0iaN`L, i YO L*xm} &Jb*Nr8*q2bq>;SVUdsft&*0u$uI,"*~w; 6bYFL5^Og_'UʹpLL&'NJwLC&L1LUO2dɄ߼O.jR|{&UAr^+Y8G1<]zKTXO蟱OSe/kԞ,$z .zzEL&&XOƻ'w^dڿȞ/"{^mmk'U=D55';{]&bir?A0OBm*pLLNi;' 8M&iT)a119Md8MIi6NΩOQd +tLa:I2P]eMi4I.ȕ"LbnS*Eٛ3N*mퟌl0JjLd'/x&&?CD& bo#e>2dɓ&N>zmU{*?C[2O /*R|Udɓ 'z&L \LN'&MIwqOܧD=N'&pOd3yj {w⧵1NgWg}f<9e2 6欇/6^zzkn4F|t'|u+}6c_i{ޯ^Sf8'j<> L2d؟Mܫϕٌ۪{)>51jt\s\Әq"^tٶ0nkeʷ5)sM˚s;'D8' a1V&"q2da51.Y[ں)&&&E*ɉ&L2q8L?pO2rɴҡ9MNS&LL2b12dɓ&N'&N;&Ed욃5qjͲ' ڙ8bvpbrL52dbDi:L&';\I/LL ۤ|'I&L2L2ޕzNԌ_%Vq Ƴ\fi㷾2 e21ZB1)nקbXtf<>')2^[vOZdɓ&L2{>?3,|rk'Bɓ'J:{Go%:?cZs6lܧ^GEޟoX֫VZ{3&":اO5w9g|4bbbb~tbi1WqyOyE>⡁_]%]^ISh!Ӟ8)+xzȹlO7y {$@KOLm=dq1,^zC )ѣb\`yc ƉvOMKRdOp' p~xSP:]"WaWd &L2dɓ'>;˧pn8x=YIB "bZMRdN'dħuX&r]dY1)ؙ2dL&N ؘY{ߕ3M{;Z֒|g$nN%I&OޯOL2dɓ&L2dɓ&L2dɓ&L2dɓ&L2dɓ&L2dɓ&L2dɓ&L;y/.vs!JWoǖ/?Mϯ'\*0-UUԞdz|4kKoDO<݃w&'Idi18|­J ApLQ|Ӕi4M&Iz r yjX+TeSJd1j*;u$"/5q3iVD,'a:UpMؠhe\LLN&'r2a2q8L88L:0'*+m֧ =o^.z$~<ő&xƉwWr"*3'oEVʼ ،!uljW'IoRߠ1 DFj#)MdS/Hb.ws"q"n*z4k*"D),19[tc}^+Q'e+U "Bow:2,c 0rje:0m5J׈GC\ 4t3} ťr6ג57iT/y/P#g|Qeҧ,$jg))]%n/4Mp-JGUc{yamu}9sg7IHKWa^!(xӈdCC:T9#؉xLLNSlMIОaqC'&Na18N ¬LLX&('USؙ2a:N2dNvL&&im8LO=xS$>'l?䜄}U/U*zOL'ܞ᧧oŦ6җAړ$āP)Yvm2Ɨ%ʭ.wJ7#-VMUeX-& v-ݸkv&4$Í)}eQOOA;Pw4hIB*Yl([$lSjlA@t" yp߫Ы kɓq2q1s5%5N~dS*^LU'xLLM ;&L2dɓ&L2xUx߫ R2&LL!=a*uFU?'^lחlj}V"Y 9p(l*qS'IrN v*q:M >o[f>5#o4;%SSSS&@=옘:(wb]+0rkMM>Ҏ}Iw! 'К/ID~dim1-5۔}kOv'5ۢbcF݉'"Zm&'  ' ,UHiW*UU(~C~ 4= IW˒nTB~UWЂWo c<Ϻf.6b5ߺ)S&kLpN7UO'ږLac/kwot#ܘFL'owO<&L2d|h*;o&CANF~uN5K%YuI'u:k6/rdɘ&'& ΢j|S'w@",2ex%_UUdY2d:<d DNJp({#M!<>:qɮ5kML8:2t6d\&;J/Z 0`dʲfFU[J0fS&MOɉ>i&맟.ֽMl'4Mbm4M)N9JIy'r+YR﵊ xrsA !q+e$ i%"w0K8 fp N5+YM |ONx;7t)wO 6NS'rӔ;t>xvS09NSi9O vNSr't =O*r+[OM6O־EUy i?&&KUޫ[)%l6MjL}S&L2d&*|;tɓ&L K( uO~ ωPz{gu/8ۧWf(+$k- ut K 0@ m@P5O&I6TꞦ44 UO%M)m!Ab4@IdFDyS =CM3HELO%БD dlLc?zu˖P 1#AǓ#9yTOLԭ* B!\V ːbī1=+ _5Of=4Ago=4t0aUĻr[&׏FOJ7%.bo0\u"D'Ʒmck[+)E7307BtgtmÞXb-lk-*Ȣ3L.,J},]zNk)ЇS&m[2Y6uH%NUK5#A6)i֜Y]:޲ K ؞fk>% =f4U50VԵ*]u$Jw8:Y;[0RtkE1#mNC㑍*)J_GLMA,7;6l)84hl<U5%潽7*HJ XTi<*Y05- mRYlc&bA)T( k~ord܂n: K2oa&㼱쪤Pg%.=:7"(HHz[