web/lib/Zend/Application/Resource/Frontcontroller.php
author Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
Fri, 01 Jan 2016 01:11:05 +0100
changeset 1308 ef42d4f12cfc
parent 1230 68c69c656a2c
permissions -rw-r--r--
add grammar version if on annotation + upgrade metadataplayer to take it into account

<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Application
 * @subpackage Resource
 * @copyright  Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id$
 */

/**
 * @see Zend_Application_Resource_ResourceAbstract
 */
require_once 'Zend/Application/Resource/ResourceAbstract.php';


/**
 * Front Controller resource
 *
 * @category   Zend
 * @package    Zend_Application
 * @subpackage Resource
 * @copyright  Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Application_Resource_Frontcontroller extends Zend_Application_Resource_ResourceAbstract
{
    /**
     * @var Zend_Controller_Front
     */
    protected $_front;

    /**
     * Initialize Front Controller
     *
     * @return Zend_Controller_Front
     * @throws Zend_Application_Exception
     */
    public function init()
    {
        $front = $this->getFrontController();

        foreach ($this->getOptions() as $key => $value) {
            switch (strtolower($key)) {
                case 'controllerdirectory':
                    if (is_string($value)) {
                        $front->setControllerDirectory($value);
                    } elseif (is_array($value)) {
                        foreach ($value as $module => $directory) {
                            $front->addControllerDirectory($directory, $module);
                        }
                    }
                    break;

                case 'modulecontrollerdirectoryname':
                    $front->setModuleControllerDirectoryName($value);
                    break;

                case 'moduledirectory':
                    if (is_string($value)) {
                        $front->addModuleDirectory($value);
                    } elseif (is_array($value)) {
                        foreach ($value as $moduleDir) {
                            $front->addModuleDirectory($moduleDir);
                        }
                    }
                    break;

                case 'defaultcontrollername':
                    $front->setDefaultControllerName($value);
                    break;

                case 'defaultaction':
                    $front->setDefaultAction($value);
                    break;

                case 'defaultmodule':
                    $front->setDefaultModule($value);
                    break;

                case 'baseurl':
                    if (!empty($value)) {
                        $front->setBaseUrl($value);
                    }
                    break;

                case 'params':
                    $front->setParams($value);
                    break;

                case 'plugins':
                    foreach ((array) $value as $pluginClass) {
                        $stackIndex = null;
                        if (is_array($pluginClass)) {
                            $pluginClass = array_change_key_case($pluginClass, CASE_LOWER);
                            if (isset($pluginClass['class'])) {
                                if (isset($pluginClass['stackindex'])) {
                                    $stackIndex = $pluginClass['stackindex'];
                                }

                                $pluginClass = $pluginClass['class'];
                            }
                        }

                        $plugin = new $pluginClass();
                        $front->registerPlugin($plugin, $stackIndex);
                    }
                    break;

                case 'returnresponse':
                    $front->returnResponse((bool) $value);
                    break;

                case 'throwexceptions':
                    $front->throwExceptions((bool) $value);
                    break;

                case 'actionhelperpaths':
                    if (is_array($value)) {
                        foreach ($value as $helperPrefix => $helperPath) {
                            Zend_Controller_Action_HelperBroker::addPath($helperPath, $helperPrefix);
                        }
                    }
                    break;

                case 'dispatcher':
                    if (!isset($value['class'])) {
                        require_once 'Zend/Application/Exception.php';
                        throw new Zend_Application_Exception('You must specify both ');
                    }
                    if (!isset($value['params'])) {
                        $value['params'] = array();
                    }
                    
                    $dispatchClass = $value['class'];
                    if (!class_exists($dispatchClass)) {
                        require_once 'Zend/Application/Exception.php';
                        throw new Zend_Application_Exception('Dispatcher class not found!');
                    }
                    $front->setDispatcher(new $dispatchClass((array)$value['params']));
                    break;
                default:
                    $front->setParam($key, $value);
                    break;
            }
        }

        if (null !== ($bootstrap = $this->getBootstrap())) {
            $this->getBootstrap()->frontController = $front;
        }

        return $front;
    }

    /**
     * Retrieve front controller instance
     *
     * @return Zend_Controller_Front
     */
    public function getFrontController()
    {
        if (null === $this->_front) {
            $this->_front = Zend_Controller_Front::getInstance();
        }
        return $this->_front;
    }
}
b˛Ѡu^RƥΌ*9p 'p#Ef~R$y##pMu/퓝 QL;3=95(ڰ1/-b1f ^\8q8OX^Κh_a&F-y%b 1"T ,oȃYw87#}Gm͒X9LJ mi%\Ci 1d/l798˝bZchy|.utшn3pH[8ֶCBpba|-FՐT20 d](et[ANp Ps&dũ5aDu)uTv$uH-էMr2Շf(f^~; 노0 $$wyȨv*BAT R^נZ)I=.tDAڧC;hICQ7AbJ)Nf<=B~kీ2Dz`qp ykLC|C0pƲzžr {09mvG̠IV ؗ0/+5\Om,N3gC,}C: ٨jxUgMd_(\7 y~W\[|{hY.3,݀8Y PpX0~ߊj0X5W HSL -SD|* -c sa VVod.Oi q6qSboRGI+cʥ"| :BO Q}0Zۥ\I,hbeȍ $l 5@^!LHJ.gYFj{R*F\^"QT mC({̕fVKvGPTוr숱Hgo51Zކy ^ ; hT7 GWAx5Ic} cM,}'᫇M bx/nаW>ME[X>CUpmAnlg(=Tac G~}ܽ fܝFA% -B"vr͹cG),[5F52~/oM9N~{q^:>8f@jߟjts7M?yߓOn.!)˞֧G'0"!"pnf ~XKȭ 3eI؍c7(Ny?\GuOQ qa`t"*iX7/W!]dvK<Ȅ:]4x--E2Jj7WjUܖ|1skd*WK63]<*9ǭ\ WTחAo@6괚^K& #{\O>Ǖ]$5]'~v#䰃+)6(~a · ם?8ZǚƟ-O!d}MI_oY~hkUv| aMC}Z' L޶3po8t!8+AhAӽޜ4ňY!φhB&L Vk%qGғ)@M )%ge^j=~5c9bӟ/rzrr%)z$B\AךXhmSbuSRh,˜f+/E+൉C̜/>G@zDijVo%Nū5HM fXhIrьLbSz Ja~s_Ko,"5ؙy Q)&n&tm#7@[zfoсk7Q3 26oeC_A.GJZE9|{Jy0?AFç[Y?-LݙDb2VjT D\ bWveɆ$" UH8" .Oau1=dIuAw_4GmiwEۭïoK{cU@jDV=C3Wq NOVT(x CUU{|4o"PqmOGPj5[YzB?2;50*e8yuf=B%^ p'C ݟ@zYhpH@S+,/lc @Nbt ?Hj}}S(\qYrmEuQmC˂%d>̈́Chd;b q㤔O[/,@Jb mT tr?ڨ Y{\NB:ף@cvޕkkg8vnzX6e*TuQyu KRJ7/k) Xgt1&g؄RG%sHFNE+ļ~ĈC'`~O B7doA+492 C\ XQ RBskdz̘ ,/o&}*>:/1q@$"@x4"мUJ{7 gUE}\ϙ0ĸ&6~U 2g=Iљ|ѓ.\*bZSfXT} ;,a)Q  -8ĉ '=*~_".>h߲Nx~]!P "(=:`odfOU18`CzS#|OQ&!AxTeɆЯAe]+u0y iS51- e(ńˏϺv5*F"f`/%|u)7~H ^YP=-)XbCq{;#SFom@Sǰ{ر;XlɊnCƥF_OOxY[#9gg={vT P52l5OM.}imԯEKp 'BYC{aFƌ?X\.ða_as[^oUW&G2+Va=_:p'X*dxD_hy>>&M>n?D 5'E*"z,E5cT[GiE2HӮ}4ڿY:]S<^ʬ;7Qc|ؾrOJNgk&i~k v9+aiW\Cf9YLZW+%gcYaxXt2ٰɚ0jS!ƒeu" R"f%Z1q|iW_h.彙[|3(k7q7;n$:%+\nP|0q}ٶ?DVʆw414Gsȹ۟wIZx|m R \|F ڙUڂj =pȃK5-4@NLXL%.zޓIFdɌYgU' 4b.qU 3'|? a?9=AI$T^3IfA[Л&^ AUʡ9dn.NIO7y .o B_jq?}d|&# >6eN|]@r]f~]ZjNoWwwyghpO4q;d6jD}dil+]MSPX}}$>bԒ-gϩIz,V1J#; [OU!H7]8@qN!I MITFN. Vq@C>i21v-vOTHK'_ЉXU 4: #uiTmMdNEz??/!L2{@Q LY/HZb#lk1eiWp;].AEr`/$ j̆e a`0w3i>`Ӏ qPD$6mz_Q^z'Rv|&i2K %$~b*v&6j{>Ҁ̜,byTXղ$d01L2/ bܫQ庎m?J^ھΗ2  1$Gh/ž穲S<x1hY\wWۘZ%'_1Rٮ0OKtOxê uE.Cb=JxsA` +wJcy%u|gW8_"|cf$; ={,o eWS|Jɂ_.!oM5>E U hHK[( *d4`bAvwM5^/&NQ~S`mR"ğVGTXajpm Ρڒx5F],)",|yv­kڍ(<&xD\&Fh  Xʆ.-ͭQbXէk^.cx agR%+DpZp?d_< Wj T_;OmΫXf#~w k=6BWoi"Pvy5n2)oY rvR9 I[֚Ú?6pA#xA3R9q6ᘛc7=շ=Kv]3vGyO88xKv_!q*q-Btcg9t*?!GZ6ERYG-!kqbK%UFza-]k21?W~XV sIY2\gM]B/~D" @8[2L~@9%ąB-|\씯cdd䐏YIph.aT*9PRڔgA)_ q5Uz~{)%~8'x8> ԠN06 6(] fm[gRY&+xFXSpd $Ͳ̎Kuѷ2ڭ;m~\ [9$^6[; Zd4=b3=Is[g/N+ nc4L!N u3O'52њ:Vp5Cr@v9(k:޲AW_w(ܩryTfzH.|Pչ;(.kM:5\ ]LjqBG7U.OE=E5LoBhj J4Uy) i*GqA"]^ ƼF-&W\ (HQه^}ެHe(iHqbi_>c \ p"fq*ʴ6(aw<7%&Gh/3GEaQ2 O|j뗖o㛞Mh# %P`Pex `-;R İWRzQa9&\qx6s'Z/n#7x1|sޯ͆,nͻk%Ps&2  shgnC75P >l#B`KE<,Bb%#jN9"o(LkD5@ %\*"XT5pJ1l^Jg++BUB΁ yYِqp(,`j)eÛ:jg^L !Lsv8nz+hTrЖdjMLE˟^ZS0E좈hOR '%tN1 Dcܡ/<q$t5eCoh%u82 ʾѴH^Ou~+V'o5Q՟xƷiHm ^f=mm'AHUXB Wݸ`ƨCvv ,o|+̥":bY %~T2 ]E:t11Ό5n^ Kj5)>_I\aK9,Be|xF+#?"_ZM7[ɋ 2B=`PLFHƥЙmCDXWpJdpe@4y$h6b&r5uկJw|!?7V:Wn)no H1fڰlfi" E0^$y_84m=5 b--#Iy<U7M5tqn, [?جս b>8[ 箠dDM] "$!C\j5oE7FUn1Z3$(TS2_]a:PϮAm?=Ϡ2 C ϋF CU&2cu|^,׎++:0ČV 7]Rgͥ7Tp43hg:->8TFBLfw&36p픿O zpUa'eFd;mL=8?P5 x2(f}siJJrY'}!E\q2(mjɣLcřև뙶#` 'umZ@H3gf.V1A]P}'2 3ʥA66/_/E ww&$@}emEU# 707C #{P Eh`LyoL2ez:7)x+*OhUlmΏs=ksFNM>5i+DȵwS@hg-2!5KKg͒şU7AЀ4J<"8]yՊ9,³`)HSdyJ쿫ZxG*$ l[NޏـܸSBR(7n2lY毿EOqz㉕:w+ _'+ L|FNϟ֦hhOF衶=N?FW'̪):&Mݐ@]hYNbVX;j8GVD=EIgmDDzƆ{:4fՒ_ 1j,9 /tm{Reb$4]L_Iʅrbo9{~5(im<EcNЯU0E_,vЌ .E{)ŵ ~Z  ԯV߃# t3WUaھL$J`Yx@#(`h PEmjdoy6P:Ʌ0a˜S360YǚDdZF;mekur-@V$ZUXr5gbz-AaNIMGGlxUneMwUEo̹G?[յG"㫾O:.6:ȍ"\JRd" ƿ"1 ';{ˋ^R]Eve x:;NB]pN>.ϲkˌS$$+_FK0Ѱ>(YEϫ+?{)g:6d1>ݗV1#ɞUij)$.c > NwRY?iο &`ϳ 1OQ]*:Bm>pAREr'U}=~Os}ub;_[ҴLK /_(츳2 :? RœoV-=`lP~XdPFLCNU^9V T(|c}GY/R@ʷ(O;>Bl"mCNrkɢ!㣌3oI; 9La>< U,y'{ T? ]NObn I_놦Pd ,_/qg`ZVAy0]#}ܜȭ]p}o&$bOqYqofg4ueJ j p؈(ibqM%OV'Ѐ|xpg ~^'Ċ2ըP<;w"W!z/EH͠QK,3>:r!r:Is;V<#yk;pFEA+٪ymYL}1X/T X|cYr9͛p~ȪcUSL&PaT]Nm)9*̿sY'<>'a&:*-_HlSj FG٥8H ?ӕњњ9ɁNi9 l#5j_5 N T?q; É :Dw@1mpVY?;ꏵim ۷kr3 ܷ8r#;"pbr7!dzz3b)rH}?]ж'B7zpۮ5꾪 dla]*z#Kw3q0Nz(1?gr!'pžtj8M+KLM|9M%;_YA:: 5QŶ泛PeǍMx!pz+2$Z|Mޫ^Wz% K! cJoMrl%+a8K1&LwmNGJ8IQ$"fw㩔V4{˜ 6q5 'ܿg6'vd[ڿ Z !Ê rn?#n! %/3H!|]kyȅφw/YXǮ >mӅjzg.llٱZ%1\;k:&$y] N†ʣDJ Vʀ{h`c ޑ|R:WLC\D[ee߫. e+HDKe-vӑ'`Neeu[OҜ)0lla?VS]"V>]$L=׷2BH/b Uh2#+Ɣ_14ժiO<;Bvٞ1dŷDY)ܫ 'KA F%0TO]RM9WB-#>V%.;'×Ǖ+WTl46,s;# '`hyn%[IщƉ]8 Af\y7v:mt10ti95 Ev! x||}@<+^*0iq .6ͭvGX9Mf+URcj7U 5oQ'T#)Q >_h]WbXf]= !/a'!>78 BjGƑh% VT:N_8z^3> 36V 35'&'{oӬ#A(!@5;P MikE.z*rޓњNnoܕ?bsoe7~lv.C]Nz05v_ ųu`9v $\x2QEOxY\PaH1R_xR)1 nN1'O].'1P,*`֟vvCLXў0aE RFL?]M9[Ь0'*= B;pAJa؄7o, `YBT OG~bGRb8}00ʹF ἦHOZ̜Gv g ˨g/=Y=XLdKi݈ƳّH$] {2_P7uMf w%^ R?qsN:r҆E`x:YmE-/UbM ݆}#\߳ h~n[4lȇbaK\*i3gvb4+M:EY@e5h#S)- S̜󣒍%>'4v9iN2%58,"O;w|oDJ_3ԁ t+N|Ǩ1h&pg:vW2/j6l pAe5Fº^3-|L4Caxu }*ڪ5:6M=UOhIHPs1P.1,# B1 2>J^4\x-15ZKT7+@1?eRǞ.Mw7K>tͧ.8Zk#ƧoO/)% $2@UW$^Ktyv~R[ Kowov8ѫG7᫘]vu{9#HeoLv҉&''֞/Gӳ(jƎݕY3׵K ؎0sK{J&=BJ1KrZX*Xjo;2٣9yĶ R,#Yph3 o=1} 1vC4wJ<`{fw)YP fEp,W+ĺBgs7ƠJ,\}d;DnUzwM*J}W5i,ir?ٜ3I -" vkb-KnM/thڀ#V%>_]+{,R!TI42 . q/ns4X,eLL(;4Ǻ_3Í&*v >"@[oX8Ah'|]zfʳm8%(T6~Aua A6/Ԣ-{<h5N=SV*֒R$#\|L NWB W:y9Bd@n|"D-,Lj+Nd[8\vN0F^6r/bbީHo&ΦZ{BIO.߀UuK~{6 o|bM&*0hE[ďjVEc?xu)Q't7$۸)O'8!(݊ڒR6O=.'O(  <\tːz`4V uT`9Gm3"yB׍51ԾQrE.$6}f8Vt`Fro`:*L$r\?>Quzdw“B+kOv%]4 c6OLi>*^e&[p /J џ^X5 УhL9'Gd~ [ #Z%%*{IV4iՠ#ˤ |H #֡Y}>Ee_* M>pۻ^(4(E?QE7osk^$g-+(1m?&_}[ҥ=̑(w~amzx|}IDdZ<ҚTrh8g;/VFuiY!Xzn{mʾ{ķeV]`΃'IǕu%/ @AsMwٚ5|NANs?"fZ!~ViI OrfS/-޴Z_jN-ԋEg1 g5Ƶ!e9 xO*ׇpKKnc{kr +TV2LE Lp+2V0&> lC֔!=*~#DB SB^2]׻)Ju(aV-nijA'M|ڂ E7]A]spd.[HWTZVB6=O-C͆CH.z k2R-wAT F?JJVZG)pH3*hK f<nvR#D`MBb\W6Υnݒ[xJx3jx'\a\“Wdpw" \Eպ4Prm ?g_]<< E/iUq0(U~܋jlh;I-U}E0 )Bؙ[ى ZGi@E2~̜(}],Ynz&{#+`*2| %x<8P^OU1AUI7pZ=@x{Ԣr͍5|j:c-.LT]=Oy !]k'#'P #L\j8 q XCBz+rD!X071?|"66T[(oL6eL^^x+໙*KAs=XߵN Jr0FJ ;+VSʓL]c1e?I͹PID1p;}Ik&5'1EI D5 %&ruy٭&<.%BIfkҶl?yiT"f W[?>~yR ^}fNĪgrY>ǯ%v $+ɑ+۩BǪ*ޤ'A5m-[BQwA}i綸2!_n:Ȕ\,n;Z+7~e܂!x&6~A{ -56[+^2˻wD : |Ұ9?gF`NczbNV7gӱ{yaé LsGʲ;z >Ԧ\)XU )7p ?MCx[%o3WiKhA1l4^w: w1fzHYc2EhHU M0o+m0g:pYo(tcDlw>=۹n[x=6}oA?ws*<0gM@J%Fn1n`=4)ܚfM39\SQTta9d\>00@dܰn؎69JDcW$HWYTzv;_CIQ,g^v.M^xs%B!R(7hKTM𖳒":(E\n(P"ƃאTc(hmJQuDggvGA}Z"cNgAHBA|A96.sr7«%ƫL-R҄ga`Q>;7 ThKB@yMQyyY8E <ηgi]S 4QO$uWkʛqP0@0Eag~li({i#t3z]cu+Q) duaEsdE$ֲ'&wYiQ@P%ߥm7'DotLz)qK.dEd^jiXP"*fW 5 vvbfZ"OMujԨdZW*zupB)wB#f2Ԋ^ؼ8Z*e3blj5_֠( @'VMt1;OFLBs eH;x6lw~%;Iǔ~9 X4|: 7Q 6bUbс:SA Aql,vZM aZZɪ{ab/<۝8<:aVç{i@e.p *aI(@L|uuAٟ>Sуct!Z涐HeO_H, LSOȏQ.C)r s&~ Eٷw nn`pYC7(<)QLMkH/qy.Zsw@kWMr2_D#`B%Lf2f GDثފ@G\ҩVUY'yM-Q, F1TyY&Etҽs%G6~٧]+!RwǾ䥎3Sʎr^A |dPu x[ 97^m2mBY} ;ē[\M[|$Dg60Z!93%o 8k|jαaRgs [j{{9bzX]@~#N9̨ 9f Tf?TmLnnDG\<3L) ܟATUV߼ Dz,d9ٜeazVu%J!eKtv_B*Y8oTӭW;`%2̿3v+R ,=$*|FXH3RNZG{!-UkL|Lfڭj1WI{kCס^ -قW OB˧G_nyc}ѫ!rrW';(-̼ Gc~LsdH#-q )b A)^FҎ⃅$i|+~:dCXfjjj4;HT B8 WҌ2?5EZ^`(*l&(g枀ۖlĭ;MY!!Bt 6d6/_:Udk'UJ3of́ VTi{nmQ`6!+HtluFz 44:߬;:H^ 1ya,0Gj`Ț=5왽CA vk!zI%Zج g;4,ƚ4G6̪v{akg`EŻMD5V_C"Hsw(+~~ڎ XLR%0[igL?-zVE,74Z&{үN~w.Ф:O-Mww93‡Cth$&|JR3Q%HY9w`d:w..sVj>ҲS%bHLǺx+ԽѽBh֡9M [oJZ`yyf,&tOZLD|м:9m{cČZ\\hI-λ++CS\ r%@GT-|IIi#% =TQ $I. ,wgjЂzZ>zJf6Q @-Rz_q1 M),apwQ]O/; 6@x)'6%U!;S>d&ǍF320}Ïw޺NHջGԇdH EG7uVYo.x7MV-5IJq.[)ăWm  %?bWa5/lXyd1P5F #%h?7K2^,^N+V?pr(pZ?k/\gJPv({wtEƁC`w0S,[>)"skROXIK25Qh92Cr1t_+-&2쉎8;b88z9@_:Xڹ5>6GU=G) p.da 8u 垨&* EiixΜ͡Ö$>5 mS8MAT?O-jI\D[&mXǧ5OԤSY:ЗPZ1 b PI%R+ՙ=z]6q9E}ǿ!А׃yvƂ>\+QW|f9822547&̛Djc"i  WZ <^e @gCZmx/60\'\IBEs?qݝ'xTZȆe81U]}_rF"EZ@MkwZ^hZ#uݎ9GN;*h?XAz/$nL}LK.x +?ԗ0%͜qCH5!IeϞF6PqW5Dx`꽵謣;,K츨v5욌KXv#+k>8'V~"ڳ`nhܺV@$I1m7Gnn;=:sI0|Os"ÞA\ϰIU&zTMS2TCŮET EтC(8rtc2rDloU뷮0Ѩۚ?~*VH}O_?;FcgksMn/DQ cTA`tJh1^V* @EwN+äMރuABn(+t&}D=峊XnMD֖J]_.fh*$F:J q$T LVe?<FRA6ن,4%剦FJ|"Sk̠ >YF#?%}'L8Yl/{)zlPjm .Vm~ֺZ@f&6!UDU nxHvӷFA5MSQ!ʨG~Tnh!~vJc4*Բ 񁅿#(Gz}-J F?HyJC`Diτ$9Ķ~|OD4Qc^`υք[n_SB`(W<hhY3PJ:[ڱ,0^t /Y:2MXTDGxɨݬHI:i\ 9̞Ur4fêlFR9F<-O0̉h|г"4!`ITPP6NAD1ܟaF 3' 9r3 )20F3Rγ;"P̛Ik0{YS$z羓")YVg.Wk=!yH:uۨ Ac5`W 8-_D.v:!?Qx 8#{ʉ{C)l% 昚0Jt6'.ibsCvo73U qݤ-UPBT*f Q:e\ TvtCo) DwU7俪Գp:W3U`ڒثĺPGzq<68,iƌ1|d2!qVSUv1< hZpbKћUC:Jd dzGO ҄y3p0T/<Ba\Up+ၟ!-!-`5>nnPl1>b gJ8D J=3PalkOG_N7|'w:uny,8 b Psao <:(1JQx,K-"؝hb4-~ˏS4Wu "=_>AVBm}f5sLe̱sƥI (׹od%V(1R \g*S}}D\js*muhս:輄FN wVAR@Ns^|>#thlMKngtrи~#'&nDYs>#VG|<0T$^娔뤚+?A=YsV?ǵQ?ܓr'ʜOleegcfݬQ{#k`} z=zk麄T"Mb$t l.#< Y??` ]_nBиОN?c[ކaO)"B%J"ݾ-p2 G%aIz//#qRDh48,8͏T!R,;goE<\)8e8j:D}CgVN=9(G{?$AM¨`P2VIJ@'mPxB]ڨv|zZ|^#(@rC M^ wν8H&Dqd, .6ZŎ&ϩ͌C>t/jk2% 6YB9x΃U )cj1tW Pѹd &>.ĵcgg`Y"a&Ў[OIo~K\W ~d[d6΋ԕwXTrwx=q f&K:ʕbn57}%@eW e*)j2ǕT%ܚqLs<}=d;矛z?ڄNʓ/ϋq"7Y tV.57xgH輝\-zzwcĚo-篗K0*H=81Y1pvrskh9I;PleyC!vbߥ(P蟘B^{;ObYA ܘ-ֶ~1`]ݴ9S<8y/ 6@PN0ax﴿gVއpDV9 _ʏf7٬7t# _#"m*G磷:9LR{' En/Re|4Q+]`-Q咾+F~\tVbf0ƹ .^/D`e;z0 0mUς|WSzL1xbý%ǧ$QP5ЍNʽqU<<XsrlWնUBLE\= 20c'4D,0Z"'q-t^"VucT"1ӝ"ddw_֥=/ᒎa"RumzZoNDmpYpzkO)?lNV[$F*kOFtF{I vT4tm[(ǒ !Pf9D\XNƀ&M:漨483bj/۹ig}xfWy'ʺoͽa/;i$brracN;9_]W ^H0;$e`\ʬBC2N)W#9|])ӎg0Fh^r(,8? 3K6xP!|R"lp+eJez t?afw8^ɑ aW:#XҌ5JWoٓ%5C_) n&LQ:7QEe7;~.3X32ǚWak ٯbT ރޑ3(%Mq3\"eJ9GUzdho>لy_nIq2 r}3 tC.F3ߖ蠄rmr4U-0BxΪ6Dp@{FT3}Emws3X|o,ԉ=!em}X)=f;D`x~1~3ew嬑xdN,EWyŠnh,) fP;2iJ%зk4$Y~TIaYcPK :BX6/{1KL.޽b!$;cۓOWvC^2(, FR b-hC(LFۡ@$ZJc!?b(MDx7[8FpW**E֋Lgj6=t#*8!>"~dwR2KVnSǎż[$.yVڜPpmHFi\5D,> {җЮ6w:!?w9m ._]^ׯj#f=cI]i0|cZo u&eu $g4 [rI\k03""qYz'nL],&[qI2 ދ#nCA4ɿ%0+&(.ay `xl@0D@mjѢ-Sa~u_p?FzTkrxbuOÝ sf(Ő߭}ON <0.+'-pTkSLζTWv<'\朽M7фaY"Lg5&6͛ _qybL]H(YTa&;n[ݡxE/%Q?m"#,`! ?c7[}Ţg3,ޟ u.L.OSlwF'hx~Wg=:jJVqi>R;y9-4RvݧE/ʴ9 x=|#nZՄMr)Wٶ@2pājssǬЇڜ0| $ ' 5nÑ Hmu9u"̖fZЎ CJEM  uy.df]]ҜZmV}"J }Y>5Ǡ{Fޖ\ʪ@ b,H1Thz&3(V9~!qb`:aۡQjX镨;FzP0<r Uy*x@e$R#q@sIUatG{z5 a-gk%:0IF-88@/r Y£+S{ZWof͖lon ?coCAf` ؛ŋ+]x~%4ry->~"f8_Qz,M7ip޶%9 a#Mq- ɳWDR抱0ƅ0Z S=,SaVL{U/֜.,aV}u;Ā}a{]lRn3{j4 \qtS8zX9hR JZ@z yQ Rj Om){EOl,RǛͻ9^lf؋$E]1v8$g;x 72-(U&&Ps,qgxJ *$c#> KnWL&SYEtQE&i^'o"> 79alTHזMD^X 6|# V]= V]Reo;G  \[T9Vj8JKg#CYC3?\ӌ6uHnXr[A1Cѻ}W{/PMonZ?Htj=pOxO_*;j3AwGmc/e_+>j(\qe孬 z\FkEhG`"xD3Y~T:%t )G\?2v XyƉ`( ov~kG"Rs l#o/J p-?rr5ZP9hy1Gԡ{Tr%Z?CkrяuJ/]h*^qe1wֵBT4ȡd.zU`i+UP$%p|1#|9oFҿQ˒xXïB)Qb_Į3|8 {l c@dh~t`K[ ]EFQ3 fSL=HO۞5Cg-7-FwzgpA]ކl&-雪<&LDB6WLU\G )sLݯGĘvƑ`C Q>BBc]>RqBր0f1] I 2*:lMY>P')$wv^Cu`7E 0Zϑ6 F#0ۖNdx|‰(x$y,k84:}5_pm1X8nhJE&,uvh/gyz=3a?VG%>ĔFcnw_@)jE'b]{UId`{!Ya]>0T}9YF%7Wެ߿I\nΕ1c6dI=&%7ԄaΟfq0n]L̉"Ⓕk2e3-a(ϣ NQf:@tʜ6%l{fѰS 3xcs#k`eU W ޅcrF'$!h"hW/c6RغV P@p#Bj7?oHELo8?@QIR(ҝ+3+ӠXfGwgphȟ>&eg6\VB-j)'u fs`3 ^SsKS%F%v_ـM;MXi17ʯa]1eV vg naݛVmHQ9%[;dn/5NV*>blO`֓MI./"tA푬.Oqv 1+~Ws?Cz$8M,Yj) d ڦ!2$Oev򮬻VM(QU5geoQ!?u4oKzu"o}\x(czgXEv,ԓi<ho$ E=r.d-B;u{lDR6q+yX}Sݽga>f,Y%$LGG'W/ВP}w~2F=Q1r19XhWu*XU%4 ~ȱk_DA KAņ kYQ_`7|M}tQY =;mS|=>6>Xe;,4#ȝ xm_fDˑLHJE˗s'`xÁW׬N*Aw;rU0?lWܨ$@гWGj @Ey?Γ:CS]! ?7b]4]HFՓm-]5ptzk$ɯwoxQnI% /+;_86[2ƫs]Gi?/I՘-U5K~=ufCU9vS&{a :fjh pEL,n65 bamqX5όiBfX wKض!Q(ޤdE{nXSg8SޮXb5`:3y&BKpdM! B;FGw#m_^Y g=X{Q0X&׊Ip=4h910HEjlL젓K֭%:u$c{quڸ+(xHx?G<3 'Q_j@ R7++pԴ('@rqZ23h{-B~pI8 0&̤61PI!ѕ@(QdlA< N5d+ YMQX6k7\"(ܺG#Esr {íR/O;F7wƐFRaZFA[D o,бUIV')N<Ս`ʫ@,BD`.6eD4A_yAXThsxjȞjʗ jF)ʔqw%6܅d“{y$RvtXLRrNGf,3 >.P -ZNJ3I0A}8X%1IRP6j|(Zc_w~ҋAḐ bOeF5m_76W^ 7\;S q=}ࣔ;k(<.cw+j`- Hg, 88&އ(?YŚItXm`,q/,&iPAp#%cm 0XL6k(f0/f3 R qjPIz(Ћl$f-f弸m曐>zw7X癛]3Xn6PZBeT|'0&p&d'`صyINs$El۾&bG7ހwPg#3^j-R!Gi?A ;CϘqPE򸭝(^?q*LM*C?,I;q}pzJj?vOEV55/_07~7oc;*I &>0Wk/MW.HR _NNL:e/;E}Ǡ|]NS7Jί%XƘ˭x%W.UL&6TxGKBڟ&К+mQƱNDGF_ *GMBFwur|Z]2f0!! zRa"cϖ{2RZVIĂljZgz,U5^p.(ZxX``&R+SYcymg!W},4C {9Ƀ7\s8#2ы4w>lqbb Qz{ԧ)_;MX0anXmZU]-ۄװ,60 JjpOAxQƏ/~ .rh:1/I(MCPXFO>/ZS]O2vjG ~]z^{K|H/ym:1]]hj钙}{9Q#s'N´[~3v>RQk -33M\ҦJgv.te[*jZ^.0Z ? J BO~upGgZܢ>x9B)0[%b \ڔSN`?cTo ʐPvyL`EDg_cTzɪHw@K~4v3|NTĻ%oht*L cqSIk_s'9x:Bw9 kG֍rnex~#홮a1mNMUUƭpQ E{N2f;B>tv2gzIgj|=&P2 p$ ԽH̙eR ;'B v/*e'/#7DR xr7OBz>+  zZSau{yS6I|* ?γC3\z'Y %yVi R֫Opȅ,HHT"r LލWY)V-`_?~ k.bc>q[rݣL.e:u}/k.  .cIZPNYjc$q܌A}љ|ݟ*BzWH%y$(x¾PX;8,Nrzuӫ82Lm#RGH]u TM#Mk.fq@ H-PlWe ϴDIrX3cr89ZЕjAJKP۱r%X4t=ٶ;ӂ$yU;q+}0An.(y=N'lBM:#Nc}L? 5&?MWC$mdɒLC߶8)<[R [B}BKdB1gz$B C~[`D_{Cr&l&$! m$anR[ËWE;R[ZM&o%a‘يWY\ecr3k0 t;aI:JO!|$ `x#+*P[iKd@zaK~35(/dv)F£r$|_4ǎB9+'t!I3qjy!Y#Mӧn塿BI 3 ~bHam#6L=#h&()W R,W<QEzg8_*^ h̒f5D`c=lb_,FjskpV , ۢfgf?JKj E:m=aa^kj9zOK9%jh8hsTJ;f{\I9_g%i[v+E't?5?Z*F{uWd8ڟde)!ܒ,R=` TFO$P6qK4zn'4^5 Q,\[,;{Qkm>A{y<̶t<\a5YI M^U>xmCͽ?V&0(qk, X=QkX)M-6DoU/cC귭ɦW+. ߋN'ׄj"[)a\@zÙ~}#S=H,@s&63ي CUY"mWwk!bJbL~.K}=9oG}Uq-o?I+!]|PCCp<5펫G,473Cy%^ O#5nkz/V3Lt(w4]̤)lXLXˬO/3c2'{y# !s<) {L] ,Ņ){}H&ߤAa|^ ,iuY' SG%7!Edl߬M@e&h GM]DdĬ~hiM'=]ïXB:A'Ԏ7x6 iKP4y.$dvqx F,CD*jAHgMkÄ_T~hh/kpSA ]1OQ;:lgLq"6L] BpHB?WXL#ֶ*kϽA<_MMzƜ^*?^Vsm1/Χ_ᢿ׳ ] `@D0d-8Xƹ(kϠvt~5NU8lݭܖ rR7'je5[ b]pKB>FfIL'oXDhuX<ծR8MA]|$:~ĸמ4*{jS/!':Y,kpl0;1Œփ/'"Q/Vڜ mi9>c#(mZ}?3+|t݅B>r o{f;[lyRb{=gBlh2q}ʋ8NU!|⼋Q{ȇDr0C9'G,lI۶<# # bcp mOʝy\'_dX \ A6n,0JQ_gdQD0ӡd<̲䬯(g(^zF8P1eJ5&=ڟ\Jˬ.\)A!;DF_HD፠geqު*oML,)!+lg)G٪EȷD=(}tJ) |(W"̎0^ m`TFPވLUnԯ+[zw&.,{kljF As9R&+~]ѯ܀)?!p X\"'ڤ4s)4`Drn= \Bؓ/#{p$CZNw yܨ7JILcb-O٩e tQ7&wt#ʊQNCmU\0Jj{k:I"c 4U=jDP:̃EWCR \ z/\{U (5OCShWwS|?;!Au~4ea0uR;ATQU,UEŨVmCI}Vȳhٹ%96_a-۔pA ]`#lgn.csc"U&vJkOA(YPosul"[.u+3\p`O TUs}GϨoXaW^M:З%dl-)I1nEDN̬/WwF:9; ZI7f8%-3OD`PAHk40/>(x0SXBdBshc;FS.2vhxű3OY]xY @ΦaNN ~5ir}p6P^l׮W_)ȇ&@KfLּaF=EtюM U!٨%}[(aP$xypCbbVqiiO`_EkB@w A@$ PWSK&p#zna~~2,k= gy_YuC0Xc;`ՏD+,?`hΟTJEOJ/!7FD-ܒy !OJ@¬-Jh[C>- `b+RBDLaNK9ܒ#Y2 <3]Be&N_Ƒ[UC],*Y7$3L>?Qu 齆dV%TOm ڰ2C--D(L:VH1tKwpc?lB,^!}}TFxRH7~Sj_N; $"ӏAGإ`o nDzݧLQ?;3}oymuTp/AG -ٛXLBj#ho
    OiY:Yc pG:k6 Z𤞇3d$m$r+(qf0 Q@cE#CyBPHn(|JsB*B~Pquޠ|L]:EG A1CCߘww3鹴:YZwFL!(ofp:dBbTQ3^3҄\v)9kAu3m[ tsuIPQ(FƘiBɔ.#ʽi~ Mn-|40~q !73Z,w0=L&ȿ^ q^_|euSbYZߕziÙT/3F1Ph<7BN3hRJ# ͥO>Cn`|<4U$ T:1FvAwJYE-G^RG2acu^"|b j32qGEw|2\acV!ƌ؁NRo¿9KӥZ 6Wig˂C¡N$Z3 9 Qym=i-wq9nˇ8-~ff+̳zsPB9 ><ڎ:ohmwvi-Z{uOk3c3IWJ#ԬF_3Q .W%J?J`T|.Pm | '!W'>0cfy6SS6xL2iS4M<2=MdIMb6 =SiFBM 1f!OBdSf2fSM44LM16蘃M4S1=M24&h=M4`zhb14 4L0b4ɔ4Ѩ=Oa=M#daj#LF=yr2S4V4 BD͇UC33/FAhb "'1kAo|IGK+2nbB :ۖJJOhϭCR(SS$¬X,J kw6;F Qջ-O317qh@t,G[S&pއ~N/zl7֧; 8*E3m7[Y20bP!Ⱥo hl@/ ۊ.Z(I|Cژ1GdQ|hIB72 4 R Q` nUJ ߶@蜹鶹3ŧsRˣF z|vnio|Gfsd$(F {XF1gYn6 ExΡl-7R9?{JZ3mvE ZpA$wۮ}Ɓqf ZPd6{1>P/&-^RpKqXwkrC)y$H;>.WEy5b ]J]ŗpmon2M`ŕrz0z&TVI 00Fd^ӵ@n858'VӛN!Oo<<%YN,LSp?;幒: gC)k[>_ږ0̈́Qo GA:x\]Zo<*YxNMm.ٻsQ}:v-J/LÖLck*`}<( LBlb*GFfp:@qX[ͅBcĮ6PGae+#lT+'o/BC@o~6X*;@,c rLH[vľqi}2Pdoܖ!_v3V{NgR, vN53ƆEBCxN?+ښ温Ě@xй9bd BIl10{~,VU6SGp%"ʼl .ө%鿒IbӷC!BsXk< i빲t|pIz MN#:;)X28@Snț w.̇#3ثNڑSIMGj+\dq%u+f]+uz.B ?LdNJN $M$mJLy>r("uNӷQ~xgEE] G;O</WUA>  H<~[ԗ3F+ZMNem\Qj71Deq|_m 凋ISWJ@rYpB _hꄒRj5*%ݪ0;$R@0= n/`V^3Z=YoVMY31֮ZoT(t 8&I =G3^[~Dqؾzف,fNDd<&w_VCPԼ%maڅXF2Wb(&)]On5E$Nhp- +bhQBXm]CCeW0+I]Dn/EHL{[=žt=C+c9'<HyPU .6{(~K=iXh1k ,/t)Ogjd$jiFME!s9;6 9c k^ }3^/ " m k.K%Is ~˜/VaB,HmLoW%rlMHwK~I_D>e,+jOlT5gsyHahg'Cm,GP/R#nC!òN4}&W5@{`Uv6 n{X?6ZN,^L*(=Sfd#Fk~;Pwu5_Vؒ#le #\< (>^^ֹ)E^([ٹ_TrSJD="OIlq}J>Ɉ7*gZ*STd@,8D,ù-53+Q'R@8 x0ʎ K\>!5S'DD 1wab'NٕZJky gI 73'#a  ]]ӌԭmO_W\\ğܕF(;@A˷i `.yR *WSiY}# jcmH=LrSTIO^n秣ӴR GR m.m.#a+Wm۹e+qo(6Ӝ9*/b\ w/ Yugf1;)e!pNAcy;ղHJ=(-[,P֟&Pz}Mk{ZƝaDcme{q0gK"(\t2v1s6z&?\ߣBƅ$$kugmjFJ&yu?w>\wyێ!6~'"WHc5R8p@UJyۧ\DI R7L< >*Wn=!*6s;NT:)zƸ 󱳝dPS:)qgiMcpGqVHe1Q<-Lf9  J= Ka#AGV,hj;[}ryfM|}C9#fF4PIn$ b_kȕҚ?T{zz$<o/}mKg;lWYjdmX^p|j׳^K+2Gs̞4Li(y<wYh u|ǛFi_Dmm9%_'Vt:YiSxC=e`0B3-5e+o<-) ֱ1ӶU kΜiݱ>֒BElGiz#!u*-J$#8laj :&We;g?83o1_ٍD$=`d6Aq6]WGd4^ۂ;V(EȖ`5Jf݅S"-@ j \.hITt<7#fazn䣿,Qjܝ"]o&#f:}+!4Kcwhl.^v}7?ˋ;~B~~SHy7eUhq˵T[@ w2^1Jq$CPFp@v"f n,8ʓK<RF@M$\rW g1gEc:&KfO ]^DA.dJ(b'#2RU"P^}㔞lbRIrlrqfnO1 *G}Y)֪kV|AhUO688sƞˤXo0HD:+xUvbL_ϝW R௿U>Ӥ=S"BEL^cupg}R9'"k`͈þv0|3(g+ m-]r0T7]mn[ӁR3xD9A >:fGָRG8LnbM yg Kע CԒ3,5 n> MڻYkRrhݚ{Z?0Hv=cVʍ㧂J!fٜK"] wt E :ԙMV%۫MM5R4EX w򮝘3&׼TOBd&Ro:JT:C[^;KpZх /03@_vX !-.i;3׹s\:#Q!E!θ~(=E|UmJa#Ptl² xZ;&@8$'3yERɂ>n)򚏌srM!lo{3g<8:IA>2p 4KrcsC` 3$b|PuwAl/5HA:6Sԟ|rZ~i r "g9-X)„ è