server/src/tests/Libraries/Mergers/CocoonSoundRdfMergerTest.php
author ymh <ymh.work@gmail.com>
Tue, 18 Oct 2016 18:01:37 +0200
changeset 364 d065d3307805
parent 170 31bee084df32
child 504 4ab820b387da
permissions -rw-r--r--
add script to globally set version

<?php

use CorpusParole\Libraries\Mergers\CocoonSoundRdfMerger;
use CorpusParole\Libraries\CocoonUtils;

use EasyRdf\Graph;
use EasyRdf\Resource;
use EasyRdf\Literal;

use Illuminate\Foundation\Testing\WithoutMiddleware;
use Illuminate\Foundation\Testing\DatabaseMigrations;
use Illuminate\Foundation\Testing\DatabaseTransactions;

class CocoonSoundRdfMergerTest extends TestCase
{

    const TEST_INPUT_DOCS = [
        'BASE' => __DIR__.'/files/CocoonSoundRdfMergerTest/base_doc.ttl',
        'SOURCE' => __DIR__.'/files/CocoonSoundRdfMergerTest/source_doc.ttl',
        'BASE_NO_SPATIAL' => __DIR__.'/files/CocoonSoundRdfMergerTest/base_no_spatial.ttl',
        'SOURCE_NO_SPATIAL' => __DIR__.'/files/CocoonSoundRdfMergerTest/source_no_spatial.ttl',
        'SOURCE_MORE_SPATIAL_NOTES' => __DIR__.'/files/CocoonSoundRdfMergerTest/source_more_spatial_notes.ttl'
    ];

    const TEST_INPUT_ID = "crdo-ESLO1_ENT_019";
    const TEST_GRAPH_URI = "http://corpusdelaparole.huma-num.fr/corpus/res/crdo-ESLO1_ENT_019";
    const TEST_CHO_URI = "http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-ESLO1_ENT_019";


    private $inputGraphes = [];
    private $resGraph;

    function __construct(string $name = null) {
        parent::__construct($name);
    }

    public function setUp() {
        parent::setUp();

        foreach(CocoonSoundRdfMergerTest::TEST_INPUT_DOCS as $key => $inputDoc) {
            $this->inputGraphes[$key] = new Graph("http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-CFPP2000_35_SOUND", file_get_contents($inputDoc));
        }

    }

    public function tearDown() {
        parent::tearDown();
    }

    /**
     * Just test that the construct and setup are ok
     *
     * @return void
     */
    public function testInit()
    {
        $merger = new CocoonSoundRdfMerger();
        $this->resGraph['NORMAL'] = $merger->mergeGraph($this->inputGraphes['BASE'], $this->inputGraphes['SOURCE']);

        $this->assertTrue(true);
        //echo $this->resGraph['NORMAL']->serialise('turtle');
    }

    /**
     * test the result graph.
     *
     * @return void
     */
    public function testResGraph() {
        $merger = new CocoonSoundRdfMerger();
        $this->resGraph['NORMAL'] = $merger->mergeGraph($this->inputGraphes['BASE'], $this->inputGraphes['SOURCE']);

        $this->assertNotNull($this->resGraph['NORMAL'], "Res graph must not be null");
        $this->assertEquals("http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-CFPP2000_35_SOUND", $this->resGraph['NORMAL']->getUri(), "graph uri must be equals to http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-CFPP2000_35_SOUND");
    }

    /**
     * test the merged Aggregation
     *
     * @return void
     */
    public function testAggregationResource() {
        $merger = new CocoonSoundRdfMerger();
        $this->resGraph['NORMAL'] = $merger->mergeGraph($this->inputGraphes['BASE'], $this->inputGraphes['SOURCE']);

        $aggregationResList = $this->resGraph['NORMAL']->allOfType('http://www.openarchives.org/ore/terms/Aggregation');
        $this->assertCount(1, $aggregationResList, "Only one Aggregation node");
        $aggregationRes = $aggregationResList[0];

        $this->assertEquals("http://corpusdelaparole.huma-num.fr/corpus/res/crdo-CFPP2000_35_SOUND",$aggregationRes->getUri(),"Aggregation node uri must be http://corpusdelaparole.huma-num.fr/corpus/res/crdo-CFPP2000_35_SOUND");

        $singleValuesRes = [
            'http://www.europeana.eu/schemas/edm/aggregatedCHO' => ['size'=>1, 'val' => $this->resGraph['NORMAL']->resource("http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-CFPP2000_35_SOUND")],
            'http://www.europeana.eu/schemas/edm/provider' => ['size'=>1, 'val' => new Literal("Corpus de la Parole", "fr", null)],
            'http://www.europeana.eu/schemas/edm/dataProvider' => ['size'=>1, 'val' => $this->resGraph['NORMAL']->resource("http://viaf.org/viaf/142432638")],
            'http://www.europeana.eu/schemas/edm/isShownAt' => ['size'=>1, 'val' => $this->resGraph['NORMAL']->resource("http://corpusdelaparole.huma-num.fr/corpus-app#/detail/crdo-CFPP2000_35_SOUND")],
            'http://www.europeana.eu/schemas/edm/isShownBy' => ['size'=>1, 'val' => $this->resGraph['NORMAL']->resource("http://cocoon.huma-num.fr/data/archi/masters/372593.wav")],
            'http://www.europeana.eu/schemas/edm/rights' => ['size'=>1, 'val' => $this->resGraph['NORMAL']->resource("http://creativecommons.org/licenses/by-nc-sa/4.0/")],
            'http://www.europeana.eu/schemas/edm/hasView' => ['size' => 4, 'val' => [
                $this->resGraph['NORMAL']->resource("http://cocoon.huma-num.fr/data/cfpp2000/Ozgur_Kilic_H_32_alii_3e-2.wav"),
                $this->resGraph['NORMAL']->resource("http://cocoon.huma-num.fr/data/cfpp2000/Ozgur_Kilic_H_32_alii_3e-2.mp3"),
                $this->resGraph['NORMAL']->resource("http://cocoon.huma-num.fr/exist/crdo/cfpp2000/fra/Ozgur_Kilic_H_32_alii_3e-2.xml"),
                $this->resGraph['NORMAL']->resource("http://cocoon.huma-num.fr/exist/crdo/cfpp2000/fra/Ozgur_Kilic_H_32_alii_3e-2.xhtml")
            ]]
        ];

        foreach($singleValuesRes as $property => $resVal) {
            $resList = $aggregationRes->all($this->inputGraphes['BASE']->resource($property));
            $this->assertCount($resVal['size'], $resList, "$property list size $resVal[size]");
            if($resVal['size'] == 1) {
                $this->assertEquals($resVal['val'], $resList[0], "$property size one not equals");
            }
            else {
                $this->assertEquals($resVal['val'], $resList, "$property size more than one not equals");
            }
        }

    }

    /**
     * test web resources
     *
     * @return void
     */
    public function testWebResources() {
        $merger = new CocoonSoundRdfMerger();
        $this->resGraph['NORMAL'] = $merger->mergeGraph($this->inputGraphes['BASE'], $this->inputGraphes['SOURCE']);

        $webResList = $this->resGraph['NORMAL']->allOfType('http://www.europeana.eu/schemas/edm/WebResource');

        $this->assertCount(5, $webResList, "Must have 5 webResource");
    }


    /**
    * Test one to one mapping spatial info
    *
    * @return void
    */

    public function testProvidedCHOSpatial() {
        $merger = new CocoonSoundRdfMerger();
        $this->resGraph['NORMAL'] = $merger->mergeGraph($this->inputGraphes['BASE'], $this->inputGraphes['SOURCE']);

        $providedCHO = $this->resGraph['NORMAL']->get('edm:ProvidedCHO', '^rdf:type');

        $this->assertNotNull($providedCHO);

        $spatials = $providedCHO->all($this->resGraph['NORMAL']->resource('http://purl.org/dc/terms/spatial'));

        $this->assertCount(1, $spatials, "Must have only one spatial node");
        $spatial = $spatials[0];
        $this->assertTrue($spatial->isBNode(),"spatial node must be blank");
        $this->assertEquals("edm:Place", $spatial->type(), "spatial node type must be edm:Place");

        $lats = $spatial->all('geo:lat');
        $this->assertCount(1, $lats, "One latitude");
        $this->assertInstanceOf("EasyRdf\Literal", $lats[0], "Latitude must be a litteral");
        $this->assertEquals(Literal::create("48.83975", null, 'xsd:float'), $lats[0], "lat must be '48.83975'^^xsd:float");

        $longs = $spatial->all('geo:long');
        $this->assertCount(1, $longs, "One longitude");
        $this->assertInstanceOf("EasyRdf\Literal", $longs[0], "Longitude must be a litteral");
        $this->assertEquals(Literal::create("2.3542", null, 'xsd:float'), $longs[0], "long must be '2.3542'^^xsd:float");

        $notes = $spatial->all('skos:note');
        $this->assertCount(3, $notes, "3 notes");
        $this->assertContainsOnlyInstancesOf("EasyRdf\Literal", $notes, "Notes mus be only literals");
        $this->assertEquals(Literal::create("FR", null, "dc:ISO3166"), $notes[0], "notes contains 'FR'^^dc:ISO3166");
        $this->assertEquals(Literal::create("France, Paris, Université Sorbonne Nouvelle Paris 3, site Censier", "fr", null), $notes[1], "notes contains 'France, Centre, Loiret, Orléans'@fr");
        $this->assertEquals(Literal::create("Other place very important", "fr", null), $notes[2], "notes contains 'Other place very important'@fr");

        $sameas = $spatial->all('owl:sameAs');
        $this->assertCount(2, $sameas, "2 same as");
        $this->assertContainsOnlyInstancesOf("EasyRdf\Resource", $sameas, "Notes mus be only resources");
        $this->assertEquals('http://vocab.getty.edu/tgn/7008038', $sameas[0]->getUri(), "uri must be http://vocab.getty.edu/tgn/7008038");
        $this->assertEquals('http://vocab.getty.edu/tgn/1234567890', $sameas[1]->getUri(), "uri must be http://vocab.getty.edu/tgn/1234567890");
    }


    public function testProvidedCHOSpatialNoSource() {
        $merger = new CocoonSoundRdfMerger();
        $this->resGraph['NO_SPATIAL_SRC'] = $merger->mergeGraph($this->inputGraphes['BASE'], $this->inputGraphes['SOURCE_NO_SPATIAL']);
        $providedCHO = $this->resGraph['NO_SPATIAL_SRC']->get('edm:ProvidedCHO', '^rdf:type');

        //print($this->resGraph['NO_SPATIAL_SRC']->dump('ttl'));

        $this->assertNotNull($providedCHO);

        $spatials = $providedCHO->all($this->resGraph['NO_SPATIAL_SRC']->resource('http://purl.org/dc/terms/spatial'));

        $this->assertCount(1, $spatials, "Must have only one spatial node");
        $spatial = $spatials[0];
        $this->assertTrue($spatial->isBNode(),"spatial node must be blank");
        $this->assertEquals("edm:Place", $spatial->type(), "spatial node type must be edm:Place");

        $lats = $spatial->all('geo:lat');
        $this->assertCount(1, $lats, "One latitude");
        $this->assertInstanceOf("EasyRdf\Literal", $lats[0], "Latitude must be a litteral");
        $this->assertEquals(Literal::create("48.83975", null, 'xsd:float'), $lats[0], "lat must be '48.83975'^^xsd:float");

        $longs = $spatial->all('geo:long');
        $this->assertCount(1, $longs, "One longitude");
        $this->assertInstanceOf("EasyRdf\Literal", $longs[0], "Longitude must be a litteral");
        $this->assertEquals(Literal::create("2.3542", null, 'xsd:float'), $longs[0], "long must be '2.3542'^^xsd:float");

        $notes = $spatial->all('skos:note');
        $this->assertCount(2, $notes, "2 notes");
        $this->assertContainsOnlyInstancesOf("EasyRdf\Literal", $notes, "Notes mus be only literals");
        $this->assertEquals(Literal::create("FR", null, "dc:ISO3166"), $notes[0], "notes contains 'FR'^^dc:ISO3166");
        $this->assertEquals(Literal::create("France, Paris, Université Sorbonne Nouvelle Paris 3, site Censier", "fr", null), $notes[1], "notes contains 'France, Centre, Loiret, Orléans'@fr");

        $sameas = $spatial->all('owl:sameAs');
        $this->assertCount(1, $sameas, "1 same as");
        $this->assertContainsOnlyInstancesOf("EasyRdf\Resource", $sameas, "Notes mus be only resources");
        $this->assertEquals('http://vocab.getty.edu/tgn/7008038', $sameas[0]->getUri(), "uri must be http://vocab.getty.edu/tgn/7008038");
    }

