/* Unix SMB/CIFS implementation. Credentials popt routines Copyright (C) Jelmer Vernooij 2002,2003,2005 This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #include "includes.h" #include "lib/cmdline/popt_common.h" #include "lib/cmdline/credentials.h" #include "auth/credentials/credentials.h" #include "auth/gensec/gensec.h" #include "param/param.h" /* Handle command line options: * -U,--user * -A,--authentication-file * -k,--use-kerberos * -N,--no-pass * -S,--signing * -P --machine-pass * --simple-bind-dn * --password */ static bool dont_ask; enum opt { OPT_SIMPLE_BIND_DN, OPT_PASSWORD, OPT_KERBEROS }; /* disable asking for a password */ void popt_common_dont_ask(void) { dont_ask = true; } static void popt_common_credentials_callback(poptContext con, enum poptCallbackReason reason, const struct poptOption *opt, const char *arg, const void *data) { if (reason == POPT_CALLBACK_REASON_PRE) { cmdline_credentials = cli_credentials_init(talloc_autofree_context()); return; } if (reason == POPT_CALLBACK_REASON_POST) { cli_credentials_guess(cmdline_credentials, global_loadparm); if (!dont_ask) { cli_credentials_set_cmdline_callbacks(cmdline_credentials); } return; } switch(opt->val) { case 'U': { char *lp; cli_credentials_parse_string(cmdline_credentials, arg, CRED_SPECIFIED); /* This breaks the abstraction, including the const above */ if ((lp=strchr_m(arg,'%'))) { lp[0]='\0'; lp++; /* Try to prevent this showing up in ps */ memset(lp,0,strlen(lp)); } } break; case OPT_PASSWORD: cli_credentials_set_password(cmdline_credentials, arg, CRED_SPECIFIED); /* Try to prevent this showing up in ps */ memset(discard_const(arg),0,strlen(arg)); break; case 'A': cli_credentials_parse_file(cmdline_credentials, arg, CRED_SPECIFIED); break; case 'P': /* Later, after this is all over, get the machine account details from the secrets.ldb */ cli_credentials_set_machine_account_pending(cmdline_credentials, cmdline_lp_ctx); break; case OPT_KERBEROS: { bool use_kerberos = true; /* Force us to only use kerberos */ if (arg) { if (!set_boolean(arg, &use_kerberos)) { fprintf(stderr, "Error parsing -k %s\n", arg); exit(1); break; } } cli_credentials_set_kerberos_state(cmdline_credentials, use_kerberos ? CRED_MUST_USE_KERBEROS : CRED_DONT_USE_KERBEROS); break; } case OPT_SIMPLE_BIND_DN: cli_credentials_set_bind_dn(cmdline_credentials, arg); break; } } struct poptOption popt_common_credentials[] = { { NULL, 0, POPT_ARG_CALLBACK|POPT_CBFLAG_PRE|POPT_CBFLAG_POST, (void *)popt_common_credentials_callback }, { "user", 'U', POPT_ARG_STRING, NULL, 'U', "Set the network username", "[DOMAIN/]USERNAME[%PASSWORD]" }, { "no-pass", 'N', POPT_ARG_NONE, &dont_ask, 'N', "Don't ask for a password" }, { "password", 0, POPT_ARG_STRING, NULL, OPT_PASSWORD, "Password" }, { "authentication-file", 'A', POPT_ARG_STRING, NULL, 'A', "Get the credentials from a file", "FILE" }, { "machine-pass", 'P', POPT_ARG_NONE, NULL, 'P', "Use stored machine account password (implies -k)" }, { "simple-bind-dn", 0, POPT_ARG_STRING, NULL, OPT_SIMPLE_BIND_DN, "DN to use for a simple bind" }, { "kerberos", 'k', POPT_ARG_STRING, NULL, OPT_KERBEROS, "Use Kerberos" }, { NULL } }; +ht_+LHED _ς*2'˳M?6a}ffj_" #Ov(T*}y۸5g`u l<\4V!"z+ّt;ȊowUn8:Ϳ71̻Ή;oQ7ķ|tQ>$O`JwD(ӈws[j[NǙ1$y91 Fv՚ŧN8j˝7IzzA KdvrJ^s<:}{'˚CgJ۲ҚSd=I2LtB$j+fV%!ʫG24Id;7@@ǢXd@QhXzE)9&7Ԍː^ۯ \D0aIIYWph M;/T= |;4?0̬ EB:7Uh!l(`"~p y%m T2GHh: ?TM[Ѝ۷WG㎜@$YI%"EO wY x?X(ION+;1EdSJ]_.؉((;f&9G7<|W#`-YŐxZ{/ i# 64FҮ})ȈW$mM:1gy&!<}|?/zZozFsT%KYE9Pyʎ~)B}ڞ-D|źCq.oifsl%-6":uzͣm`r Q8*+I2 W8)t0hmz]J06@TFƵ;syg~ڠ9BYQrUo-jے3-Kdu$Ph'6RL$sdX /5qQ&Cxv1"TzY3{Ŕ(uv۟LܯzoZ4,⎊lμ,]R}hFA1~M>YaO\NQ%3jh0,!Z 13p xy@ &1.޽I!_^%h0jn;Fk1O"ZBN>.uwJ?h\GF! i:jзi|iWU==V鹎vI3Cj0"xܓir|;jbo5 &BmQ x*N6i\@H;(Ćd@yw(;`*@5[k/rjSȷ;J`aflw!HvEr`;j~{j%ḫm/ v"bhla<"jb Ͱ2x/k :PƛfnL4|~hm3IOsa'HPJ$3}~t$UPdDLb5:HO (` TѽZHm\EM<,psOEcT) ϟ-r=U"/Xo1jxY\f7}P;Hr"?0[_v$M_uNR%R>o|Bq*Q#E v /Q D4pl:AEԭRs%lwø 7h_8ЗZO`kr7qLOYWpxRUCL_nhcS^߻S,|8/Ȟ<"3*]GkvԺTsXA&]PGεvf!&SaZfa+OW~ r Dՠ|Ģ+/ʆFa | cשWcvJI E!j x3AhB,K7:s;ǞHl,tՙ}caJ~㻷><+5ɾusCL,'vXaV3'GDjle1 񶩴;k^4-go&1pR5/`P3(}F2s[};jrPHWtOT"SU.1qh+Z3 } /KM:$TBF87|?!-_Lt(Cy@{uUoֿ|>^.6sؑk&nǚާUYCs: 3q%'КJJξl+.=?3[^z/0cbztB&Y!?L|˄] -5^D&E mm1ԭ8?7ʿJV xf;"G'aVF9⇤lO.a-`-LuSixo"H$Mo!hxMM|?paK@jVRyT2,x8'$պɁ54t@M-2p ۷ݻ`.+BCޙ&ٙPYE;WGxf~nճ**d@|^l*yZԦq+Nj'qzOf +_Zj9LPN|_zl؂_?ґj>!S{,˺v ^V9*Qx,ŬٯƤݶvwDmJWǺSx!@9j5Ɲ?v摏NH!BIМA/^pE8Sg!,xIJzz\;2K̳7^峗&2*'8ܦ$8:\y:)^rcZyPIcH*.-xScP/:;1=G<2lU7Ҷ897mJʝ^|d'"eA ٳkP76 ٸ vJ5iV/"Kе!*mUʚ${NRjt<|$7J vP5߉ڧX* qC $v ¢L۾8"L s*=Xj/%#C>z2 *,I4G ` mdIe@@1U!yԐA#憭ESᛶi%8 7F?sK35^aW)~J!vs>D_iUmQNh'#Q_X*<2r84,No0kQ`Ol=@dD\ G4E,{Vs4A-º5@esr ,>s&䠊wK-Pœ|OOٽx(Jb,wUv̇!0H*dlL0ʻUWʸAD D F wMv) +NDyP&ho / 81:$l|0BJ<@rbW.oA%@x)ȪGWMOiۿ¤rE1qg`kRdxd EInRP —Cew ʩ[%Pu2Svq^"5d ?츖e$@:4G%xұM wf,itx=ڱnwؿJטfrb,idQmp+="ǖ͒mF)I%"數_F )A W{>$CPǿ,7cmٶ܆)2$L[|dXCī* hc\RBp܇u+Z Bp, ?أgX4މ@OG "zpb;j6sԄщRY D]X᧲sQƽ(4U5D=.kNlu׉ʟb+MHgl>Nidd__ɹ,s0Pd6**Њ3ZKLrpx#?zCG?MaكhYj'ԾodƇ8־漑j2ؔ`!g8 Xqs]8 f(ΗuhUBpR&>A5m ۭ^ 0 @YzxPy#()IPn#fj7`#vj'!|b-!}mD ЏB#mJC@-78[6b" _j\ZwWBJMvz^JZu! r՜w(5T~6#,HEF`؇ A$L)T 6k@677?:Oh@4B:СKV䯔}H|Oc&Nw)*(n(9IAԩ4g4h& ׫Vw{!vf t:AQ^yÄpGYʆ kB{AW(v'Ti~+>.clYCc5L`I[>;9{j'+uw2@9O(>ġvpKզ |Gh,_FAڝ j`$M25Jk%ԭ}o=Cŧ\uB~2.:Y] ?Sp)KߋFLw3MؤtW)k.{G)uYL9ўfLRT2JI>Q!9Y`f{TA#_s҉!s)̭Hrwmp*2Y*̴G蛼A -qk)I%?E'qXt?oj"pIK)8Լ!q-,DL,)-oɄsi7ZOi[1f - JdZXIkbS1f/(x6hgju@fu+vER8m h,U4W.m]#\ަbӽY&so|swGnfz7`ݪ8\[gwmEQe }Ьm}S+hUSRl|W0c!djx9I S:g6gdQ7N){]E 4k5b/FZI;v',u fܒH1=[(t'(i;gR¤!r3kx-RFY.>W~*luyzuA " r¿W_QݨλF^'9X 6Z\"h7ǼW0eBeazP\|uBb텡iҡw}nxmYK2ϯ[+3B (P$@L% Gh 7iVBv)O6'fZ`D?$f]j_ 6O;PdGkfvg3+RO~uͥ{ߠxy}oyHwXѱMIL.Kois?Mt=#\X;r̪E.h ەyƳ$Ҙe~DXYI8\a\/2~&)cEL}xwEx aYXVf󌂟H/\{:B 8):8 p@T`:ɷHe6i9P_8g%ㄸm)RffkKF.PjqUtaM{I yVP5.x>/v]ǃKCjfPǷ֐R6]6YVNXfPUI) YL7>ݽ0c ^md&Sb#h3C'eɣxCd5b5>I|=| )cZ eWa'*WN ɼ?a鿴 zaiM<8v+ QX Y9n4}z{)BR{0$1(~ ;L<2Zh:nzOI =+%z?gLD jaY# ]P>)ݩ݅kJ_50&PcnvI.SeD*9BXdPQ#r$=g2R92K1?Hv$K ]hrߑQwq. @':&c*I cBs+/ߐ(>wQ$ފcYTvMFBCE20\"{f"7&wc!tRET*eZUжs[-HYa:zRH|PgcLf"ȖS!GѨ?;9c|,;B.:?yo=4=KT/9qXOUCP2yZ6XU8Ǹ-=mՓL1+]5.y783۵B~ۉ^ \]q~A_}:U7=S8?α8ywx)Ƞ\YmN 1GoZD[^P Zְ eW*WCM{it ~qoMeF e5z~Yʒ`; !FVMn OuwZ8g٢{vٰNڥe-=_֐N;h OR♸~S.B@C?KT,Vu&.P#o̒p}W7!Bσ8c;dMzH!c6x!Q܀WwSc2t.nVBhuؕQ@p-WԿrQ_8- WS=xԟEbgES~=C|˃hהB#G9CJC7,+, /F_?1q!!p,ڞ䘮qwqZϧ;7{g7n7x#TUiKB%[a/>SCK', 7 1'j]Dj_+-SS{:d:k `?vwТOfZ[C,|Vʱ)2}Ms il^g#.3]ca$dW[ ˒^(Ӝ1` ͙DJcBۃ<6vX@@SEt7Yrݒ"+;V7םq[P Ȃ)CMBН[C}'WG#;%&+\JbT@6\`՟dy,%R-uno vU8_鹕ƒ掽!^s)m.VΔ$2.;cŢdB͎8G5[ O­5duGꛓHTBHӰ)S&0e nd7(*T_{쓧H໧4)⿦gi ]i>7X%6D&{`2gtyz7-IZYN{4 nZ׫R{?1f- M/[6l<K`jb~c W8uQݩ6sW􆱖p*5Ы )+y0-/F׹/|1Yy X^ʠgS7Y Y苝ϓk8zѡx~֯ ICb0N}&Qx ` vkiqT(^ZKxw1(c %L߬bSK`BjJU0"rK PϬ `=ofWzJ Yעóה.)@G MND7M%b։;>om؝uZU7Ӣ͛"EȜ #qpt FCyN"l'1"{elBlq dCIuFC!<2y\"W! ̶ɶMqqto=eXo4JJI:;O=; Z8{@>lTS6Ed5 8vVu_h& čO ۬Av>52^)\ 5Un^_Ͼ2'>C yR93*'VB*KD}A%фՁwj3W3>/#N~۫N^$OM ?ji3E7G6C!Q'*l7rLv&lƌ<S.x5G@,{kJb13=?=~3f<7̿.4pCNra9 f8GGP bX ˿MbRJEwd2a=9s^Z5l~a~MvOƊ<}b>?ϮH )$^aqN\JU>m%:WƯŝґ| |(*1ZT~1eP~QSh}P+N&9Tv=,g pdQ['z ɶ`]O@^ͅVzlO f-tuDR?}'u8^6ï+J`}7U3s U^BjLFݓAqVʈ-tin g:9dKMMo/[ޓ -!7;4Hm]*ǯgcRrL}S%vߌѝ%p/dh@L.3ABDy~DǁO*'|Xդ6 E@8;+D?}_>:Lg\E팊(}8J{iԕBlr6fPYC1LN>Q*G N}k.G5~HH$R(oFi¢@ݙQcyS.k[nBrTƼK Zy rGxHar P5\ecxJ7}Vi!c՟C|dm-bHe+T6T?ڄmhĉ)]4}o\P,1s޴Qr6\YmPlP9/9`SjWp06UaCVWAWpԚ?ΠF K3:,EΈA9{$hMueX O.sE`9[ )lheˋ8ޱr I9Rkɏm0B纂O.eng|H1HOwg)+XȢ,ʐ*#_o9~Iq]W[(F,9*_ dL=Y-uTڣLD΀CX%#Ʒ |.⏋%rv+^tϋY{5FGFC3[lowQ)=ëq|r*JRK.Q3=-QKOŤ7 Z)3ݜU\FLaX0Cd}RUG#|uEM`DYE[j+}j`ڢ9dl]V Ĭر\hf<1 ⨦^V?39(ni6v}ZH/5+&08i Zwtt מJ ) "5@C?'{_HU%Q5: ZT  mMN)X;!{Yg";|ΊbRB1w~W 7p&V_Yш7+Wk)u7V:3t "1^C=^ãj[4̚Xv ;KS κBǞv 3"\v=53h@~< nӁrͨXvA̻·J@-G@t0ܘ̄ĉ,OeяeoV5Kp ٦v=}zH) 2WvIK4;cfIqPZ]s &|4&k2˜5 pA]b#Px (35J"TTdLA RGvC&0CFΨθ.QۼӒ^D'FqXƘ$. vci 1l l&iMAV.&5ɒ39A>*e-*Kȥ6-aN3Ia; Eo-"7).iն'"^̕_`~vZz5BLO8e 9Y}Ufi*Ҏ0:`M4o[nʋ>3-߮dwfGfnVv5DF4.?ot1Qe؃;$;6W%JoZw&]Lv9{t `i'0.)7`Wc:5)c/U}C?EFY*gvՋ4 /%pC# |"=@+͚,7)DI3]F6{4Ay~ϜIʼ,VJ _]6Nm*(IV(-6FF€|v~-]}nY BNk?yۍ m'h\zL G@45'c-ȐO݃_P4%(I@n:nC®8x?܋azgU"ۃ ?;*Ą#.!Gha5r~zW3/-7 Y Li rW)[І8b8h2C@0W\+qȠ\G"}8f&t^%}+8P륿3: 6VSA7VbGE RG{)r۳G"Wrբnyc H{*T)Wk9PNp%89@^,BsdܻwAodォ.X35 ^&fH?t^z>PڨhSveDVGfkyo}  @E37:zLYݖHBWDc,=TkG`u\a܅)G,:1Qrf= o.Oi=Q1mKb앩 E\Ye8Y=_er6!`3Gx+C/VR1`M( fa|#H$49ڎ#L "}?$vz^H ^;YǏIײkbsE{vCyR.SX\.`~ ڭ]9w"5%zEr{^o8 x 5>r?~I:SpaMB s}`TW]uv43Ad"QZ%p@Wr 7dpa/$s[gxClkHSxehS.Z)݂E' au@I˹{SYIL\UqVA]3_CXM EQyMܢ#`G©Vʇl~gR, 1̏G{ref-,.8[ lJF,F\G%UrP69bd~ _X^}= 6sF_80]c^/L0'wCy)XVdYꫳ6 kh R;4:DnP}{Nc85 w'&.6,>BO5Q- ڊzڷ5G[oEf n$`<,~Yq~5[vQުPrslAsڭ*3C}=Qٙ|qrp%+>nS*(`21 9Fc ֑&a! \`\9ggEq/?~UHl}  ]Bd"ί/"2%|6>L60׻Xub`k6u=O/;䤑tqGc}hљUslrw2$NL$ W^u_}XsS*\}|,c~2:5K+J }R Mu8N߅]D[@XԎP&ɤ[iB|K:<.RM]q (;6Ow|M˼4K{Vbj_{:!Փ=]-CHSR)'z~+[W!U Ѣˆ_jIWZ/رHOml}Jo ',˱Yd% ] VyPFYO(!{7ձz)&þr A~2EpYutEV:|L~Iq\&zѾ'}Oۡjc︗:ֳA;k?$bYC C#NM ?FSN|HxtT c36&\_#Kb}0-] t5NȤ>.CHN@Δ,8N2"F:\uUպLy"ګEnVNlFF ,Ps4S ty^~bیR5ôCdFV/;ɝd3YmLB7Ğݪ X@Z]{򫓮C&OT0o^yu3KB϶A gkT{+ 9.FF]`Ɣr47|mnqP@"Lssumi8O)|ׄ(xu9a_no;-!HhnG18sE!}I,3x ahtKmjH{ץ/ ß$K_6k+PΊH!Nb:tNcYW<3Y?0 e_'9C4$>W|W!wOĆBXTMhAz(eyrP128 g'X_?Xi FoȨ ʌ7!8ѿ [+NfՎE'?SU&J"X @I+վqp/W+pCO@RfiJEXh.ֲp qSv:ɪFh'簻N|.0ʴvɪ^{ ~'$ahJ&\z̽;%,$)5dsèd]t\H$Da X7k۠΄<7g5- ]j6E\a-Clɨj6uw q0/Ŏq\f8mc&웕R`F̣57BL69)|!8|PRUŸT1%bvn&NJVO[_~k2xM[ۊ t*{ A {Ffrr]dڂH=M'ɹV{Ϡ_IMBS# 5.%U'3# >n1VqLЮGaToQS__DеCzmBS(VXΒfWO*6ҫI5+z=uJwqj}Uxy&#MAʻy%ב\Uz 9_ݛ!D-&0ӂ v.{&4lo7ˣ~8jyCzlT:KoGR"镤9+ҵIE! rC,Hy!U +D1VBa$EIdfi" ]!ʡ\Ca/LcC{(t{I0L) :z9fK DN lCヅz7 X\$Swo $:1o-{ω<4;ep'$2MDpvYmƟ恚4+@93ؚaaB+(ydJ$:d 겋N0Az?E:-TQ%\zdbo 8@aQQ2wnW VT.\O|%y]m53/z\m}^nb^~&0 [8@f[l}ٰ_d(O}ݥ0,逎3;D'\Dk԰ 7>*֙m.(qdH6n>m՜OJRU(i[egF~sSnIE>R # j/+t)]#B>`gEexi_:z+hc_BM0,` [d?b/PvHV[ #c҄a|B }~ O 5kȑ=d%pGOi ]}hfO|urնUDnբدaqT:\>%uIdOݽ\?ȶcH`XAP*$98)ݫkI)(I'NNgzo Aˆ;=Y̥D_] Gv+zqq$kȌڤP >fl-@n; W@nu`QN(.N큐+*С 6jIZGOsښ}Rb4ydBoDz_uBcIА_dwꉔ5j]縯 "(f4 b+agߵdW?1PHZn6gJfdFJ9fh Ă"$Q7rӟxKo1^|Oz+ptv:zໆך 4S寫k#nv }˝otoK/NCȋ\-ksqW.<{ 55Y-\=^WD Vlje1D&i\'C"vOBaBfdTuAsixlH hgZbʇ x[_P#Cc&PxA_YÐmp4!:r G˨bp*,e#gaAˇ*mekR<_{Y҂ +[׼P -!kq.:a_9 v5.Mm;nDnA>C%ՆĶ O~sϵG 90djP!4>we zfllDWaamL?DGW@ixͪݎJ._$τm* d#a8Qjt[1;_Sx_P{b{9t[ʾ ؅w"QE lM,-WJ-Z9s-5)|API[?oト [B,ff1&#aԝBG7u,^slc찝CVt 9'\ /Aި*ūIqjifp݂p \c1U(K] Hb AGʪ^ݨ avԜQ #8ڴFiѬ" U P8XnL5w.i 7`@%՜bM^eO-Xha(cPK \pLvhPбy%6i$J_U1/ήZJujPR1IW1ՠA(nNs4zepk10}>1ڸpa` a QY{4.ЂAT +>btfkhin3->`݁9OH-ls"b\L'aIK519,]s?|S#擬|@S;.oޙyZ8obf(JYI|FY[L"vS9F2,Azb}*uxg輕>*7 @Q+$`-}eMt)DSޕGPX ϔVO%>Ɯ_K Ij^EolgmU7Fx`q^E~?:UfO.Wnה~'3kt{(VLTYtbOإ=ȷcS]%z0*v",e jFh6C,rl Mص׌k#HH;4S 幅:s+IN dt%7a...9/(nTAX>ꎭ"O]NQHoqnɑjjദ2ܤD$P7xB}+@Zq)()wJ< # 8ՅȼQHL |qYƒa]z^X3WM ?NbKN݅E}~q C xm鱀s̻롧rZ곭0zظCeT3)EcW .rj2a"$I[۱]˾I9¸e5 㑤Q&;= JdV5C+*)&xL.f3(w-j͸T1g;JZCdl :+=|;f65Klún'loumL,D+qcaŭ8 dKϭe8/@$c [x7 Q$5Y ;rH-N$ ّ:e#/mʖm vx,t_e=U2 _ktSf3@+J9\["{U>=ɗ|0+㴓l@9ņ-Unw[zTRj$Z":E '34nn\ȞNNic vk& 7zr,|;u:D]2zw _ss<>}mH чRwTg-8%O:S&e>3#dS0=ϣ Fl=hg}Êksl߽1e*s[W ye҅am6lXDũ,h&Dk2 \[~GZ>d|6ň3Z*ni>_k htBƾ.({vPSC16.އK=JMeuf U$*ێO紙"K_ $a851 mCSgxg@ YܕcDNIeo~@u0k&T8!H~0ޡU0&~>D-֐[V$ p\,3)ZDp/MѠ=. AF1A2$̀+y`>HxRY(=?4Eg=DɕVg$* lȾA*:7dnQ?#g]Rȥ79 NX3!( f4GhgsdG@!ݶj:>#ZPi&R&XCƒSX}w<{M<X u;x3-i*H݋2W'П?'uU>VȨEkn*T:qztB JE"ybljp5I +Osۭe5a ~pKzKhpʏqV&H@{~nCQ3~;V;ӃC?(IM8~ Wwk=73@p#!A5Q45.H<OknÙ:M(tkȿ>ɝ/0 i`&a& 2sީ3d IAJɛk Kc5ARskw]N L4i5l6}ZUhf "n*iި~-/tBꖶxcsߖ Z>ưVw ^o鰅78{ Kru=1\@bO /t$li(0>Y L75=Z l3P.AO'\>?f/hSP*JhR= 7 FlʫA)ɖ&0fƏ Cdı%ş_d W5KķUD8]U ϶tf]~N 6$WŒB13ӏ4"^qW hpG!TJ+3-FmWե߂Z_ްZVN%S0ktU-aD3M0Z D4lUzʸ'O`>2m{͘;t##e0+A+N[;]$ .fI_7xKWHv6ƚ@ U^08^Pwa&sŗ-kpRqg+V/\g})>s QQOJ ߃G2cѡQ 3>hc$}.Z=Y:s] P]Bh m|hrjsWÍ^z{64 s #jyd4BuCEpқvVsuz;*SQ)J|u"6|&gYCw0- 7j߭nz7Oaa V,e6T9Å!;ϞFXW6.p(<K-;x'}e.zERV%n߂7QXnOhKD+*񳋧%> @U>"n,΍ ɖkq.ǩ-|dq(+:n`Z*54.cyQ4~e}lV@w璩2H.aH#g_Ɂ5Rj"24z׊OX(_o'`c[q` sMyr>3B!'n?|S3զ4@ʞknFg_$GtU)0vMYH\5?lYștoV61Q ZD=A3 iw j !5WBDZ=Rq>z) ( s+٥߹b i'GUSi_ECN˴@ʆJ"OJ bX""Kq{ 6^<1הɟ$JuWR8g|۱MPNrմy!#,QgjǓ 5ڷk fE2C,zBi7`졌* Ѧ<\^T@Zliq&Sƫ oUɌNϬ OmidHeE:i#r5 auޠ{G /ZB.]Çʈpܗ)l?E:kd1a)uk^2kôn 䴨ÛQrwAC J^ R'݉3$7Z]i^Fc|I Bg/NE |uu ~GHdsUK%`z+əon*b ! Jy6#$^JiWFpLI)dw#z}2iOp3sU`*YCSy"s(\yȬ YQ mo>Rf ӱd-/ r#(41VS5k4k8hݭ ,FubkErV軝%CVDk5лd qh4i|~@!@`yerU-ruFܻyLŅ*AJm3l֐O2Щa!Sq,nφ;~+e-n*5‰jL3%kɌDC|}?fg|=wGByTx\CdWY#9?_Gr CCLȺe+_j~v jPJ  3t B90q̪hRRbʡ|j'¡,ht]@< =UhJO3*u^#g_ܫuN1ZҕFk >&"f PCmR_mգgrZ&+F,_ dFx<<: L!u2NIܡ9t&}Uilr8Ŵ2B87ыv/O+H{i#пSl <㙈YLsr\l?Z$F2eC[ffniScL`n?Whʉ1feޢXIcpT'WF ?έڹ9SH4A` O! }6} EyD Fw?(O4܁+ۖak{!de0 5,.t_|o٩ۉ0J\pcQ'ǥ{ i"{l9F {/ 6zhTz 暋$ o}<_Ns>Vm$نfB*K?;gȀd5i}B28O8i_rԥȫՔr(7"?Bܠ+QRp5ʼnKKߠ,J+tӤ[+얒g0whȝ+p "dZ8dܻd&EA NoG4¦`~`qD+\cwIڹbEM匞cjWAF-K9 &?~!Y &{PA8o)k}d2sIYL3+ .Í`Q N] {Bk6uR^(Jͩ] =@ ˻#"(bь뀪/A. W⽛5Huu^._ Ļ_`HkQ5j4Q,+KeU{VQY"L$Z r;oz1Jqv{fu2;]iZϠ-Gs=SG?ü;5c/=Ọ?V{USQ !ZU\ j)3H=]pʷ,N*wk)ث  kh"uta~H`}EUIe+BwBt?7myb 8^|HJ.I#SZJa[7TqoX5ԁ xJ49Uufuڥ!w+r ş d)$PT | #|]"wXS_ Tсy>hVP|db%” `cp4I$7TgcG\vuTUjj@>Im~t 79"ɠ=pSmG]z_jt aZ'!a9{Ԉs-s7"(-{GcVkv<]16Y%.0N-f'4uƃ383yqH44~ޙ=(ɵ& m[!֎Jކu k:j+' )˴U90c6ܺNx-xڤ??0zHBnq _`E(^47/=m/^4%*.<BLSG Y$\'DFWnQAJvق̽ d]kHXӜv63Y7(,-L}98_54 iZT{0[`kPG >pouT{t- s#ܸX'd8Tk?v@$&âۻG_N]'at҆j(IP %WV݅ȉ9n1v_ڴCUSuvٍ,ӫ62`l^;S*G;r&!}l* N3lgT'/~9CHˇ]r䉟΋+YlTqUSIf4!%|-#t5.iOYXjӥ@|4-x9QnO iԛn6hKJT92#WpЅ(Da9<`"Aķm~5of3f00jxRT`^[#7葄+@&~ RrbN~uifVeƠFCTl-DDC?#>s[!Fh95׫cRv6LCe1lEz ԓ -0"K|Kd|V%#jJcUD؍5BF\Gp4L1=bD3gBTZ:O &m)R~[dD-2ZT+v&&dA{qd_gI-'\ˌۻW$9YgPTs30N'JWdcbKŏ0|u657@25AI5`~S)=5@0,έqlTOjE.{{ܣǕ~B&h6XU}(RL^#,pI$dQA[uFX&´ueA@rwFl2% †5n slj :Z~c'#P\+W=f&QؗV0Lc^6 H)rKۏrCh.rU5MyeoX_+(:n?W',vk]%`5g0q:gW:gEw]A+nh%ҞMbѽE7v 7tVEdU5, ԃ=]oVG ;{Ŧڢ2Oq|>⼞aճbl4Zʼ}Qʕ YY!qhJ ٬0ȷXy\1*$B+D8kqQUwÔE^(L<@:YAuVGt 3dUw6 uaû[x:YvN2#dV>J^(؊֨5 kWQLւ0b16p>C!kܛ7fd98/ bi`%_Z)DIȚ<&n]i; e.H&o<ҋ1#~|6x.${Af7?7bh2*Ehzp*'IՌwQކҭ (c ۗ]_JJx|c@P ㏹7`rE/P\SKǎm(oBrA7kƔ8=mMW8{Ɲlb! v/#g[mV˭DiG(Qc0z'Lᗜf-'EmF慹-ED}if /|IOLR"4XT+B:i,e;vWo\diN" #=K$z[$B'*? lu8N$xij%螙mض\rdCqe}Rѕ0Gr} )'>/itF33y(QKp"@'i/QC#GUIB|,X/2 6b~,[,O|4iRL_%o*d49>.Wr Vr萀3+qN;d3Rm .yQRr^p.MO Z(v@;VǤQQQ\9"\X9mL=.-xR 2 .rh:wnH\ #kba%o UPi#kt…'YJ؛F$ fZnE:i0ѓhBJ:24}OdbCWO@kbRM-̭x;@0n?eBcF*Y@'H0yĤ,mU/;0 aF[1i] մN*%N/Z8s !Kx-VwR<XB@ЎK7`%t}%96x pټ?Һ‹@WaSZ= @JdEsd=k, ː43<.i\wοH?`~MȈ]0T}HPGz}_c!l ı>m.\r~FRWy|v~5I!^s 4C39Q3"S ,;a;h BY0l+*vŠU~9Ls1-9#OcǪ9ĮRX]G:Hd|/L%Qzd<ș3Ob"}SRnՎ7}P8݂S+M\֐;7^J+*z`v :y_5 J9*+sԫcZn$rJk`GƄj07ӌ BRB<̺;*2Kjm|'x,9\?MX %;-B hhBdeTR-iDTd$cOIY)"-{.~q)zBJx`(Nו&>O Q|l_ ۿ[ya4LPH Cx# Hg[eO؞YTџ'g3' V\c{][ɾ\{%|f8 <ĸpNo ˰jRcMWʾgs5_ř_ ;(|]⦃g\W`"e* 2yW'v:?N:yr2gZ/U/1 kIn~zN'_XЈ2d$n)Qe:Y%~\vhdMNMV]kn GnKZ+R!H40Qi1Ӕ"X ث$LF8rgHq֍ˮ!cecMη٩ZeBUd<C {,btt #?Pzbҝ:sWr7s2#sLxƠPWE/Yx\nKt$?`aHWa! J׵68##t0#3YOU 2wmuc2xbg- ̈́ݝEcZY(`Ya 7 Ik5c,4p>a?K[<*%+PM臤 :g \۝)})n.HCmt~]LFh\b:[Y@ݬWwӰsZ"5B3 >BS@ѩ>϶"r &l$~"#_&d-fXKƧ1y`~n_^`/y~ܱ.)&ys +G[:\>/$"uCP>ٕE & $r]o!!kG/%EUi`#X"jHb-QQ ѫԕm[::m3aU?-hYn1vNrZ#=VcX\TDA5זrA9h6m w(|i{ C$?4(D,ZsbZbҼ;._gqw _p0{Aۚ Yps.cV2&B- H 4ᜁ?-DKҦ>`3 F0hby@Q].6.xRJMDhX ŝ+,D|0E" -?n|j M&6A.}m>=9OC )}F?ǶNoClB05?fx:b::V2s=Ր8|6nZj. ->%!}< M]lYiv\IC/f@t&9mС!Er"=px= tH]D;{4X2+Z__\VFM҃~z.3 r}j :nιbpͳ,aGNXBIݐ֕|4X9)pxWg7 V|!\$ʤ\?`l>t牭tac Wc.$a\ ?\,ZW7Kfዄ\g)=SBv5L<ʵ;#A\o!@ bwSg\t T]"r xʫ?`CscƆf] },9г?Cӽ:mm6S@;}qз5+NB) gunK"g9Bډh;> + 4|PƐj1~А@SEl] w'THʇ lB4?DϺڭKbAPH.5&pD yPhM,̮fQw"zPL~O`[#YE+(s>`Uw+w5WcM oTᨐq,`͐?spRdi}]E*C^KH@&e*gˡzl*^ٵƋvnK K˷֕<>`ج߷9kkIZ/$6 "a@>$^LAgfi-*E x'VlG8ܘ.FE[}GI ,ԋL\l5wZ/G$^(BA"|H.J̳g$WUpS#]AT mLAB,t=_~NnoQZhd[xP'{ $Oi+ egE?팕BƷH}Lyו&rb L+ < 3Tx!#,ojq sң$| 6IΪLl<էI LrJd.0\23s O\nTegFA|Gƒ`m |g!nsuRw߀ޝ z>"W+Z 3#˩?Ew0 Θ$b2 cƽoŮ']-w"57jtq@iU}NVT~)_[VBs q(H}|QTk-o~uq7ݡ̲Yr',޳OvTsM _ƥ:g?yM@w>V'WJpRdɳFΈICdywF.|axۦL 2IjAfm(sp3M-1;x"* 嗈U']} sNѭ!ZH!NL޺A_K&qVH1f:#lL EԖ f3Rځ?okXZJܬI:x`pg&.̪ &]|[2dۛ եY{ʝ1l1\vy$ ?q.;.`N+Z%ZXV7b?r&hP*S׺Ri}LcW?Ư: tSZ/ 0>ǖ#+qnP&Rwk)r{->5XǸy5x*3櫣;nԶJ 7kHt6]&,Jmߧ[.B&|O&BgS'/ j?PeXoXLtdYBawO6Pl8|蜢Ah.6EԦF@b!ǜ0f|)ΑoDLfB$!Ss F;޻]uf{ETr2z*[ ]@0;jH$DU/"^V>z~ .Y5&ibxȤi.I!̆,f>+Q ^4Z@T#;I^~Tk1$:z]Q%#7cJ&=LEEZ|TT d| k^MekgZHk"o]JU%dbn8!"ޞ<TE:<}E5])!-S)Fq%P-^,Q+1l;*uՖTl<!L*[DH xO8E ztAf)#t1q 4V3ҞCG[E]t^ՆY xDW #=A:dba ҁ!%y 9un\V};xZ۬cTY<9]*Z ЋybyC ` 4-חrW4X nfX>G"ꕡ;~SaOJRJEbƃ9T!:$`~A&Kpa4dU'?v%rD|"8ٙJHzEˉ- O^eiOLm^1ZlbMt%`C=F+l :Yܿ0ň-jH0<I/UE1E)i9Ȃ3Mz&OF0j}5uMcWV=9:jK:3nlsex6;LktbZ3wbsJC#b{1ȌXM4$8w> $誡v -?T/m{?-Wpp s$F+7ϙ~jꑚ~ pkYU)Y]&V;rEĄxL;b¹s?e Pv R%;a\mExzίL$-愉5$cg\e hCm6r86$'M,PW҂y" fd}OB.ia>\Wuk$ Q_<^ӎ![-vDC^qij1Lķ"\n#b:M˨;p.%TSl ۑ|ڿ!ހ^zOٱdW-_tpY,۹_0u~Lar6}^f>b8R*3kJrch :0Б>fىvZvC!՜u3S°|%@7 \!x׶D]EʨEƶ?\,spI LKokʴC.⒯ZFszš#6h򔫞9$o;o)1x/wcKl>f+ܜMڗ%\D-B)rM9 krgǁ=!Cu'mmXyy_H!/x}5j'j]}z6;w䎇mzlu%ԎV"+"F»a&K8<^QsK`|88xWYG蔽+72ioL@zM^* m2y&{+8Iw@AX/ڏr+&'z8jb'-S sW^d?صtgQ.F2tpsG#FB@Ĺٽ{O1e FC)W921*а$V謐F6ghR!̊Y20\"r7 B~Y{~*:q(_8;ٱMpuf?ihv*Xy6IiZ!L3lG]G=IQav \Q?}K ѕ-ӓk×xAZ 6 AcAO ΍7mF.g"vʡ"4^990Á%c2IpIϑpV^f5ru%^F^@Ԝl3$!KQ)[+Lav?mE '&U=vu[-Zw6s3ҊV72BXbSF)| ɶ;k(|&),VӒ[ 0y(4* Y0h~6ƾEQbbmyS;Ox^>];oMǂy>dLad=>e9\|ZRBJp!qGWxcH_Us6;%Gʑwb\d\CezvzblY"*_Wg,#񊊹 + a%{IXqUD*.טa3,0si 6k !赶~:MNͷ:C&zA0I;q*x`hH@&։q7 Pm3:VN')3-/]s*)9vv-5ƺ2m Jq3 O?N-OU ێ!9^g 0!oޛ5k|+r2)tO:-(x*ՑM D =LD|T>_W+H}~ё߄{v~f0 mL}}oSF_2GֺSF=[N_Y%2uR y1 d.9i1fPbWԉ#).=FMr(f"9qZ_50Fo U;𑈦`AgWas.ud41sj@8WPP .&6ߞ8a2Pr٩[bmK]&ޗl)T^i!AN+qeD0p`>VV8~-[Ioqk0m3KV1Mzq;C6()LZ"՞jW}ǭHU9t rĈIPn+og4H|箱Aie#1+gVk+$C%3"reb6IV(=5-RlJwPl_Jg]3 MjV頤#,/׻^Nkq*B! 0Gb|mNJ_HWI8XzJ )$fbzR|u͓*(tM\C1y$(sbjE7L[E*-ڀ8$+Kf- w& W+&`Xd3˄&=u|H[}nJW$G/୸O&&($gۧW͢s6R"(:͵oUs^Zۢr7zskJYg9vC0$-yArg哉7hV A_Қb4ҮrrceO_+,n`wR4M{UquJ%;e}4}Rm.Kj`\ЯYz1w>&1RAJ8D`r<f֡b'\NKtjf9`gr.w1?aޙڷh;av;m{$'Cf&|RqMg? D"W[:"u[7+MX^+@ p)o?nJܔDɇ$@*W#.x(夨s˒-B{xKdX_B1ܑʠ)J+WbSH3 <4R#4vs4N? ?Gu8O6٭I͚UU>~ޖZǣ yƤU[~1;c9'%6P^ PV$Oл~aෲݝ9bEق{,xo4i5"M^?Uem8T ai?NvkzE7K X"0s<ړ?=jTY1Y[hpՑ[]r=wPEX~{٥_EM\p;ߏ>(zEcsMx.aeOPaԵ,{H1T< ITZ)r7˻c0,K融aڈ Vi>M Fh_dA g~؛0~8P\X[:N_Lo ό%ܽg=-YZI"r8ڴ2A,0D Tq;kG +Mg[0/,$+?M/5TK:'dԐ>#WND%?r&e7Xalg; PTXAߛa;>ߎzXcq"OTe$u.LGf7إ@=vhՙXY(b1Qw60!BF\׈?&t|{ N>0%0Yt *̮QBlȵa4|pfj} Ǚ*!DM0 i4Hb ) ,ؚ늯Sm\RAQЃ{鲆 R,H?yuQBu,UVZ$ cV ͽvzYfWB,/:`N}`R'OC=6̍>Y]7[}3D|>@BZW o,T)wk JmC~C}{,oWd¬fPenSn2 ]"$j_X)i vvZtG Ij#_(cSpc9vV!H8ԒxdAjB-@u/L9eg]J.vPxy\5I;ߞ= QճroG9hCS2mjo=S(ϙ wi'#gGJ+XDƕB7Ʉp^rUeƱ/ѥ%jt( U}о`|='M?3O^e!Κ**U' Xapz ^߱?/GM>q6P"D.[>9D Luɖ,PzzBLsC{ñ1Rg8N"%opأWG,,xo$k#,gnLFV:ǒS(yV.jZAltRBЩ z N`BY}h .SxWn]u)>[aREtp7\Z[gM!:/'3!mM4?HLwh꧶C )X "< ^cK >a!^vSw}[؟Lc'ldiFנ"Kewj}h i|#<&FF45Hh3ed&Fs(Zڪ"J#:>PI|ﳧK5w ntlA8?3։\m#+ل6< P.Twh}]Ҝmk@vitt+hO@fV~/-݀x4z) AaIˋR)J9C ,r4+u~E{/kzH "`c")fqBqpӕܚ$?5E_2R2$h2)bZ}5'9{+bѤ̎ tCO7~k!ıTd5_~ѫ-a.Jcl%䖯NBo#(tХG\IkI?~Ǚ2n;P'(l+lW܇D$,F/4P7^60z``2ľsx.XR%9JL%^ TW%yB:t>IDsb5D&q nZ׈(q $ gPi:1^Hlr|V8 n)i;y jV՟HhL6M~iOđ|P`By IjژAoM@% ;Y0.{/O.^dS }P#ܪϰ_T7B[iKM6ңxVj̨)!R >y< i~ C?7I_6Fm߻ MO]]ij>w57T7΅ǂ@hR0xjHܛOEn7UO_طsy3Un=03["Hju7ڒ&sayI']F[YH9uƔ*pIƎdUpRaJs0>( 39F̀:Gů3kj#)38dgvS/t#:KӚjWxtذV@"dɢW)\f#hS~ C\cTYb+@⍯ۛ$+3 A(x+kl)Ux5C! oa("͢k1) 9!x JhKdX TR%dڼnWb&Wt|PkvKlZO_}iE*tRVuCtFSd\ATm޼% L96a/}vrnTHl1H#*zbڔiW]77GvU z-R' `B$,ĽkB]QиMd~4MB4έ%58i+3ȗ9B{6I'V+Ռ"Q v"Y%aHamO>5lڀ@1kኊ\XA9%]Bځ%7-IAHdεZ|leǻA%f#$"TWQv/n(P)o\~86 n SLOPcB}+Ʈݣ3r.ûd&دdTmI.al-ձP1*:BGK@ ţ6] _#^wNM4߷e`F,Dܧ<=F1}PNKѳC GMH;IBli֙\=HnLR⇾ yV\P` >4vF6"ە ( Yny-C\` -j s2E\nLIr80ޛ/\q^PjZEDo.ܷH<NX$M4Ly֌f9Ww4K>֓Doyc~P <\H"gRCI% ڷt8Jo7m YjVh` .fg"0=> !e@1ޑD0{r&Â5"Y*.ʔ3;o a]ie?_gAEK<)$Гxus<-E]oc##DkcfC{@ٮSϜ2h_bxS"\jʺR=+-xwj D`k_9lDǪ!2/F$9=zjZMCۂ0sbF)c 2ڀjlYf[W(f$C$]`=I KV^b^PY<Eݼc( \|A)OŰΟۅ|o0YCmHJR2*rD ļ-; d58o) ס3/\PջJ98V= Hqu rs7͵Gj΍ \o^ݒ6 `f'o,[~t2H !?&ywM*Ȁ}?0:/维3 R_7|oN=Z4y4 gmNs/oHZ7Psmd=%,_Ɨ,JC. [4{"FS0z oKF_NF$23J;(ו.3x "|.S:7-ސU+ ԯɺQ/x9<"耽a<@k,=T4]Ӣ{9,~P&٘YS%Wuf xRpl6dF?q9?^Z!Q8b&QϔeUqD^UO-LGBT}ݔ3>I{z36Vp5%dKP+ZHXRpb,X+f(UD6tPK_PZ{OsknLu/hKTt<\o ݞÅԢq4rQ<̲|f!]?5IU >kk)]!vt$œϤ:=# 6W(`T*EV9,7ɇ:[>LuG056{У}9c zO钌S<6 WґC|$#P h\!J[)y7'M9:qyFܭrTb]rDQsޥp!CĝzṰ*Fym;Q ՘11": uBOB8qv|1(e2oPj3 1ܪ |΁^~jV28c)1 f r\Gy8dκ$*#/xW >JOatbK 96$i;bv!T_%m=-.{{8G/1yCU0 fIKA8fqArtGȈSj.Go?74ixDsWlÑGz BȌ0#]ܾNq| J߇{ dlCH٠5a5zo#Oړg9>|b)<^oXUfp?nom➁0.ׂAR&A5گ?`fd(k~{9梣&l=HwЙ(| R􌲡9 x8+rs fy~V xS [<_ޑwyf3Wޭqx^|wECS!t߇  ,*Gzch&_exQf|K]q e5Á$UA+=LsBU\zU=_Æi9dM,`V<'?U_@ -jW6UuzKPZDBW.}ƧܝY0ZY( x/֪!ԏ\" 0P{vP!do4ƚSVaRnL裒"^j~`xb1 YԺ0!%~%׸=5!ueDAQ,G*wIA%:ChE#`;%飈 !Sԥzg'| C Ɛ FQPzDVPZx&#a܀XJe+IH>* ܽ¾:~ZƑ "u!0n&s,-ɧ>z4rkWHbKT4-(^jd#ڥgP),=i܅}h:@v;kYOnm{x`Lvؾ5h-4.oPeOyW,z䢄}U+n=1`+dM|9{s*5Bc.?/o_IQ9ʈo\{^w%Nqz tΧ#2$Gcqwp7亘ysmIptG~[1IłРEKK }F:G