Introducing E! version 1.0
- Posted by Roderick Jackson <rjackson at CSIWEB.COM> Jun 04, 1999
- 930 views
Yeehaw! Here's something I think you all are going to love! I actually got this idea a few weeks ago, but only recently finished implementing it. Basically, E! is an interactive Euphoria interpreter. That's right... you get a DOS screen and a prompt, and can enter and execute Euphoria commands one at a time. Even use it in a Win95/NT window as an overpowered calculator if you like. No, I didn't actually write an interpreter from scratch. I actually "cheated", since it uses the standard public edition (or complete, if you own it) version of Euphoria released by RDS. Once you take a look at it and grasp the concept, you'll see how I managed to write it in *very* little time. So how does it work? -- Simply run the E!.EX file with your copy of Euphoria. It needs no include files or libraries, and should be completely 2.0 compatible. -- At the prompt, enter any Euphoria command you like. Note that illegal commands will obviously crash things, and that "x += 1" won't work if you're running on version 2.0 of Euphoria. (You will also probably want to stay away from graphics commands.) -- When defining a function, procedure or type, you can use multiple lines. The program will cache everything until the "end" statement, then execute the declaration at once. An 'f', 'p', or 't' will appear before the prompt to indicate that input is being cached. There is no need to declare the routines as global... all of them are automatically "globalized". -- When constructing a "while" or "for" loop, or an "if" statement, you can use multiple lines. Nesting is taken into account, and all input is cached until an "end", etc. is entered at the outer level. A number will appear before the prompt, indicating the level of nesting that is currently active. (In other words, if you enter "if (x) then", a 1 will appear before the prompt. If you then enter a "if (y) then", a 2 will appear before the prompt. You will then need to enter "end if" twice in order for the first "if" statement to be complete.) Note that only the "end" is checked for, not the word that comes after it. This may be addressed in future versions. -- When declaring variables or constants, you MUST declare them as global if you want to make any use of them. This will be addressed in future versions. -- You may include any file by simply entering "include filename.e" -- To quit the program, enter "bye", and everything will shut down smoothly. (There's also an added "help" command, but right now it doesn't do anything.) -- All statements are logged. Once you're done with your session, you will find "LOG.E" in your C:\ (root) directory. It will contain all of the statements and comments you entered in your last session (excluding "bye" and "help".) If you ever want to reenter all of your commands from the last session, simply rename the file to something else (like "oldlog.e"), then run E!, and make your first input: "include c:\oldlog.e". -- If you experience a crash, you may find an XQnnnnnn.e file in your C:\ directory, a temporary file used by the program. You can just delete it. -- Finally, the program can only handle 1,000,000 total inputs (an "include" or cached statement is considered one input). Hopefully, that'll last most folks for the entire length of their sessions... Tell me what you think. I'll try to work on enhancing it, but I still need to finish my 3D engine, so don't expect rapid development (no pun intended). Also, there's no documentation for it yet; I'll probably put the above comments into a text file and submit it with the code to the website this weekend. Have fun, Rod Jackson begin 600 e!.ex M#0H@+2TM+2TM+2TM+2T-"B M+2!%(2!V+C$N, T*("TM#0H@+2T@26YT97)A M8W1I=F4@175P:&]R:6$@26YT97)P<F5T97(-"B M+0T*("TM($-R96%T960@ M36%Y(#$X+" Q.3DY(&)Y(%)O9"!*86-K<V]N#0H@+2T-"B M+2!4:&ES('-O M960@92$N='AT(&9I;&4L#0H@+2T@(" @;W(@8V]N=&%C="!T:&4@875T:&]R M(&]F('1H:7,@<')O9W)A;2!A=#H-"B M+2 @(" @("!R;V1J86-K<V]N0&)I M9V9O;W0N8V]M+ T*("TM(" @(&]R(&-O;G1A8W0@=&AE(&-R96%T;W)S(&]F M($5U<&AO<FEA(&%T.@T*("TM(" @(" @(')D<T!H;W1M86EL+F-O;0T*("TM M#0H@+2T@5&\@9V5T(&AE;' @=VAI;&4@<G5N;FEN9RP@='EP92 G:&5L<"<L M('1Y<&4@)V)Y92<L('1H96X@<')E<W,@16YT97(N#0H@+2T-"B M+2TM+2TM M+2TM#0H-"F=L;V)A;"!C;VYS=&%N="!X<5-4051%345.5%]43U],3T<@/2 Q M9U]F;BP@>'%0<F]M<'0-"F=L;V)A;"!O8FIE8W0@('AQ=&5M< T*#0H@+2TM M"@T*(" @:68@*&, at /2 G("<I(&]R("AC(#T@.2D@;W(@*&,@/2 Q,"D@;W(@ M*&,@/2 Q,RD@;W(@*&,@/2 P*2!T:&5N#0H@(" @("!R971U<FX@,0T*(" @ M96QS90T*(" @(" @<F5T=7)N(# -"B @(&5N9"!I9@T*#0IE;F0@='EP90T* M("AS97%U96YC92!3=')I;F<I#0H-"B @(&EN=&5G97(@3 T*+2UT<F%C92@Q M*0T*(" @3" ](&QE;F=T:" H4W1R:6YG*0T*(" @=VAI;&4@*$P@/B P*2!D M;PT*(" @(" @:68@*'AQ5VAI=&5S<&%C92 H4W1R:6YG6S%=*2D@=&AE;@T* M(" @(" @(" @4W1R:6YG(#T@4W1R:6YG6S(N+DQ=#0H@(" @(" @("!,(#T@ M3" M(#$-"B @(" @(&5L<V4-"B @(" @(" @(&5X:70-"B @(" @(&5N9"!I M9@T*(" @96YD('=H:6QE#0H-"B @(&EF("AL96YG=&@@*%-T<FEN9RD@/2 P M*2!T:&5N#0H@(" @("!R971U<FX@4W1R:6YG#0H@("!E;F0@:68-"@T*(" @ M3" ](&QE;F=T:" H4W1R:6YG*0T*(" @=VAI;&4@*'AQ5VAI=&5S<&%C92 H M4W1R:6YG6TQ=*2D@9&\-"B @(" @($P@/2!,("T@,0T*(" @(" @4W1R:6YG M(#T@4W1R:6YG6S$N+DQ=#0H@("!E;F0@=VAI;&4-"@T*(" @<F5T=7)N(%-T M<FEN9PT*#0IE;F0@9G5N8W1I;VX@+2T@96YD('AQ5')I;5-P86-E<R H*0T* M>%-T871E;65N=$UE<W-A9V4@*"D-"@T*(" @<'5T<R H,2P@(EQN7&Y9;W4@ M:&%V92!U<V5D('5P(&%L;" Q+# P,"PP,# @<W1A=&5M96YT("(@)@T*(" @ M(" @(" @(" @(F5X96-U=&EO;G,N7&Y4:&%N:R!Y;W4@9F]R('5S:6YG($4A M7&Y<;B(I#0H@("!C;&]S92 H>'%L;V=?9FXI#0H@("!A8F]R=" H,"D-"@T* M96YD('!R;V-E9'5R92 M+2!E;F0@>'%$:7-P;&%Y36%X4W1A=&5M96YT365S M<V%G92 H*0T*#0H@+2TM+2TM+2TM+0T*#0IG;&]B86P@<')O8V5D=7)E('AQ M1&ES<&QA>45N=')Y("@I#0H-"B @(&-L96%R7W-C<F5E;B H*0T*(" @<'5T M<R H,2P@(D4A7&Y);G1E<F%C=&EV92!%=7!H;W)I82!I;G1E<G!R971E<EQN M7&Y#<F5A=&5D("(@)@T*(" @(" @(" @(" @(DUA>2 Q."P at ,3DY.2!B>2!2 M;V0@2F%C:W-O;EQN7&Y"87-E9"!O;B!T:&4@175P:&]R:6$@(B F#0H@(" @ M(" @(" @(" B<')O9W)A;6UI;F<@;&%N9W5A9V5<;F9R;VT@4F%P:60@1&5V M96QO<&UE;G0@(B F#0H@(" @(" @(" @(" B4V]F='=A<F4B*0T*(" @<'5T M<R H,2P@(EQN7&XB*0T*#0IE;F0@<')O8V5D=7)E("TM(&5N9"!X<41I<W!L M87E%;G1R>2 H*0T*#0H@+2TM+2TM+2TM+0T*#0H@+2T@;F5E9"!T;R!A9&0@ M8VAE8VMS('1O(&%U=&]M871I8V%L;'D@<')E<&5N9" G9VQO8F%L)R!T;R!V M87)I86)L90T*("TM(&1E8VQA<F%T:6]N<R H<W5C:"!A<R G:6YT96=E<B<L M("=O8FIE8W0G+" G871O;2<L("=S97%U96YC92<I#0IG;&]B86P@9G5N8W1I M;VX@>'%'9715<V5R26YP=70@*"D-"@T*(" @:6YT96=E<B @3F]T1&]N95=I M=&A);G!U="P@3 T*(" @<V5Q=65N8V4@5&5X="P@0VQE86Y497AT+"!R970L M('1E;7 L(&QO9W1E;7 -"@T*(" @3F]T1&]N95=I=&A);G!U=" ](#$-"B @ M('1E;7 @/2 B(@T*(" @;&]G=&5M<" ]("(B#0H-"B @('=H:6QE("A.;W1$ M;VYE5VET:$EN<'5T*2!D;PT*(" @(" @<'5T<R H,2P@>'%0<F]M<'0@)B B M/B B*0T*(" @(" @5&5X=" ](&=E=',@*# I#0H@(" @("!P=71S("@Q+" B M7&XB*0T*(" @(" @0VQE86Y497AT(#T@>'%4<FEM4W!A8V5S("A497AT*0T* M(" @(" @3" ](&QE;F=T:" H0VQE86Y497AT*0T*(" @(" @:68@*$P@/2 P M*2!T:&5N#0H@(" @(" @(" @+2T@8F%S:6-A;&QY+"!I9VYO<F4@96UP='D@ M:6YP=71S#0H at (" @(" @("!.;W1$;VYE5VET:$EN<'5T(#T@,0T*(" @(" @ M(" @<F5T(#T@>U1E>'0L("(B?0T*(" @(" @96QS90T*#0H@(" @(" @("!I M9B H3" ^(#DI('1H96X-"B @(" @(" @(" @(&EF("AC;VUP87)E("A#;&5A M;E1E>'1;,2XN.5TL(G!R;V-E9'5R92(I(#T@,"D@86YD#0H@(" @(" @(" @ M(" @(" H>'%7:&ET97-P86-E("A#;&5A;E1E>'1;,3!=*2D@=&AE;@T*(" @ M(" @(" @(" @(" @(" M+2!M87)K('1H870@=V4G<F4@:6X@82!P<F]C961U M<F4L('1H96X@:V5E<"!U;G1I; T*(" @(" @(" @(" @(" @(" M+2!W92!H M:70@86X@(F5N9"(-"B @(" @(" @(" @(" @('1E;7 @/2 B9VQO8F%L("(@ M)B!#;&5A;E1E>'0-"B @(" @(" @(" @(" @(&QO9W1E;7 @/2!497AT#0H@ M(" @(" @(" @(" @("!#;&5A;E1E>'0@/2 B(@T*(" @(" @(" @(" @(" @ M5&5X=" ]("(B#0H@(" @(" @(" @(" @("!X<5!R;VUP=" ]("=P)PT*(" @ M(" @(" @(" @(" @3" ](# -"B @(" @(" @(" @(&5N9"!I9@T*(" @(" @ M(" @96YD(&EF#0H-"B @(" @(" @(&EF("A,(#X@."D@=&AE;@T*(" @(" @ M(" @(" @:68@*&-O;7!A<F4@*$-L96%N5&5X=%LQ+BXX72PB9G5N8W1I;VXB M*2 ](# I(&%N9 T*(" @(" @(" @(" @(" @*'AQ5VAI=&5S<&%C92 H0VQE M86Y497AT6SE=*2D@=&AE;@T*(" @(" @(" @(" @(" @(" M+2!M87)K('1H M870@=V4G<F4@:6X@82!F=6YC=&EO;BP@=&AE;B!K965P('5N=&EL#0H@(" @ M(" @(" @(" @(" @("TM('=E(&AI="!A;B B96YD(@T*(" @(" @(" @(" @ M(" @=&5M<" ](")G;&]B86P@(B F($-L96%N5&5X= T*(" @(" @(" @(" @ M(" @;&]G=&5M<" ](%1E>'0-"B @(" @(" @(" @(" @($-L96%N5&5X=" ] M("(B#0H@(" @(" @(" @(" @("!497AT(#T@(B(-"B @(" @(" @(" @(" @ M('AQ4')O;7!T(#T@)V8G#0H@(" @(" @(" @(" @("!,(#T@, T*(" @(" @ M(" @(" @96YD(&EF#0H@(" @(" @("!E;F0@:68-"@T*(" @(" @(" @:68@ M*$P@/B U*2!T:&5N#0H@(" @(" @(" @("!I9B H8V]M<&%R92 H0VQE86Y4 M97AT6S$N+C5=+")W:&EL92(I(#T@,"D@86YD#0H@(" @(" @(" @(" @(" H M>'%7:&ET97-P86-E("A#;&5A;E1E>'1;-ETI*2!T:&5N#0H@(" @(" @(" @ M(" @(" @("TM(&5I=&AE<B!N;W1E('=E)W)E(&EN(&$@;F5W(&YE<W1I;F<N M+BX-"B @(" @(" @(" @(" @(&EF("AX<5!R;VUP=" ]("<@)RD@=&AE;@T* M(" @(" @(" @(" @(" @(" @=&5M<" ]($-L96%N5&5X= T*(" @(" @(" @ M(" @(" @(" @;&]G=&5M<" ](%1E>'0-"B @(" @(" @(" @(" @(" @($-L M96%N5&5X=" ]("(B#0H@(" @(" @(" @(" @(" @("!497AT(#T@(B(-"B @ M(" @(" @(" @(" @(" @('AQ4')O;7!T(#T@)S$G#0H@(" @(" @(" @(" @ M(" @("!,(#T@, T*(" @(" @(" @(" @(" @96QS:68@*'AQ4')O;7!T(#P@ M)V8G*2!T:&5N#0H@(" @(" @(" @(" @(" @+2T@96QS92!C;VYT:6YU92!N M97-T:6YG("AA<W-U;6EN9R!W92=R92!N;W0@:6X@80T*(" @(" @(" @(" @ M(" @("TM('1Y<&4L(&9U;F-T:6]N(&]R('!R;V-E9'5R92D-"B @(" @(" @ M(" @(" @(" @('AQ4')O;7!T(#T@>'%0<F]M<'0@*R Q#0H@(" @(" @(" @ M(" @(" @("!,(#T@, T*(" @(" @(" @(" @(" @96YD(&EF#0H@(" @(" @ M(" @("!E;F0@:68-"B @(" @(" @(&5N9"!I9@T*#0H@(" @(" @("!I9B H M3" ^(#0I('1H96X-"B @(" @(" @(" @(&EF("AX<5=H:71E<W!A8V4@*$-L M96%N5&5X=%LU72DI('1H96X-"B @(" @(" @(" @(" @(&EF("AC;VUP87)E M("A#;&5A;E1E>'1;,2XN-%TL(G1Y<&4B*2 ](# I('1H96X-"B @(" @(" @ M(" @(" @(" @(" @+2T@;6%R:R!T:&%T('=E)W)E(&EN(&$@='EP92P@=&AE M;B!K965P('5N=&EL#0H@(" @(" @(" @(" @(" @(" @("TM('=E(&AI="!A M;B B96YD(@T*(" @(" @(" @(" @(" @(" @=&5M<" ](")G;&]B86P@(B F M($-L96%N5&5X= T*(" @(" @(" @(" @(" @(" @;&]G=&5M<" ](%1E>'0- M"B @(" @(" @(" @(" @(" @($-L96%N5&5X=" ]("(B#0H@(" @(" @(" @ M(" @(" @("!497AT(#T@(B(-"B @(" @(" @(" @(" @(" @('AQ4')O;7!T M(#T@)W0G#0H@(" @(" @(" @(" @(" @("!,(#T@, T*(" @(" @(" @(" @ M(" @96YD(&EF#0H@(" @(" @(" @("!E;F0@:68-"B @(" @(" @(&5N9"!I M9@T*#0H@(" @(" @("!I9B H3" ^(#,I('1H96X-"B @(" @(" @(" @(&EF M("AC;VUP87)E("A#;&5A;E1E>'1;,2XN-%TL(FAE;' B*2 ](# I('1H96X- M"B @(" @(" @(" @(" @(" M+2!F;W(@<FEG:'0@;F]W+"!D;R!N;W1H:6YG M#0H@(" @(" @(" @(" @("!497AT(#T@(B(-"B @(" @(" @(" @(" @($-L M96%N5&5X=" ]("(B#0H@(" @(" @(" @(" @("!,(#T@, T*(" @(" @(" @ M(" @96QS:68@*'AQ5VAI=&5S<&%C92 H0VQE86Y497AT6S1=*2D@=&AE;@T* M(" @(" @(" @(" @(" @:68@*&-O;7!A<F4@*$-L96%N5&5X=%LQ+BXS72PB M9F]R(BD@/2 P*2!T:&5N#0H@(" @(" @(" @(" @(" @(" @("TM(&5I=&AE M<B!N;W1E('=E)W)E(&EN(&$@;F5W(&YE<W1I;F<N+BX-"B @(" @(" @(" @ M(" @(" @(&EF("AX<5!R;VUP=" ]("<@)RD@=&AE;@T*(" @(" @(" @(" @ M(" @(" @(" @=&5M<" ]($-L96%N5&5X= T*(" @(" @(" @(" @(" @(" @ M(" @;&]G=&5M<" ](%1E>'0-"B @(" @(" @(" @(" @(" @(" @($-L96%N M5&5X=" ]("(B#0H@(" @(" @(" @(" @(" @(" @("!497AT(#T@(B(-"B @ M(" @(" @(" @(" @(" @(" @('AQ4')O;7!T(#T@)S$G#0H@(" @(" @(" @ M(" @(" @(" @("!,(#T@, T*(" @(" @(" @(" @(" @(" @96QS:68@*'AQ M4')O;7!T(#P@)V8G*2!T:&5N#0H@(" @(" @(" @(" @(" @(" @+2T@96QS M(" @(" @(" @(" @(" @(" @("TM('1Y<&4L(&9U;F-T:6]N(&]R('!R;V-E M9'5R92D-"B @(" @(" @(" @(" @(" @(" @('AQ4')O;7!T(#T@>'%0<F]M M<'0@*R Q#0H@(" @(" @(" @(" @(" @(" @("!,(#T@, T*(" @(" @(" @ M(" @(" @(" @96YD(&EF#0H@(" @(" @(" @(" @("!E;'-I9B H8V]M<&%R M92 H0VQE86Y497AT6S$N+C-=+")E;F0B*2 ](# I('1H96X-"B @(" @(" @ M(" @(" @(" @(" M+2!F:7)S="P@8VAE8VL@=&\@<V5E(&EF(&ET)W,@96YD M:6YG(&$@='EP92P-"B @(" @(" @(" @(" @(" @(" M+2!P<F]C961U<F4L M(&]R(&9U;F-T:6]N#0H@(" @(" @(" @(" @(" @("!I9B H>'%0<F]M<'0@ M/2 G="<I(&]R("AX<5!R;VUP=" ]("=P)RD@;W(-"B @(" @(" @(" @(" @ M(" @(" @("AX<5!R;VUP=" ]("=F)RD@=&AE;@T*(" @(" @(" @(" @(" @ M(" @(" @("TM('-I;F-E(&ET(&ES+"!J=7-T(&-L;W-E('1H:6YG<R!O9F8- M"B @(" @(" @(" @(" @(" @(" @('AQ4')O;7!T(#T@)R G#0H@(" @(" @ M(" @(" @(" @(" @("!#;&5A;E1E>'0@/2!T96UP("8@(B B("8@0VQE86Y4 M97AT#0H@(" @(" @(" @(" @(" @(" @("!497AT(#T@;&]G=&5M<" F("(@ M(B F(%1E>'0-"B @(" @(" @(" @(" @(" @(" @($P@/2 P#0H@(" @(" @ M(" @(" @(" @("!E;'-I9B H>'%0<F]M<'0@(3T@)R G*2!T:&5N#0H@(" @ M(" @(" @(" @(" @(" @(" @+2T@:70G<R!A(&-O;G1I;G5A=&EO;BP@<V\@ M<W5B=')A8W0@82!N97-T:6YG#0H@(" @(" @(" @(" @(" @(" @("!X<5!R M;VUP=" ]('AQ4')O;7!T("T@,0T*(" @(" @(" @(" @(" @(" @(" @:68@ M*'AQ4')O;7!T(#T@)S G*2!T:&5N#0H@(" @(" @(" @(" @(" @(" @(" @ M(" @+2T@=V4G<F4@;W5T(&]F('1H92!N97-T:6YG+"!S;R!W92!F:6YI<V@@ M=7 -"B @(" @(" @(" @(" @(" @(" @(" @('AQ4')O;7!T(#T@)R G#0H@ M(" @(" @(" @(" @(" @(" @(" @("!#;&5A;E1E>'0@/2!T96UP("8@(B B M("8@0VQE86Y497AT#0H@(" @(" @(" @(" @(" @(" @(" @("!497AT(#T@ M;&]G=&5M<" F("(@(B F(%1E>'0-"B @(" @(" @(" @(" @(" @(" @(&5N M9"!I9@T*(" @(" @(" @(" @(" @(" @(" @3" ](# -"B @(" @(" @(" @ M(" @(" @(&5L<V4-"B @(" @(" @(" @(" @(" @(" @(" M+2!W92!C86XG M=" G96YD)R!W:71H;W5T(&-O;G1I;G5A=&EO;BXN+@T*(" @(" @(" @(" @ M(" @(" @(" @("TM('-O('=E(&-A=7-E(&$@<WES=&5M+6QE=F5L(&%B;W)T M#0H@(" @(" @(" @(" @(" @(" @("!X<5!R;VUP=" ]("<@)PT*(" @(" @ M(" @(" @(" @(" @(" @3" ](# -"B @(" @(" @(" @(" @(" @(&5N9"!I M9@T*(" @(" @(" @(" @(" @96YD(&EF#0H@(" @(" @(" @("!E;F0@:68- M"B @(" @(" @(&5N9"!I9@T*#0H@(" @(" @("!I9B H3" ^(#(I('1H96X- M"B @(" @(" @(" @(&EF("AC;VUP87)E("A#;&5A;E1E>'1;,2XN,UTL(F)Y M92(I(#T@,"D@=&AE;@T*(" @(" @(" @(" @(" @("TM(&5X:70@=&AE('!R M;V=R86T-"B @(" @(" @(" @(" @(&-L;W-E("AX<6QO9U]F;BD-"B @(" @ M(" @(" @(" @(&EF("AX<4-U<G)&3G5M(#X@,"D@=&AE;@T*(" @(" @(" @ M(" @(" @(" @>'%T96UP(#T@<W!R:6YT9B H(B4P-F0B+"!X<4-U<G)&3G5M M("T@,2D-"B @(" @(" @(" @(" @(" @('-Y<W1E;2 H(F1E;"!C.EQ<>'$B M("8@>'%T96UP("8@(BYE(BP@,BD-"B @(" @(" @(" @(" @(&5N9"!I9@T* M(" @(" @(" @(" @(" @86)O<G0@*# I#0H@(" @(" @(" @("!E;'-I9B H M8V]M<&%R92 H0VQE86Y497AT6S$N+C)=+")I9B(I(#T@,"D@86YD#0H@(" @ M(" @(" @(" @(" @(" H>'%7:&ET97-P86-E("A497AT6S-=*2D@=&AE;@T* M(" @(" @(" @(" @(" @3" ](# -"B @(" @(" @(" @(" @(" @+2T@96ET M:&5R(&YO=&4@=V4G<F4@:6X@82!N97<@;F5S=&EN9RXN+@T*(" @(" @(" @ M(" @(" @:68@*'AQ4')O;7!T(#T@)R G*2!T:&5N#0H@(" @(" @(" @(" @ M(" @("!T96UP(#T@0VQE86Y497AT#0H@(" @(" @(" @(" @(" @("!L;V=T M96UP(#T@5&5X= T*(" @(" @(" @(" @(" @(" @0VQE86Y497AT(#T@(B(- M"B @(" @(" @(" @(" @(" @(%1E>'0@/2 B(@T*(" @(" @(" @(" @(" @ M(" @>'%0<F]M<'0@/2 G,2<-"B @(" @(" @(" @(" @(&5L<VEF("AX<5!R M;VUP=" \("=F)RD@=&AE;@T*(" @(" @(" @(" @(" @("TM(&5L<V4@8V]N M=&EN=64@;F5S=&EN9R H87-S=6UI;F<@=V4G<F4@;F]T(&EN(&$-"B @(" @ M(" @(" @(" @(" M+2!T>7!E+"!F=6YC=&EO;B!O<B!P<F]C961U<F4I#0H@ M(" @(" @(" @(" @(" @("!X<5!R;VUP=" ]('AQ4')O;7!T("L@,0T*(" @ M(" @(" @(" @(" @96YD(&EF#0H@(" @(" @(" @("!E;F0@:68-"B @(" @ M(" @(&5N9"!I9@T*#0H@(" @(" @("!I9B H3" ^(#$I('1H96X-"B @(" @ M(" @(" @(&EF("AC;VUP87)E("A#;&5A;E1E>'1;,2XN,ETL(BTM(BD@/2 P M*2!T:&5N#0H@(" @(" @(" @(" @(" @+2T@8F%S:6-A;&QY+"!I9VYO<F4@ M8V]M;65N=',-"B @(" @(" @(" @(" @($-L96%N5&5X=" ]("(B#0H@(" @ M(" @(" @("!E;F0@:68-"B @(" @(" @(&5N9"!I9@T*#0H@(" @(" @(" @ M#0H@(" @(" @("!I9B H>'%0<F]M<'0@(3T@)R G*2!T:&5N#0H@(" @(" @ M(" @("!T96UP(#T@=&5M<" F("(@(B F($-L96%N5&5X= T*(" @(" @(" @ M(" @;&]G=&5M<" ](&QO9W1E;7 @)B B("(@)B!497AT#0H@(" @(" @("!E M;'-E#0H@(" @(" @(" @+2T@;W1H97)W:7-E+"!W92=R92!D;VYE('=I=&@@ M;W5R(&EN<'5T#0H at (" @(" @(" @("!.;W1$;VYE5VET:$EN<'5T(#T@, T* M(" @(" @(" @(" @<F5T(#T@>U1E>'0L($-L96%N5&5X='T-"B @(" @(" @ M(&5N9"!I9@T*#0H@(" @("!E;F0@:68@+2T@96YD(&]F(&-H96-K(&9O<B!A M;B!E;7!T>2!I;G!U= T*#0H@("!E;F0@=VAI;&4-"@T*(" @<F5T=7)N(')E M= T*#0IE;F0@9G5N8W1I;VX@+2T@96YD('AQ1V5T57-E<DEN<'5T*"D-"@T* M36%I;B H*0T*#0H@("!S97%U96YC92!X<5-T871E;65N=%1O3&]G+"!X<5-T M871E;65N=%1O17@-"B @(&EN=&5G97(@('AQ;F5X=%]F;@T*#0H@("!X<71E M;7 @/2!X<4=E=%5S97));G!U=" H*0T*(" @>'%3=&%T96UE;G14;TQO9R ] M17@@(#T@>'%T96UP6WAQ4U1!5$5-14Y47U1/7T5870T*#0H@("!I9B H>'%# M=7)R1DYU;2 ^(# I('1H96X-"B @(" @('AQ=&5M<" ]('-P<FEN=&8@*"(E M,#9D(BP@>'%#=7)R1DYU;2 M(#$I#0H@(" @("!S>7-T96T@*")D96P@8SI< M7'AQ(B F('AQ=&5M<" F("(N92(L(#(I#0H@("!E;F0@:68-"@T*(" @>'%T M96UP(#T@<W!R:6YT9B H(B4P-F0B+"!X<4-U<G)&3G5M*0T*#0H@("!X<6YE M>'1?9FX@/2!O<&5N("@B8SI<7'AQ(B F('AQ=&5M<" F("(N92(L(")W(BD- M"@T*(" @<'5T<R H>'%N97AT7V9N+"!X<5-T871E;65N=%1O17@@)B B7&XB M*0T*#0H@("!I9B H>'%#=7)R1DYU;2 \(#DY.3DY.2D@=&AE;@T*(" @(" @ M>'%T96UP(#T@<W!R:6YT9B H(B4P-F0B+"!X<4-U<G)&3G5M("L@,2D-"B @ M(" @('!U=',@*'AQ;F5X=%]F;BP@(E%W97)T>4IU;DM?36%I;B H*5QN:6YC M;'5D92!C.EQ<>'$B("8-"B @(" @(" @(" @(" @(" @(" @('AQ=&5M<" F M("(N95QN(BD-"B @(&5L<V4-"B @(" @('!U=',@*'AQ;F5X=%]F;BP@(GAQ M"@T*(" @8VQO<V4@*'AQ;F5X=%]F;BD-"@T*(" @<'5T<R H>'%L;V=?9FXL M('AQ4W1A=&5M96YT5&],;V<@)B B7&XB*0T*#0H@("!X<4-U<G)&3G5M(#T@ M>'%#=7)R1DYU;2 K(#$-"@T*96YD('!R;V-E9'5R92 M+2!E;F0@47=E<G1Y M2G5N2U]-86EN("@I#0H-"B M+2TM+2TM+2TM#0H-"GAQ0W5R<D9.=6T@/2 P M#0IX<6QO9U]F;B @(#T@;W!E;B H(F,Z7%QL;V<N92(L(G<B*0T*>'%0<F]M M<'0@(" ]("<@)PT*#0H@+2TM+2TM+2TM+0T*#0IX<41I<W!L87E%;G1R>2 H M*0T*47=E<G1Y2G5N2U]-86EN("@I#0H-"B M+2TM+2TM+2TM#0H-"FEN8VQU 49&4@8SI<>'$P,# P,# N90T*#0HI ` end