    public function testProvidedCHOSpatialNoBase() {
        $merger = new CocoonSoundRdfMerger();
        $this->resGraph['NO_SPATIAL_BASE'] = $merger->mergeGraph($this->inputGraphes['BASE_NO_SPATIAL'], $this->inputGraphes['SOURCE']);

        $providedCHO = $this->resGraph['NO_SPATIAL_BASE']->get('edm:ProvidedCHO', '^rdf:type');

        //print($this->resGraph['NO_SPATIAL_SRC']->dump('ttl'));

        $this->assertNotNull($providedCHO);

        $spatials = $providedCHO->all($this->resGraph['NO_SPATIAL_BASE']->resource('http://purl.org/dc/terms/spatial'));

        $this->assertCount(1, $spatials, "Must have only one spatial node");
        $spatial = $spatials[0];
        $this->assertTrue($spatial->isBNode(),"spatial node must be blank");
        $this->assertEquals("edm:Place", $spatial->type(), "spatial node type must be edm:Place");

        $lats = $spatial->all('geo:lat');
        $this->assertCount(1, $lats, "One latitude");
        $this->assertInstanceOf("EasyRdf\Literal", $lats[0], "Latitude must be a litteral");
        $this->assertEquals(Literal::create("99.83975", null, 'xsd:float'), $lats[0], "lat must be '99.83975'^^xsd:float");

        $longs = $spatial->all('geo:long');
        $this->assertCount(1, $longs, "One longitude");
        $this->assertInstanceOf("EasyRdf\Literal", $longs[0], "Longitude must be a litteral");
        $this->assertEquals(Literal::create("25.3542", null, 'xsd:float'), $longs[0], "long must be '25.3542'^^xsd:float");

        $notes = $spatial->all('skos:note');
        $this->assertCount(3, $notes, "3 notes");
        $this->assertContainsOnlyInstancesOf("EasyRdf\Literal", $notes, "Notes mus be only literals");
        $this->assertEquals(Literal::create("FR", null, "dc:ISO3166"), $notes[0], "notes contains 'FR'^^dc:ISO3166");
        $this->assertEquals(Literal::create("France, Paris, Université Sorbonne Nouvelle Paris 3, site Censier", "fr", null), $notes[1], "notes contains 'France, Centre, Loiret, Orléans'@fr");
        $this->assertEquals(Literal::create("Other place very important", "fr", null), $notes[2], "notes contains 'Other place very important'@fr");

        $sameas = $spatial->all('owl:sameAs');
        $this->assertCount(1, $sameas, "1 same as");
        $this->assertContainsOnlyInstancesOf("EasyRdf\Resource", $sameas, "Notes mus be only resources");
        $this->assertEquals('http://vocab.getty.edu/tgn/1234567890', $sameas[0]->getUri(), "uri must be http://vocab.getty.edu/tgn/1234567890");
    }


    /**
     * Test one to one mapping
     *
     * @return void
     */
    public function testProvidedCHOSingleproperty() {
        $merger = new CocoonSoundRdfMerger();
        $this->resGraph['NORMAL'] = $merger->mergeGraph($this->inputGraphes['BASE'], $this->inputGraphes['SOURCE']);

        $properties = [
            "http://purl.org/dc/elements/1.1/title",
            "http://purl.org/dc/elements/1.1/identifier",
            "http://purl.org/dc/terms/extent",
            "http://purl.org/dc/terms/available",
            "http://purl.org/dc/terms/created",
            "http://purl.org/dc/terms/issued"
        ];

        $providedCHO = $this->resGraph['NORMAL']->get('edm:ProvidedCHO', '^rdf:type');
        $baseNode = $this->inputGraphes['BASE']->get('edm:ProvidedCHO', '^rdf:type');

        $this->assertNotNull($providedCHO);
        $this->assertNotNull($baseNode);

        foreach ($properties as $prop) {
            $outputValuesStr = [];
            foreach($providedCHO->all($this->resGraph['NORMAL']->resource($prop)) as $outputValue) {
                array_push($outputValuesStr, strval($outputValue));
            }
            $this->assertNotEmpty($outputValuesStr, "we must found some values to test $prop");
            foreach ($baseNode->all($this->inputGraphes['BASE']->resource($prop)) as $value) {
                $this->assertContains(strval($value), $outputValuesStr, "$prop not found in output graph");
            }
        }

    }

    public function testRightsWebResource() {
        $merger = new CocoonSoundRdfMerger();
        $this->resGraph['NORMAL'] = $merger->mergeGraph($this->inputGraphes['BASE'], $this->inputGraphes['SOURCE']);

        $properties = [
            "http://purl.org/dc/elements/1.1/rights",
            'http://purl.org/dc/terms/license',
            'http://purl.org/dc/terms/accessRights',
        ];

        $webResourceList = $this->resGraph['NORMAL']->all('edm:WebResource', '^rdf:type');

        //just check that they have all these resources.
        //TODO: check that the same rights are kept (difficult)
        foreach ($webResourceList as $webResource) {
            foreach ($properties as $prop) {
                $outputValuesStr = [];
                foreach($webResource->all($this->resGraph['NORMAL']->resource($prop)) as $outputValue) {
                    array_push($outputValuesStr, strval($outputValue));
                }
                $this->assertNotEmpty($outputValuesStr, "we must found some values to test $prop");
            }
        }
    }

        /**
    * Test one to one mapping spatial info
    *
    * @return void
    */

