From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 28204 invoked from network); 14 Jun 1999 09:20:26 -0000 Received: from sunsite.auc.dk (130.225.51.30) by ns1.primenet.com.au with SMTP; 14 Jun 1999 09:20:26 -0000 Received: (qmail 6217 invoked by alias); 14 Jun 1999 09:19:31 -0000 Mailing-List: contact zsh-workers-help@sunsite.auc.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 6616 Received: (qmail 6203 invoked from network); 14 Jun 1999 09:19:26 -0000 Date: Mon, 14 Jun 1999 11:19:18 +0200 (MET DST) Message-Id: <199906140919.LAA28474@beta.informatik.hu-berlin.de> From: Sven Wischnowsky To: zsh-workers@sunsite.auc.dk In-reply-to: Peter Stephenson's message of Mon, 14 Jun 1999 09:15:47 +0200 Subject: Re: WORDCHARS, etc. Peter Stephenson wrote: > OK, here's an attempt at passing arguments to widgets. I've used > Wayne's suggestions (incompatible with what was previously implemented), Oh, damn. I was too slow. I've prepared a patch for this argument-passing thing, too. I haven't tried, but I'm sure this will clash with Peter's patch. So I'll just explain what it does and append it below if some of you want to try it. Those parts that are considered good things can then be merged with Peter's. All this was only considered as an example anyway. - The zle functions (the C-functions) have been changed to get an `char **args' argument and to return an integer. The return value is currently only used to signal some kind of error condition. Of course, it is also returned when invokiing widgets via `zle'. - I've taken {vi-,}history-search-{for,back}ward as examples that use the arguments -- they all accept one string which is then searched. - The read builtin uses `getkey()' when called from a zle widget and when reading from stdin. - Another option for `zle': -R makes the command line be re-displayed. It gets an optional argument: a string to display in the status line. - Finally, my suggestion for enhancing aliases. I've used a different option character for this and because I couldn't think of a good one, I've just taken `X': zle -X new-name old-name numeric args... Without `numeric' and `args', this is like `-A' only with the arguments the other way round (I'm always confused by the order of the arguments to `-A'). If they are given, `numeric' gives the value to set the numeric argument to -- if this is the empty string, the numeric argument is not changed. Well, and the `args' give the strings that are passed to the widget functions. All of these arguments are expanded (using singsub()) with the special widget parameters in place. Putting everything together, one could do: zle -X search-foo vi-history-search-backward '' foo to search the last foo (not that useful, I admit) zle -X correct _complete_expand-or-complete '' _approximate a bit more intersting... zle -N isearch isearch isearch() { local key zle down-history zle vi-history-search-backward '' "$searchstr" || zle up-history zle -R "find: ${searchstr}_" read -k key while [[ '#key' -ne 10 ]]; do if [[ '#key' -eq 8 || '#key' -eq 127 ]]; then searchstr="$searchstr[1,-2]" while zle vi-history-search-forward '' "$searchstr"; do ; done else searchstr="$searchstr$key" zle down-history zle vi-history-search-backward '' "$searchstr" || zle up-history fi zle -R "find: ${searchstr}_" read -k key done } which isn't really good, but shows some of the features... Currently I like to think about changing the zle code to offer a (relatively) small and clean set of generic functions that get options and arguments (even with a builtin option-parsing mechanism in the same way as we do it already for builtins). For example, we could have a widget `complete' that accepts some options which say if menucompletion should be used, expansion, listing, and so on. It would also accept optional arguments. Without arguments it uses the builtin completion code and with arguments it takes the first one as the name of a shell function which is then invoked the way we invoke completion widgets. And voila, we could get rid of the (notion of) completion widgets. The builtin completion widgets we have now would then be builtin aliases for `complete' with the appropriate options. Of course, that would be quite a bit of work: find out which functions should be offered, with which options and arguments, changing all the zle functions, adding support for builtin aliases, etc. But I think shell function widgets would be much more interesting then. Bye Sven begin 600 patch-zle.gz M'XL("/B_9#<"`W!A=&-H+7IL90#L/?USVS:R/]-_!>+.)&1$I:*^;,5U6S=V M6E_]D4F<:]_E^CPT!5D<4Z1"4G:<-O_[VUT`)/@ER8[3WMV[S%@2`7"QV%TL M=A<+9.Q/)JR]8.V81I)$W=>-G'GL3>^6RC7:[7=/4.(Y"]K=% MR)P^\[S?H\YH]%HH]5JU<$IO]!]WAF*%[[_GK5[/7N;M>CS^^\W6)*Z MJ>^Q7_SQ)4_9S3G`X2D7H'8VV`;[^NG3KS?:LMEUY(\WVEE?)CY;&RU9ZX?I M1BNOQ`_V]*D;7R;6!OM]@^$_:,,\MLN@MRM^:W8LFXUYDD*)E]@LNH(?'9N% M\/5QM@A21`&Q'H[L(6O!YQ9AC?\^28`39CZ*KJ`'8\+YW+1V-EI8'O-T$8<, MJ@#&IVPDXPI7/@;\V32C(SWIG*""]7A0V[1$_6T808L^<1R(%+LAVB?,_,?1 M`9LL0B_UHS"Q&&#+-MKI[9R/^81(S\RGT,]AF+Z$5A8[-P4#<,BJ&=*WTDIR M`ALR9'F\\%+9K!>)CN&`3C13V8FG+,+'D0WA`T.8.#8SHBUX*L[I"$8 M^+;H`"#N$#``$+HSSJ*)ZB6-F.<&`8U)>P-'NU-Z(YER:*CH4'SS$_.BV1R& M:\A!_`X_ZQ&(8O_2#]V@!@/]E7`QVS$D`HL9CT&,06#A%]"#?YC'/$D0B]); M)-0[XC75/,$N+OUKCM_IE.=#H)<_,3?PW61'"B];H%@B/]I?`=_\D+-?#O=_ M/#@[/SPY,TSGFV\ZEAR)'("?()-X#&,*;ID_FP<$2E7(&:%S#6,9N M6H`3^$D5RO_LG?Q,('I6L>+H\.3@^/3O!U395_`!W,P-QSA6%P"&O`UL%(.< M1=`R8)HO)Q/]0`7UR"F@>'^^=[`L\ MMTO\3:;1(ABS,$I!4H#/`MO9N`+H\(UBK@`TL@R"LTC<"V#M)(KK&8UBV"!K MC(1M35EK+9,UYEAKR5H9R-[1X=Z;#$A7`J$I0R.*8$;%=>^7997UK/5EM54K MJZQO%6L*PLH&UIV$M;5,6-G0NI.PMFJ%E6V5$"Y)*]NVUI#6UC)I92-K;6EM M+9-61XG:.N)*ZV,Z]<-+GR=B053+%Y7>P@)0NZ*?3X'#FIF5%Y76=EE:L\#W M:Q?XAO;%57ZK9SM=UL*O`2V2N?W1%B;48HYPHOA6F5!D.^6EC;93&(T7\P3, M(S])>&K^=/CF[/#'D]/7!_MO7[V!];V=V42([&641H2QB1\HHS9KDV%E2T@6 M>_Q8@_4#"(YE"0OJ"F=8I&&E(0\<9VH,>:SG.R!YL M-5$1D8GB>EH6ZQHI&GD)69\[&I&A0+R/J&=F9HA#:AO88I8;J*UB@8U#(CO+ M(,`103;P_6L_=L-+CK85^^,/]@A1`P4;W?"Q(!9VI`C6-G+R[$CC(R]-:"9-5 M__$")DDOAGOA>E#L[Y+-/Q4MS/<+GZ=@)A>,)LMFCLW0/CI_"08;F&U6R4AJ&SE]-=IJ MT:[Y(IF"R<7-B\4$F.5=V>QC&H,)AL&CLX-?SP`7RU)",HY"Q$S!H!<0&Z0^ M;W^+/S'^L9J83?1;2;*',5D?Q&+]0@9K'OLDB9Y'BDU9 M@!'O'54+1`P"E,U'OEAT$/P[6?F;E;5KM2R&@-0@U:N6U--9,VRD<$">HG[W M3!T7'-'\MG%$._G4,@4,(6$@B\9T#H]0"`LCUJFV/$BX$(3/9H%<:#)&W(4% MXM5F-HCZ!V*%`%9E1\LP-%Z(5LOX(<>[DB>PWE(0G.VR7)%(CLAFQ96#UJCZ M=4DVO)GZ`0T/:!6+QQTKDI?'I[LGYR2:D?BX3HC M-A,>BZ4/:BRU!Q"%J1\N<#4UD/;:$J9D>\93%P,\/#:57BUP$94.=".EOJDU M,,+*!++4B*#-,T""_B;)N!"V2FN$EMM'"++=#MDW4NJ88>`*!.0@>XW&`F5* MQG6_2\J?O*3\RZXHIN8<:3)F/=1"LPS^?^;Z<\$O_3#TP\MH`HXK#*8^ M.K2D6;UW"6.?^.'X(@I,RU(1CHX4/M09,"0-:#D,AOC65,OE8:577/-JPVB: M1M'D^E+@B7Y9-N;#=.[F]*[W^OWW9^3X>3A>SL_:!DLYR9&3J&Y1T4E^!D&1 MH02UCI6%BG696'BI@OQ2I(M$E[-8$GR-GOTPX7&*@==]&K:[O\G& MZ;)6SF\2X_X04]+ZVST-XW$D.&=F<6?-PJ3GI_B0N-=\9\5^1W_HX.YQJS\: M->XBHY*//#>H$]]R7>.T^SB+QL_4@GI\NG]^_/;H3!"VM#PK$_Z[0A"3/4?L MVYJ9K(PUD>@DGZK0_G>W`&?-?:#^-M"CQUJ#[A9^U](%HZ2T^ND$R0J;9Y.> M=5@0O8ZU3+AJ@K*X;$]N5>:=)8VM(+#9\<'9'IDL)1L)UG#4>,T!WLU-2TZ6 M0:=G.]M`@CXEXRGA>RIL8O;DGYTG:M>#-CST1=$+P!4*1`S864-)*:I%,1_[ M:2U!957]V@9D]3W=$?0QSS/WK!9AXE^&?)R[C)I"F\H132^E-6,U>(G+N$,& M-`&"-5"`E%8F$>:C\#6FRFPU$O\CI\ZPOH4D;&5J:M#MV[T^4'[8LWMBVAO8 M8%<,DA:L[$&;$9GL:>L"])T5ZSM5I)[]A-;P@&2"QS'MT>R6`_I+F"DH7,M. M/YPOJIP4IE+)2IU@F+O;A%* ME0*SY['G*7F$1:+;8:TA:(2N4(:&<$Y)E$ORL>[6F5PR_-"+*8O-#5;O130W MKJ4I+)1R)[3MK&,K-?6R));5V'8%0HWXR-T;F7_F"Z]O'F$2,B5]]4$K`R^V MMK?Q.\N-OHBY>Z5V2/V)B4ERX/2=3&\2>:!>ZMUE)7EW>1%]^GDVHGKX_-7KT^/7YV=OSI]8S-S[,>(D4/0)S=C`G[A70'H7C88/510/QBQ.>R& MXVD4C#6J%4X[J>RVUJL*@TN2=&UWLXQ+,X(\>1AW$:DACJN%G-8JAKM48:`R&R!1,,S)I1 M-\M8-;(`7TW8KI##H"B[?FJ"L30984FB26='#T&MC#HM)=J]:37JVUWD6K]C MRRPTBO8]TB)UVH!M5O$!-!FZ$X$K8;VU*76W8-VU/^$@I/7I6X6J)3[EVI9Y M-9:?QX`?-3BG.0'S`%'^F$4$[TJAFDA:DW?\G;0ZG[-BV$>$B*N!.N.!@F]T ML`CC0NS:9T(UJ9-9HT'/'K&6T^G@=WXT"[6;4&ZP#$]$?,)JL$<^TTBHUZD/ M8N2L7!-P9T>,V%AED22@H=XEH)5_$XXQI9MW.MMXI`WH-]BV!YUZ?7SMK]Q) M;6A2GBJ9NW'?,[=5-J[.IW+H`";,C!`H+Q%VM+F4`65;&:!TY3!P6A]VR@AHD^$ M93BNUE^K,ZB:VOR);&K_"_&I_1N6&(XT_/&789(ED36B\R-&S` MFQ9^1^XUWVU_[XOMVR$;KI]IAE95>$+0\#E2KU,-`R MP(UA(7;P(8W=_*BN.!-W<7ZN):F2OK`ZS-#5=?X)X(BG!DP>]<2L";9@DBM%E M\=71.S'0;1'2<)QAQW:<+-*Q0-/Z;O*.5LNTY(+)-*K!7I)D*ZAY9<19\?9EN(\ MVOJRXKPD%:VIY5\DT$OEV>D)EZ+K]`HAS;]2G.N/^V(,L73<5Q25C_N*TO6/ M^]:W+Q[W!<'"K6#\&LGE`"<&7:D!XT"JHFRUJ+@EI"TSE-XYZ(7\SD[>'AWA MA1"M#?:5/\&K/%X>GIZ\/MC;+YPQ&'-PNSX"I5,>SP#J5SP$BHC-@#Y:.JU! M7^U(&T86[5)45MR[`!_Y2CAC!O_`/4`'=8,L)R95BFU6=,F,J1N.`SZ/^<3_ MP!-3%.+E(3#YP#U%K\MF,_>*LV01[,*"<]J&-[DP< M)&!"H#5!AA'DB*9G,I++O(GW96BO1;TV@W4JT=^>'6$(>2`TB5W28F2 MJC5J_'9#M0KY#6[?!I0@1[H.S*%L0Y=:V0Q/B:4QS'Q3DCET9Y9H+1=4J01: MPKU;"H*:MEI6-NA/>10\3N=N[,X2+YJ+!`>9GGS%@?^BBJ@E7U`T@G&\>?GB M7$B0DM=QE$Q)9^4XVRRPB2[D<3H9!DU-)>XJB4T3MQ+QY2.&&H+K.O2`J:H8 M%JFZ0>:2*+WVX6";[OG:ZMF#OA`]6%W$51^D*.G5@)8CJ8=JM[5%N.,31ET* MRP%05-XI0[>+R!59O[ZL,.^4N@8F2T4HUP(53)$-HIN=@JLK@W"B#)]B.02B M-<%^!LJFD`@?H6)-,ZTJ1%;N-<,JZ$]\'N,/F3LFXTRA4@,":+@`)CY].L>/ M]\4J%5NB1"<7DQG>L^^8&U/VRWN+/9>R\?>]UWNO7TL+W&9"&D+7$B$LB0`E M2D5C<1%718*A645Z6\9/!WNO]HZ.3E]D>?0BNPJS'1AVPXF4LI\1N:?O<1:+IC#BE;'T0T9#6@_*D4IZ&;KRD@H54BZ0@K3K6$A#EQ%F$^41+K641$S\$KPID*N'Y MI452/A/E:FUWA[2AN(W)>OV&JQIXXL7^!;_BMQ>QSR=!Z6AQM7I9=@Y_+XX1 MP2>L4/#IJQ0LS7PK>'@XZQ<).4K+`G]U.33YJU"XN2\Q98`JD[@^9^>;Q<:! M?JXEZUEN!/0L4J-VWQA4*=.T5^,@9:*.1 MUH.?A>M*9FS%PJC=`%,72QWO_?KR].W)/NN+'K>[E!,Z`I.E*2>4'`T_*7`L;')I'3J?S)Y1A6[:H'!&PS'`46+ M<*PY"E`DJ![Z'I<)85+D_>'?5Z).@CE>9=S*FZ6/A!ZH%,.35AMI:@=Y_X28W82_Y MZ;DJS>XVR>P[H<3D=DY'C&2TI8T$[0SRMD`_>VD@T-!47W6D6F5UA'*AK8Y, M^16L(MT-X2@_\>]41Z.&B"%6H.MIJ2B/`V@=&`@ M*VY>:)-WO=]L894DVMV\`W$Y[[";)Z,+JT:9Y_1&9Z?FE,3*U,\<+Y$#VX"T MK*Q'G3V&WC]L3;0%R\,4@2?_C)_0.2-*FP^?R+")1HH2AEI-\TU`=(6R?C^R MNAA9%:^1-],8=5;'K`T5.=;@:C9@36TEPIS#6AUF)I)A/KQ$D4YH4?1$I+RK M0"[=BW&//\ M#C^>,T7-E;/ER@^"FVD4\$J.>[&F\1",;[/)I7WOLS#260K;[3R-RYQ<4O)\ M(N.XN[OB#&N6M-5N2RW?<^SN`+1\;\ON-MSYB,,01PHKHY/%]2I`/P0SB6*. M+YAX(*=CW?-HC)(QA%2A=J6RF>`U5YZ7"+Y\"RKK0I/(K.R^VTIU?!0,I#/K M'I[BPYT+H3>%X2]WB5O.JBE ME'6_J]6$EC7%[.DT0@=]T<503I&9'JYO>?OLH*->5&CA5%O0-A52:R6/EC!G M?:[8S$MW:H_F$:]&M"O2I2 MF9SMJ6*J402OJO4JQ>AUCPO-T7>M,2CU\J4Z>>EEC$MO8U`&>V@,65%/;S^HSP$N.`-,+Q8L_[X!WK?WQ M)]@=%1.GQOWX(G9(15>+F3'JDO71ZVS56!^(D+(^[FWQ_5][5][=QHWD_]9\ MBI;R;)$FF>$MTAH[SW&41#L9.\]6CMVLUTN1+:G75'>'W=3A3/:S;QVX&TTV M*!XE<8'6(KGTD$%P0\\%K`7]8+\%"@K3 M[G/+NVW9\ATE+5'9%GD2J7;388J/6E2&=CDL*"[XUO5CFJ2WW.!)1A68O2ED M;M4L+AW:$"O(`+/QY_^'7ZWGL.?32V7Q?@H!D.T$@DT8'V8A!B;:-A%,5AN+"!TTAMA#\#52Z0U MJZD@'^`S:9(6:(]I:^1R0]LN[XH?JU@=#%3R`6_>?H'A?_?Y%E0AIDND,(Z& MN(=Q1UN<)_;>WE"0:-23UIVBCH8A,15(](&DTAI^-(*_OCE^],@222GM$!Z]^KVV2-4MA9/,S-)7?@_TUP5GQ:(81HA[- M:H]FCQ[5T3YGOKR,(6$/&4:C@_LK_)52U1R.0_#NX`F.T9_Q]U/<\HBUG"9S M_U74VI$`J99NH?#:P0X(8&9X*5)9O?7K,LE#GU!M913>\5ETAFT(OGWQ]OW) M\6OK(BL[S_/;TR!+3B7D3IT;L.1?"C/'C28#VB%SK$R3(XZ!]KIOI)9ACQ6WH1`+_-$IWJA.-#52=QUJ4:G564^+O^.W5T3?;4F091\`. ML\G<2Y=B;NFT@-DSC7.6D;$5_.TRBI?(O(#3G"?Y!\?"&I/,V(;DS'/T^FMI MS-D?]TC0&QB"GCEUG@7]AYDG*-/!0U<%H#$KHY06L/DWR;,J$#$`-?Z0Q;#U MT1:>4-8#C-8@CT&/I?2N/:,Y*6]#DO$<;ZLD=U2X(XIG9.OL7`[)5&_/-*Q. MIRI']@C_9OHJ`Q5"N&7+H(_A^YP[QF;;+/T/#OKFN:6<;`P":1#8D>PV(1RU MOG!XU*D;]L@X``P&!WAA.QB9B&X*6ZDX/_AX[/9-^'<':_M#%Y&]`[(&'HY- M!VA17%SA/A@*RX.@KI2AK)A2@*%0?L*WU?O_I51('X%3+,*,W.A*KJI!?'2O MJBFI<%5-J1M<57O+=Y^V#ZQ@M$,Z)#:'8],>!)G.5803>YK]TCUXUQ2_:!'` M[\,54)S%JQ@G;RO\M]6J$,**='4@.O&>+V'P!J"^%MO`T)0X=S6&LKK5FF;U M%=XYH@6>FY]=NS:^Q*MZ)-2D*2!N/M00N;/`5%8Y6?<\7,]=':S@DA7`*4K4 M77H`&PUUGUII%$D?;(RE9QQ10UQU'!W*D?O9BJ7'.*D/N/PNE$F_LP0IXZ[C MZEF$PC9)($>,FEVQ\<3&:M@Z7M-=P_MI/.3M0BC9U/.NU(<:4=_$*5^Q]S^Z M:LVR60+=M30Z_4%ST'FH`?ZD<=J$HVW!;L9,+[NS,ZQ]#,N@YU[(9I%)2@)C M.E8UK2BUZUG9P-;#-S`+D`8,:\5E[ M,?H*E*[)&V7O,!JPM<;8LM8@$MRL(5V%.("(H<3J.06AF=6V[A#>J#;>5&HB8;&=+F!*A;G32"MK;;`^@>XV]8/:)OD%7@9* M6X`!62[TVL:Q2&\IEH&)<_VOO>UT(+\*D-?7$70%HQ%H"X]W=;5:)G"\V/]M M_RDW;M@F1M<]4(S.7B,BGH8AT?@:56R*.L8@-.-SBK03&-$'>=PHFL7Z42MC M779.N2XCNC3OI$&8M5R-#^]C][J*+#Y5-S%]K)QM]RQCEXHN-]7':3%5V./] MA6K99`Q*^;.3]0"2@3W,%FG-C#M2]ID!([<]?:6!K+1O[(&$.![A12\"40S] M&+&5(ZWZ#U%F>CGCFL\4ZRH?BLY6/2^>?XK''WK_X79F<.;B;13O\Y1[@=%$+72 MQ_[,K-)+^YIZ(:T9H:MF575+C+ALB'!YVQ'-$=9:"@X,2WG!P"C#M-'ZO1+J M)#R%NNB2KJFL^^I:ZR'ZUB[OFQP;A%I9,724_4##AUW^).-7TDPG+PVKW#MOJ`0ZQFLI*&>E+!++J+C&K3L@0SSSM9 M;,2\1BGJ8-&]Q#OC#<@\_[!NXIYBKCGYW0'M4R\O0O85%IR_N@H1'%P#59?/ MF'F5]FASYII*4C-*'YZ:-IH#0@_@M$ZFEAL^72B>`,P$38G^S3 MNKD``6O_X_[&ED\7J">!2A1\HKANF5Z\,V\3C8L7SM'QXRIJ`3Q44,EKR,"! MD$8$N#UH=Z5ZU8B?(=A(*4$V%C`=LOQNH8::I-B&2MHN M(!!9Q.;GCDG[<'.K-W/`[T?=(QM5,MA>F5EP#S4AZFO=`511#\SL2M/U,F== M<47J7(*J5/<>5&54OPHM?<2^#>VTVWT$C6WPEY*@7^85M&7*8:1[EQ63ER^^.7KQY^_+-T=$KR52@=6$>AR&"0CKAA82)1)7SD[[%-MNE4_VJT.0J MS)-:V[`%_I@N\VD-?7.;:)NWS.L,[A@2AN5TL@B5`WD^?;],T1:Q-D\7R66: M7XB@RR/3J4DYHL4F2)'$0<-' M)HO%Y+90H*!5W/4T[/C5">W7YKL9Q$O.,DYODE%*Y/S7QGY<0C5$HJ$SG]IY$N`N&;0@_^P M2`N+3%<6:6"1-T81P548UTN5^-DH032CAK8ZLB%M!)-0;YF0!ZS*)[(>6F:C M21ICK!S8M)XDB"N5I*F@TN"`J#3L6?C:L$ZG%^'T0P!#?!HNT%Y7&MMIW(>S M9$%P2NU#0B?Z)7YW&,0B`+6$K$G2UO,$]\48M\N.^M8U3!2M4DIA]3%<+&"@ M:XC'T@SVKA=)?.YKSIX"1J,U4-@KJ9(46[1=Q M4ZCULYPV%1JT,4<3[8P,K!`O^T(NH89>XR7-11B2UHXP0D=8EJ#U:!K`G"EG ML5_@,@^>(C,@[N9[>.W3:+S!CL[`M[:%YW8RV4\AC$[*/E,O/&ME\9"?$E7YW9$%9F\]9^XA5NWPS;./! M?B''7P=#%:FB-F+FJHU'KQN"&2F"WLD=Q=.@AK]!:O\J%'5V+-S(&`[.7_M. M2=6$U&>6PWI3A28I(29347E9[5;UB+EB9YM06`=!:V?K87TQ_Q9/7^09+6]=4/H MG3Z,!3KH]&6H50FL[=MV&;!SRTW7C^H),AP!>Q9A/`5NM]PU;>C.PQ6`BECP M(\AZ[Q!-E!#)C+;+LB"JT=?>.YZ:WQ^] M^9L-"^HL04+F5+4'#8KAZ()A6MY#Q0J,SDKTR$)\ MBG'$2IXE^"OX[T?9/D(BPADT#Z%9[H/#?QPD\?PV.`T#/+S`P?[Z(HS1)Q3ISR_8 MDPZ`*Z7[!FL?;#S;P)JNG76%:;^)N`M),\BKQL^!_=5T!`=K29'!4D`5VVGXG#^8F1V@QZ**%:"NY2@$LW02\)<2>!LQ# MK2TP^$7@X]`M=^R!#"YD;LM9M++W!5A=[PU&X5^ICFD133\4=$PBL:!C$ND> M'=.@1,=4\D3W:=O`$>P=()HJ'O'QB[`'DPBL7[]\_]WQJR,$R[02CU_]]/K- M5T&7XUT$+]31'X-"(%:PU-1.YLL03^-"T8%Q6GB1?RZPN043%'QN>B;$,<-T M8GHF+\EL7S<#?=_V=3,RO/=N_!(-!/PY^1X57(+C.,?(M<:'>7HU;^[>C5#RA&8%13 MV3`H=3Y/$$"`RWSSW>LOW3(&S&*^CQL_/)1/3CFF7(DKL,?EUXJ6;MQMDV_$ M!.8#0GRJ*UMNSI3U]\=OSVA\"&[LEOX';^`]*KY]2R1=*EA)][C M8^^-[I@P^.O*:FA[T;"@JUVY2MY7\556,=\M;6$>4$]E'>8\L#+6S(/./V[, MR2Y^/1%6E"G2A,!B+Q(X@=C@9&;ZPZV,5J7Y9JSQM?.M:)R>AO-Y8>7KU#6= MTQUHES3W[?='6K@O::8LLPH?-2'PG1*45)'I!VBY/%\DRS2XQ.6%S3Y?I(74Y$U72X.W4"$#\+I++2ML^@F6Y[!7[Z1K8P;:J&EKF=+%5F2]+0E M:B!=IH>5;"_"FQ1V\<+D,I(WF5V?B&4<_?P]!L!9P3!4B;(>)PLO M&RUD_K&E_I-LJ3RB5=_H*UUY@UTY0[P%_J4VW!6T65_4O_TR00J[KTC^1VR^ MFD6LVWI7L(I%B.@B8:G0YDX/D_6P-)L1036- MJ#R\_M4NH7;6UG/:4\-,JW9GB;AJ0R@3U-+V9.@2F#[O44DQ#VM/1%6T@AF? M_>SVO?2^+I[*RV+>OR#XQ4P&$%Q@$%#CV(BG2HI"E`43C.V%I[=F\$2@4/0( MY&B`D,0E!C4*W;%TW/PE2NV7S9';Q"Q+8%E.V->UI;9L8]A-$OE&5='L!(8K M#-!4AO4RV>06!@6;=\W)DH"8&#-I130?IMS!B$Q+&J-V3YJ8<+4!AL0,8`P6 MMP*5"X_V>CP^MZ(MFK>XEE[36%MT?RNN;TV`$;0VF!_J$(O)G#37\!?5G'.! M7XEJN3@)%PLHGRB/RLKE=8A&.SK017(].<>>HAGP9![-Q`TSQ5_$^L30?MXYUK;GF%V/I<20!I>C+G>E9W8%,=3(RW36Q,4?)\%EL@@_#S;[QS-# MDF:6,,-G[^YZ6>NEI&IS#V[J`7E3CL;2F](Q"P^$?M1]>&.ST$2CLRHG80JP M,J(&=-IMJP51C!AY4.SXU?N7?_M*QK,,:C0CQ13@$Y+&FZ%)?P.3_M=#2R-, M2;@6;K@>84"#`=S0K@++!QB63(9./49-4>W)KR)&YG@L@GBWVR,K2B;UX_KT M4%=)R(?7"'MX?:K(9.X0+2OZVHVEJ<[JA?!L6"#QE!(-?4)^=B?1?$9W`OSS MZ-?E9)[IWV_I.>HWY`1$PSO]'(F+US$V6A7W%1" MD>1&=$_[QU>F'*$V!N<99[3A& M[^&P&;Q>YN+;XY2[3A.*E.Q:U$+T*&!%Q*JX&VIB_J[[LKJXN*:5MV!._Y.Y M!MP*9'AH*4)S9X&__]L2)BBL;X>=.R+VBM=7::@RRLOJMOABXO\98C"TZPU: M52:%FOO_N*".^.CXAW6PC+R8&JAQ25:]AK]^1!A`8\ MQ]U/$B9`N@C)(9E<*\E-PZWJL-L&YJI.I.$0HY'`4)@#LL,NB&<+2A0W9U!: MWGFINR>2<6!JR[NG6H)F!?HEA^93^!9.8/+A"Y2)0V`V4=_MR_7#\>,S>?A` MQ;L!_Z`8$*+8`JOEL=;4;UB,I)=]\DRE:-$_2GJ&V5.N>[`%:T;93G6$76] ME4K!?1UVE^O3)GT(A)-1MX/!!ANC;GD(NG213,,LPYBF5L00G;P*>-+`Z+BT MX\+`N\Y)CB7 M*5Y2P$,KL*?,V:,PJ^)8QD`XH^[!V(IP4+!L,,2K38-)\.0`(L&&>N&9>C*G M&K3$A,[:9(H59H?NX9X01+EK'+@5NC;NRPBN9"8HG\5Z)M:HT1$9)Y]R(,8I M"#\H<=,QS0@XD]S.87YD1H0JEY;\]GRQ%=(\M^X(C\JI3T`GM0.`M.;X,7;X+C29RTO@;I97H1 M+I@I2^Z-YE8!3XH_2U6.E'NO0O@"4N_U)+NP]4'^.Q4&-%YYLR**5/*7)H&0 M,9OE(BVHX&V67\"Y.*AW9>W7%%-58FKS*E>B?8B+)+.EI:S+[]]__V; MHQ_K.C(LRGV^ M"C/:EY_>^*IR'NM4GEXEAOV<=5U?2>L=#:*J3SB<.40M:87GI)QNH2E#".M?IJ\AA;YC@ M\C9,J\[8?*5MKM9AI2]_*"*)RPEYB?$AO,4=BJ$GPME3O!I2'H!(#MK`EEDX M$T<-7CY7$>81Z` M9FN5PDC1&[&F0C,P<37R1F@@;VSQ8D]D%)7H??'6[S@M]$^GEX`9;!G(<(LF ML@&1TSZ16`ZMT977)SWTK8')UNN,FKVN<7UAX%&*6)88ZR+9`$;(_I-)-:62/ZY9C^J`Y&N/_1`$[Y?YII>0)B$ M7BYNU$^!JL1L`]@RN+%QDEL-#IZH"\@L#:?1V2VPOGK%>$6"4^.`MVV":`D-[P0*J_=H@A$32ANJ'$O1O%F6?&[6\5Q*+E M:99'^;+`48R,K1=4QSR=QIXP454FTQ_SV3N?\1(:3B`].(&,])6]GKEJ_%;- MWFWW(![?HAB@T_VAT.3K[55W'VW14>Y]+=*Y5;?OEMR?9(?*MG0O(I%^S$$C M*K3^M@AFYHU1V?+IVI!)-/P93>.FK6QI*M5Q;=IE7:G`OI-AK&!#U%KD%87X M$E%$^H1B>E#E)M>V[P>$H0N`KLKFG,C<-MQ"$-#KRJVS82<$$KZ84. MY^%>4:DD9K`.!=@XQ9FX3S`&IV@&(>,_(E24&0VX9-*58CRF<_>.2:>N/82L MF`'0_I:HIT5HJ2"`9D&67,)>-YM%>13BP78^(>,]V%*X..P@+1ZMSX/@.):F M!0<(8M3HC]L2"N5)53DHA&4YO]=.&L M%:A_#C:JBIK70P#`L;P;V/$Q#M)8;;27HP4<*@JTN(#QUAS0V6<&Z*S[QHW> MAF8UK,:QQ),+%D86$KS0$$U4L#V*&3@VPA^XT49>X14J%!'C84'C1[.(K];K,W5$**C_O;JHI3K:K`7E?H M6I*&%(7P-)PGUTX'[;P-=!1&<$/%"X4XV6@@!B,.6HGDLE6P<=W6R6ER%9;T M@_.JHYRNZL>#]6*174]2##51[(3.6GVCV#1.010I$8W.QQ2/F=R2.2[MW98$ MLS_O$)0 M(LS=`CAB+-,9'"58[(:J$BM=1NOY,^RTFYT^WAYT M\5/9")2?5[WR;OG&L'[,?&P/9Q":7Y[BO*%C[**P6^P:HLV64I1H04$,A-C245;- M.#14G90^K-Y:O=E6KUIA7BUC[\Q2R9O.K7Z'YQ;&BO]C;AT:+(.N1'EZG2V2 MRXTGV&#,$VS4_9>:8!Z-KC]BSL9J:Z+*09?VPN%X*/?"G4^CR2[38-^/YOK8 MI^D36XXU:<@FG&('HTM$%!OZ-;ZH06`6F,]0`[9IQXNS(;9%C5JN[;, MRS&36@0XJG6O=1'#X"Z!@_XYM8O#T;C9!RG@H--O]GM:6TY$<,7+%=IRG.92 MWUA1G8?%/9H/E5QZ2C%TXL^WT-9@4\DT"[MHC'&E1J?+_#1$[:;3:IWNAS2` M;);/4!Y\%CR>4L*==#3ME3H:K_SWX_&7/WR-IRW1"F!/R[-?J!A]-:'B=^%W MZSG\V1P*OT:/*DN0'T[@K5\?O2%,(1DURSF][)A'%WH<`XXWV%)OQPF73FR_ M07NS;*3X)H*+[\A@Q@V5K(\_%&6L>*6Y]@;7P,IRXZ"X9R^C+>1MV>O13>S! ML(TX;$9\E.T"+--TFYS!0B[.0D[^8Q)N,@G#2I/0IP_8=&;>P]PK,?70X9UI MQJ%']!AF'`H.X[4SKE5ESOU/$KG1/BEI=3#2M;.H9JGIZ\(N81O[VQM#5TPN ME#=T3`U6!7TY)*(U@YM&0R[6<0=E+?1"0/-*EKEZA_5K2]9K M2D+4;M^W*C]4%PBA-UK.7Z@$(K";P!X>P8>]W+!-V2_'' M$A:,,E2\D>)O.DGAM=,/Z22.IJYFT\KS*\QLW1:;?Y\:.LQ1EPT'1H.!V7H3 M^]PDSJXD@HKA4S?N-@OHZI5""C%[+@85$ND5XNF,>H3;/QI*]^Z=FM!ZZV9B M-)V.$4UGO(]R+_*%DE`[,&0BYX61\Q_[]?I687(N,!885H53`:I]1G6AXY"( MY@&"'5[GU-EVKPAE^>/QB^^_%X.&O@4X:`<'UJ"IW03!>Y<\4-,+O$VJ10SL MB;^^"%I(B4;0'09/X?MD7_MR%%\*&XAT."5S=7$*[U26=HMWF#)UY9&P8+G" M/1^,V%MJW):NRFK7C)4K%I\=X$1!LW$RA\/"[#8(+].<+T8VO.3@,Q8<17SV M&"LO_:L(-7""F7EM_\R<"BJ;5;SQ;E9\%#U`<'[84_8_$T8FJS>(S_;%9!WU M:;*..VJRBKLN>0AA0SRMO``",A>F7QL%I63L;R\YK:P"/3^+SF#XSH)O7[Q] M?W+\VD(&SL[S_/8TR))3@9#0)E.EQA@XO@AIQ&XU80YBZ"7Q3%-[;YD72FMI M%B,;UD^;KQCX126@1YW#HI-Y"1B2O(?%%\!.Z"D`\**Q(MM\BJ9WC`1=#V&54^VDH M/)`.8H)3F>3*[97L(IUFVB$[W5P[;F>I>3IZ]SL&ZISDFJAS:G4C=7_Y[M-. MVX#/[31[&.NY@]H3NJ.*XNE\.0N#/55%NDCVW.$53B,%B#TS_0'B:DLM)-5O M*/2L]/N*"NJ+M4@OL$(MZ@,+RY18@G94!)R+ZZL\6.AVWO.6W=6OJ1[/MV20 M[)Q_]6$B03ZB:Q!'CC_H-H?`U`\&S>%8[U)>@CO/&&\Y@&OM&]=L:-9$1<73.X\:KM-C M-5P'@6`Z)0H15>>V\:B-R5Q*L#O1ZI]MT_+2GN@]'#"]8>MZ*'I;W3)I;64\ M`)U-GF60V4R^?T928"%H5JO(/1+D'A\HM#3K4>^3V]UXE)+=R?K_(SP7N8Q! M^BZ:RP+IN]V>(KTMI!7%,W[>LYWKD=G9=EC*1*5B_H/(2@6)S!*5"KF?>K"Z M8K#Z`_\Z*1V/S5=*4;HH"#\/O5X*$I8K_/P#65:W+X9B^-`LRS;\*=TMC.R5 MCBR$N+/UD!AO*40H>(AAN'%'X<8:A(,V(9=TQVUU.XF5W;B&[Y:IQLUF%EFH MB5[!D%3V6JK/(PJ'9UF=&%9`7QCJV^!IP6:FPE*JJH0GG664!?GD`^(1HI7= MGKW[[2E=O#TN1/3Q@.X+>AV0187R><=+<=+A,\DK&O.LI/FF%#^\#QZD7F9, M=Y7V22=[KW/`_LC]MJ7TOR?2+^G6N$!T([D2AU=I(5YI$84)0%N,"`=.9X/Q MWK!;JZGO4X7W*V_Y-RY-[[^O9JSZYD2NZ MWQXRY7M]Q4EI11O*#NNVB_U"JZQF+P/]I(RSP*T]I'\X1KJ&\%WF0!@\N+.. M\,1*-_+(S1>3.$L39CJVBZ.353H0::<9I%WXOP?_]YOVP/!3>7B9-H,G:2H# M(9,,U.B/.DH6$MNR0FO9O5':;=Y:;(0#0WPP:&\*$#K$,PH;:!J5]M%@ZA`: MZ57BI7TTC4K[9!4E'^G!(VD?DGMNZ1YO>)@%0RKUBKMI;SM@,GX=.DZD/:BS MZTZ(M*O>U[7>U[W+^SKXOB[4V7&[UU&OZXC7I8B&C".)DJ&P_?MXP>%W@:0M MK(3M!J6;;A]=7`?-P9:,VKX"/5U&\SR*Q>VG^B4O/E6">8?9'C_M#)]V#NP[ M3V]1WW4GA;YHB$_9!^XY>O_>-O%S,DLO4W/_.LVBCTV"VX7]ZSS)8Q&G8R(^ MY=;'CM#/T&/[-)M/L@NCCHM)EI"S"]JSY(LEA7W_\RR\^G.>WY+S]"D"P:'/ M9#ACPW@8"#)O45@*419>&G#Y:)O0#/;H,+I7-Z`55I9K!M''>W4H`D9?CXYA63XH%YRW)J/D(%0ZJ*P0NE&VLWG131M!>74(_]:_B(L MNV284`97QAI$0&4&P*:`T30V=6L7J$'&+_L?]BE:]R[]6)H_TGV^3:,?O^Z+ M*,GXY-MO3T[^77LOM20T&YIMH5$0#H$>&7LDJ*RH@`K6]F3)O6;P^OV;KWYZ M\_?7[U^]?@E%U+H58]^1@8OA93^%07:1+.8? M8AB'?!FCI0),WNLPF$6S>#\W(B*U+)^%"QC'/?3'@)1P(48?/2.G M$WB(>XZS)8HG\_^,]U0'SL[FR^Q"5.&P(\;*)\ZE9I0.&.UI/##U:M2&@AN0 M&DIK.MOPZIO0>TVS5Q(9Q?BJX(\0R_*/$='-N&[D^>WNNNPLHU8-5P'9]AR&FB(F]1/)5]+>;Y5-)H6B_>!K=V/(WE MMW@:RB^QVHI2GM-.PTX=ZREA+,(N$;:RRQ!D*E)FP#"GRUS[#;)S4P33ZPSE MPEF831=1FB>(48S;.SZ>KGA^F@BL\<]]N!:\W:OFCP\ER65#Q<]&L-_>?W<8 MM%J2S%WM"V#-'L4L)F2KR86QG%MGV;RFX?EE5*@K4HI0L$KAL@ MU`Z;L>7M)C5=(-"S>\4SH(V+.P2[/^V8_!:T5'[&5[4[-/', M]80=%\S%J$MMQL+.N:UB2Z@*=FA7!O%']*T>B(`0._Q6LD;?L9PNF(%5ZIW= MG/5=LUO'HJLFZ"R<+D(R+-3N?-J)CYM#LUYD+\)?EQ&<.36=A635>J9Z><=J M%9U4G49[HUA63%B[\"BY8U*%Q@M4ZVBF-:RV5:\"RCO/JU...F!R2Y\S#-". MY'"EK$GLQK2H5@A'OVE4VEE$QT*DX"+,\!`\26'AP5XF]CE@F@8&+3M/A)=T MUR8:B5,%6HCOH/E"_+09/)ZA!E"%:9V1O3&>^83ZI]OKD2]ZK]M7^-_$%]"; MJL,^2NU]7J:,AM,4P13A<"P$0QX)^5`;'V)7ICH4_W49+FYK(K0,.^;LW^X' M7]#?I\$^.D`QP?1:E'(T6M7:JY'GR284X\%"R<0(HS:'1YE"2IB2DDY+2(EZ M&]6=HO84VD][KK'*B\]M1(Q`2PF5.ZD9FNPH1MRQ>FD(Z2.S?%;HJKO#+AWSN@?*?X2W`;$G.+L!'N\@ M==BG"@7F$FW&349'X>6*KMV3((\NV5=`3OQ=.A`:@XM'*UH".FZ/2J(Y=J@7 MWG]*?W'!@`7P013/HBG0&,,7"'ON"3LJBT=!>&"'\O`&W:X#`B*X)C?RH(:G MZQ2+UPM"@QPF/IZ2ZXH+YM3K#9AZO:%Y2!9/V`A(HN]2&CD\O&\RY(MDMIP6 MZ>!T7M3D)4'E?O<[%(ZET>LCY@I+$4*U9D23^5.+NR#T:J(_>.C&/MEA8*93 M@C55ZR@(`%::-*4.)>A+?(I0%'.RCW$@F_WL,&Z57`/L0.&J<*(YRHC]]\< MG;SY[OAOQR=:911IMY,&C[EJDO+("V00FI!E-85.N5Q