From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 4864 invoked from network); 17 Feb 1999 16:30:23 -0000 Received: from sunsite.auc.dk (130.225.51.30) by ns1.primenet.com.au with SMTP; 17 Feb 1999 16:30:23 -0000 Received: (qmail 19011 invoked by alias); 17 Feb 1999 16:29:55 -0000 Mailing-List: contact zsh-workers-help@sunsite.auc.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 5412 Received: (qmail 19002 invoked from network); 17 Feb 1999 16:29:52 -0000 Date: Wed, 17 Feb 1999 17:29:02 +0100 (MET) Message-Id: <199902171629.RAA06277@beta.informatik.hu-berlin.de> From: Sven Wischnowsky To: zsh-workers@sunsite.auc.dk Subject: PATCH: automatic string insertion Here finally is the promised patch to improve the automatically inserted strings in completion (those for the parts where nothing corresponding is on the line). All the gizmos mentioned in message 5270 are there: the code should automatically produce a string that matches all possible completions, deriving this string from the matching patterns in use. Extra care has been given to matchers for partial word completion, the code will produce a string with each of these parts as long as possible. One drawback is that the code currently doesn't use match patterns with anchors (apart from those for `*' patterns) since doing this right (with the strings split into pieces) may be too expensive if I don't find a simpler solution than the ones I have thought about until now. The patch also fixes a few bugs in the matching code and the brace-re-insertion stuff and adds lots of comments. Due to the non-triviality to the code itself and the comments I thought it was better to compress the patch. This also may be an argument for adding an option that has to be set to allow the completion code to insert such a string (or for one that tells it to leave the cursor at the end) since with possible completions `fooa.c' and `foob.c' completing an empty prefix now gives one `foo.c' with the cursor on the dot. This may be irritating for the unsuspecting user. Bye Sven begin 600 patch-comp.gz M'XL("'7JRC8"`W!A=&-H+6-O;7``[7UKE]O&L>!GZE=`WG-D^7'M>3KW?7F*"")T<`#`A1`BIHD^N];S^YJ`.1P9,=V1L-55%2?_-\L^61:S!?[5]&+/SR&A_/S\WO]?K]6N_-],N.RIU#\X<'QP_$)E_W=[Z+AP]Y M]+O?W8OPOS1?1EF6Y!>=3N>3O0B>7B^OHN(RRM(\B?8^X5+3J[B,]M9%.9-R MBS*Y3$KHKUJ6:?XZ6A;04I642U<%&UZW-8RM8*DAEGHRCY?3JZ2,Y.\%%5Y? MI=,K?16MXRI:57]R+[@W_UPQZ MR7E,7WSU!VAN'+[\\AF^/*B_?/$BBH["EW]X]O1I%)V%+U]\!^_&)_?ZS8Z@ MIWZS)^BJW^P*^NHW^X+.^HW.&KU]]<7W\/:PUNY_/_X6WI[4VOV/KY]]!06P5$5YL42`FA7[M*CW9N'1^6N6 MO`*HFU[?[$_=$;`O[3&R[^T!&9T_'!T^/#YO'J9--<:G#T=G#X_/_)$Z/QN, M#Z(^_\$#1?.#2511RC.DV27+%`XQ'(]TED1Q-"GC:1(E[Q8QO"GR?7@Q25Y' M<3Z#IP3^O2H`MJ(]@/4].5Y5M+R*X3C!B8N6R7Q1E'&99C=1F')%: M8P.UR=.$QJ:5M@9/KIU%4:6X?)4T!5,>,J+QN"?-Z8MK#(_NQL'O_A^! M'O01+].I($#>J4?15]\]?S[`G[A=_//BWE"*(G;"Q1FXE8&Y#7AB%_?Z&TM- MFH45H)((CP@N`>-$7,=+>82=SI`-3(,B?3&#`I M-G3)'_8_9%F(G(P/!B=`3>"/`WZ9VI,YC78./Z?7.(F^3,*Y7-X1TM]&->YG4*A(KI6SZ%M833%&>9)T<)#7H_!)#G:7[]G*8M,[N@91H? MGM`ZP=^SP2FM4Z=#-.PRZNXMHD>/HJ]72T()/?S4F5ZMIM?=1>]""])9?83S M!1+:K7K1,.HNX)\*BO2UR(3*T&M3$:#SARK[,WSY^/^-/J8/[_$?I+"`B4H\ MEBG,;!W#&8.%Q^6.\ZB0`=%YG,5SIWH^/3H]A,OWQT=G!@%F)OWG* M'`,8ETCYH=\]>E@,HCR[L)Q$##`.W[C$XH)Y`=Q=_`O#^R/@#H//<"#"0#A& MXV&4P#[!?CCD1R2;FP!8+\P7VI-]SS_`VL^C!P_@W^%GQ$A$#Z(G7SY]]?S9 M5U_T>CB93HP+"I^)-\+?%?S.9%./S@YI4X_.#W13J?PZ&IK!:XS#"]3-L7'HH0^/:]CD<@VC_.P1 M+S./E]CQCPCL=NC+C6$=:"?ZAD1_?);8\?[I-B<1.E2\6N$SB/ M21F.$+BI!?<^3^9(B;K0=%\`0(%@"+\)FJ',=''3Q2^X_?261XHXY!"'>G"( M+*JRIF6R7)5YE'.;T,1[9*Z4PKX&$(D)5PBO1@AA50JBT&+<2+6EJ$%<^/7> M$%J>XE.7UQ1FPTSR0-G@@3"W`\.^#H0K[=WKWZ&^UM'SP^,K"6G*/GQ3)F^3 M,IX`N5\"OX1;XN":-X6Q5O>R3))IUAO@UN#!2-Q12)&ERA-<5I<,*<*RF.`@`JZZ`3SV:P M`C588+2/J_HZ?0NC`J8^G@,#558A0$'EZBZU$6,ME8*O$^*=$/4Z<-##2;?%NGL'G:Z+!BHN.,]F!N@5?F1E8L!;)=#KW<%60"_H0>_#+?$`3%4 MP7:@!:P-E2[QX/9W*TYEHYVP+HP_RQV,\#XRC!T?#LX0Q$Y.!^/QD0XT@$B5X/8O$SBR0%*IL?DJ6Z;`_$3EBGE9 MW)=X2@"BQ8'YO:$FXWQZ5914["]['S-D`$0MH71>[5-[!(J7JWQ*W!1-&!I: M0;F8(@@3J`S?YF]QJ@SK._;^#Q`;Q1 M:%"VS_U60%O(&VQ?2W,7"^9L+I3T@^`/:]05JM;O($?2Q2Z!LYLC`E`N#G\! M*-U?7O#[><48BJMA4U1UOI!OJEZ`P;AZ]&UAZW4(1A<.WSPB^/SVV1__]!)K MX1?&6(\`+N&-,F#W\0LA/"B%?S[CELM8WMD?6DDV]!4-C7HMT]=7RP$NR$#6 M&/_MR=B$'JAX"+Y-\69D6NND^T`W/GE5PF);K),DM\/:T-3K0EVF2,7LCS1#P.*1!,W9K M-(@6M`C`.L##R/.Y!'#=[MZ;GFR:^X*E^V;-W0?B0-H^>,CCWPAD8_KU7@`( M_^+_Q(L9P():_?Z%_(`FA\,++AGR3[I/M(AF+YQ0`\([B&VX[LKE.C2T[_10 MQ&9%]VFL/(1PY3[Z:(!GH[E@;6ME!DBM,)*5HZ?$DL[S>WRKDQ#L$COM`J)1 MD`L0ARY62X<><8[T[7*5`>I3453QJ45$U3X)A-+GVSA;);A6."!BAPO&9=+A MM%AE,^P-1[*DQF@-H2LNX3F;F8[F*HD7C"J![V:TC,0[R@K`<>DU@_^B+*;) M#,DW`.LDF[T"KNC5XO)=%[BH(HR>R&"4**XBM`*NH;9:*"@$F;A8<* M!24\+C5,R]CN7O_'(LU?P9@KQK6Q0[6Q4.R)>S/QN%<:`:EE!^ M%HWT=^9_8\6.*_/IHX@G%KR1"3%);I)*I"IP$&,EE$FL9-(-R77*&YBY_9-& M,]E!J<*;B(=CP&4O^)LH@)J@E/S`T;"_V@77J]CIL2'*5/_9A<-7^NBM*?*_U"Q[I,>%HEL!!= M.,U`3&$^N@94K.27]M4"7T'](>!C><\3=\+^0N?G!B7EN*Z^U9>E$FOS$D!< M2J[-RPF^G&2Z2;%6-&7@6`U-&4_AS0Z])V$VV@IDDW]=((OY#/T;R!C('*PP M>-7A*0[@B<&K5J8=R!13OJ_SEPY]+@E()K!"U\1-,EC^S11I7?:V!;]UJ8-% M;BRO'1K0X7X?E;15K)_*DOE=8@!BSPA7$\,4Q[Y,-FGCCX78$H'%F0LC&#"D MS`0(\`4\ZFRU8+X/IM>K`W><'Z((_*.=^X\Y M?\0_.GYSK.G$XQR<%DRLY#VO'NC^"(OFQ07I@>?I9DYO9`EZX=2_3U1L(E<% M)[RIFC&:%'`D9'%H/9!S9NA209_M/^6UE6$+-45'LR+_&)CX\@;9;EK,%$#O M-<"D64@WR;\_>_<0D\<>+7V1+S,K](;TDT]\RU([P(E7P M8IGD[GQ^(,RT#.MBPXJAKX;YAKRW%\-JZSBZ,`2CH!/;Z>`AQC4VW>+G7#_G M\MD/(5`%$+V"97EVR9@N1GQ6TY>2-8&MK*LENV^$WXMLAFWO42'2E3JX0DL_ M&S"J^,:I%XQ0AP=WGE85?D.S1D_6G$\16:]4)`$4(4O4NV4U"\1<:M2H4Z:" M3Q),^D5MN_$S#/XJ?IL@\-=6PPPLOW4`C:T,M[$^)-ZM<"]K6QGNY&XZ'=*- MD)M%E4XR4>*H-M&)V/("_PHU9!<0-3^A'>E9GB[3&!4_U(:0+,2V45Q%2$<0 M-L3842;355D!U6-2!M6P"%9*\VE)=#=A_RK459*.;#6=)A56,;"Q3_I^M(^Q M684T3WXRJM:4Z1+<+1/>1:*.--*ZGDIJL;IJ+W" M@8:4V`^.&C,:B9#+0&6$*B$&B#G1R^TR!0@@,T!,BX+5F74(9!.G6\4R9+A7 M*B^V@:9FS;,F>B0M/8`^C;86AT,-0;V_)F4A0$_D!*%>*8I7^)DEE%5B;N.3 M/?SK]43W^H%X\L3`UT*^FD_@`,B*NJUG1XK6S68L"(-+T914 M::EWPGAR(8-'8(3#SY(WJ_1MS^#N+@X'ITL8/,V)]>:A?1]GB%?+8O6:[9'+ M&(]"&DR8M?OE30-B<7!.O1LO%@E,76%M51)15(\L&21IC5):G2B-/HT.CD_@ MH=\/ANMG@2AZVHL^CW`*CR+Z`"/\(?US+WH8_B0!9X]06DJBRB?>>#$+1PX4 MMUCSB2D`KR396W;;(4@EAFI/5.Z.8M/J=AL2,XT`$;,3F1,K M?_HZMVN-.QM4QO#%:G`[H?J63@DN7(;^1KQ*L%Q&!8S3_*]5.KTVV-8;BY"> M)^]@W[(;1R(,Q&<(%^LZP\_=\)IGO5[(J&0>^A-RI0'X+L@WR*B*VU%OT'%# MTZL`[+2]G395+[E$[*3NS;P&Y[T;<%84B^#$KJ^*+`0%LGO(4%47C,NS;HQT MC^WGCQB1RB$228AHL4=2:/)`&<"SM]?I(BK>BI=/GS5!+-5WL%EYS%B@[ZR= M[:M39E[X-]!.VA!6,[!R^0[:Z`\VX7:VJ*,_]9#E=&JH;%:==+M9UFK0G")P M>Q4&5/XWB4,[KLH9OR_$8R2PM]+^*9H6XCQPU>#T(Z9S.V5U#$Z_H-O'^A=L MO*$$(S2&/36T7%2GJ2!3O-=4>=$YS-H;,MJPI@ZL8Q1?3O0B!H,F-"",%JT6 MUFPL!WYTT6:CS7I>B/LNKZU*8-RF\S1P#F;%T#L(AA)0%G+BIOMV"ZFZZ5J# M;Q7-DFI:IA.R\38#)M*<.44='`PTCA89>@:N4=XA69L7YBJ>D??@\LHP,50) M/6A%+>1\;)&C3/.WQ75";"N;SY!((H(D%1&T_%H]+1-@8V>\],P&%RKID#;- M.:+C8UR*EZQCDD%`&13K'H$QR".#G)_=S+PR3A81QB#+DC1-RTS5"#NI![EA MS<4%9JL:SG-F1I)$7=J:*ZR](@WI$8JL"C#BA-,RXOWH"]36L91#`L0\B?/* M-P7U;J2]?*BL,_GBL;>.\ZG2"60`,%$!I\8R+`QD*'8$G`4A*J,YL MU^U9E>SDFFRD[@/33*,J>NH"1YB_)MH>YU947ZN_/B)E4U.B?0##2-.L MF274[12\/`+]:&KKZAM^DQ4_3)Z\I/\V`#*C2 M&T@7/;^0Q3KPJ+2M0H_F'0&?0!Z(>ZJHSDT1"@'@`DQM[X(`0S]A,E<==[`.BL:=L)*\+3D[>=L!V.U*[^.71^&MH9Q/$U7<4F M1QXT1-2XW[K6C8R&:Z]/R\USD7G'FCS;Y%@3@+6E97&4O%G%F:%E#7*EMITI M"Y%(-0,RU78\PG.QPX&H'83@!#CX:0$>@9P:V"C,U-V+L)&L;F4U1\=+B4[J M:UI:M]A9<_M)OM"';+M/_1])9Q);!8,$WAK5`&I80D.=51@Y6Z43+CB@CT43 MM[UP=HM9>MG09Z@3!_IK9%7!`4J.?2.FA\G`R[`>?F&#N#<8&D45M8.&PMA: M":?>R,K<4R(!WM0%U?E3L48;[D!M-!@K1;8PV[-7PKR\LC82U2*QKFER$X7F MVF M<$A6G-]@H$`/(QC8B+.IG2!PJR7H"[9K>EU9$*$`-1@QQ1&)Q+?B(!2:!H:M M4T.7WJO%2S7K&%U>*((!6N?HRBUN8ZI;DB!`HKRU`#(UD2VC/=J#GTF+M(.J MQ[MUD%L:=![4;;.3TOZKG&[Y(.N`CUURB!=C5T$N^-XYDW14 MZ8!.#>D4\-SHZL?B0*,H5P7^N`HX8T(TU)4W[M3U8IVF8JSC\_RXL;+KV%*_ M>IV8;Y^1^P99>+M#0U/J=7C2]=Y44J@0SI2865B93RZTB4N#*)Y.DP6# M,C.(^^@-R[!"+!Z!LOJ<.)+O=WZP$19(K!!_U29@_.P;N^U0&=$.%^4'U!.( M_L/2RL([=TH&#O7QI=EK3A'Q&?FAKFW`P<,^(.F6=3+H.>[M-^M<]4P\\8M(N5 M:A=5O/'P9$'5Z\*,+Z!W^8=_L5NO;FP&9$BN#F4WT`J7+@U5=62UGM@HU+&% M&*`219C;88\!]!.S;45F63DTB!03.@EQ)B==80,J[M7[*.C5`A*I:&0? M.@;O\+<:-;-N/:(P;GKILSQ)`=18!./(V'R.[WL[Y#1P4G0M7$Q==I`OYBRD M*AE;H&8_&R\FX\=:)@1-<$`!6=`AR7NS&H0[!DB$?7(!+XUO^0Z>+LJ[:N`9 MCERBRP9!>!DUU9T0EZ,I1+*;Z/4*6+Q\B5Z32]%CDE`W71XF M>=RJ*,A3D*Y[K2[@E,RHKX$R=XLYDZ@P&S+UU1??!Q%C^JVK^5#_KCE0>[T@ M,JI:9*D@,DX<%>3R886:CV&!L12&>Y$H0@HB#".=7$8J'U?GW@XBEV8G5WPB MZ8YZSKO8)'U1?6?(?"'DPB1)$Y=H-$J<`JZ%81$QC.">GV?D^<5%; M+GE57?YEFEYCO@*>W>I8O,:@L1B*3LUZU)<7F]XPA>X.IO":$(7ZQW@ M@-:SWAH`DD3@M&RAV[="!UP$^\9.X5MV-R*(1F"^:!NM>J1*Q9YQ%-8EK(BHG;?\9:*!$2=%KZ0=Y.\T:F*Q]-?7PAI>9O*7I&!+K`L*: M3A%,\(VQK&YQ:+1HCGU7^/RK=,JJ:G4"0Q:74N# M(,[`F]+Y][@#KA)70/[J@M:J4B$:J9P+FYW/*3$GA0$50"U@)X'*F[[1,41< M3VMF!`[B0(?,+<&B,AX**ML!%E6K&U(&LG1FG`IQ3",%3JU M%*\3235DF;*\QACEB(7T@Q>#P/)JE\RD&RG`+&[QVW]@D%4OTK8TZ\8 MBO330HI$`,FH,Y6%%%7_:G%#VT.`""T,QW]632\^"R"0`#MT`3WR^#\XH`>1 M;L.]YR'^]P8C3/\[43C[!9ILV.<3'MD0O7OR(36R(2-00GL M$>5<4M@CRKFA.#^G7R&\X/;X@O:,=LW8@6)-N`N8D'SM,=<_:5Z[;;[NV[W2 M6U'*/V$6LNI#W;MW\<] M_CH.SRWGI?.O>EX^V)_YW^?EUSXOUIMY^&M[,V]R4B[6QLO8/'^`]W$+]`5@ MMPN\U>#,`MB_N+/P!J_+ZI_+ZQ+',@L:,4;%1N;_G3PL?UE'2$#@6>9M&[\M M-\8MSH8+U0*H1L"Z'!JW0J,*V.)RR&NGOHG_XQT06QET3TMV\DMLU3ZP5JCN MKKAH\2=L5QGQL\8X0U6_R&O>GN M[*:&*DYR0_'.:K]A]S&`+74?<[^W.(*YR6UV!Y,6-KF#$47QZSD,O+\"M[#4 M>*+\1MW">/B[+<%OPCGL'^>%5=W%"TO`R'W8XI/U2WM1#?^5O*A:G7JJ%J>> M'1UX`@^2PESH%G"][L-V[Q'K.7*;_=*#\2_K0/';<'2P":EO=V#8;I]W6V8/ M[F_./O^+&-5E*7ZB41V=/_Z#$]2O"[UL#U/0#_P-=^2U5F!,)R:FNH3C:'UL M^=IG25CA4GI(6%OS@_%PKRCD5U,@S=#19W(CX:32+[M!>K<.Y\*(8ZJY,;;= ML\E'FQJH6M`&W_UW0M<+]P].1V?VUGHI7G#^>7/!X/VBIQ%X_OHM'LPRG2?L MQXAQ=9P'C1/!KUSDIT9W[=F<:.RO_RR/+E=TU2.G*T:_4$P-P@G4*)DPSKCR MU=O60&\ZR,U5FG2#*L_HTMV_.8C>P*%9^"LM.VHJH[M:X7=+YGR-:Y.+W]5+ M,&]>0L9QA\:)7WRLC9X.771PB6)\>#8[[^VLM$!>*A^SG=YRR"T6TC&BK_ M7""M&41[!5Z0G`,]''9DXYF4L+H"+]F$DEE^X2-6JL1?<2"+4KNA$L.S\`HS MB0B7L)5P_XU#;+J4S'-IR1FIT.&7O)ZE)@;XV'R3YD(2'CW-HY*!D\@++RM> M3<=8>K`>F/LCBBR8<)X)X9+KF'%9E%23+EA*_ID63*DU?EC?;4K66T`HKSJA55UG;2B7QTAT3#^/DY1!^5I-;/9X?SZ MI'D/O##=A%V)/.23O+5).R!J MT@B4=FR9$:7>Z[I5LFX]Q;DU7VL)O([\`.3-L&-1M+N$FG9&?SUX@,4Z=1S^ MXKNG/2Q9)R/T7NO4*WWQ%2!^H!.^,[,8,J`M(LF%^=XNFPP[C%OQ!-"/%J[7 MG;C.1MF#ZYIH:8J5N5KEU^)%C#<4^\R-2+JM*-]ZCP]Q_/4%^>_'W](%'O55 ME/>-.C7G?EQLW`4NEV\O%X9EW3HMO%N;*%Z9S%;3A//=25;6(`[H$Z:>1!"' MG4ZGA>`34/#NJFVSFEHB$*T'83R M1)W.AKB/1X]LW$?$,.D]_B5<'L"-LU28L&3A=)TB5>_%"K9LX!@#;)YXU]/1 M:'`"K.O9T7APYCG7X$*<"%8YZIBK<$STM[NO!Z^O<'>DM210-M*3Y^K7'$(@ M62:KI'[+&DD_/D(Z\L:E-R3K16]DC,25OW%W&T=2](W3P%T*KWYZ<#@XQ?F> MG,A\C4ZK*.3N^*&*C"K^QB)CAM%M-OKT;C6VI7?V^;^WIGAN"-!0AN5G\4"I MQ!8P.1A$4Y/!N,1K8*7F3.B.;"`F;^*JU)_/4:1''E2^'$M,"S, M)S'C9-CQ=5*15$^QO,OH$J9#5_/X6)(DKE+)J1%9\R7C1#*\!CX!,*7QP/MG MR(-W!-A6>"1PL:"KL',/*YT*K9B\,$?'#!WGXR9TE$W@`)EG*3E.RYF]^@4I M1QTN-A1V("^_&5",)D43IWO(JJ4"1_W751)O``ON.-2L.$`X&=-\ST=G\'?+ M?+\IDT62SX*$]0+A;II;RAA54OOP_73;)['@MNOP+5HPGM,,9N1D$FH/3TS,ZB.<'QSO` MFXCKJ:35?:*A5NU)PBJ;&HWN67GH-(`U1H6V)P40Y*CA@=]"'PK*B@`3!XN< MW<\V,G\SP$\=USV;(D"^&I[`+OPR(S*!##-1V.K%Q8 MILO\09&.:HY`+6`#SNMI:5@U*!,VK"+K]M(0^T9"@>,TOV25,DL'XQ'\)_!_ M-CH9'*$>ZOSX>'!X4IO)$#@YTA7V3>[7EAC"6FH?G*O>C6J#@TTF>U=5U8`< MH,K'#N_\P3D[K;)$('JD+XLL9WLQ@&&"A)OK>K^IGR.G6:LR9.3VWK1ZC6'$ M$C8$4UH9I6^@YP2=``JC;#[E'!Y[J_O:*O@ON?>YND M6RX4B:EHY:TD$5L-Z(_5JF=3#&VJ8Q5.(VD/+F\?QKDW(CM#FG;'JNZN/)"N MY*X-5H;[ZUC+)(LQ/X&[5ZPRNFDZ0*3J5>TTWLOKKY6",A%2J3QTS40OYBR"'5,39N&$SAL!ES.3O1/Y>3<37 MC>U40V^E$"^_(;]#.)Z4.`>0=??HB7D?H5D+_N5XLTWJXI3<'51KI!I(]7]Z MA`R=JC2DY%I*&LMQHYU(ON.8%TJXAB1SD4T^!$96%LDLG]K,6K2)!CLL*'QI4B[49;*2%Y,J\[8>:'^*EU:O)S:K MXS/.D.IAP]^JL/[<]4`^21FM$NY"BD\+#`^8D;;+T;4(2@9NP-;2T9I^:$Z&^-ICPNF#N[/ M8;K'1\=?$81<.5^=ZG/YXE?%R61-2>BJ'+LU2I70K(K"`>EELII.!27GFO*E M_8.(9G/:,@2G;8#-Y\PMN./4QHY9ZUV8\S%AV<5%>FI`L_$)%1\49L5?DUGA]5I:Y`5GFH[5?9ONUWW78K^/WW.SI?^"<);!),T<+1SY8UXU3N:+%S*&N1^"A;]L M4Z]^2X,==:#0'U$US73P20UVS';?$7?$=CQAC9.U"\C= M\53I23*YX+:>J98CM?E$F0/5&B1S&Q'@'`X!^^1#I#-U`FHE1*&&QI<-B5#[ M\0C@'CT,'%DUQ$N]X&F,_AC8.=X"J@TPK1'F+=!D_8=W`XI=]PQ;]-M6#TMO M9RE:4I?6_")2SS36G"'JWC"U)*/W,YL_)0L@EVF,6JDDUA.9?I=0]K8M:J6#WN(DSG!#,W:?E3?( MO;G#U@;`&0J:>@'RMVWXW%^;24HV)@^48)Y(9"#2./)DA)99F]!B4$D48)(M M@HYA@!I"3(CY>3;?E,4DGN!>U@71^J:9T>XLBDJ(6H6:/93$2;M7/V8U$=75 MZ=?K++Q8:IFEB*1]1O_AN*JLY5SXS`UA\6VEPUE4[;.@B]$WS<+7J3;/HJ9_ MK\G,!-&IZAQA^\&9L?8 MQAI,#P(*G<8L032`E[4X:=/K"*;HJ`141)<>%N!S("(/$:#IW><`LP_Q2,BO M&?R:5KV>5:Q"(Q@%CT!.[6%X%"LTSD]047XX/AJIN6A/-/LPQ;^D^[44/#[GEP:^5BUY MO!JOBM62%'HTO?/1T>#@@.9W/C@XTS][9S^8$IVFE%S*I^1"U+TO;^]/ M@?[8Q#T[UFGF_&GZ3JV6JG@DWECFXT88=#P,28Q6\H6;90W[BDO`J='\.^H> M_N&W=1YC2^,^M5'+D#?F.C(;%\2<.0N/6U:=V"L9/G'0\_9'B"YFM[ MH(9JMBPN`COB^<'I8'R&D'MZ,C@XK%L2QT;G_X?"HQ7*S$O2..%KO?KVTR^/M;RU,:]<#-%:]06S1&U3!K6*M&C2%88UIP MN7'*V2V`%J+-(@I6VXUB(,FITZIV1=A*;DJ7,`Q_&WS-^,$X[!Y??$]N2Y+V MRF41<$XDNXE3GY`)]$%V^=S@.:?IV5O?-F4O.`B^%S+6A`U\GJ5 MZV:%3[X"QPA%Z=?0/#T8'QKM#LU&P,P3GHY"@$E7& M9\V,8%DC4UC4J=V,CA"&/,`G?P'<]K%+'DV7H9LK$CUO7LN+&+7E1>2)')\, MQL0::562R0!\UD*?GJ`E,4&T/5MA2U(" MH7'Y'*T@\!7=#^79>!?CYUH@MA92'T%$L6F^2M@K'Z/`7$#^T%^0;1TMU*0! MS0$7J;ZGFN;(23)?/GWU_(NG+XUZITMPB8!)CL@(FH]H)9$M0#`)),LGK M[S``*I%PJ`2=?9"')M0^$/$5+S6P?K3V2H?ZQ3W=&.VQ?`G$99JG:!WA%@M- M)N^S&(Z8-;9EFQ(R\ M$M5GF((^Q%'C_%0.YN&)'$P3C^WZ4;]5[6:]2R_6@WZH-RWS^93@K($PXG)3 MC]D1I[MM5MI>1_U.*>7'Q@2;@1>L1E0%2;CLKGW[[(]_>JF%'/SR789XQ$F\ M-$FUZ"MO!*_QV=G@$)GY@Z.3P9&N<@`TD4MI80>RM)>"H9:0X2*XW_424V4@ M`WE5X#6;^8TS,#G!A7T::DZP=N%\3OH(95AOOJRR*!>D%WHH6A/&H*XVL M%YXQUO_;NRO,D7.[XER)@(K\B!9[H#771',N_/<-=4*C,Y2:2" M28D35""/EC7SJ1UG^KBFQ,70-_YS/1P.HC?]OL*FWWO''"PHT-'#"3O>U6Y# MP+1=O5Z846Q+$P'8\>A\(!Z9SQR(79.ZHG[[^_=^VR/U'(@>1IPWM/U+Z*75";+5Z$;N M[^_391[6^X28_HJ/%2U9\>;RD=]`::AS<.EP[AM;QAV4K*U>%`PH\P^S1@87[ M5`T!"WN,2"I!5SY,.5DJ4NW(6^;MD!P=C,<4=W!X>';B?$RA>LE9W\J:CH7P MXZ;3%:3$6Y.`T>;A^`'UU1%!#I(<*6XPNAUG6&R[YF9'/O*.6'9>BZ,QAAWT M#X_&QX/QN*ZMZ+H,FN/>K8H+:XF[M=#CC)(C^"O+JLC3C9['9[_PZ3%VZ2]Z"Y9\%T:?![^ MZ:$`%4B]YW7=K94+_\GEOJA=FK/\%'&9ZQS.#H';'7DEF4#6@V2]WD& MQ_/'N%KIK\0#A9P)'LV[GM#8GHY%"[^TD-K@!G3P1_K+^./3LVE@JK1H1GWH'6(XAQ,1A`VV#G7%: M*M9-A[$Z0889TO%/\;+#VHU13O].-S/RO8AO5O@E+_(A3$:X,5611GZKE=U=?[0 MS]U%-K5G5FF/37!W++**RH5:),[(X%:(7O#EDK2U;^-LE;1:`I#=B8T-`!EM MQ)*Z4IOWA/5W7EU&F[YNYX>H`U'^"`FY?.=LLO[1\S13967>K+RJWS,W0J2` MD)ON+\Y<'?==0M!0$N=JX3#J=^O9X*X*E'*T)V@ M<31),:5A*5:4=.H#<954`EVL-#43NR2HDQ]>$@7BO&>:NL0Y>"*&ZX+H9(%% M'U``%%881+047F,V-.Z`K@7D&&EEUQ)#](!Z?(`A09,JJ&]TXE62A#OO#SH< M.@#^=2+9K(Q5S63#,O?V\IE/U>_UKA/L]>J>>;E>'.QA3M0LMN]:$&#-'6_W M!7+*2(KTF6,PU3P3\5E<0^(%A;;ZQ%G&*.F.B5@.BUS=MO2[L:Y"+SAOGWN6 M`45>2GA7Z!`*8^WYT3Q&-(KN8CY=%@9@TP5JQ>5F3./]E!O9OP('2!TEK$,M M^+'3J>:UF'!X5]HK#ZZ81<>Z?5Q$](CSL^T3M>'3?'Q*GB0G1R>.=%/6@L5- MM\1-PEV0JJP]=LW(4):E*1OT,V!7C#;'MA>"S]*90VBLS\4T`^V;&^3%"K=0 M4PM0AC8:%3\BNY2EN&4\UY-C$$A@KFC%.G#&*W:,C:R9GV6"8=WIH%O>=I88 MPUES(D7Q1S20Y0XF@UB\#%8T3&VGPF(_Y9?T/,"W0[YZUQV].=OLO6['[!8%'NX',5W9`MH@5PQZZIG$>C#9,(R2 M2@PH=.\!A4CRUJ&"XF`,>WU2WHHR!/MVGE8Q2_ M#;Q>:^K,T$KH(SE;X@6IX1AM)>UE28A[B),O<$M"=I$W0PI M.4Z1&Q)<4K`C)&$@ZJP@(&S9)QMD;O<)WK?N$[QOW2G\CP^);)P>'ZFFPBVO&T4DB!7JT4<;>#I\H<2ZM@8;EF## M"C07@(=W,N;AG1QJ7I66?`Y]8UXEH0)X)^0IT8BS=+:<8@5L.E)TQY61+=)& M3#O10J4-=L5\F\91L5AR+D87IAO%M>(XZ)A4/)5 M:#VC*&%\[3.MF#R7]@,\RBJ=LA?IZ9EU2]$,-^K#L@R=6@JKKC,8]D62(?_# M&8:6P7K9'8Z=?N7QTU>/GXNB##?U4LKC9L9H*;VD%`NZHV>'B/=AL.C'_Z:J,:!Y^M&5MN/26QPA3WA=&P\V>7KJD=-R& MO,9F'T4/:/V8$P<"_BJC^+AYOIJK8Z%/OWG1Q:K8-$,9OGO\ M_/G73ZP@IO-#9;3-4&1ZA3FD\22#N7L'$7/A=X&9H8"1GF]R_0HWX#&,3D2Q M#!%,D!(.>TTEN)E%IK8208%L85WQD,+R>]BP1D47S:J3*,*[-Q0T2ECH^ M.".,>G9\Z!3XJWP)FY^G?TVZA(=K(A&)>&5]!;6DF[M!KZ]+($D4HD2^IK"W M50V[5;4I4PW93R#PTSF]Z/HL>,#9Z$OZ=U`#B*^^?O'UMR][ROT<`_=#TSPY M=M,L$R(,FA6[)O3@UYXIYF=*7\Q$?T_QO28#40L'[:$V96958M%$XZP;C*5, MB1\D?Z)Y1=)-SR#>7Q5^ M\A4>I2@["/?>QR-'N;'WF`$%S(LH,G35$X,NG\XAQI'L:[0PBZ"HV?49Q8U/ MHXLED?;7N5.OH]AWF69)ECDA M\?B4TD<=GH]&@3??^\`>T8[I&A.MX4GGKM9=!-B"6:X*,47E=?^,[D@;(@OO M*!U%X"#609SXJ4:5N=O/\:9W:I*$?T4K9Z>#`S2!G8_/!L?G9FJ(-:JP6^WQ MO:A:_FM5H-?(YS(/5D$$B_!?WWW]\@N;67U)S9**SK5=!2I=8"0>X*7N"6DL M_,1;X/&]B>DGW2'&#C;M_QB:);QMM[=O!SNO:A:D"JVI>`3G:>Y<,?UON0_& M9`[&;Y3UG[BO;NJ3N_HO(JI6O9XTSIF]>N&MP\S7T0$Q37)RV[LUJV.6!&)D MGE,P7;I=)71F\1E^"D!OZ6.6[_.=;CQ(`]1>O8\<*2:?6F93%\HL!H$0VU2] M0;27(!A@7O%NA2E]JGIRBA:]#BZ$=-30Z3CRCV4!;F`08M"3D77AC,ZVZ^=&8?*QC6/L-,9E<\(T)I_`ZG9=P6&$O\U"T"YOZ.B]OW.I-NEM'68L M7;H=Q?)WZ[*N$]ZPMF[9W")76M' MBL-W:`4CA:/,&?I.#D[(9]]/SQBYV9H>PTW6.J^D;#?F:9O).<;T/]6@KX9^6M*&"7DK:TW2/GM M[>U*PDU_.Q+Q=L*]>42M3(6@OCO2[V>U*U(_C%9O(M/; MMS#PZ'(P/ M89CGH[&+_D1J-Y^'N6Y1C>>UQJJHG7BMN.J6PR]CU:_K]U'X?;3?O`?>??+] M;51<1UZ[W!OC<[=>QZ[SU[7?Q$JZT<;*[JM#5K0>^QQ8_)+ MO/JA^WB.3\!'3-L8B9B_$B-Q>?K$J MK.0W#,2"LDS,TRQT*T.P!YUC.XXP,/H%_ MHQI!;_N/..A9\8K@[A4VT^T%UF3RO*-02G$3$(^/A03JH[,2>O]6Z*BDP`F$ MYO&WWY*]%$/]V8V)K^UB#T%Q'9%T`/K^MH:=NV'E/0Q)*A+$](EJFKRUXEFD9PG<_2\T@F9:2$V2-^Q MWK4KV7#D7@C*[UU$LP2VAKE[O#BF6D+9+=83XZU(USS:FIQ<('069F=,W"'* M`XTQ"0ETV5TGE!I:$`&:-8IR.2PN)2-)%DWC*GGH`YSSB"!A5:PJ`T\#=D<" MB>7C)3JZ4KHQ#8YKP%X9S0K.57[#R9?+A(2W=9*6L)0H$^4)X*,]!NWCT0'Z M:?=/S@DM>G18J7&92*:]C`=8"N<1NA'6ADYKW82WH7S=N*-:X,Z[,%2+0FWY MAX8?"*07^W1D).F\M,"W-@!,:PY6/H-%<8W7OEXGT>^?/H.S MQ88&]K:@BVZJI6^@*K(5!Y5]2W!AEHT..D8LW>>K\D"N8X?TNW5^%F M/;N,OOWBR:LO_O?C)R\):-&63?9M\KI#1PG*X".)NKS7.<;!8DR;CC)Y%T^= MGR1F>(@QYWT-U/D.EW=RI2XEG-7$7F:Z%..<\/426'F`J":O5B3L2_X'27[H MUS3EJZ1,0\OXFJ\5QN1B?G2WXWA%]`*:,@I4@(?6?L\FNZ6Q60T_L%G3F])^:#SQCDAV\Y:O_.!YZSODN__I#-&(_NIYTNF M]]/.%KOT_]1S!=1V"QCTB>XRS13S[?-G+UZ^>OSE[Y_]\;NOOWLAS!IPE$E, M&6#(8`WT\B\5YMB(V7'W-!)PN/*#5^_\Z '7@D!A/L``"\5 ` end -- Sven Wischnowsky wischnow@informatik.hu-berlin.de