    public function testProvidedCHOSpatialMore() {
        $merger = new CocoonSoundRdfMerger();
        $this->resGraph['MORE_SPATIAL_NOTES'] = $merger->mergeGraph($this->inputGraphes['BASE'], $this->inputGraphes['SOURCE_MORE_SPATIAL_NOTES']);

        $providedCHO = $this->resGraph['MORE_SPATIAL_NOTES']->get('edm:ProvidedCHO', '^rdf:type');

        $this->assertNotNull($providedCHO);

        $spatials = $providedCHO->all($this->resGraph['MORE_SPATIAL_NOTES']->resource('http://purl.org/dc/terms/spatial'));

        $this->assertCount(1, $spatials, "Must have only one spatial node");
        $spatial = $spatials[0];
        $this->assertTrue($spatial->isBNode(),"spatial node must be blank");
        $this->assertEquals("edm:Place", $spatial->type(), "spatial node type must be edm:Place");

        $lats = $spatial->all('geo:lat');
        $this->assertCount(1, $lats, "One latitude");
        $this->assertInstanceOf("EasyRdf\Literal", $lats[0], "Latitude must be a litteral");
        $this->assertEquals(Literal::create("48.83975", null, 'xsd:float'), $lats[0], "lat must be '48.83975'^^xsd:float");

        $longs = $spatial->all('geo:long');
        $this->assertCount(1, $longs, "One longitude");
        $this->assertInstanceOf("EasyRdf\Literal", $longs[0], "Longitude must be a litteral");
        $this->assertEquals(Literal::create("2.3542", null, 'xsd:float'), $longs[0], "long must be '2.3542'^^xsd:float");

        $notes = $spatial->all('skos:note');
        $this->assertCount(4, $notes, "4 notes");
        $this->assertContainsOnlyInstancesOf("EasyRdf\Literal", $notes, "Notes must be only literals");
        $this->assertEquals(Literal::create("FR", null, "dc:ISO3166"), $notes[0], "notes contains 'FR'^^dc:ISO3166");
        $this->assertEquals(Literal::create("France, Paris, Université Sorbonne Nouvelle Paris 3, site Censier", "fr", null), $notes[1], "notes contains 'France, Centre, Loiret, Orléans'@fr");
        $this->assertEquals(Literal::create("Other place very important", "en", null), $notes[2], "notes contains 'Other place very important'@en");
        $this->assertEquals(Literal::create("Autre place importante", "fr", null), $notes[3], "notes contains 'Autre place importante'@fr");

        $sameas = $spatial->all('owl:sameAs');
        $this->assertCount(2, $sameas, "2 same as");
        $this->assertContainsOnlyInstancesOf("EasyRdf\Resource", $sameas, "Notes mus be only resources");
        $this->assertEquals('http://vocab.getty.edu/tgn/7008038', $sameas[0]->getUri(), "uri must be http://vocab.getty.edu/tgn/7008038");
        $this->assertEquals('http://vocab.getty.edu/tgn/1234567890', $sameas[1]->getUri(), "uri must be http://vocab.getty.edu/tgn/1234567890");
    }


}
zЮjEY`Pf<I,d(guCQ=kŨ+!Hs!B7 u^'DCG,@ 2EoscTUsݎȥ‡bQMٝ#hb@#I !$td/a3ƽ %z`5lAXaBD(AC;$'l֗Nt4 ",K}x )]J,{y(E跬RHECA t5SBw.$V0vj aC61Hu,kpCF.;zqT<-9‡c;1+H8BaaK0hK pI6mJ[prh݉ZZb, |p/`2 UꉥUfq ' XD!&2~ Җ''Dn,o5n.PC*֨1^`kF Gp=5SGP%z05fZ()|"_j5?8dc:袚n_eud/P3TZv.uVs4 bUbX|&f5,|sEwkl;f>Hi4"3RjA Dp2ZWa԰bl!Єsc]+qCw}JoA ֬0e4,t2{:I HtJaWg~:9̵rw,\5vCp❞oѕ\gCraluEpPc)r;X:b6yv3F DO2vr=x0PIM!$1uf.H#X#ƒ P\Pr#P ( (Tr.]PM4%+&E L/.hXi.#K;*,e&16 E5DD#â 84A,AkHGm Dm&#QED%j#`ܹ5 ~ cVE_R=ȼT Lƹ¢6KC{bXãVb<L8:g ҔL Aͳjtp=.xQ1oጱ=w=V#G D06pd$3$W/2.`JPU tFqD{d5(AiEȢ%cju&vDaw9 0z$NAA IXI]s M3 .p#yd D"Y;*ְwB9lZt̅*tBxa141VNXM'x鎢fzcل'f L M ؝JA{Ǫb/B@^Uv_2*)!C&MJ[X\VE{d*(g ;M(*"wH(+/,DLT1 %y`v=@ B 4;(!v pQ7*iD% &N,*Tg ṯ C8(" y"xZTӑ"!}@ =OGe*0 =!OP< AT|J( {Om=\$.i Yp,)ȵ\! Oqt§PU&C:W\e %6)D㉣qJXa-(Y ( 2XH j10r%]'N H' x: pZF86n5\HLE2 ka-gڂݐ$4]g[T 6,NTR46wCZ  O0<3cHF )*D:(}ϔ \I@WCR(:=(@°@TLK_}NrHi JP)#A!&aatzFY@l#"4L ҷIfm6^uIl*M%{lL)`0 Y(f OvۥM˦uVtXš-HRLfbBR(#YC⊍"s3ޱQPAN^K4萴 ?Ȓ;=*UT@*{ɡrX(!΍?{h5&wQiԝn@Hc99PWCQ{<vQOb~Cׁc<]dJ&=% ;A tkaEKAU% &?zi h~ɂge! *j'$ lcF8! ` @& njSf6DD۷gf #8R+[KDtWm]jMj{ק\ޝ΅S i+u%-,(K+,k2!g&a1Reu*wfV.YfhBк 4uR! RRi ]00 `0`10p( adJ[ 7!,-"wW*6ŭͮR*2cckݍF3qt֢|~'1zG-CCu& u֒Id6GH0:j"1ۼ!S'sI1v@p0y_S< T"R1<#q<Vi@I@X_2O;쇿g Mpv(p<Y>QPBVG ))b5,4JlB1Щ:>7rX:H JGVcCfXf+*P&0ĔF0DRdBFf.V$Ì8]@: C0$K@A,BP8e o_D(am*)EL}dQSCouP\5(6LDz )NA"'PYhf-Ji6MmJU QS0D~~􀢉E)@ >ϳx(PTp`E=u*#;g #ZWtO(4)@Ȩ,̇JNfQ&.ԓm#i  >r:ͧѠMޢ@0ĤC"@B0HdW/bi9G_ JҡD!F~!>A$e X!|&-CA 8g[# aS ?8`/Ҷ- $u!C@Z{.l`"~B>=RXNKTA҃heZM]*J+֬!-u!7t4;#|@ٺXbPZ.ZRڑe r^} ?辴dgC`?tCȁ C!a됤 $'?)1-f56Zdr S% p!4:3G7@A W$A==;>[ ,) Fdaj*P>j71 ѢR:HR$BE !%FEv:8WKG?zJD){!)ҟDD7$n0". J+# ep4A򁃱4,4))Z+:6e ҔE A)T4t@&1&kD+ erHBBN:~2,?T ؉p_HE,u @b$El)`HdfɤI2CQ˥d]+֥0@j`thL5( 꿒~zeD R Dܨt7b *߷z e(AEVH=el=8#y.)&vy.e"#:MڕT'D#$4$Yj(HeYvJH i(>4|4r@hҦdP~=?rb }{`gƭ>B#"!)pitp `H!@Dx qEvNq*+p$H$wȿ 0:"! ,`Pڨ {"p }Zʅ J 8BR& eXT @Pkʉr@IHthDdIRPD(&E/@bAKM aSBI) 3 B--)B6?͝`l h|j0*a=N`& h!$( 2lJĚd2KW-jV _x( 0ʰ@*R Ȭ@`0#Ev aĒcIVXVdrÇ2|}8k^!V0$$ND!E*.r҂("JXPG&=nu6&BmUm:ln:0}n*Bhں3J) "(c=ʣ,EleJ.uՁgAр[, ڭAFJ.DjiN؁11Wɔf-Q6[ R Ox*/NŎ *N(R3(ҭm ȽCZLTQ?!t+TN`ip6|ۢ{FUܞ^0]H(uޓK);Pw$ 0)1:NH!LW\h1 HRe %lVy̰ b0(4HȐdR30վC8֠]8AQ*b7W`.lNc%zYI4ibޗ]7#, ha@q6ELLbrM$OufJZDLR90K-Pu Ɠ H)?f`1IQhy"^^Y6ǵjKK4h]_dP@&$ʼ+r2B!IA4!!Oqi%p@I=ҎT}!=; --6[ȓikT,Tm-*ŲlUTSRe5c[4RF &Hg⢢oآ)`%c6pބ~OX|ⲃ![7 9A:JF HIfQ?<&=40}&vx_J!&%C/A9fz:w9/`C2jcZ$]{Na'5?i'm\?lm #&/E?"R:p`ixGfEE@9PD Sy 8#(lnZ s4GA=Cr 9\$E>e5{QГ>ŁJͼ!!x@9Gvh| $PvhCiM T}ն }SwiۦG^A=nݽ96e=6K4GNt{u}}ϴw}}oT|Z}((D}{M ={w*/xstl_n5꾆> @PVdɛE{@ IP!J*#kOAը9y)h %{޼ vk}wWUJTMRyc*]m `PuM+)ցTDz_mU#}o=>6{}xׁP|6=cn{8UI{T^;=kͻ{xPw쾽wQK_9o>uw=O_}&f8}2۷w>5zΔ﫾9.R][s}A Ⱦ9^C.qwv}֜n3;7wTNyUZa m6{u__{}}@Pn ޼ n톧M]םw{>DfD-(@gk9܊wގ=娢6U*IP(6Ď P˝mҲ^U% o=ۑOWޟcr4F WN9" lր G\LOwNkvjveٵn=Ox;` muzQS7׳Rk}Rgy#݇L9zhQz _sl'c=WvNwNú[mJru+l=d:κmUZfF^ ҜV FcML^̀JŁh huAs8ݔ sי瞎,P6͞:oP4t 5lnOU<ս;7,}o  UBT$ލW-k{n}zUqThH{2XuG`XAݺנ«o__yӓ͑ongSZ6m" A4 #CF1y4)c"0P=F OS $"LMb 2dh4i 2I" 4 )d䞔`5=!馦FzjzzMh224hzLH= %(=%?)M 4 2hE6M)fOEOiMSO)!iy4A@ !$ę@*{JQzzdHQ&h4 ?V/m_`R,*I)l [lԴTc!V []7)Hȗu$ִITԊTi? # ~"f\ Lٝ6s7)$\ҹnrn|pUD9M1[Vl7̢8+rf/g-+y/\x($'BL z:L R<"@Hy{~f\+~^aSr^̜rm]P9D몭gW6L9fY{7'9r̷ǬA2$T€v$2P(@*  3 F]`"(c "H8&`LvJ@PLKBl$~*0@U')Z7CE Jj!}tB+&,T ZYl3U!WSP H ц3tF̴jJkEѯMFTEmE2l=U=@g@qPB(JUeߙO`!՞2Fʹu*̓& h (UAnk5%)YBHj,hihcId $RmLۺXU((lʢme!bMFm)IEcZWMQ*68hlf$d6ɚ6+nkn,h٦0e&5Z+Q~jFn\͆Tm_*f޺t9t^~΃9BB 3QkEl KX֣H"ЖUlRk\hڋXԚZbثhcUdQh HE :fзВ S]w9+*Mkwn &ijb6`nvQI3d尤ȽͶbJFU!(P(<!马X1RR`1%9@P+HM-j+Emk#V--g续&dثFݵQ-hmQj6h`ml{Gz ?$n۝~cM6 y8;]JgsWfUj5sCAS=yRM7'뛏#A4&eQ--I?Ag1ᖪ/Q/"pΩ_FW3XC gEw3]UK!H|*P2&ZE Ƭr3kl<+AżQPZ5EjI5.dq_Xpimlt[Zk>*shj 1vծܻF`C0"YW܅#Wt9De]aɣ3qyVlGp$R4#"cY+$$+I#;~/tؕ?q%=8·Iiy0eMڎ ff?߶Yl">4aAY|_Œ44բ4ӫ!DD#tL;"dI' w˻>.Au1gD3˭IuK&S$a{w)JP{[6՚X{F s p\'u99Tr \Wfѹ${A_W(d}gt\ڲ9>w^INﱜyГuJ`ÍqP?ϒ|®7ޞhh=zs6ڎ 7B(,;0{$2XMLſ"yVNgkmo"10ѭs"E'ix!Z–Nw0ZwYoh6(w"? ;iz д(2{y}!E< 95:̀)|_k1![fMKHֿ!Ez,:qV(rU'k:W{֖/ јpFۭN;sqIC5ckr;j< *֯98#r9s(?{G u"Wvl+:qEjQTy,W nQ[61r0LMAz-09iǧ~G]s詤2 0桥QwU^+2QCve?Fuͺc(9!vzb]'Q܎3{~0ԫt*0=g7׶`ɞ5Uj_'[,ߪ)n;9(_هʌ͓h̀م:Es }{7 .T̽Qk5T,1Bd#릹6ʖ*EY1yaRʕ}[^i,Wtw3Umrnu/G2U|E\a\2~1C!? eхJ\[Y_w::ewwY#x:/Ëe2[vLqm֘y=wU9q.(j4S@>4#y;ҺkB$+tzR@ l'ģ}rSY&9FQ6-Vb~6V0AHG(X{>&Am[;#4˃lh4-Z DZ@I6Od Znbʬ .h'ߙI4XtD氬g=-卢kE&QTјL(+Hk&KŪ"&clF(2RId6aMJQHIV6*ѢbhИ+6)RjHJf-&/h2a*2AP-t:Nm<qC؟3́}vgq,cc*MrsPcVikdBJfP /˱=wCAhaH3'=eRz,KS%J#-EF$*+d‰Ԡ AM" +3$[730Xim ś(tá`e3HW'Nj** %էq!.t 5A< $JuR1,7JI#jJs1ӢF(FX9_![WFэ5$5FV*z߭]÷O\q1+>=m J9uBv +w`or%hn`IZ9(:z3p[wՙRlal9("MT((zxDhge_r]q6ű!胼[YF'IIp҆nXzL ՠNi&ir O*&m$%ZcHtcѬWf"a`pBBihO+p'|%>|rws?BI~h4gNXdWn\Kλ(l܎[iA+3ĊY* RĊ@*lkIje,JjZ+55jMJVm@^C<ljr$$lnrء>[7<[ ܪ(% ǐhBI@$$$.kh(d/!Ϫ@I9 hH6FܣC^G#Zr_(rpªLo}i*{Ȁ(PDDݮk8e%1MmQmmXԆ@$a)Cxusǃma?oNqJkq1|v ;]( B}|r0@Wbv~U%jbE6mjh*Z!IG} G?oMPh,^ui~`*IF2uI|IAjI#&NHs6K~?573t`YWѪ=w2>>i6ٸjޓqa`W>vkd(:3&$.I D%,Ձj!D$GJy8I ]ӑʪyly.ك5PzzN.FACwѤyޛFg1<0FO}8 Rvwt~.mAA\^ʏy!ݒP֐yOk, `Y[eXq4"c 2iTH)9 $T{ Rf'X=\`$ɂ: 9 PqB| )0/Ǽlo|+#Qhq {g bh4T"o|غ]K,R4Z7gEFPc4jz/hS]ZwuTDS *mPw+ nB  I,9zi$W9{r>H94uNԈ&o(\T/ZᑧG?{Z ~@Û5[3],Fc`۝2;ff{w{w`abHҐuLFP 1V1Mِbz0h[!4ձFtiĐ(),#Dz0馋wxB1Keܝ*ICF5ӳ9No Y 3P'0^ѱ8a\#*\նڷ.!hAekqH lh V ͠kֹ[#|9jQتyr/ӿ%#S Κ*[ֵ RtCþ(N9D$4#cf*Jo^QAcD9cK1:: Fpw=솴:pJCό+Հ8[ iꪫձ{l-( NC K% P0\-H|ͤj12:x2v'aůgdV~Yk{)o<)U5772 yƲr `m tCI*׷B-6q P~ho_VD ӗ~$X<) IoR(X}'9^l"QѶaO;oR Ot.&6Ch5gt?IfZ]^S#D:IyL#:u普l:\ӕVö[R3fם=KcyFT@{J.LxiP%71BʹVm0JDA3F' Ux^ =Pz0 ABm K-DehFjhb?O{0X84Z}+ 롔Q"5 #W"v$@b*Ky/{o u-Q^ R5 ,f#wD,UKiFTA*2LzbZ1pKfsy4;J)84 q퀍`N}Ѓf8@0Hl{6!kݠ  ;RYK"wp2 d ]WHF D`}K>n6aիDdS#0cM=l7E3'ͤRu\q%Y$ˆ{GwfȃDGPQf1·*h`+C"lIMuB`Ry5C‡tB :'1Cd ׏]Kw]BgIBՐ!LL-3G1맗BċqaS%,&>bA%\uմ~HG" *WS~;HuN RNՋ2;H.߸:Ϝ ?TVcgIJd~M?g~3v"8>~a'ȽoD D+Cx/2{M,T2_/~ϵk+nQg3PCh&QEf$_ϝ:)U4ꮖdF&^:38V+YJvU8+̦u"O%oU;su|hfUӶʪnqC$TyF/'s#aw$wN"(jYoNG듺{.jRajVqSknt21ZVb/NPU1uulfha b8{Hqp w4 f hÑZ"nx3gى놔TdxQLz9{FyèrVC3. V"M]VUM Zir`!C#ת)jw, FwIēS*x?^$T(uvBIr6M9ɭM.r]4uJBY+8RO-_huwˉ >Ga. |s&(`ƩNFt}bˉpnDMW k m}N>bF*-2@JYr,+7|eɏ&]9?T]sZ8:c6_nݵqj[F<:))k[b\-gԻ(lv|ϐ(-n)aUMyk SCr }zV؄RkUiӶ[اtgZw'L!KɤARk7U!fkmG'?+7uS o+6MԀ dёrPdkJg tqOx9`\{/&r-3+?\sTԛEBRhQu,f15TSٚV)._;cq+uD5,?aj!jexu;vuqf961ADHAw^S^mj1l PMh ;W] J" $rDЧ7ԌTq[cײB);>u7Å !$Za$O5?$LMmf-6!BpsDa.Tem(Yzz⧪;2^:Jx]zu/+>+a;ӓIdXw2EXqrH}|Pi-u]SINѠQw)Gx5H$5?OB ڗ*o3K r=fcͯ 9}#s 2z%9YT}j;Q`ҩі6F,[D{ĄLjyƀJWG03Wő}1XhhL3Ә;. q3ˤǀ˲CSϣ{E}?;CLڅauDDq$ouPLy; \D@"lu*5ՕFdY?T*Ud cٿ`w#D T 2}KO` ;܇9$,h"SUmֹff ]ev8W-,1T6d4Ԛmi#oz/aS[vEә/v6K3%[oIz:ONLY %2@CkQj:qɌ _^Եw~S|޿!?0 %qv;d&GdDQ4deGq{EɄ!i6|>ab~~~9;: D#>H.JVUPQ`ٔ<~zN :yHG3m)4)Z6RЂ^&|k.,@rW7pRL@!"߳&TtQ7^ۻP# GZP9x4w K+|pЂX–:GO ]yAjÞ#bȀSenhރԥO4Aΐ6(9͎>P6q7OnK?X^5"K进~g{ķH4ۨ4ƗA"#zC3hjXsw,aQh(ZB>=(Ӣ1 /:TLR /z맞yy'JIu[d jmtY }g* `x# ŕYHN3E$&!a9 p\@fwmuL#Բ0ԦC2i+ K 9%aEu}mn]]T+.ꪪs fn,}LʪʪDE.˻.˻ڨis2b]́/us\?m멃#m]W}yEVeUf^Bf]*Z7Ǎ<z5VBf׾. T[(e a;uWXsM -BP-kyǝmmQE7rS)#ڞ LhM^l`M v)ڔ sl*Q}+fSd_G3}_Y,Vi)|;W/3-du _yXwS$ƞuF 6m)W[z: q+cHМyfKYT{(.&DiNJƏ$j^KOo)FP `X,bѼn+M7.^L r/2|UY!:@#]ndi!Kݒ,4F"f̄I$̿IυItɋIʠ&0 pokwo{/3k{Xn$ ,{5!{trbv㊛Xŕ+B1f½iN,-Q.jk{@ۘ`f1zmM<8u3ڃ\-o"r}E|-kJmvU0s90g(#bkWg_Žo "B}ʥ%l/j{Z{mtZk2AFk+".o覶_Z21RH0< B~ipwNM3 đ4X =O(|)-*ƶahDJj1YKdJhfi+O$-57=C}(ZTPǨ.=yo *e$N%|WU-H= *2IGNr#xO#- `3}w4AMcœ^SNQCCM< vd~sM#ufZ# m&3Nߜ -{b,b C=8te!D6HeC A7sګHdJ;ǣl=ӣߗ0+`C19)'Ve^ , 9\! _6aypف'! cy ]H軦whglRtwy .y Gu37wFڇ8**hVÊȃ5X1o,hw9C$*r%[Duл3Yz^f aj$ 481(:G-?r~#=~swѺ-pTզ |tjg.~ݣPLJ0Zݠɇ?{m+f(V@u`!ӎN6lj?Ƚ_SA&S^y4.DM} vgaFK zP=uAjIP3CĖ5(뢴M qX?tSgTVɛ-\r䬪}_SC>.x PהmV%Y4ƚ%3?qb1i[(GKDܺMEJW1rMs1ȲJDr"d&9{ EPex:-6Rf|!1)1J.bJ]Kv. )"a4Zly/a"k;%%n>;AKv,uנэ2G>/ƪF3M~$QLĐSb|9ӵOB +5D})z;{W1{r_0 ?*b@W"FS&}+;er9PO&ϓs)V=$TZ0AmKVMsI(?|B7}ԣʖBuB6:md`͡f~C* kȧ]tVl%cӘ^uAg&x31|.2bp>Ιq wpY3=%ɓsm0ci.}ε߾=^*P61!~ :~Fq$%|)V# +кiJTyVܲ9QLLe$ =nV? y2 $$J6iY/nXT>z;3C=rn:=`;Hb|@ܒAC BB̉WW9VhowY4Kj MGng0Xf"sE3{U-^ycܵ0^GU$E'HH|gMuf0)zJCr2Ƴs.ot(=&1iZaG'ř0pTvh鏚}o->RWzjL~Km!<&!E[ʔ1e)YgDJKG}є(';] B+:9}i6l\bWy񦫞{u!#_U,KB6teG\MaknÃ!/9\Qz|`@f,M,TJmW(mfcR$_ (\J`r%"QWbn zXZ*GrʾHLVaˢ3 ϑs]L ۛ4օ WqZTcM0݀q(#:!1U M12.\(,iUuagrxocUore:}2:ģ2"4*I"U3KUAΪ!YV q)E1FS־$Flj?nZ_AHVOEй?D77F7ɐL%IK3Uۑ>CV\jPsjP 0saAzybg( žc`si;j>O69L|lΜXezͪҶbZA߭(E_Oy73җÖOm'}W"0^[EAϗI !m_2; I؆r;װ8.mr PԳ>8Iӻ26/ΣJծѤ::Q~)v>2D|k|HSSא;D2 @uu%熼/T!?m=x_)Β@G}0`q>ȇmD(3ilXEJŎ{:Xl1Iժ=*ȬڋWgZz@:_3qx^5?US13%o^[zSޕ#U[w黢BsiL oT .Wt}$o(T6z? w{xHҭ:N/ 6܁.Q9' O}˸jLD ƻ2;2æ, brxz/`-iJ~.HrdfcdCpmSn7]CF[Խk3 z#3\]d%0%R*-6.|ҬOCUj,F`IM2:4hqO~j QEՇ(yP:\nڇCiZ&kb2{S,g9b~ Ƿp۱'r1ڽ&ʬLf|ݳ_T+JFD9X A)$`8i$sz0l`KEN]ʞ0Z0%ÿ:~hi =FCLnP{z6#c7ʱQX␤$L(ev7CΠJR w^Pza*Mm=7(誕kѠĦK4mlV+Yjd”4X*F1lKTFI̒š? :m1G8^Abҙ)=ns" 4M*H_w!NE -nYq'YO{X9xq[!;>~j4YkmT1ةz}@^`N/4E䶋|hWP+Z ;C< Vcg3-m ʹ5 [CzlxCg2I>nZ!卯ߵ H1ensދPcEU Ah^U1F60ώUl-w4}1uebe;O;f!VUW8\G̪5 %<2A%|,RGL> MK-{ZSB/:9NHrΏ2LĻGZVt_kc-Yy2ѾoaS߻珝vyF*Z:> 󿥣HC~]{cJ{V\@MNrzkEQ}W+Eib+ѫ9֕/t8J_^!Aũ؝&B,+mgcT6p &̾r$4D CÊLy3^R6'e=6dA@zB]5噼dFʰytʷ+nEۢoU{Ck wr1;U4#`k@B6u{i:snYrUS=VRMW2CF̦ A7;sM7cLC.twK7r-b~\Xl4"l, ?3V>'q)|W?+4t_V[6wH*"㠤]PЮck_t8ծ >wH~ZlzG'RjW)ǁ ./EYn$;F}_cD2ΟIO؍-T$Uvf/cMj6`MG/b!@?D$S4*=7X ) + D0i3uƝǏSˋo ] 1 GP'?_;~Ä^ #T 'ot>5 P(#S;*KGFzrxLB[c[:q>e Kj岼]C SBPfb\IH +NdoG^JW֥1Q+&k6qi;5$1Y!"| L@KoXNQ,㿚o$9\joX\mpaMn}7OtMbGݿ6W,edyјJn 6:!m C~Iluq^2AN#Sb)tZc8WZEtUb2~I Oa:kgU2c6=>fGz4:3{]uHȥ1A‰eJ0G/<?7֎J.NZbT~qx9$}#pR8B힇>}-: 4(z U3n[i仱 135-H 'g;~OG1΁i1/51'1 00v~'ašGg`x^J]5L!J5$HU"FdMU$ՔM _].g˭hvƐl]FlC8+y9aҰL"L`#a  CM :r&b"n8Pzc m'ILѤ zh0ZЂ9rvmmi/vAX#Ȫǧ;} LigD)K+*EmAoDxFG(90 }0 !hf@K0n#LEQI 2Y/QnK 9l%7n'6UmZ14,(hb0$t&ETA` ,J)5OeM *[FbdQ֚Y9x ) cq<ΡH)\ eCVVauӘN%"a!4ͳ23:ӈNq!p 6w c5m+m0c&Npsd,kg^2rxcq \54f!֔;E v-=;xr (ʪΊP.Q[G|M1mqP0PE Ɯ='`J%+Mə-)1?,G}j)8MqۧCE0M]fgA,0 ^0 $Z!kmw/˳iS*Q ʊVJSifa$m]e2##ש#i4lA2|-dyx3\'yS& gi Xxr{!ކ3wR,\iNƂ'o5  yhÈBX廃)m paCmv-J*۵HRQuuмwM&cfLO:NFjޡ1(4dιضKRXFdf`vd (_}ncJG]6inՐ)YACj;yenJ/^9MVC]WV <; v:]Z2clh۹Tr2BITQQʢTPũ c-`QMREQGqrFy8CI4N$EZieM4L՜g̀7uMsQ֨ۮnEE[f40laŋF\tu-DT۱\aj]sbޚwi#[oy r`B5v61s -sn(nME".*T1vƢ|ea * K0˶qj9WF5n@ԍ* cBcI#X B bB\>+FԦj ZLBDM&]lju.ĺ8F;e)BBroJ"ijZf%yiȕ*<|Yt9A!DDp9LBA>`J֭Nj1u8=A.ؒ(JШ(I[^ 8vqX*bZIfi&RcM_~6h`†$`& =K( ,Ӑ2-<)'gY ɇ9]86$􈭄e27ԕIT:ÎYʊC0"Wɱ2GyW.P"0H`k_WiTZhV j2RF` ʔfJ &mʊMG-زT%zU46F5^2 Qҋ +,h`  9,3 j҈4q՟=$>J>Q](DCH!JD`J:3,P#Z!u4@_[_֫v/_[5)D.~3tsAJD+I/'\i1,9O/Aa B~6;@R3'K ^}^4ha`?e?:Q_ ?B?K5)M>pWLoZ b-jA8ʄ/ۅ ڗulx(RV:}~י %7U\N#aӕl R`!i(o}hh)Kv5SoSc"9oӾG:^1;:s1(t])Ɣ஼qQbqMc]P+j%՟/`s:lbKZV_ceɟ 3ڊO+-ϴڥVz6yn>~Dwqm흼x{ǁFkѩ<]^y5]ǢdL;RmB15/WbOg{tx~?We;z{Fޢox>ヲ= _a>j٩_yaR-ꥑOߩ}xK%{Ls8>ߢ ~4s;O8oCc/H[bL%S R!y*mZžt^GlHg6q:x6}g*W1>smӝןnN>]>}lُU.qTY*$(_X>ޟ\7E31[<*O;4[י|OKc3mO\.B(+Cv=?uI#bM5Hri{!Zc5jIJ tmb:S}A@bh#iHvQ #_r󕬊_c%l*AE`C[&trƹC/5y4&7@avnK[lqNOu_tcO7γf:[L7˯SLRd8tjg<ݡZK }<ˇF?3K#}EK"#LlACr֕|ts/%#UDZwnxC ,ݹ lzbқc0yew!ИBD NwSb48([0YmQ_J>zS0y^\3J5+ ?Z<(i/C A` ޛԬSkAA`.Ca.{KgF9We>^ eHI !$$"&BPc#E, t[ECX!$:6. 0C,ʈRyc"< r BfFe8qgEaha7ӿSa4I3z6O~tt!f݈`6 M,Мib=,ѺhLa._WIv4{?#t, 2IYD&3$c%hAT߹Ǜ9,&EbRCB[?C)Hz,hka..j`zF> 4m-jcAzmmꆪx3ݢ]?,ӣ ϒSA0 j͢tQ3[d&~JNLԔTh[{GH: ZQH/{s xVkA"{%pa5vYA+!XԦWa;Uc` l8K KR|Qqϋ%qof/f2}Ia:箚؂oXRcUL &bk񊺏Ql͍i=QE )0 {6:8ם6K%HL<cX$T\⨦^!?7PmXK;૏6t(oCS$ Lsa`W.JI| \` d1hv=3' g7Q}(G;vmb)9ml 226E gGuFVzT+ADY ==%ٙȟW]sh<MqK;t4*!|'^'{3M P#'yW:RUˉ-l3 *@)|GqT0QkH5e!a6T{qp ND99ŜR=^ey .aD)e}2};]3FUe]mi@k./$WqMq꺺ݻeT>Z]+d]oZ5qB62G,MLm%!3G@VBZR4CӔl.7ɍÅ3zy,ՙXKSQV ׂo[7m! %=0[ic9#TpNJ[J?s A@*/Xk-Ț71YzY@Ј(S@ /0E88ƅc6iUCcP>DžRafBjl1D3WgnG곮1e2(cE;*۝g kQ+V2(P :%9㽳 @RioDNX 3W y̠I$COuK/L}T;cp= z .Zlx(﹚_},djNa T(e$n53:US9od9L7`Ҹ2izW*-(.3^Eݛ\d׺ӚOVE g&_tͫ;[mHv%R:dY7e$6խTy " "3R sh7܄sDp_%$_+Smm3lm_^c*Q~WR]AWvN(1+(2TOf<_Yyл]ۃ !snд]^9V\~6G:Ӄ1,PFoktGbo[پo2ͯuɲR97Wv䲊mL81;LnmPae :FQvnh=4WLu#Ɍ]lxYޫJm]F2sB11W|jn@];cd 7y:xx=C}~vC$X t6MV|Nv9L(FBqti|."k4rJ'FrX$a1$ ,}wNj Ҥ.s< A{{ RsoҔ0Ǹ?pQ6B qrMtդ =fݢŅ{ԘKU˘REo =!8* ,$FY{ݭoxY;zCB؈/QD5'%1Ѹ guu {6jic>t1DǤ:VH4=#Y,;|'||l[Bv(z>ľ{OC1dbN cuSlH<}B?7(4Iif9O_> \`E!i).&HEy12£GHҞIB]qݹLf.1[2<Y#i>E7#Xp8e-#q[->{:6oZ{o33~0*/=ʤyg&nnHziZ]T 8`٥i-ty!U |>weY !&uK!69ޥ@Bdڲ (̍>}ߋ_u/ ex0-' 5,aG5Y]"RpBYw?HQe!| m ~\<#Y.w@c5NEa(z?ccbrxqRŎIYdց4ٶ4G58~͸ihp~?S/6QLV"eoS\SjκYE.c](IVuFʊN'}wB*d(Nd VzMәb [kZ_ v ~96iu3D# r͂!k6K'+^j9U~J PEq Cq9G0؛C>eoK4y|/B=M7RB*xޛmeh/xLğ4m` 4מ8^dImKt7|G,uŞ|߆ߣ$X}3.օ3F6dXhV03Sml:P".-ДTlSSZZƳa3KRDM-%-KRŏ't=S8&-cijjONRl >tUYbX .eӹ#P?c(IB7$RMټt=r$DOz),Q}u7l{Л;Q@\\vl"O #wӴ}+9 tU{oyG%sj x{iCgU9|g ѶXiKIQ QG3#'ӁQSR4K3_)~H43R]oo&K~ZNK7xu+?B~M`(+g2IL~4QX7,K뭎82_jl}TAm?>y^m]n­(PX[Ӑ3u:|qzg4T,ȫZ7` Xd3y:G1D;F#F v }˗'ܠ,mbzLhB9=sљPRy\\·LxMƷYνΕ_k"uԧ<m?ڷq|MNEB65xҎH].VhIb=;xG`4O*6P{)X{Ŋb/blx"cy_5h-*w}uUFx7`lc_ж}}oύ(vz*ޗoMu6,L[9PMi3LG2Ivnw<뉕E ,?oyIsnj>ڲ7Z羊CI-`(,5g&q|۴׺DY~1jexqƍYCXk֔;Ct6֝sbMy9On~]|_T]4yu)64چG~Jɍ1O\Sx~]^vZ*im**~[X/&l)+2VidKjWz8>H|Z(1c!v;7}Xҥ׮4)8[o|0M()tq5=SXO!5*Bʼ\^xx1)G/M>cNǢ)dC1hgJgeVRW=lڊNSaSf}{cIQd)Rdw' pr)>=, "N&hv3msiwgR.tk F ’kO 6Q.e+]< VT4Ja3n lmmDNSiux',`άksɭ}p35Yx+ӃZ?{۞Hpj.{Vk0y!NcBo53%,C.p$pMVU{m TVpiySx4\m[NcWuEoi-ՙy{FX~#2pi6 ^t|kQ;%0>>NpK՚f>" Fl&U+ЧO\R j`fgIn0|p_$@9L]6m*`bH?!R2*oHΆ#,{E"y|5&%aqd PRט>*rlf/c겖>M1t`؅& OܴstuZ,j3FAVdm;|dh>4_S" Y#KSZ^:nt`5L"`e?8xh͂'\ MعBP b:D/_שJ4uM}xI}@qh~|6n*QgˬFv~^}%B hf3LNҧһZN~:RE|*t 2RB,~x1 Y՗Qi!$]xG[+CHc- ژajA߀"hy$y5^ܕW&Ir]V C̙5em.c>/ٞ:QϚڲa}ϟk]~r15"o5p2 f3}pp.}6ޖH-B26##jTqUOzg1۝ VҲXOJ~o~\h,0ݖ+ю-R EyJkCBE~$@o\M0i$yQw2Z?,=;o3y>L6O+—mҼnO Lgh^OZ]Je4(IǏ`#Ϻՠ-On Y}_8)3)QpZZ0O'Uյ'ϧOD'Ϳ-Nl[+EV!G^Vw-ތ0V\}[_??_?g/?~|_~a7?w__7??7?/}?/?O_wᅨO??W?_}oԿW~zW7 S2>W~XB ?''}Lbo*zTU*O |gt7ȓ)JRTMuU^f_&JO}G,orɴ&+>/Yk8 rc7HڽgMcm2uح)֦[Bۖkȍ.p[rttZR:^/ޗl@߂]wanbq!N8Y11~`; RmZ_5!wfeae\7y}^.2oN/itҔi%g)#k(wcpgUAl'Eϵރ`0czAkG3/u\K][}U@2 ǛϷ񀉼;hTQW")//cI!sƾӉx6̏p3ىyGATbUb ?sN`Ͱ~՗S8eM(ҊԌYNZjH#:`(Qq5T_|".#狀j@( ]0` &5\McS~fJfQL:&ugX߄1$ii*(v ~(%+`?#NWXBKB VD Ydxy_AE@B^UB{x@G_s+bUy2Si73!%Gƻj=mgިV5nk^a3kc\ք!{+E1&c)G.#p1viчyم@IXiDzMijr@ H@tJi 6~NM:SK&#(,o8quԋ;M,oD~>snsG.s^J̕mB~|}NE_1t˶E^=_&.5ӮB9[볝er><49QCwWszڙ.۽˚Xo1C!d;WMwp:d@D#Xo?u2逄V@{ez|;UxL]sɽt#Ā E; a2ͫLh>cݷ+2@<ۿK_~z3+ԕTLohdwGQzL]Ko:0yO6Kt,&❯9T7J酪::{e2eYmLwwϿyWU;vGo\¬:PpD RrdneU BGDĐ`"UB%SRp`*ZKVGFs*DXG"EjJPIM"nM%8s?v?#? zwgSeI,lM9)T TA%0>!$)l@u"ĸ†F?Rr6~הwn^۟n.mMTgKr,W%_6:}I<}aOزVr/7gҩ!6!?NWֿ֯Ѹ@Wprk7ո1L228/l^{ j]G~L1;dN*Bh: Q6ʉ ҇.2< 숓CMkR{j;p)'%[0m6f}~sLm &N}țM2f2q&a:3v(V oeܧ]Tܲh2^1gwK10z1 {aYD?Ƒ;,! gQ ./ˤYMQ~]465/+w‹&G2rgqZ(outX=zx\} ^,V-w£e8z6ou<7h7jT\gqq$sW.m3O2k<=RQfaP&HAw'M4fh_Gm__dXЧRwGy(7A/1)hr. 9>N!܄-@ F.fb2nH(^ %OM!G~HPigECT?ftbe?b7mϮ&B2妗"dSA(}PE g*wmt]N5U{91FYMaUUFI0P抏c WgRtejgjg=y\1_\iYLnꤡX,{0aQ Gg,pƼ\;Gdc=R<MCv$4@;t%@&OV5. )mGE03(7kn3vy- sߜp)Yƕ&}l틌=PXƩ8hS¤C 3#vsv=9ȷ|>KG<~q]O1 ᣹[J8]sĉ@!ːKܔ/9~U"Sh`x]dGdhk-+HEOFKDpdވ XH^0n,xfoRt,Tb`rjbZܦ챟a+2jYBYЦto0lGQpn/θcuC!*VW9/Z ! D#I}=jM!ht&(d ]Tn=x~fcz˴=];,i{-;G'_Rv,k7/k+gH^6O,l=,xUhґ+{s?/2*1~#d_6q"~ "s"a݈bEX'WP~? l;?gKh`J`#C$c&#4(ϼB7)1:`@%\\Bb%5DUu (G69,21*x^:77z*]w 5u)C,ɘ>,Dd䮀CGOiرT 4o0.o4$BZu FH5,*QtÚU S7HGQQ9^q݅q >$9=Xc'>q?}](:}THM =Qusr ϥvO@Sԧҧomu$9<ѕ)ԡX7=(6@˵V,6jKINd\j82v֪֭% n c%'Ow1g$, M lb\ |!>G`_d;|y&dcbaXcNΧdq,X&]\r$V0PM'\ܹN92km[+ 60QN=R/6m?:(n?ΩuP~UnNr!IjׄQ&g%Qږܵ`wZ7D~a&$ ҩ>p|*}C&P] a/y,^|C46";UMx!Vj_c D|r@N n}C@zk |qd~=Lnb[$ϐ>|^Qe ;Z}W7-*}z5Ax2M )=;ƿcXt WiyCL;4h nQ05%(JYfF QT<CDDEd΍BwBa=~~~xA6sDu`o}$I0h|n> 3*0A cvPm߈c=#J:w㐇oTHFM2[I%x \aG^Zʄ7ge/l玃!^Ic0Q =&!v;IDSYw8M=H rBxZ &{ >!)ϫy/g P1S2 }x- I3`"BL `-ݡ1u]x']C [21vZ1p(RdG=:hwhĄ*R[.-rL^ayjF$C iωC3Cq)WQTi)emHxxQ,'pz9J^0!F >sK">) VKB )C_mۛm-֍m7}P{s?@r *a &[-%eӈ&`k_JOF"IxxAOwֶ֭P;Fy3W3*/c@Σ% "ASv~:5Cٶj9"SC^:t4QQtvW0/buw^Fa_Bg!O,lTZ0#1 Tሪ =0 8JDt!zD%/)>-h4%ç,a`8H8=;? %[w؏T@nRbv8CzDgS, c k? :Z&Zd|pjzD (^E2{n2{}-HСTUN _NN A?JOR5.6g9m߉W>x}rK/GJĠp"tIׄ;يa[.T٠H)sMd*1!JOAB.1 ;{4JQC @&N$}!8u4w\=Aހ!zzlЩ>DvCU',(=g".e3V"$UP& B dL/ җ߸B,N%E=`&s P Ҹe@@3%Id~{w9%y9 AX=pX9_Dz5'^F@gZ#/x=pё2yi!bY 5g[X7UA9{ɛ/LkH*Kx\ӤѠGE̫<1~ Y~!}/)#`Q C'ܿ l(BR^/;.T ;)l ![<[ֈCh-W"˹v\R_&+|j;\ߝi^C}M^)MUDRl7+̊ :~OiCemmbFh:|CBzd釩ODOkAXw$iǡ'sA}5MĈ[rEP.m^[}Ğr{.5%,f԰yaBHGD1\I=Ĭ^p C aAQ _XI`;ߵ<$b}giw$CP:P?A N`q:Q(=ç )EED2*AxѸmQC憉 R~S JH$Ur?M@\n$I ~3KLSnjtlytiBnm,! ( wl@PtgkOѽ.a>3l,2>&kױ3* |j|"?.GwwR! Q |?"2(M^a&ֈ hphxzĔ!}@~[n{^4YY#D` ^eB E8_|0 B!nQZU#Nq#o4bi )[G%BH?~*I%kjmZma@p;ha49ep>2RFfAV$%PЍ]i8kFHTq/UO%V>׶Ùy`d|>HM̎dPL8E'F=" Gʌ񔰌A0`A$/x dӁJjU&+($dJ/N商cSEӥoi̬ &wYïePEih(!PƐho4Ggmߐ*VX0HT7?OO! H?>>s{?nOa`X!`Y B I* DDEœFZ46DTҭStfҭQL̊P pK(eGcP@m =jI6Xh͸?=b#oGhZgS$90Zp0,aZ6W&Ωp9a% jQűU6U{XNm ȽbKJͫC-7UD)tr)Lc;vL @ P3fRB`] d L*2̂ԂѢ H :8*#: "rKͦ" &J0KHčrP6ȐBo?7@Te4Hk`I5>!M#Z >?_@?8fcda)2_>߿r{wso=/BA0IpRcQE&Xވ#2/cA 0B^?eWAtuZw~UP800{ĽXo8Mp +r|aSMs#ïh`X0MM,M Dj!ɔe [qY bd c2ہ tlBM<]1~7Dm6.G ߎ>jy5;C"k\Kg8))ԉ+ㄧ_wb뿁zJFC?_Wy`yہSLr;o |:%DCG=>qʍp/2Z)EGvǝc尭!z̄9lQIP8խ.ݭwíbt߮ yDd @5Gԡc> B EWj~ 9XA“ :]ͱtg?yqA ?nVA͐8繜[Duav: C!$IBT~kdk&JC-0ґ!`1n#57 9r fzMMw!zv-CNc?>UNU{6R5y/_Z-BC i#ʕwa֨nK2Ձ!9.OmChF(Q66~FǼCj>p:cCaB;z~{%wf}@{Ok)2s~2` rJ0P,>cHIPhQ5 (&9LUx96Pl"lBRQ8cn돗CTháCཛྷ—0pJ@i E @(q=HT) p`PNfF,åX</PܣXDD$BC%!.+ )F,f`Uam xca '4\1PD0JŒY waa3`@9Ð0*% f`0 ;)Mٰ-D0H N;hJ 1Xr L!d+Y)lEBa\hơXjm-Q:D+nN{6loBCQ@lF/&\\"I ۪&@?9kޖCCTuU7T,BV V ȚܠG1|$]# 9dxdiA@T7w;B/b7eMH "$H)&(Z $$IbF$:?!f*Rċ7ًH1cGsw~;^^D",ۡT_Ji#Ef*o{Osсy'&rjf+/C٘0%YK.c?ۀl"FICQHl!;I9p\ T,ユ(J,};ڔ^Xp_x5kIW(!=52g$e*(AѽsSN0dwm4_snpӣ 0Q>…5Eԩ6(?$!Q@D4?Nk4~f6%WǧKɃ HHgxdvݻi 6K ɖL1tH,̆)!60d)Ju 8,dHH$D-(eU)YdfJʒB3?-Oti3RT?E&3n"FY4)G`J&X$I OJi QbZM=m} Ow@b*"\6fF?wpԷh@!qՅJ"L3BI @A BS!Aa 8/?<;}~:H1"TS!(v+dd6ѵX,chA-@e\RVLJ@ۺܲW,j/b]*! @HCv_pAC%e?&'M|dJPI\cD d0@E'844A=>O3vny: u@D@T̄*Pt">fEcc8*4fƭFąH٧˹@Rbd,&$'5rܮ1H sq7+]V%a"MHaeY"ebVdH@)B@CX'6td#H iFTBm(U]6SV,Yv6ZrwTh%P=Z! h %FCNg-[yq0pn#`Yn)&@>F^0{ :߼N-kF7+^rQVt6;ǵx8xf̅Lp)T?T7-d %#ʇ6OBFzV! X`Xt=>ذ|DХic@%1w216.Qyg۰!?=ⁿkk-$Ca52B1L-%JJk ARd5e*HP2)ҁǝ8&8WG]r w.&ݦ(D0 0,%KO̭}%d!( s7;;$8&#&?#dֵShDwzQ64O044[EmZJV a4-jkmhEEQjѵQZŰEEj[R͵3HJRg?8@t!$T- RЙ&,jJPDLFeIIDIIYSX2& c61m(M+-}׻&SFUt)UԭT2,5 Ҋѭ3flT3%"Yԕ&E2[KIK"mi]ݕdQc%d)jz۫e6Th &%cbfA=&Dր@rRDD$ @;}B&H"$7*qXg[!K+?vn#=霈zQC7_A #'p@!O;ߗ\?s D)n(BxlAil-fe6:02$<2BXJXeeVYYe;縯y đ"TrPì jfJwig]km٨˧cWVㆻI.M5=vK@@>USC)hnΚH47V[USY ְ)H;('YK ~9B~a7cAiQ)J!;ktY&ML˺1 ̔𫖉}ﶎSU7ai$`OG'!4&*HQA ii7 >JN$ 9;`а컈0beH5%8˧ǧWP!!l8{ϕ@c4vL 6$GD8NIEx:| Q&Fׂ U"@$"Ȳ$b:Hp"J*h&LN9{k@dS3%0s ;"J!Hج4֊ƤK@P1 tJ HP:;+v[Lk)OC.F=WӋQS?հ-Ue%-$EE2z;+Q ׉v$=a (Q3' sޞ3HDƬi$L3-fX`oގ'f/r$Q R,liҙDh&PeR)-!6U)L!Ia$v Ci0/<` 1J 8{+)E啖&"GT4l%cl*بifDDlIj=5SDw=Ť!.m~55yULԍsR.-u.Uҹnu\;Mvc.Ӷ-&6lb+6uۙ"릗iӻk+qJIgEuruܵ5ݻR ^RNcIc4vQ.ۥv$nV̒J ,)B-nmv1ḏFn묵ZҬYLZړyunݓw:%62VwWLPm3SEݹwjPX͒*]1!SpUGs  7C C,# I @ Cw:B@]}_N Wb7KAԡz>wa4wq$ IK( \ pX"V ="k*iM'n €d#t4ՠ?TLm?7Va`Bt*$> Lp͊ {Aw*SNw]V9w]F96˪SPPԥ PHAw$^E^{_("KaN=*bE#)Bv!gC* X$렄(!,@"}/~Lj(ׇ|'4 A1A_jgoL:A<_@4T}l/sb❱EFр~K["qRt݋nj{OD2"T7cѭ- yfe() p8i{v6OPH5PC,/Gf13$0\ L$4 J /Y[VkBK Q`h-jR"4\Hd.M2d,A A P6.@ԦJ c&4dYqk$H%ͅZlY&2VJVHd`al1"F2ocm%6ez״ՠ[Ia* EJqUM TqTtL %wDj[VQbcO??hͺa$Vjm5m3TԀ ,g$hs d$AEu.].A@9T;u %IgqbԤE.v*PggH{ɍX~vTHzpBqD٨?Gt1 FCRjdLְ5*+E-0(#&sa O쉒 AH M+IA0)B). $?u-GuII Fd$v? |η70ϔWgwtn<:{DAwfG:=NTXl>cMs>oǙU% K*PGm%NԂAU;'hj*dUD`9oi-V`z+ ,̴7^yK4U�zNkBF2%41'ZP;0}Н {B Os2 @u?DztvむH/Ұ0!hAltSՉ | [$'Y0:wK+*^DH f % {Э{)̴TeںVQJ2'Lɒԑ#EH/r#}_fف6ehdYR"1k>Os6ŽSZ\vRTPT]4YPj0xvz돣2^X!9Wr 믯Pd(ǼxvƂr} 1O뫦q>=׆ad :.:9` ,blcU]<֍ץo2|p)Kb@_hRHSFέMšD r\G6QA;~v쨂ZGnN*6%`G; ׿%CaB"g`*.\0{C~L25QhfhTKS9R&^!uu2T¤kuz1=H xEl `m8ΓNČ'rPϑ1 eL'؉s1uhX\oL ]&|W[(l֑킽Bjq s(G!AK\Ϡk\4Dc"ӘFz4L 6p͢rmmSB3Zkһ׊ƩX 5RB6/Q=&8| ԧ,R,P+#,8ҮrG߯g !,!M"B bEܒaB! ݊M4C ٭Br>"dq-<ޜ7v@Ķ Qh*}tdpK&u;}0! 70X9UM'wؚ@<[ Wv{Ԯ& <~vmW3:酕r' zW}g9J^ !5.QH?όZo|UΑ~ :끗|yQiYWsreӮ'HQM9遬2Tm[*J(p휂pD/NW;D"UNrnѨ㢏ae#m9˯&gn-&V2b')gm3^NwT<[|G]g Xw-Yu]U)svX ]1{ +byeM7˹4kQeɶv+; ,9ͧ_YqqڪY_b={l~*loזld)\ k9']'-d0i5LZM4 oRWR^Vƙ) 21u<D1x1[Hu2EfZֵ&Px;,td1O9X [ l __m83 ,i-u~uW_3a7#Ni**ha| ){臉ٌpXۡzh1Nut'pX&GPQQg$tqr~$aTy{x&sh֞Ύor%1<{kRS{#FzE6Nݥm!R1ʣZ]D4JWHo%tߎv@ k<4Ab}9wԱRO1Hl=Ols!\#x@ě<(L L5FH{nl<| ꫵv1Fc&L_D|XZ+[]l1gFa`>BGt; @b ?+;B9(ǓmV CɩxD-d'RB >Q&86 b'JA Z6eZ6/ydpRKЅLE>R:Ku|wlz$I%qhf?C5MeeJ6Ҥ!"J\|;wbpy+2=#S'HMDzPN+;1IHG`vB2(#1H L@ 00Ȍ2j2jej)UKRThZT[MftO rr1CIpb8fL!>"0h8 EA6LvC gc @%S1 _2ʖo{|å=4HAzN^o}rvlMT-]RwtV҅ c|9^]=~7l9՜m_6C\CqA(Ya5 w"hqr Wk "σ_xPm RmS=m59{k4ؼG]Z[kFb2luЫ$>Lcmz6/ٟ}K3m<_\WTv 53>u]qOA%"9r&DOCrMI*Mh`u D܊2#GYqjQr7m܆{k,ڒ4-F:=Jt}&uErՐbxsbw⶘$ap|)d0lPA֠%OH t. M @"x '‡ :D?Z=G?EL IɃ%t,L0 CN@%I@ux|H307 9ԥhʴҔJlZHJYi`XUCr>FE6HH_NJwTU#|1E%<>@'&uQ6 }eXZKDX#J)B,D @ԒY~ޗt܅X TqYZE? ,2 HRZU\W `b%pzMW;KE^ZT.i%H%+OupҁX)b$ G !0#$HC:8?< /xzDy,*.v|W? pMQz'b_ې)@ T"&U$Bf JjŤrͱi2ZɰP6JHP,@ĴH, n#gЃU !=pOVe@BDXF,vN}&:(AOs(JRarZ;ھFsyD2xd6Pǧ Z4!&آ j:[(Nr@ H +0( @j-S> lD+Wl@6QFI\(&D]ꤻ};DOic=IE!}Bp@6z _!À^?DbMq N4ߟE^ML|(ϧ( F"Di)z6:4( V"*J&&hxP!ꏍTcĊ8baHH)LB!0#jL( /=a 8:k1RK ^B3A aLك$ץmϝ>f9I-P'&RC j(>G,-NjlpYn @鈑bqQ2ӚAM1Zcx×b'<0p^'˴%*XYcmT 3RSum㨴ۙ Y&r "$0XWU-biA#}kmBQ]*Xͨbeƛ~w]oJj\*"HR^n6si5X2JĪF$$"& &Bu=(m\Ha 0g4: H8CВGFe!-3( nH)ppU':xQBD T)(JUK)b$H@m:bf,=IYMd5)ZS4mH<S^䡒*!@BHI$'h)`>~tƕBQ;nE,;EQ[{ 7r2-N%LmIQ({Ah Q¨?uՊ f&ܪX"QHHW7cއOSPPĜ! wx(SFQIysÍ|cBlIfEcH$!mOFP{Eǥ)UDRLd\f(F3XRHpa @Hj\>vFx mm4tg ]u)w-iG՛DW8ZiBu, 8akZ$&ÜëqR{1Eȇ3Y(x}dSݩEC4dL؛T2ժzt2w)ڟ"AJF$6@4%U\5&C1[p񪵸|Kz:2: Y`9;0Af"9)BEJ '$Dвpzq[ 0 10K$6Ƨg,Ҧk~ ٕKBdP$☊4 -yucÊ[Ĉ@:. s +q1e!>_ 5v-WlaLL)BP0Ca&M6XA`!{S(w!;_="D2*ӖdbTRmCqvL&1 &Mʓ4i<hHCn(+kβK)JV+bҐ 1Tt.P9ВSs0ҫDT 1N (CU|9c^L!D 3>Ĕx$ U~=-6H*bw3amHgYrUߺ겼ۡ5kq.W5{c/Rna%|r]1YE9-aUIW(nm#"̿Ǩ腝!Mb *Fy~)J:Au v"T,c)zE5HBBx(T)Pf-LeX-}U.>CJPPA((㐤ThH[e4E#d%^ɱ Ie,X2M#mj"K*)w .׾_TYA@ @e pZ=io` ` RDA'OlMd`F'"I%. tnu.cbX +U)e&Œ%(-mmx(*# ۦ^ydoW;ښYt HKy4M%B%Zɶ&"_=vJsV) K85(9ԕ5I)M+M@́jmahifT6)5FX ZjTfJə[,SMi&ԨHKd2LaY-JiI4Ij)EBYaA4٥lbiTJffS)QJlJhY-RV6iY#Zi,@Y"I)ZI3J |밙$#JdP 5(id(+KYRm#SjM)ͲTBB$m$a';P?=#3S$bkDe$ I`!!Cۗ%J"Rô;7𧻓X(ۜX6sYQR#t=1 %  fb4b#mRD(DxN@uQI5<:|OwDIL28W   BӁ.*I@%! #"0 q?"&+:I}8,dMzjiT5Z-k#^x!=d9X98 1(cIl ( e'݄G9OgeaђcY6Ԗ~&Ͳ*f-F%6,mRjѤŵH/2Qן'?o30)0E- &" dȡDE FB m@fHT,Rb$X%-lCnNݧ[mȵ͈Bȍ %QX9!#@B9>4e4W~ `T B=yJ*v|HC $2;E c=RS2J4hy# }r(C`^iiW8`&@$Dy>} hHw?.s_~ԉ%”}4WR+#H` 1ɌTDl k{vu*i$Ȃ׈,+)C!0$D&OPaEQi43 , $>P] }D= 20 &ګWٍf!B ^UHH6TM*$ dU ~}ds2Ʋ#xතm] xQgdӝ-uƍ͖ZQf4L~$31!">NhN}5x~8)CB^UQ8dB wIEEz', ֦NeTIy**ԫ z AG" i-ax%O@TQ "d: ؜"%11]ؠƮR02E$b)%fP0 @BD*D kUٓ&5sE0st*6ZWMo+竡ı1(pk`K$(2TֺjܑLT7JA#A %vN|+HLofL5$`hJV[F]MktJB(Қ1,BR0`|3mJ[0&"'A)420Mn|$]24S ]iRFfRڡaM!;d ùH`TM(rikffD[Q L]v@a%s }ؘގFj18uRU=تe핋Hgr IJx$h9J- U!)H)ݦ)zݷd460e1$%QBmA*D HUQ; BV2Рȴ Rc)8ԑ\kfDFܹSLJV.F1nbixbijlo7f(4U*hT7F_%tFRۮA}sٲiD-WvZYRu醛L2l z"'-)Ot=t-2p &UA(G* `e\@]++ L tw\A#28)DU8*UK 0;F"e@sXDPhppjBC(|'lۂ H'II#/\0aR.PPRpS(R1A ɨuv쥔w(fjҢֺ啵I+t]ֻT?~^@+FMr[hvHW ٟ+'(L %qYYLC| *'@K߬)Jx$lsv80 yl 88g%9ݢըrU)ic BJijahfHI! V(bZV3&+ 6fKlMIE4Vf$c2lj*fR650Ҧ̬13K3m%%[rFƶLmUݹ3BH,3l3&1Y &(*SИĭ4k--@ih= $$ 6S8G}W9%\ӻ]_eA@)o7,뀘!# zsreBT(u/`:(osIWܶ֔ҥ,em 56B@N0D(KЪ$r GpG*`fM⪯:Os;4A %%hE@fS,r#r7hQ DCt'*4'T{M2%:MJuY~aDL@00UNGl.Xd,]~]_גT |$"bNJ ;A&dP!۽CB>R-u.j̭d5E$)Z#kQbznyFs[ -M+^v48J0PLUPK#Ǚ=wgWN'&)3$E C DCrP'H8qje Ƭ 4F2$>pIҋ~|Xt}G P?Zh( ^Xa_Ў2BHa;POh̥clek4,&iR*4$L̇!1Mq2R(SgaV4ig2m!O 尲2aMC< NG SKie1j:qyyqJdX--Iq`rK-'+6y fJ9-R. fD=w3M 2bcLCSf\kW)C,-JF1bb%N@XHQ#2R.];ZpTh5G3[iG<{4g9FmVŖ˥gE"k9SJ^VFF AS(5*+@O6h'ylE%{͜朓c +4m>Oz>Rӡ{ZvwA[>H+!"1?RQ10qOyτ>'Z |Qh:DO"vJULgjxRIUwpShYed-jNnUmuۑnvI-1JSm5S*2 ~5+B C(ЩH""pO]*XF`&lccFȵ)6X؈&6 b[&fa$UFPhR$% Яu$vDs߄D|Lѣ "s~y1(>iN5B꺛4HW$ 31DЮ4Ub:֟.2-崅ܧ{9ʎ~R d2H|HWtj7; Y5==Q(FßЈm '4dZ GP(m /vcQ h7' Ey]Тko.ist h 8|Lecm;"6@cBi%:XUݡTJʫ)IP#J 0Qh]yyQu'A!,t) *,AZ+;M'9r/A9PMYd,TKlSfjP t>BBMxt'LP3@*w^0܀r4;DO$qp @nvS,#_qhv`hOSR@Ўo 2j~C|b y(tԇ+Ҕj֖Z֍I֚h)ڔ`IS`2H"@RK((J('I" g( Ey pV(3:ߧ~4G9r#)Ynvw 4;n] n\Ss].]vHE)s1 Nfi$#{0GvwARPhH""d'ܱWLu\t۲r2fSF;ђA?7B2{lc0qO`Ȣ(+eS2,5<a7NI1DY: ivF9ިp}iVGFJYy@GQ"@tzЙAjy1j165P^: .cy%q|ya/{8b I=ݚ$;KJҩPRX#$$h$ؼ5O `JUΏTb>a⿵1}qB4HPb>D$pQOoxA!34.J E*)à&f͸(a`vliˢćDޛ}eu&Jemq  e48ab\!Z@A$m8=ʂT%BD@P*n=' RzJL t*2{4ԒG֒DWm%ynpMx%BJJ؄D"f\e,B8DdBAkK3J˧5$"AE*ZK`aj-ykAIC @c2m`Oo493vR"$N ۇ"VNzdAj_W4i7$ WF*x*2T6iNkh'(.MIcR2,Z M6o ʡTQ59C4![uC:WF"'AW;HLh#G5΁4Y*:;+0AcEʝq6ٌ6Ǝur;y NȆQn 5 ʺ7ߙ!YR5X`C#b&E]Hn-"!*88 X yevttM4T`FpD[3" @S!WjVP(P=" NČҕ-Xy~ARXMiMH1VB)]7pE.+ۡؕJTGڂ&Awub5 7/]1i-.T* H&`Ĉ(BP$dy,-6ypd(tiP+!zb^ջȰnDž&*j) γdǘD8&q,AahpuP Ez:HF 7UkAG*/yw! 10lgcZp ^NݺSB(˅0nbz(LņHvZJvrsb lw3ÉQOs=Ɖ#Sv f2 h 2H<tFȐ0ED&H!)I!%ZPO%|AZtǰ1II &PL ROkm 5* ^ fn'KO~T0|:@S3 2 @0J'' %E1ucdlMZdQcbUEe2ئٔ+VꝬhԄ%]nU SRȄ)HI$Xb&DB,E1;c0ND Zoo -;D%i,il`MII{hmaYZ F/U h(J oa!AAG3MnA9"~Og؜ :7*ϊY*3Y5He2VbLQfd6*`\#/ӓy@xp?3?"mJQV(h.^\ ~AXeP5HىHP%lLS 1bJbLRPJ$%trj>V6+ %XJy9]56S-x pEP;-S7ݦ)m1b\2Ya,L*= !/%CPY8dZI$R`ȑ.mTµ}p9hyIr`5&pH=YG R9 FQ/O4nؿ=;0/G:7"JN@Z|CC$VI>ȀX2J|ϰTTU$"R`(`w0`h= zkqeD@$ %B&fi!V qPIzdIrzq|Dbbڤ_ܥi\F^Ym&HD*RB! ĿC;x@KD"XcFbц9s8' \Ben& k60ftw'#`1 M *!Fu\298aEQ6c @D!T)v4[ Ť(ՒĚD`4'ǚ)_) *#H#RAuC'1` a&~;?LLAz TLL!#b`r_ I _%'TpTpTI|D~a9=hAb)]&G67ˈ`~*H&IXXM"q5OўsHH' ([&t_k aO iBT 5:L!P ZL!>\G@"lbר(u&ȼ-tC @`HB9Z&5)-4տ4նH RhFPrCRT P"AAʫ($(!4fXXreF[db**ƍk]hB :>$;Lsb fQ4 !8(c v͖]cz$;䞖]2I3H@0&whx'n9 m,OD hA4T[=*DE4*P=$,``sNN5 't@NFFF)bb :,#K@sDIS$L @ 4L_kkl^)$byW&8;ItSw&‡`PPJPe6`T@T` BMA0)wY `*#&T[XhEҨnzVԔiBeiUTe"P؟qpz4fXaP2BmHjtKirhHc[(jˊ5.SHII!pLS89'&Qt.)8'fNVE wf^KBHc6ؤY6Ouef(k%i(4! 0P2J0Q=%t9 ;@*&UmD͖ ,T+,1vF- P96Z$ I<(ҕ:+0VB@ bt@DED0I Xpp!I3F:Eԇsn9B b-`y@SsۃHt@f3sKt4"uJN˺A}2%(6PAX anT?ϴ?3ƾ⋟]=umJX1@H<!7aTH[*TrD)P/F)&{0vHjH% ^,3aLuPbTd䡙$ PN! )@ix0LOJ<$dPb j2CL$"kD@D~pR@x" vA )cpxi[ Q k*Y` iѐ;3g"C!#uɬ3 C# U&B$bhS{6h",r8HE032IdLd"$ ~3x`5L\Ρ0 nXc*C[nQ|SmnMSBLkCņ!J!C`Za`,S[b1XHAA p`b: AbT2i"DZCaiaXN=~:I2ʒ"%FD'G\ Q/ރ~_ng=Q7om)2"jyrTf"H5 IrPD0SX5=$Dh8p|)w1;NZvJj-=EO9z{ρ3_u I0@hJ'Ĝcc %M)ךtdfy4|`Èe2%dMǤƃdɫMMfjMH5[KT /y>0JQx0 @PK4@+Chz2  @7'EXqS!@ML\D1XO[yIL(GXh]I1# BP{eWIR<]s >iYd"XQ<]?c0 |]jZ &<( ̾!.5(PJT7c UɆ* "3@sg?C )&r"FE@%emFQfLJQf[3mS5Yb*BeKKV#QF5)a2PVMCeX;pr=i$Hh ҂ "=7u"Qx}weVy F~M:,U:- $~P4D+,/L!jeZe1HD8ԫ -]-3UVUיo7=ՙt RLes\Ol |*xH qDB(}r&`J!K?E m7m#BdaL'm,Bf[ ߟw(V)2wkC8 VȦ]j%ޜ0bF:%)^٣2F'-c1D & ,P*$ģ|0DC Ï8I M`wd%+Jk!JwgZuZA"CX%MBgSWv B% (4n xdPD 3$ Ulw`V$kv`*Λr$U ϡR3 XR%@0%0(<WYJ%$In6^\V 8;Aă~1O30A0Б1,"t 9Ф!1J!02tx WŐ@DP(D;+̋ #ZO(s0̒IZ~oS"H*)*gZt`idVJ2 '1/満yO #Tv:bT?KЅJbC|ah3A%` 2jH1BD#R R< LY` >L>(>B!GXaBhKJټDĔ9DPmG0QA.O fނK^R=_=-KjBGJ8(2KJv~q5:1*CC)$-L@-7lɑ,nՓ)'bL/le#O7m`ɗ\QG@|T:D)l_#'pSjܔ|L; :"!2"d/N$ 4:^se1Ĭ"U`S&p\;N1C !v8&2ȚI B( q_c7Ϗ>&r EH^}10t8{V4l"szm-vmXȢ @, fTXaD+ycdJr~}!?%d(!~X%"H Zm,- Di"T 4!" o}g^e ں]bs%hN^vQ٘Js>X/C(ohy bb5o'Po"(P=˴%c0ܚ.0*1G=#B*%)*P25wWMQ U"ThCIΧ:'Hdq>@t=|j* b R RȐ LL 3 `҈9 Ҩ@*_PD7 !ʢwĊ2ʈs}IJHP΀3,&|TmTHU X000H P *ʽlU_wERjH # تTNQwP1$p3H*H9@ `(!y(X6B!8  'B(eJH=!;აJ %lKQd6`+m$k%Y-cU6KMRԔTU0S dURFD@T(:-RڿJTTH3Mj6%2f-dޭU4Tf6I5 XJdi7]_U]7],SQ D!Jl%]}=YOM\k)R6wkk13snbѶ1i $a7\(QHʻJHQ$QEX(6(,ST%0 b &!ξa^ ÀD4f6Nb]n4bnQwWZnMAm}^@?@tp7XX dlA_dL@"xȚz4 ktSp"P D2T٫[Pm YdcF,YKT,Vdf)*%&Ee5uy!mmb!I-*Ŧf5IP-q5.AGQ wuCQ>JYz0StpWULB0a+m1:EwNKv?:j'ueTe',>u[*"y[apm%ÔT5nfgy HP?Zas;wW옇N)pS౻v'\R:_C+R%)$zv Tj"umjcPi~z\כf\Dv|(ā,PR=a-y CO)ΫK11A DҒsE*;!r Ck, Aܖ]TL)k,7Hյ).׳ْ^)8kurP(v3\{ Ȩ#H6Y({Y;|e`ͅú3j쌆0j|ow:r㮞8z*Ye"V* 8c\Ù(^aFOU<:z^$1gtc aLh UIVhmXтu9뮁u;dYg! 0X2UEq) gY$O!W'لrjP"g6f' 4J)XE~VzsaHT`vf^P<7B#Rm( }ZK;C1eNۗ66A 9Oa z"JICT~ Z%fmGJ2dS;+em=lۓ}T+\QdcEʚog xTƴYO:͛(k6iUH f-+1qt|9 |E1a3B"g#iRU WI?iY̹t6%Ji9SAוMhWC'Nt t- >:̾[H)h8hЅ]W,(tB63 NNUw,k[SwD~LrG0Uх돬-þf2+n4CˎZ񥷠<`BFB$m#=ۧQ{J!ēf_ m:;e3V0~_W.&v4CWs  "gʩUK.2wރ5do ;$BҿVBdm5gsAڝ|1©ciu~{nxXeqz/ݣȊ!ҋ}p.!=C;yPkXus4\Vq|APg$0 6 TP yUNЗ"pz:8R 7YH|Œ $ي(yy.[ W4Ȋwwhe,0\Ҏͅjz6Z]1AH8H8! < `r Rn^FQHL <IÐcˁɈp8a]ZNף{T+4%\$Iw!A0J!iH4I4qOHX :y3:3 #'`w)V '_U }i!ThdSm0:` 1DNUFJk9SCx&PW4*V` :q>2vf1EF"s9 JMz01]ǍfNh& zM6;Ew eCJB!A='f. pYydEV#c%\Z rkT0ȒX'037.qɉiO9X!C''d?d&*[-g]~MiڣBk ak0u4RX93D4qs6.5l!L!d7@lAG'U p; =!&c,b^5$G`a N"RJ A#:6"CB bzw"^)F5Z4#be0G_Zh} 5y7:6FQSANnWJ~_gQ@̐Z6S4u۶J4[?e֚b$%& 0!62s]B?fəٗ\`RgnIE~0("6I4S|DDFK6X$KK5YL>ICF./_oS@ы>VL׻]su"}EAA $ t a)IaQ@ab =JDѠ b߸f7g ;9<@n4d:Z$-@2nLx&DȘ$ZeT˫U6gY02% '#)vut5TʤYZh[ZU]ELSF(c1(*.(tHGzd?W!7Um`e#=T6MKTI׸/xt}TDA]МP/' wh,L]DҾ}蛎ن Ё"6*a|/9pQ#ץ==~ DBA&ئM6b$ݙF+JJR٤`%PIPdBVNqQ0=:3Y.2 W`a&ـ-OJezYQD +A eض)DYQЃ(%ĢCl4 jVf@)0͊_DC٠eaG'{g>-[[^+zT7iLHrr]/@ @="&Ih\X "}ʔ*n!$E"@(Eza;40a("(RC %^9k I >lAFA{PdD H\" !0bB RQ` 1#KI@L?uD$6@@b77mMe7@|0$o7?璖p8od3kĤnDv1D t4|rúH61pN|{[/na5 lbX8hճY$hT16&Z`' |3%tK@-m& ͕u Vr&qx8LJ$'w+y};b.EEJPehѠ&\z; ? uYG~<.ME*7V6Y0}u7lVG>GyK)/a厅jsE`;U IB1nE42/L3 y ΝR:*_oZ#wB/mV**䛺֥V,5"XSĊV׊-h+b.NJ ԰K Z+4#7뮷Xie%wsh" V“CT-68AbbYG 4z%t3HEҊ=`=:Z:L[MW[%ssZ*m2KFu'0obVi{ki" 'soc]s(c5ג^؛tZ:@ZrرBJtLĮz,Bmsc'6r]+23:olV;ynC`;o:3X!OPa| Fi$45(md}UܶC4zGnT2gw:Zħd:̳/x/ڮ w( HPH!'3I4 ʁH^ aĄ+*y!SrP*`$Ѷq1_'Bzb`c.CY@bE0Ԙ*NOpxK#LPxM! BT `)BH ]=@]Q$DR)vxqF aVR7CttIAѳ҄E`"+$GQzЃIT1HlOP]/Bp zakPjGI vm|n`29,pA7nVu O9"6˸xa&~8(0 D`r7"CypC%RKBMjd 88Iiɢ܆:{ivqi"f+EQ$xq }AU,$ETɲea4 d*%6!yUzTbA *ĂhOa$ĔޒLCCPA 9xi^2w(yn]`i^y!8L.P%&t4%"uJɚ{] Aa%Da΄n&&M{˝& vwlJbPB$  Xġē "bfm-Ʋ% d$NB2mF-%}` Y J ŠTDnE{RsGOa cX)"9D2h,Ia^TT܉]䢘$>ܿr氠 E8~~ djf)AcswzhōsuA;{P_P31SCZ0HIpA="k!7p\/@ӆ #a$IW˝B0ɖ)3Ky lAWZkZe케XfT$XlR2npٴ E,*B(jd C1S$Pv@BP*%;t[i@FU'Ca&*Œ1l2| !%bI!JTd9PrQF^p$",!0"D҂? d8W^ϷG7sTiO:Pp$0S E6`k J)ݴlrL,22QZYuQmlkE`hbJEiD2Ps1@2DrE S h2rJr@BP>D; 1S#( zRN/#Dq̄ {; #^1 ;p '"%C0 pI4p v[ ("W~?ԟYIʈ*D PT B’0BJwI.02@Q5p_dXխg}aw 2H#MW32 X]%]s:P5PB dAu/qc^4YAֿX=I(XOB͢a` ( j2IuA Ѽ4<J#-INri)xA-7 I(u %4 )3 \]LF'PlKj66gk]BhJA$+2!΅M(K GNQ Tbb UNQjc6mjU60 swxP4H"`ٹ;s%ܳw;ūt"dۚ`ph@slC0DI쇌:zBv|怊hB"MB-~nĘ'js%p)D;.6!!VatQbu~XV pi2BeCh  ?ph]+IXtH UQ>oy~5i;7ʰbO(H(JSHQ>fJysL")q[װD0=: ,Aq vG7s H7@8#7'2_$C=/kIBfNi 'ŸwNR'O-~N蒐 (ĈƜ 31&J9(X>~Jbf ~3͏ ylËr'_>~C>r ?G\8K#0J23)e29lY`t9 V5jS.ԍuI5Or&YjdҍKVe65,oj/NpGl%g ̭Q6۱5%q̀>?f*fN@B>Z!VhQسAG^7iujJP^CT)Q, A R*Ah{.;>$x7JbpUFvǯBAIwC%ߺBR@uuH5CBc>c#x(|oNK2؄p!e—L2 K:G=,f-Z멦v8s[% ~vJUQIRkUң,hX RA\* /1*d3~;1wrI% C!\AvzAcވ@B:@r_M@̏S7}7(z@="]>8;?"H0h!6;v &s,U?t&3&qNDH:DM>q&-A 1h]e5 ZD@԰ FTQ)@RX/ð̝ @SBS44 @42D"HK@ldΟYxR3|x;D T> E4 IAHH1 * -1݆G5-1^ſMѮ-E*I*C68%$6n Ԋ i(h@IT(5Dd(cXf9N&Z-;7*ؚwjFN13jֈǽ8'#hTΊo2Ck/`91j]&,ҍa xUD%fw٘n_/v[( "EbPB*X 2DJP*e3M:dR cP4JwR2޷P/\MrgSƊy(MApf]9a2/*mEo^*v.)3I"̣\QVKZz+Ԧ"Q( 8-$+DZٚ1p&Dhh],5>%MEN2343l&⍆66E- d0Wv'Fmн#Uj:FmWv E/E!( q{,1qW9' Z2`J (鉠ەUH`v(!Pt(āvOisSĂD4P12h&Q+ll0ă2CI,KЀ*{(QT4*P| 50*gّdcN>>d@GP}- *xqc*HX*{,+kP]? 4(!G!A2L $A{D iۑ00^-^D|x%s @yOc*hlg|@ >-kL:ЂC./=JIqb&#Wr%{ O^h<# !*oDeƁŽ D 2\@4|jF8KB#Ra 2b.~p$*-ÄXCEm8gyF7*ggS\qxx b 2tP"'?m(()b?TzB LAh4220CFiF i#ͪzQbHLA220CFiF i##FLQFI2zbz$RXcn;~qYwGGM{#M @'a%a`E9Z>گXT˶5"Oy&dՊTwoŭ ;pV'su|Q9d&zVH2P6RP&I 8BI+wv J̤1\bԨ4q5L`{y#~lb5݅,|8+$#np^e:A0"/h>k5Ǐ(_}UC>,AHJ~4#Y2A=X?uRTvN\8i9𱣈ͰC(*S` Tk}Ti0&C26&HMDΨrmtmϠo7uj ]t(-*<ýQ:$IE5]3?2PUˁkl aƈGA\*u!cX7ًy[nрPK2PBI>[i