www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.announce - DMD front end starter kit

reply "Ben Hinkle" <ben.hinkle gmail.com> writes:
I started a few project that needed the dmd front end code so I got the 
source for the DMD front-end into a standalone form and have put it on my 
website as a "starter kit" for others to build D parsers and analyzers. Get 
it at
http://home.comcast.net/~benhinkle/dmdfe
There is a pre-built program that just prints debugging parsing and semantic 
information but that program by itself is not very useful. Hopefully it will 
be easy for people to customize for different tools but if there's something 
I can do to improve the starter kit let me know.

Currently only Windows is supported (but that's probably just becuase I 
haven't made a Makefile for Linux yet). The project is GPL.

Happy Tooling!

-Ben 
Apr 01 2005
next sibling parent reply "Charlie" <charles jwavro.com> writes:
Coolness :) , do you have a script or some automation for this ?

Charlie


"Ben Hinkle" <ben.hinkle gmail.com> wrote in message
news:d2jie3$nl1$1 digitaldaemon.com...
 I started a few project that needed the dmd front end code so I got the
 source for the DMD front-end into a standalone form and have put it on my
 website as a "starter kit" for others to build D parsers and analyzers.

Get
 it at
 http://home.comcast.net/~benhinkle/dmdfe
 There is a pre-built program that just prints debugging parsing and

semantic
 information but that program by itself is not very useful. Hopefully it

will
 be easy for people to customize for different tools but if there's

something
 I can do to improve the starter kit let me know.

 Currently only Windows is supported (but that's probably just becuase I
 haven't made a Makefile for Linux yet). The project is GPL.

 Happy Tooling!

 -Ben

Apr 01 2005
parent reply "Ben Hinkle" <bhinkle mathworks.com> writes:
"Charlie" <charles jwavro.com> wrote in message 
news:d2jsas$12eo$1 digitaldaemon.com...
 Coolness :) , do you have a script or some automation for this ?

no but it's a good idea. I emailed Walter some changes to get the #includes working so that I didn't have to worry about including total.h or something. Other than that I uncommented some printf's to get some debugging output and the rest is right out of the dmd.zip. Hopefully with new versions of dmd it shouldn't be much work to plop it in.
Apr 01 2005
parent reply "Charlie" <charles jwavro.com> writes:
 Hopefully with new versions of dmd it
 shouldn't be much work to plop it in.

Yea it will help alot I think. Thanks for doing this! Charlie "Ben Hinkle" <bhinkle mathworks.com> wrote in message news:d2jue1$146c$1 digitaldaemon.com...
 "Charlie" <charles jwavro.com> wrote in message
 news:d2jsas$12eo$1 digitaldaemon.com...
 Coolness :) , do you have a script or some automation for this ?

no but it's a good idea. I emailed Walter some changes to get the

#includes
 working so that I didn't have to worry about including total.h or

something.
 Other than that I uncommented some printf's to get some debugging output

and
 the rest is right out of the dmd.zip. Hopefully with new versions of dmd

it
 shouldn't be much work to plop it in.

Apr 01 2005
parent reply "Ben Hinkle" <bhinkle mathworks.com> writes:
"Charlie" <charles jwavro.com> wrote in message 
news:d2k1bk$1798$1 digitaldaemon.com...
 Hopefully with new versions of dmd it
 shouldn't be much work to plop it in.

Yea it will help alot I think. Thanks for doing this!

no problem. I'm working on getting a basic dlint going and hooking it up to the emacs mode for error and warning highlighting. That and I want to write a reflection API generator. It's also fun to see just how much of phobos gets sucked in when you import std.string :-)
Apr 01 2005
parent reply "Charlie" <charles jwavro.com> writes:
 I'm working on getting a basic dlint going and hooking it up to
 the emacs mode for error and warning highlighting

Coolness.
 That and I want to write
 a reflection API generator.

Now this sounds fun :). Have you started getting some ideas down on it ? I'd like to hear 'em ( are you going to add meta-data to the executable ? If so where you going to put it so D doesnt require a new exe format ? ) C "Ben Hinkle" <bhinkle mathworks.com> wrote in message news:d2k6r0$1cpr$1 digitaldaemon.com...
 "Charlie" <charles jwavro.com> wrote in message
 news:d2k1bk$1798$1 digitaldaemon.com...
 Hopefully with new versions of dmd it
 shouldn't be much work to plop it in.

Yea it will help alot I think. Thanks for doing this!

no problem. I'm working on getting a basic dlint going and hooking it up

to
 the emacs mode for error and warning highlighting. That and I want to

write
 a reflection API generator.
 It's also fun to see just how much of phobos gets sucked in when you

import
 std.string :-)

Apr 01 2005
next sibling parent reply "Ben Hinkle" <bhinkle mathworks.com> writes:
"Charlie" <charles jwavro.com> wrote in message 
news:d2kbrj$1hu4$1 digitaldaemon.com...
 I'm working on getting a basic dlint going and hooking it up to
 the emacs mode for error and warning highlighting

Coolness.
 That and I want to write
 a reflection API generator.

Now this sounds fun :). Have you started getting some ideas down on it ? I'd like to hear 'em ( are you going to add meta-data to the executable ? If so where you going to put it so D doesnt require a new exe format ? )

I was going to read in class source and write out D code for class(es) that implement a reflection API that resembles Java's reflection API. In other words if the input source code looks like class Foo { int x; void bar() {} } then the output class looks something like class FooClass : Class { this() { fields ~= new Field("x",typeid(int),Access.Public); methods ~= new Method("bar",<signature>, Access.Public); } Object newInstance(){ return new Foo(); } ... } static this() { registerClass("Foo",...); } You have to compile the reflection class and link it in with any class that you want reflected. I haven't thought about how exactly the registration happens or all the signature stuff will work etc etc but I figure something along these lines should work out. The front end should have all the info about members and constructors that one would need.
Apr 01 2005
parent reply "Charlie" <charles jwavro.com> writes:
 I was going to read in class source and write out D code for class(es)

that
 implement a reflection API that resembles Java's reflection API. In other
 words if the input source code looks like

Ahh cool didnt know Java did it like this. Attached is a simple php script to convert the front-end to be compilable by MSVC. It doesnt catch everything ( sys/time.h ) but it should catch most things. Charlie "Ben Hinkle" <bhinkle mathworks.com> wrote in message news:d2kd45$1j2b$1 digitaldaemon.com...
 "Charlie" <charles jwavro.com> wrote in message
 news:d2kbrj$1hu4$1 digitaldaemon.com...
 I'm working on getting a basic dlint going and hooking it up to
 the emacs mode for error and warning highlighting

Coolness.
 That and I want to write
 a reflection API generator.

Now this sounds fun :). Have you started getting some ideas down on it


?
 I'd like to hear 'em ( are you going to add meta-data to the executable


?
 If so where you going to put it so D doesnt require a new exe format ? )

I was going to read in class source and write out D code for class(es)

that
 implement a reflection API that resembles Java's reflection API. In other
 words if the input source code looks like

   class Foo {
     int x;
     void bar() {}
   }

 then the output class looks something like

   class FooClass : Class {
     this() {
       fields ~= new Field("x",typeid(int),Access.Public);
       methods ~= new Method("bar",<signature>, Access.Public);
     }
     Object newInstance(){ return new Foo(); }
     ...
   }
   static this() { registerClass("Foo",...); }

 You have to compile the reflection class and link it in with any class

that
 you want reflected. I haven't thought about how exactly the registration
 happens or all the signature stuff will work etc etc but I figure

something
 along these lines should work out. The front end should have all the info
 about members and constructors that one would need.

begin 666 convert_for_msvc.php M/#\-" T*9G5N8W1I;VX <W1R:7!?97AT96YS:6]N*"1F:6QE*0T*>PT*"0T* M"21P;W, /2!S=')R<&]S*"1F:6QE+"(N(BD[#0H):68 *"$D<&]S*2!R971U M<FX (B([#0H)96QS92!R971U<FX <W5B<W1R*"1F:6QE+"1P;W,K,2D[#0H- M"GT-" T*9G5N8W1I;VX 9FEL95]W<FET92 D9FEL92P )&-O;G1E;G1S("D- M"GL-" T*"21F<" ](&9O<&5N*"1F:6QE+")W(BD[#0H)9F]R96%C:" H)&-O M;G1E;G1S(&%S("1L:6YE("D-" E[#0H)"69W<FET92 D9G L("1L:6YE("D[ M#0H)"0T*"7T-" T*"69C;&]S92 D9G I.PT*#0I]#0H-"F9U;F-T:6]N(&EN M<V5R=%]D969I;F4H)&9I;&4L)&QI;F4 *0T*>PT*"21L:6YE<R ](&9I;&4H M)&9I;&4I.PT*"21N97=,:6YE<R ](&%R<F%Y*"1L:6YE*3L-" DD86QL3&EN M97, /2!A<G)A>5]M97)G92 D;F5W3&EN97,L("1L:6YE<RD[#0H)#0H)9FEL M95]W<FET92 D9FEL92PD86QL3&EN97, *3L-" T*?0T*"0T*#0H-"F-L87-S M($U35D-#;VYV97)T#0I[#0H-" EV87( )&-A8VAE9&ER(#T (B([#0H)=F%R M("1I;F-L=61E1FEL97, /2!A<G)A>2 I.PT*"79A<B D<V]U<F-E1FEL97, M/2!A<G)A>2 I.PT*"0T*"69U;F-T:6]N('!O<'5L871E*"D-" E[#0H)"0T* M"0EI9B H)&AA;F1L92 ](&]P96YD:7(H)'1H:7,M/F-A8VAE9&ER*2D >PT* M#0H)"0EC:&1I<B D=&AI<RT^8V%C:&5D:7(I.PT*#0H-" D)"7=H:6QE(" M*"1F:6QE(#T <F5A9&1I<B D:&%N9&QE*2D (3T](&9A;'-E("D-" D)"7L- M" D)"0EI9B H<W1R<W1R*"1F:6QE+"(N8W!P(BD (3T 9F%L<V4 *0T*"0D) M"7L-" D-" D)"0D)87)R87E?<'5S:" D=&AI<RT^<V]U<F-E1FEL97,L)&9I M;&4I.PT*+R\)"0D)"7!R:6YT(")F:6QE<R Z("1F:6QE7&XB.PT*"0D)"7T- M" D)"0EE;'-E(&EF(" ('-T<G-T<B D9FEL92PB+F B*2 A/2!F86QS92 I M( T*"0D)"7L-" D)"0D)87)R87E?<'5S:" D=&AI<RT^:6YC;'5D949I;&5S M+"1F:6QE*3L-" T*"0D)"7T-" T*"0D)?0T*#0H)"0EC;&]S961I<B D:&%N M9&QE*3L-" D)?0T*#0H-" T*"7T-" T*"69U;F-T:6]N(&-O<'E#=&]#<' H M*0T*"7L-" T*"0EI9B H)&AA;F1L92 ](&]P96YD:7(H)'1H:7,M/F-A8VAE M9&ER*2D >PT*#0H)"0EC:&1I<B D=&AI<RT^8V%C:&5D:7(I.PT*#0H)"0EW M:&EL92 H(" D9FEL92 ](')E861D:7(H)&AA;F1L92DI("$]/2!F86QS92 I M#0H)"0E[#0H)"0D):68 *"!S=')I<%]E>'1E;G-I;VXH)&9I;&4I(#T](")C M(B I#0H)"0D)>PT*#0H)"0D)"21C<'!&:6QE(#T <W5B<W1R*"1F:6QE+# L M<W1R;&5N*"1F:6QE*2 M(#( *3L-" D)"0D))&-P<$9I;&4 +CT (BYC<' B M.PT*"0D)"0ER96YA;64H)&9I;&4L)&-P<$9I;&4 *3L-" T*"0D)"7T-" D) M#0H)"0E]#0H)"0D-" D)"6-L;W-E9&ER*"1H86YD;&4I.PT*"0E]#0H-" T* M"7T)#0H)9G5N8W1I;VX 8V]N=F5R=" I#0H)>PT*"0DD<&%T=&5R;B ]("(O M*'5N<VEG;F5D*3]<<RIL;VYG(&QO;F<O(CL-" D))&-O;7!L97A0871T97)N M(#T (B]I;F-L=61E(#QC;VUP;&5X+F ^+R([#0H)"21S=69F:7A,3" ]("(O M*#!X6UQD02U&72LI*%4I/TQ,+R([#0H)"21N86X /2 B+TY!3B\B.PT*"0DD M:6YF:6YI='D /2 B+TE.1DE.2519+R([#0H-" D))')E<&QA8V5M96YT(#T M(B!?7VEN=#8T(CL-" T*"0DD86QL1FEL97, /2!A<G)A>5]M97)G92 D=&AI M<RT^:6YC;'5D949I;&5S+"1T:&ES+3YS;W5R8V5&:6QE<RD[#0H)"0T*#0HO M+W5G;'D ;F5S=&EN9RP 9&ED;G0 =V%N="!T;R!S<&5N9"!T;V\ ;75C:"!T M:6UE(&]N('1H:7,-" D)9F]R96%C:" H)&%L;$9I;&5S(&%S("1F:6QE("D M#0H)"7L-" D)"0T*"0D))&YE=TQI;F5S(#T 87)R87DH*3L-" D)"21L:6YE M<R ](&9I;&4H)&9I;&4I.PT*"0D)#0H)"0EF;W)E86-H(" )&QI;F5S(&%S M("1L:6YE("D-" D)"7L-" D)"0EP<F5G7VUA=&-H*"1P871T97)N+"1L:6YE M+"1M871C:&5S*3L-" D)"0D-" D)"0EI9B H8V]U;G0H)&UA=&-H97,I("D M#0H)"0D)>PT*"0D)"0DD;F5W3&EN92 ]('!R96=?<F5P;&%C92 D<&%T=&5R M;BPD<F5P;&%C96UE;G0L)&QI;F4I.PT*"0D)"7T-" D)"0EE;'-E('L-" T* M"0D)"0EP<F5G7VUA=&-H*"1C;VUP;&5X4&%T=&5R;BPD;&EN92PD;6%T8VAE M<RD[#0H)"0D)#0H)"0D)"6EF("AC;W5N=" D;6%T8VAE<RD *2 -" D)"0D) M>PT*"0D)"0D))&YE=TQI;F4 /2 B(VEN8VQU9&4 /&-O;7!L97 ^7&XB.PT* M"0D)"0E]#0H)"0D)"65L<V4 #0H)"0D)"7L-" T*"0D)"0D)<')E9U]M871C M:" D<W5F9FEX3$PL)&QI;F4L)&UA=&-H97,I.PT*"0D)"0D)#0H)"0D)"0EI M9B H8V]U;G0H)&UA=&-H97,I("D #0H)"0D)"0E[#0H)"0D)"0D))&YE=TQI M;F4 /2!P<F5G7W)E<&QA8V4H)'-U9F9I>$Q,+"(D,4PB+"1L:6YE*3L-" T* M"0D)"0D)?0T*#0H)"0D)"0EE;'-E( T*"0D)"0D)>PT*#0H)"0D)"0D)<')E M9U]M871C:" D;F%N+"1L:6YE+"1M871C:&5S*3L-" D)"0D)"0T*"0D)"0D) M"6EF("AC;W5N=" D;6%T8VAE<RD *2 -" D)"0D)"0E[#0H)"0D)"0D)"21N M97=,:6YE(#T <')E9U]R97!L86-E*"1N86XL(BTP+C(B+"1L:6YE*3L-" T* M"0D)"0D)"7T-" T*"0D)"0D)"65L<V4 #0H)"0D)"0D)>PT*#0H)"0D)"0D) M"7!R96=?;6%T8V H)&EN9FEN:71Y+"1L:6YE+"1M871C:&5S*3L-" D)"0D) M"0T*"0D)"0D)"0EI9B H8V]U;G0H)&UA=&-H97,I("D #0H)"0D)"0D)"7L- M" D)"0D)"0D)"21N97=,:6YE(#T <')E9U]R97!L86-E*"1I;F9I;FET>2PB M+3 N,R(L)&QI;F4I.PT*"0D)"0D)"0D)#0H)"0D)"0D)"7T-" D)"0D)"0D) M96QS92 D;F5W3&EN92 ]("1L:6YE.PT*"0D)"0D)"7T-" D)"0D)"7T-" D) M"0D)?0T*"0D)"0D-" D)"0D)#0H)"0D)?0T*#0H-" D)"0EA<G)A>5]P=7-H M*"1N97=,:6YE<RPD;F5W3&EN92D[#0H-" D)"7T-" D)"0T*"0D)9FEL95]W M<FET92 D9FEL92PD;F5W3&EN97, *3L-" T*"0E]#0H-" T*"7T-" D-" T* M"69U;F-T:6]N(')E<&]R=%!R;V)L96US*"D-" E[#0H-" D))'!A='1E<FX M/2 B+W5N<VEG;F5D(&DO(CL-" D))&-O;7!L97A0870 /2 B+VEN8VQU9&4 M/&-O;7!L97 N:#XO(CL-" D)9F]R96%C:" H)'1H:7,M/G-O=7)C949I;&5S M(&%S("1F:6QE("D #0H)"7L-" D)"21L:6YE3F\ /2 P.PT*#0H)"0DD;&EN M97, /2!F:6QE*"1F:6QE*3L-" D)"0T*"0D)9F]R96%C:" H("1L:6YE<R!A M<R D;&EN92 I#0H)"0E[#0H)"0D))&QI;F5.;RLK.PT*"0D)"7!R96=?;6%T M8V H)'!A='1E<FXL)&QI;F4L)&UA=&-H97,I.PT*"0D)"0T*"0D)"6EF("AC M;W5N=" D;6%T8VAE<RD *2 -" D)"0E[#0H)"0D)"0T*"0D)"0EP<FEN=" B M56YS:6=N960 :2!I;B!F:6QE(" )&9I;&4 *2!L:6YE3G5M8F5R(" )&QI M;F5.;R I(&9O=6YD7&XB.PT*"0D)"0D-" D)"0E]#0I<#0H)"0D)<')E9U]M M871C:" D8V]M<&QE>%!A="PD;&EN92PD;6%T8VAE<RD[#0H)"0D)#0H)"0D) M:68 *&-O=6YT*"1M871C:&5S*2 I( T*"0D)"7L-" D)"0D)#0H)"0D)"7!R M:6YT(")I;F-L=61E(&-O;7!L97 N:"!I;B!F:6QE(" )&9I;&4 *2!L:6YE M3G5M8F5R(" )&QI;F5.;R I(&9O=6YD7&XB.PT*"0D)"0D-" D)"0E]#0H- M" D)"7T-" D)"0T*#0H)"7T-" T*"7T-" D-" DO+R!A;&EA<R!I<VYA;B!T M;R!?:7-N86X-" DO+R!A;&EA<R!A;&QO8V$ =&\ 7V%L;&]C80T*#0H)9G5N M8W1I;VX :6YS97)T06QI87-E<R I#0H)>PT*"0EI;G-E<G1?9&5F:6YE*")C M;VYS=&9O;&0N8W!P(BPB(VEN8VQU9&4 /&9L;V%T+F ^7&Y<;B-D969I;F4 M:7-N86X 7VES;F%N7&Y<;B(I.PT*#0H)"21A;&Q&:6QE<R ](&%R<F%Y7VUE M<F=E*"1T:&ES+3YI;F-L=61E1FEL97,L)'1H:7,M/G-O=7)C949I;&5S*3L- M" D)9F]R96%C:" H("1A;&Q&:6QE<R!A<R D9FEL92 I#0H)"7L-" D)"6EN M<V5R=%]D969I;F4H)&9I;&4L(B-I;F-L=61E(#QM86QL;V,N:#Y<;B(I.R O M+R!F;W( 86QL;V-A#0H)"7T-" D)#0H-" E]#0H-" EF=6YC=&EO;B!-4U9# M0V]N=F5R=" D8V%C:&5D:7)?*2![( T*"0DD=&AI<RT^8V%C:&5D:7( /2 D M8V%C:&5D:7)?.R -" D))'1H:7,M/F-O<'E#=&]#<' H*3L-" D))'1H:7,M M/G!O<'5L871E*"D[#0H)?0T*"0T*#0H-" T*?0T*#0H-"B1C;VYV(#T ;F5W M($U35D-#;VYV97)T*"(N(BD[#0HD8V]N=BT^8V]N=F5R=" I.PT*)&-O;G8M M/FEN<V5R=$%L:6%S97,H*3L-"B1C;VYV+3YR97!O<G10<F]B;&5M<R I.PT* M#0H_/ T*#0HO+R!N;W1E<R -"B\O('EO=2!N965D('1O(&1R;W =&AI<R!I M;B!T:&4 <V]U<F-E(&1I<F5C=&]R:65S(&%N9"!R=6X :70-"B\O(&YE960 M=&\ 8V]M;65N="!O=70 :6YC;'5D97, =&\ 8V]M<&QE>"YH#0HO+R!-4U9# M(&1O97-N="!L:6ME(')E9&EF;FET:6]N<R!O9B H:2D :6X 9F]R(&)L;V-K M<RP <V\ ;F5E9"!T;R!C;W)R96-T('1H:7,-"B\O(&QO;F< ;&]N9R!I="!D M;V5S;G0 ;&EK92P 8VAA;F=E9"!T;R!?7VEN=#8T#0HO+R!C;W!Y(&%L;" N 18R!F:6QE<R!T;R N8W!P#0H` ` end
Apr 01 2005
parent "Ben Hinkle" <ben.hinkle gmail.com> writes:
"Charlie" <charles jwavro.com> wrote in message 
news:d2kj5p$1on1$1 digitaldaemon.com...
 I was going to read in class source and write out D code for class(es)

that
 implement a reflection API that resembles Java's reflection API. In other
 words if the input source code looks like

Ahh cool didnt know Java did it like this.

For more info about the Java API for the curious check out http://java.sun.com/j2se/1.5.0/docs/guide/reflection/spec/java-reflection.doc.html#8589 Basically you query the JVM for Class, Field, Method and Constructor objects and can apply them to instances or use them to construct instances. Since D doesn't have a JVM the only thing that knows the class layout is the compiler and so I think the best way to do reflection is to feed more code through the same compiler.
 Attached is a simple php script to convert the front-end to be compilable 
 by
 MSVC.  It doesnt catch everything ( sys/time.h ) but it should catch most
 things.

nifty. I'll stick it in the zip file if you don't object.
Apr 01 2005
prev sibling parent reply "Ben Hinkle" <ben.hinkle gmail.com> writes:
"Charlie" <charles jwavro.com> wrote in message 
news:d2kbrj$1hu4$1 digitaldaemon.com...
 I'm working on getting a basic dlint going and hooking it up to
 the emacs mode for error and warning highlighting

Coolness.

Attached is a sneak-peak at dlint minor-mode in emacs (using the D major-mode). There are two warnings in the code- one about a function that should return a value that doesn't and another about a narrowing cast. I'll clean things up over the weekend and make another post when dlint (and the d-mode update) is ready. Thanks to Walter for the wonderful front-end code and warning implementation. -Ben ps -notice the cute little Dlint menu, too. It basically came for free from the mlint highlighter I'm using (written by my buddy Eric Ludlam - Emacs hacker extraordinaire) :-) begin 666 dlint-mode.PNG MB5!.1PT*& H````-24A$4 ```G ```&N" (```"?K:PV````!&=!34$``+&/ M"_QA!0``/MY)1$%4>%[MG7FT945][SO_N-X*YCUCU(>$Y!D>#FB8'*-$:144 MI] 8B(!(<#;,C2 T+="(C<V B#8TRHR "!IC< `;T :,&)]Y&$ 311 3#>H; M7"]9LK)<6??5OG5NW;HU[5_M4^?LZ7-6=:]S]ZE=]:M/U:[O_M;99^_?N.^> MNU?Q `$( `!"$! " )''7?R*B6H"[P ``$(0 `"$&A*8,.&#:M7KYX(JI)5 M$ 0 ``$(0 `"#0 J)Q#0 `"$( `! H0" CJ;^Y\Q)1INZ<>L=U3CU3IL4_3 MZ:C'/OVHWYJDH__S,Y;2+L?\%YV>><SCGGELE9Y5I=]^UG%5^L/C'E^EM8_? MM4J_H])NQZOT!)UV?X]*3U1I#Y5.>))*>^ITXG]]]B1M_^SW;O^<27KR<T_2 M:8?GJ71RE9Y_\N]6:9U*.[Y IU-V_*-3?D^G%Y[R^R]</TDO6O_?7O2^*NWU MOJ=4Z=2G_'&5_D"E%Y^FTDXZO>1TE?Z[2GNKM&%GE5;K=,9357IIE9[VTO<_ M[663]/27GZG3,_91Z0,Z[;*O2AM5>N8K=#KKF:\\ZUDZ[??!/S3I59MVU>G5 MFW9[]=E5>DV5=G_-.55Z[3E[5.G</5Y7I3U5^A.5SGNV2J^OTG->_Z$JK:G2 M<]=\^+G[5^EY*KWA?)V>K]*??D2E%ZAT $H7J/1'!^KTT1?^F4D?>]$;)VFO M S9/TL&;__C "ZMTR(4OKM)%57K312^ITI:7'+IE;YW>?+%*JW4Z[.,OU>G/ M5?K$RU0ZO$HO/_R2E[]EDO9YRZ7[O+5*^ZKT-I4N4^D5;]?I\E>J] Z=KMCO MG9/TJG==.4GOOO+5[[Y*I]?\A4I75^F(JU];I4^^]LA/ODZGHZY1Z4]T.OK: MU^MTC$K7K5'IV"KM?^RGJG1<E=YPW/5O6%NE/U7I^$_K=,![5+I!I0-5.D&E M&U7ZLQ-U^LP;W[N<#CKILSH=?+)*?ZG2(>MT^MPAIWSN39/T5X>N7TKO^_R; M=3KU\X>=^M=5.JU*?W[:354Z_:;#J_2%PS=4Z2TJG?%%E=ZJT_N_I-+;5#I3 MI2^_7:4/Z'3S.S9.TCLWWO+.LR;I71_\BD[OWJ32UBJ=O?4OJG2K2D><H]-M M1YQ[VY$ZG7?;4>?=/DD?NOWH#WVU2A_^ZC%5^MHQYU?I6)4^LDVEXW2ZX Z5 MUJKT497N/%ZEC^ETUWM4VERE$S9__80+)^G$B_Y&I_=N4>D;.IUTL4IWJW3R MQW7ZYLF?^.8ZG2[YVU-,NO1;ZW6Z[%OON^Q_5.GR*IUZ^;>K=,6W3ZO2WYUV M995.5^DJE?[G!I6NKM(95]]3I4]6Z?V?_,[[KZG2F2I=^_<Z?4"EZ^Y5::-* MGU+I/I7.NEZG^S_X:9.^N^F&23K[QN]-TF>^=\YG_J%*G_V'<ZOTCU7ZRW\\ MKTK?/^]SW_^03G_U`Y4^K-/G'SA?I[]6Z8<?4>FF*EUPTX,7?&&2/OJ%AS[Z MQ2I]3*4OJ?0CE39_6:>'+U3I9IU^?-$MD[3E*_\T25O_Z>*M_ZS3QV]5Z2=5 MNNTGGZC23S]Q^T\OT>FK_Z+2I3I][9'+=-JFTL\N5^F.*EUQQ\^K=&>5KKSS M%U?>5:6K5/KZ_]+IZK]1Z7^K]$F5OJ'2_U'IFKMU^K_7?G.2KOO;7W8\:3N+ MH"*H""J"6FDJ HJ (JB-9;M>4/?<\P_6KW_#CW]\^:]_?=NCCW[VIS_][-%' MOUJ9U]_?\7'[[+-+PL7B4'&H.%0<* X5AUK6H69=*J0N#LK-K]6TV5XU KJP M\*V%A;_[MW_[YJ]__8U___<O+BQ\>V'AG__C/[ZNQ/57O_KR+W_YZ7_]U^N^ M_.4S#CC A;ZR(J (*H**H"*H"&IQ015>**277I4T9N4W MI KQI!7;?N /7K M#SK\\)?NL,/C#COLD'7KCGCWNP]?O_[([W[W\_?>>^4CCUSWZ*,W+2Q\7Z6; M;EJ_^^X[VK**H"*H""J"BJ BJ!T1U,3/2FTAG*& &H'<???=3SKQZ'>]ZUUO M6WP=IM3UD$/..&/M7GL]_8M?O/A7O_KZSW]^S<+"G:T*ZK6W++OTGUUTR-)% M2:?=M\*\/WS[?NJZI TK-O[PZ M>=?7/%[/=?_SS3]EQP_WJW8-77_![9U1O M%N[X='5=THO6O^>.ZJ];WZ\O2KKAUN5R[S]17Y'TUFT/+FY\\-H+)Q<E;?SN MXH9?7/+V,YYZUO?L2![ZU,?5I4E<E,1%25R4Q$5)9W-1DOBBI%S':?(W%E2] MHVU8[2W:!VL9KO\.56OD?OOM=_BA;SCQQ!/7KEU[[.)+B>N^K]Y7?73222<= M<-":=>L.>O31K:T)ZJGW*FJWG#JYRO>)!]_VPX6%KYQ6:>KV6E"W7:>N]5V[ MK7K[E=.7!'7;]>8JWR5!7=BZ02*HGUY4T_M/J*[RU<JZJ*E:4!_^Q8,/;UNS M]^D[[[WE$O7^QRL%]:[/<I4O5_F:"WVYRI>K?*L+?1'4N0AJ<!77B*4MC8YL MVPKJZ&L30=UAAQW..77-IDV;-F[<>.:99YY^^NFO?.4K]WK.$Y[T^/^TUUY[ M'?K60W?>9><57Z.^]YYE-_;0+7L_[<C?VO^6!]2FAQZI_J]>WSERW7<F;Q^Z MY67/..9Q!RQF6'H]<-DY^F<SO[/^[Y>W_FCK/KL=?_37K&Q7G/?$/:Y1WE2I MZ;Y7_&SI WN//4U)[+W'KA#4\[<\K#[_V98W105UZ[;[%[9=7^M07WM-96<? MO&:S_MG,ZZ[]1?7GM9N7!'7;)7<MW+;Q])W??L>#=]UQ"8+*SV;XV0P_F^%G M,X5^-C.-0VTLJ,Y]>>URF BJ$LM]]ME'">IYYYUWSCGGK#]U_8N?]Z2;-C_C M.;L^5GWTJM>^:L_G[;DLJ&MN_L'"P \NV5C]#O6D2ED?N/2LB: NW'/DTX_: M^])'*N6[_4KU:]0C;Z_>WK+._AWJV1][2&U[9/.!Q_VV5E.EH]6/4,_=_+6M M1U]>J>8#EY^[_#M494]_=.N^!]WZPX6?77CP"4\\6+U14GK=5Q9-ZL2A& G> M]JGJIZ KEGQ_ON7-Z[1#W;KA^JUJU==9\K5D7KU52[XGW%EMNO7,I=^A?F!Q M9?C.&XV KOG =Q?NNO&]E:QN<05U4MHO+GU']5-4EGQ9\F7)ER5?'*K\=ZAM M":K15$>5&PKJQ1=?O'GQI315B:OM1Q_[V$I637K))?^R4H.4=EZQY%!OV7M) M4!^X[(..H+[LLD6AG;PJ03WZJXMRNW[YQ [[+ JJ?CUPQ7G5C1VTH.K_]S2" M^N&+?F0)ZN*2[Y-/U\N_GYH(JK?DNW7#NN.W+6R]H^8[U'I!?<F%ER W_/ = M:]2J+PX5AXI#Q:'B4'&HMDQ^?O%UXXTW7G_]]=OOL'WB%ZA:4"<.=>E.2;6" MJM7T <O.5K=).JK2T;" 5G=*>I^U"/RU:R:"6CG4>X]=%E3E4*M+D^SO4)_\ MIMO5=ZL+ZKHD[5!# JK7>]4K<5%2[9+OFN4[)2&HW"F).R5QIR3NE%3L3DFM M.-3"WZ'NLLLNMRV]'GGDD9J[$DZ^0+WG".O6 [6"NBBB6E!32[[J.]3)K0?? MN+7ZSE4)ZM)WJ,=:WZU69?WHME>LO"AIOZLJ=_O#JSZ2<* [/E^M^M8(ZE/V M2E^4M U!W8M;#W+K06X]R*T'9W#K05M0_0MW_6\W37[G2EV3L_:BI/)7^:K? MR1A!W;IUQ=6\87%=_!K5O):_0U47*$66?!_WS*N6?O?RR ,/31RJ?U&2_ YU M\E)KO.HNOGK5U[K*=\6]?'-^-J.6?-6]?(]?_'E,\Y_-J$M\$PYU*79^-L.] M?-6UOESERU6^7.6;=2_?:00U]LN9>?\.U1;4,S>>N>>>>Z97?97*SOO&#M62 MKWE5U_?J^^-S<WQNCL_-\;DY?G6+?&Z./XB;XS=>\JV]\U'B9S.)?9M<E+1F MS9H;;KA!>5/E4]>M6[?K[KO6/HMFWH+*TV9XV Q/F^%I,SQM9NA/FU&"JC1, M^-*W'A1F= 2UP5[2&SMLO_WV+WC!"]3]',X^^^S##CWT"4]Z`H+*X]N6GN#& MX]MX?!N/;^/Q;7-Z?)O2R)F^]#V/<JO(NU.2D<_'/.8QOZE> J>EXE"YER_W M\N5>OMS+EWOYEKV7;^-GJ\UA1ZE#E2BHDP=!15 15 050450$=3JL>,D"$ ` M`A" ``2R".CO8JN[Z<LOH,JJ ,P0 `$( "!,1! 4+'C$( `!" ` 0($$-0" M$,=PYD4;(0`!"$ 30!!15 A``$(0 `"!0A,(: WK=UCM[5?FL453+,K>1;1 M%BQS\_[Z_E ';K[[/OM]P2J:%56V1\J6)FQ1*Y4*8R,;!" P" ("054ST8K; M(.Z_1<]-T\Q0;IF[GG23=7; E)]?T9=.W-6$O,>)GXF:=%-R?A492Q\K&UN) M97CHG'_ *L/!?E_ O&FIQL^<M)M[2\L4'Q-G8S[!MM>.GZSJG,RQ?;/*',2Q MG3%$:2\$(%"" $Q0 TYTFADJO:]PBHRTOU+3Y8"5,JV*:L8T39#3MVM)U%AI MS_Y;=+'V>WE%\IRY#<_-'U3B17&MSB=J2ZO-8+=4.%JRRI23)"<$( "!)0*- M!-5WD!/;L])H)B '9S?;S2P[X&53)?)2]WC>;CG:_0]<\F>+-M$J^8#])\O7 MRS$L:MOBOB<=,&F>-I?+]E>XXFTW5BWD'G#^"D69?%H)_^2UVZ[+2P*: XUW M.:0JPNQ C&#;P3NMGBBZKG69 UK>SZXNJ';V^ D0SNSQF*"&N"TNJSC#H. " M`$5!``*C)B 3U-22KU("RU?)-<8NL]JK4I3)<J OV,)BER1PY3>[BQ%6T^N2 MWE=?3Z[0B26%6XZA4 ZM?"8JM==$WB;MW7+ 4L/3)VCVB8*.(>A9 QLK+"OQ MVB%91E8:3$!0O59;?;',H7';5_3=4E^8$R:?<+ 3XT?I"KR+HVHRG#QNDR9X MPX#S:PA ``(E", $U=$SQV$X<BL)RW>HOIR8+5F+=8',UB0^B6W)Q3I5.#%H M&39M7V$E95+JJY=SKF"+1TQE V<SRPU9,I$2[+&56+N-?JN7MV ;W;3M5>TA M074)"]:$:Y=\794-?O$_HR^J1WV&SA>W$! S 1*"*K>/P0F]5G6R!#6UY&NN M29Y&4/5TF2,M*^+WU#UXWI XF0B?,4RA<[6G$8[$-F_[DE(Z)V0S$M3$6:!S M7I5U+D)F"$ ``A$"4PNJO50KIQQ6A<E:W.2J(EM4<EQ1^*(DNT:]>#OYIM!> M^PTM^3K3_4UK#YQ<-JR^ZI-]9^Q7;2W5+D<;7?)=6 D/G7ED!S/=DF]V=>[) MA'514MJLRWO<&4O60L**"ZK]ZLPPD(];<D(``A"($YA>4/4EJ>:"&MDO4]T5 MN45E6OKEY1[Z$B%KHMRR>%F0[**DE=<-V=_++J^=+B]:3DI.7I0T^49VQ9)O M3CPK&CNIVES=,VFLO?;KO[?Q>A*E/Y3#F5Q%W.2BI.4KIZ35K6C[TOE'K4.] MY^Z,' \+JC<L3:6A83#F12K:# $(E"( $-1AG(_DK1OS-=A "3 ,AG$XTPH( M=)(` CI0Y>CD:"MU&MB\' 25 0$!",R,P& $=68$FT_NA 0!"$ `` ,B *#B M4"$``0A ``(%"""H!2!B4B$``0A ``((*H(*`0A ``(0*$ (*C_+_):X 4! M"$ ``A 8$(&8WF6Y[=6K5^O\".J A 9- 0`$( "!' ()0146HT44017B(AL$ M( `!" R30%I0)3X501WFR*!5$( `!""010!!S<)%9 A ``(0 $"8`(+*R( ` M!" ``0 4((" %H!($1" ``0 `($L055/UO"_5>4[5$81!" ``0A 8$$NJ.8Y M58ZF(J ,(PA ``(0 (!44)>?^KCXSM94!)5A! $(0 `"$! )JJ.F^D^CJ0 J MPP "$( `!" $M3TKU$15(81!" ``0A `$%E#$ ``A" ``1*$)!?E!3SJ3C4 M$OU &1" ``0 T',""&K/.Y#P(0`!"$" &P02 JJLI_#%S?&[T9E$`0$(0 `" M[1&(":K2R*P73YMIKP^I&0(0 `$.D" =LE7Q:C$4O(_ST/M0'\2` 0 ``$( MM$0 )J 2!;7SX%!;ZD"JA0`$( "!;A# H7:C'X "`A" ``1Z3J 3#O7*I_RR MYQBCX=]\UG8JS:YU^K953OG^EMD%0,D0 `$(* )C-2AEI)PB5A*\L2&HT0: M)7D8[A" ``0 ,&L"+3M4)6PZF7::/\U&^XU^[^QBMB2*LC\RE?KEQ'!KHVF2 MSA;<Z'RDL]7VHG.[9)T_N-'Y2&<SY9M=G!KMHH(?U49(! A ``(02!/HA$-U M_**MJ49!=3,<730;[48&Y=FAD.50'46T_PR*I9.A5E =B^D(I-]_OH+Z&FEO M291O9)OC! (0 `$IB30LD--*V+0I)H&^Y_ZI<6$,TM05;&^/=5UU0IJ+(\O M 4%S&5S.30NDUDBYH$XY - =`A" ``0T 8XZ5$<: ]HY3T&UATN60Q4*:DS_ M$%0.5 A ``)](8!#K9:1T[TE7/(UV=)+OOYUN<(E7Y.-)=^^'%W$"0$(C(I MRP[5OS[(ODPI>(&2?QV3ZC"['--_Z8N/ N4$^SYQ\9$VH/YO8^R-SJ=!0:V] M:, 775..76#L.J98^<%?W8SJ`*"Q$( `!$H1Z(1#E3>FUDW*BR*G(L!/;A & M$( `!$H1:-FA9C5#[BFSBB4S!" ``0A 8'H"/7.HTS>8$B ``0A ``*S(- G MASJ+]E,F!" ``0A H !'&H1C!0"`0A ``)C)X!#'?L(H/T0 `$(%"$``ZU M"$8* 0`$( "!L1/ H8Y]!-!^"$ ``A H0J 3#G7 ORZ=]?-0 X. 7Y<6.38H M! (0 $ 6 9$ZU%(27OLD&=49DCRQ/D,:LT8SF2$``0BT2*!EA^K?JR%XNT$- MR'^LFP&7N/6 V=&^F7XP?Z(;.O4\5.>F [7/0PW>I% WUG[$C7,;0NY*V.)A M2=40 $ ?"73"H?(\5'OHU#X/U0BAW-<Z]_LU:FI*B-UAN(]CFI A``$(M$* M98=JK*?=^,1C4)V'AZ=WU]XTB#5WR;=3ST/5 IH8+OZG09&N?:YJ*R.22B$` M`0CTE$!'':JCE#P/U1E>"&I/CS?"A `$!DP`A]J_YZ'.PJ&RY#O YRF00`" M\R'0LD/E>:A:';.>AYK('_S(O_+(&%SG(S/FN")I/H<?M4 ``D,BT F'* >: M^]VGO&1R2BZ& A($( `!",0(M.Q0LSJ&YZ%FX9)D3CACR>[D 0`$( `!0Z!G M#I6> P`$( `!"'230)\<:C<)$A4$( `!"$! $<"A, P ``$(0 `"!0C 4 M MI (0 `"$( `#I4Q``$(0 `"$"A `(=:`")%0 `"$( `!'"HC $(0 `"$(! M`0(XU (0*0("$( `!"" 0V4,0 `"$( `! H0P*$6 $ 1$( `!" ` 82 WG?/ MW<*T>O5JG7/#A WJ_2KU3I'5FQ(6&/H0 `$( "!P1!(.U1),[6((J 25N2! M``0 `('!$JA=\JTUJ0CJ8 <'#8,`!" ``3D!!%7.BIP0 `$( "!* $$E<$! M`0A ``(0*$ `02T`D2( ``$(0 `"""IC``(0 `$(%" `():`")%0 `"$( ` M!%H4U%4+"P72IH5-O4X,00A ``(0& 8!!+5E/1[&,*(5$( `!"" H"*H' 40 M `$(%" `(**H!881A0!`0A ``*=$-2=SMVI\?>IL2]0;SYK.Y6*?[VZ:M4J MNTSG3V%U]EX,00A ``(0& :!3 BJ7$U]Z4UH6#<%U=' 80PC6 $!"$ ``BT+ MJA)(G6Q--5N<CTQF>WNMH&JKZHBKV6AO-]F"NZB* GXTUZ0BJ!QU$( `! 9) MH&5!U3KJ^TY;,NU/<QVJHY=:?7UQ-:J<7BA&4 =Y#- H"$ ``D4(=%=0C6>= M1E!M_^J;4=^)IE>)IQ=4OX0BO4 A$( `!"#0.H$Q"FK:H2;6D*<75'_=N/41 M0 `0 `$(%"$0(\%53O7]'>HM4N^SAKOK!TJ EIDU%((!" ` 0X2:%E0 ]<9 MV5<J^5<M.5MJ?S:3OBA)?Z6J==2^4BFHK#C4#HY 0H(`!"#0$0(M"ZK\!S.Q MG,*??I;*QN]0.S)P"0,"$(! UP J'EW2BHBJ+:Z=VU $ \$( `!"#0C *#F M"6HIIVO*:=9M[ 4!"$ ``ETC * BJ%T;D\0#`0A H)<$6A347O(B: A ``(0 M $"0`(+*P( `!" ``0 4((" %H!($1" ``0 ``$$E3$``0A ``(0*$" EX*Z M>(^D7K[4KV[TJY?1$S0$( `!",0)]%)0Y1W:*>FU=11-E7<B.2$``0CT D#/ M!-6Z[^ RWJ5GO2V8-_HS[[Z&-3UB;CVH\MGO8[L9N]G =_J"BG/MQ0%#D!" M``1B!'HFJ$8IG?;84FJ[TER'JG34E&R_+SN O8402T+F=( ``$(S)G < 35 M )N;H#9SJ"SVSGF(4QT$( "!^1! 4%W.VIC.R)ZBIO,9UM0"`0A 8/X$1B2H MPN7?V0EJ^J(DEGSG/_JI$0(0 $!!`CT3U.!U1O:52OY52\'KF-($9V=/[55B M.P;4M."8IB (0 `"K1#HF:#.A]&,!#41/$O!\^E9:H$`!" P.P((Z JVDE_+ MS*XS*!D"$( `!/I+`$'M;]\1.00 ``$(=( ` MJASB 4"$ ``A#H+P$$M;]] M1^00 `$(- A` AJASJ#4" ``0A H+\$$-3^]AV10P`"$(! AP J!WJ#$*! M``0 `('^$FA94/G]97^'#I%#``(0 (!-H&5!5:& J8Q("$ ``A 8``$$=0"= M2!, ``$(0*!]` AJ^WU !!" ``0 , `"[0LJJ[X#&$8T`0(0 `$VA=4OD-E M%$(``A" P `((* #Z$2:``$(0 `"[1- 4-OO`R* ``0 `($!$&A94%GO'< 8 MH D0 `$(* (M"RH] $$( `!"$! & 00U&'T(ZV ``0 `(&6"2"H+7<`U4,` M`A" P# ((*C#Z$=:`0$(0 `"+1- 4%ON`*J'``0 `(%A$$!0A]&/M ("$( ` M!%HF *"VW %4#P$(0 `"PR" H ZC'VD%!" ``0BT3 !!;;D#J!X"$( `!(9! M`$$=1C_2" A ``(0:)D` MIR!U ]!" ``0 , P"".HQ^I!40 `$(- R`02U MY0Z > A ``(0& :!A*!N$+]6KUY]WSUWJZ3V4.]7J7>*CMX4JV 8^& %!" ` M`0A 0!.(Z9W2Q:P7 LJ( `$( "!41-(&$CC,[7;3/^/H(YZ&-%X"$ ``A"H M_0Y5HJ9F?9<E7T84!" ``0B,E `.=:0=3[,A``$(0* L`1QJ69Z4! $(0 `" M(R6 0QUIQ]-L"$ ``A H2P"'6I8GI4$``A" P$ )X%!'VO$T&P(0 `$RA+ MH9;E26D0 `$(#!2`KUTJ#N=NU.LN]1'B4^G[.2;S]HNMX15JU;5[E(V9E6C M?IEZ_2UV2+GY:YLSBPP2C+.HES(A``$(R D,T*'.3E#E6&TQD^Q5,.:8]I3: M+FE.\3P(:G&D% !"!0GT)I#U;;,"$GL3T=IG&P&A[T]+4[*96JC:>RF[3OU MIR:/*3^Q41<5-*^^#,3BU#'[5M7DMQMEL 5IE!+.+ TS-M=WQJI=:1-L^VF[ M'"> K'B*'R<4" $(0*"60)L.U1=+'6YLNRV?=L."8I-HN:VIMK ZHNAK9'!+ M4)AU[8X&).)TSBUJ.216B><OJ GE<Q:??2R.FMJ]AJ#6'KUD `$.D6 -8?J M:(8C-C&]K%4:7X]]W+X$VEMB)E65DY98_].$H#I1Q9IO.]0$HH0.F8]*"6UP M^,:<9;#26 &NE>%.'4($`P$(0$ 3:-.AVN+7!4%MYE#-2"HNJ FGGEC6+B6< M\B76M$#Z1YK0> JS<21#``(0Z B!EAVJUM3T&J\O'FFE27^':AM-QZKZ7Z8Z MG536H29<J6_$'4J=%53'7-8Z5)9\.S(1$ 8$(# ] 98=:E!0S<;T13K^5Y*Q M2WML3/;E1<$+E/QO6+4&^TO!?E&.XB8N2DH';SZU+SORKT4*?I,Z?X>J^-B7 M'1F-3%]A9&?3'93(KS^=?KA3` 0 `('9$6C?H<ZN;5TH>?XRT(J 3H-: DB2 M9YH8V!<"$(# ] 3:=ZC3MZ'+)<Q?"6RSZ#B_(*C<_$5HVV944N#\,4JB( \$ M( `!FP`.E?$``0A ``(0*$ `AUH`(D5 ``(0 `$<*B,`0A ``(0 $ !`CC4 M`A I` (0 `$((!#90Q ``(0 `$"A# H1: 2!$0 `$( "!3CA4?A3!0(0` M!" ` ;X3:-^AHJ9]'T/$#P$(0 `"BD#[#A5!92!"``(0 , `".!0!]")- $" M$( `!-HGT+)#Q9ZV/P2(``(0 `$2A# H9: 2!D0 `$(#!Z`BT[5,4?DSKZ M00 `"$ ``D, $,=0B_2! A ``(0:)U ^PX5D]KZ(" `"$ ``A"8GD#[#G7Z M-E "!" ``0A H'4"G7"HK5, ``A ``(0 ,"4!'"H4P)D=PA ``(0 $!%`(?* M.( `!" ``0 4((!#+0"1(B ``0A ``(X5,8`!" ``0A H `!'&H!B!0!`0A M``(0P*$R!B ``0A ``(%".!0"T"D" A ``(0 `.E3$``0A ``(0*$ `AUH` M(D5 ``(0 `$<*B,`0A ``(0 $ !`CC4`A I` (0 `$((!#90Q ``(0 `$ M"A# H1: 2!$0 `$( `!'"IC``(0 `$(%" ``ZU`$2* `$( `!".!0&0,0 M `$( "!` 1PJ 4 4 0$( `!"$ `A\H8 `$( `!"!0 $,M`)$B( `!"$ ` M`CA4Q `$( `!"$" ``$<: &(% $!"$ ``A 8A4/=Z=R=NMS3-Y^UG4I=CK!! M;))&#:_5JZQ7`VCL` $(])H`#G5%][4EO<.3%H6U0:,:[-*=PT^)J1V,\V=W MXB02"$! 1 0&[E"50.IDXS-;G(],9G^7('UMPK0&V.\;=)5=2(/=]2ZV*908 MQ%A%I=J5(!/$938* W? F^8$.=B9#:XT:MMNZO>U^1."*BFA<=>S(P0 T 4" MHW"HON^T)=/^-->AVHYJ&G?E:$#CD6%BF"88QUPV+LK11;\<R98TBABW8+_X M`MRX:<&HT X506T\JMD1`GTA,'"'JKLA**BFAZ875&/%&O=Z*6%V?&J[\3AR M)9'/7(6+<8L)JN--T]65=:B-^X(=(0"!OA 8KT-%4&O-GV-5<\=TWP4UM[U\ MAYI+C/P0&! !'.H*_YKK5FUOZNA'UA)?PJ$V*\?W7EGE&"F=IIPIEWPE;K76 MH0;7A$LMC#MS`4N^`YL<:0X$< D,W*$&KS.RKU3RKUH*7L>4P!I;[ZV]AL64 MJ2=]4XZC0[GEF%5-7^!S!T=0TH3Q)%IDUJ7MA =IU'KH1"W^1[/^#E5%&_O9 M3.[93&Y/D1\"$. " 5$XU/F#+C6!MEO.-/9T_LR[7*/P+*3+32 V"$" EL# M'6IM^V>4H=0$VE8Y0>^H'=B,B%$L!" ` ;X3P*'VO0>)'P(0 `$.D$`A]J) M;B"(& 'CE9TW$(,`!"#0-0(XU*[U"/% ``(0 $ O">!0>]EM! T!"$ ``ETC M $/M6H\0#P0 ``$(])(`#K67W4;0$( `!"#0-0)C=*C"A\DTZRKGM S-"AG, M7CP?=#!=24, `(%:`B-UJ+E/E:GE:&>0W#//*;#!+EDAM9*9>]NV IU*(0"! MM ,W*$Z=QDTE+6 QAZ5&GQ.JLE?*\:QFPC&;C&8^$&(_9%DB,3R.U6;HF+; M W65??I*J9M 2;"0!P(0 , <" S9H3IWNH_]:;;[SR&W!;A61QV5LO_,>A_, MK#;6NE G0_ 6\,&;Q>O":\O/'8[<+#Z7&/DA`(%>$QBR0TU(8.RI,L&;Z6MO M*N_FF+ YHFAG"XJ9?T^#VAB"9C>FE+D*6M:AUK:%#!" ``3Z16 L#M7IE:" MIAVJO%\3 FHT-9U'UY4K>!*':K<BMWPY`9V3[U!SB9$?`A#H-8$1.=2$*]5= MF%XBEG>SLWP:U#F)B\T5/,?R!I=\;9V6B+J\U7Y.EGRGH<>^$(! [P ,V:%J MC4P_\=3YU']4JE-([=JO45/[>A]G6*07>!T3F75=DG.1D:VIP7BR"F\PN'D^ M: -H[ (!"/24P) =:F>[)-=Z=K8AC0/C,7"-T;$C!"#060(#=ZA=XYZPK5T+ ME7 ``$(0""+``XU"Q>9(0`!"$ ``F$".-2>C0S_MS2S^ EISZ 0+ 0 `($. M$,"A=J 3" $"$( `!/I/`(?:_SZD!1" ``0 T $".-0.= (A0 `"$(! _PG M4/O?A[0``A" ``0Z0& 4#K7V; Q3=D2IWY66*F?*YB1V=V[G:W+RW-/9,:=D M"$" +P1PJ"MZ:M;2FSLLNB:QP1LR<,_>W&XE/P0 ,$ "`W>H_GT'52^:QYT& MGWL:W"76]Z5NU%![7T#_OKO^+I*['MH-R7UZC-JW :#RW--!3APT" (0\ F, MPJ'ZOM.6TMA-\^7#I92/],N)W?77CBUV3WQY_/*<P:5=;H(O!TA."$! P 0& M[E!USP4%U71J'P75N;V#:4N6M#=PJ([!U7^RY#O "8*F00`"< +C=:B]%M18 M!V<)JGR4!',:'450IR3)[A" P# (X%#=QZ &A3;=V4$9:_#=87K)-_9\4SNV MF0IJ3#A9\AW&7$ K( "!*0D,W*':ST,U2[O^0T_]1XL++_>-+;WZ"Z&UDAQ[ M-*G\>J5$,%..$K-[^OFF_CE$ [.*4J%2# 0 `($Y$QB%0YTS4ZVF//(S]ZQB M_MU$C1" ``0*$ABX0RU(*JLHU#0+%YDA``$(#( `#G4`G4 3( `!"$" ?0(X MU/;[ ``$(0& `!'"H`^A$F `!"$ ``NT3P*&VWP=$``$(0 `"`R" 0QU M)]($"$ ``A!HGP`.M?T^( ((0 `"$! ` ;$X5.?!,O*>J]VQ-H.P+O.L&#]_ M[OV/<O,+(TQD,S=\$!;5^O-3$[2=)LAS"MM.- A 8* $1N10A3<_\GNZ=L?: M#,+1,SLAG%W)JFGVCVXE/\#MR+U_Y4SD.84=338(0&"0! ;N4)V[#)HNM&]) MZ&S4?_K/=TL\)S7V>+A<\QJ\EZ_CD.R'GNI0_<>W)1Z>*M&&:9Y",S=!%7*( MH;"YV82#?C18B($?Y.^7P\VS!CF!TB (V 2&[%#]._0:L;01Q![?YMS[U]9= M9PPY IK^,S'^8FH7F]!]4?$E-K9E%H>!1$T=1^O_*0_,;KY&9/]ORC'T?.7S M\S G*!*>P?+]<A!4><^2$P(])3!DAQH3MH3 !<6U5B#]#,&;\M<.$;F .A.] MK[A.71)C:G9IYE"%:EI64(,<8C02E!RMK:47RZ\U/FAS:WN?#!" 0-\)C,6A MJGZR':?=;1*'&LNOM]<JKG"4=$10A=':V>1J.FQ!M9EDG<0T8,XN$(! UPB, MQ:'ZWXF:GHBYTE)+OO(NGX^ %I_HTQ<E!9_IEA!C^=*HO]8Z_9*OY#M4%;Q= M-4N^\A%.3 ,F\"0':KVCD9*'4V-763DY/?_=-QJXOJFQ'5,SJBREPK3%[G8 M*XK^=ZBQ<K0&S& ITEDB=IH6%,C$SV:$9E?.P7&--K3 MZHVI5J>!JQ-V.<L M/TL8]G1#ZR P; )#=JC#[KE!MFZHPB,\2QADG](H"(R'P, =ZG Z<A M17B& MT8^T` +C)(!#'6>_TVH(0 `"$"A,`(=:&"C%00`"$(# . G 4,?9[[0:`A" M``0*$\"A% 9*<1" ``0 ,$X".-1Q]CNMA `$( "!P 1PJ(6!4AP$( `!"(R3 MP- =:NX#8<PHJ=VQ-L,X!QRMA `$(#!4`CA4]TZ\\I[VG]KF[%N;05[7C'(6 MOPWAC.*D6 A ``+=)S!PA^K<>M#QEUKP_*>\.>;2OV>A+L?L'C.COJ &[U.8 M&"6)6]\%]W)NR)<>?^G"AWK3HNX?DT0(`0CTE,"0':JOE+80FO?3/(4F]J0: MOR)'N?T_8P*IMTNL9/#.M+6:&LN H/;TD"9L"$" +0)#=JBQ%=?8T]823V&+ M/9'&[K: 'W4RV Y5OB L45.AZ#KC3%AR6Z.3>B$``0CTB,!8'&I"^:9QJ+F" MVF!DR#5/GM.$T6"7!DU %PA ``)C(# BAQH43N?[T9A VOL&WZL=)0XU=T Y MJ[CV[OZ2K*..SI_!)=RL\G.#)S\$( "!41$8LD/5(A=\**ESL9*CD<&+C,Q& MI\QT^<'KFX*[!(==XKJAX(-9[/Q. ;$'N02?D\H7J*.:!6 L!"!0A,"0'6H1 M0-TL)%?P&N3O9L.)" (0 $!G"0S<H7:6^Y2!Y3XW-#?_E.&Q.P0 `($1$L"A MCK#3:3($( `!")0G $,MSY02(0`!"$! A 1PJ"/L=)H,`0A ``+E">!0RS.E M1 A ``(0&"$!'.H(.YTF0P`"$(! >0(XU/),*1$"$( `!$9(`(<ZPDZGR1" M``0 4)X`#K4\4TJ$``0 `($1$L"ACK#3:3($( `!")0G $,MSY02(0`!"$! MA 1PJ"/L=)H,`0A ``+E">!0RS.E1 A ``(0&"$!'.H(.YTF0P`"$(! >0(X MU/),*1$"$( `!$9(`(<ZPDZGR1" ``0 4)X`#K4\4TJ$``0 `($1$L"ACK#3 M:3($( `!")0G $,MSY02(0`!"$! A 1:=*BK%A8":=/")A($(#!R`B.<BVGR M``BTZ% 15$X=( "!,($!S*TT880$<*C,:!" 0.<(C' NILD#((!#[=Q4,O*U M/IH/`45 `',K31 A`1QJ7P5UU>)KGI/OW&K,:I>.*FN74M 2E<X_G 0')QAY MSE* G'(D<$8X%]/D`1# H?954-4D)9F8FLV)L9*S:LS*K./,54>[B ;5&3C3 M[!LD7+S VGX,UIBKG;,.6]Z_`YA;:<(("0S9H=I'K^1(-GDDF1T!<&9V_:=? MCA^27XY\4O-SVDVPU<*.QYZ: _$X')S\IEVU4WQ63K\62?FY>R7X!#L]F+]6 M^)OUBS^$_%ZK[1JYNL>&F7SXV4,WJ[,2VF_*&>%<3),'0&# #K64 Y',4T%- MC<WX>F8T4U*N,$AVC,43K->.)^%]$V$GIM0&<W36!!VDX9? A%$[-A+YTS6F M=YS1.$E C F89%37=H0S<FKSQT:74\X`YE::,$("0W:HYM U9_KIH]TY_9?( M0,PQ2*:PH".15&I;SZ#=-%$%<TJ$7&)?<D.5YY?GC*&(=72I_LH25-O12DY< MTL+O=V[M^81D-.:2E AGHA=J=Q_A7$R3!T! % Y5**BU![F3H;CCJ9T9Y0$D M<LY?4',%<D;YB_>7Y+3#-V3.B526DW;.GQ)_UGXD##[WH)#DE_3O`.96FC!" M`CC4YA<E^18S?9H?RY^8Z(VYD:S.)>:IX"0NC#\F`))IT3%DDMDVMB0HW#>1 M+;>]Z7Y)Q%EK,6<T3K(<82E!;=#%,<=L;Q_A7$R3!T! X [5S'J2V;_!E&VO MOYF9Q6STYQHGO[&D]BZ^N?2#CU41W.X':0H,QN-$9<_^?AN%`B9DFT"74 MY MYP;[*]9><S:3Z,> G"3ZRSY#*CY. F8W-K1:$=3TN+7C'\#<2A-&2&# #E4X MC[>232X#\PFO:_',I]4SJJ4 3&%1PFQR<SPC,I*U%I5GA',Q31X` >$[U'G. M"[5U)9QH[;ZSR-"U>&;1QE;*S)6WX+)$T/ZFG;JD7MNF^_6V LNO= !S*TT8 M(0$<:O/O4#LR]1 &!(9'8(1S,4T>``$<*H(*`0ATCL `YE::,$("+3K4$=*F MR1" ``0 ,% "+3K4P3*E81" ``0 ,$(".-01=CI-A `$( "!\ 1PJ.694B($ M( `!"(R0P) =JOYYP [E29#``(0 ,#\"0S<H2*H\Q]2U !"$! G 2&[%!5 MCVI!%5I5Y[YHM6)L\ILJ[%V$E8YSV-%J"$ ``L,C,'R':D2N5B ;]*ZCH'8) M"&H#GNP"`0A H+\$1N%0=??4"FJN0[4=L*3\_HX2(H<`!" ` 5H"PW>H!D&M MH-;"\C.8)64$M0$]=H$`!" P) (XU*EZ,R&H+/E.19:=(0`!"/2-P) =:OJB MH5(]96NJ[89G88A+Q4PY$( `!"!0G,# '6IQ7L("45,A*+)!``(0& R!(3O4 MP702#8$`!" ` >X3P*%VOX^($ (0 `$>D `A]J#3B)$"$ ``A#H/ $<:O?[ MB A``$(0* '!'"H/> D0H0`!" ` >X3P*%VOX^($ (0 `$>D `A]J#3B)$ M"$ ``A#H/ $<:O?[B A``$(0* '!'"H/> D0H0`!" ` >X3P*%VOX^($ (0 M `$>D `A]J#3B)$"$ ``A#H/ $<:O?[B A``$(0* '!'"H/> D0H0`!" ` M >X3P*%VOX^($ (0 `$>D `A]J#3B)$"$ ``A#H/ $<:O?[B A``$(0* ' M!'"H/> D0H0`!" ` >X3P*%VOX^($ (0 `$>D `A]J#3B)$"$ ``A#H/ $< M:O?[B A``$(0* '!!(.];Y[[A:FU:M7ZYP;-FQ0[U>I=ZKI>E-"L7N AQ A M``$(0 `", +I)5])&5I$$50)*_) ``(0 ,! "=1^AUIK4A'4O Z.6\\_OZ^A M$S<$( "![A% 4 -]LFK5JB(]I<K1+[LT?XND+J<0I85:#LT;\UYO"8JEL[V! MH-;N$JO::6-N.<'V2KA)\B1ZI-1(D(1!' A H.\$$%11#S:86!.[3%]:3&!L MH7)$RPBPW>!:8?,SU^XBS"#,I .8J:"J\F,]TJ"G1..)3!" P! )#%E0;8/H MO]?3J.-.$IZR]B,S/$S.X"[^]&UBB%DE?UHW:A1432-")B1)?CNS;W_],AVM MM36O]DB)J:EMKX,G![4R['1KK N<"#7A(/^$UB*WM1U-! B,BH!$4'V!4%O, M=ZN=_ [5GO*<]UD.,IC9V9C^TQY5?FGV5![\U!F4$H$4"E+MXK"?(;%T+%SR M=7QG\ Q &'_P<(WU>^S83O!'4$<U(=)8"$Q#0"*H2CL=3;6O5.J!H!K_89O( M!#6)I-E.*&9>$]-WT"'IC<+: X4;A^>HD;T]86I]1ZNVV.(=U$M) 3$[ZVQ/ M_)DURNT>E_C(A !+=L^*C<P0 ,!0"0 %U=94Y[K?40MJEBHGY#SMJ.1S>NV* M:-!N^JT(NL. W-J*JS/4QE"\'#]^!'6H$Q;M D"7"< %56NJ_RN:T0FJD;>T MSC5>4I[2H:9'6VR!U]DK(:CFZ]68G14*:JER[-5:YY3%7YG0"P!IPL*E^V Y M73[4B0T"$) U 2Q!#?XFM=."JB=0\[^FZ:Q?VX E']7F=PIQW*?]J1./'9M3 MBV0<V%?T!//',OAKMO851OXR;^Q;5:.169IJAVI'*/PZ-O$=I]/OAK8#QUZQ M]U?O ^6CII(!21X(C(W \ 5U&#TJ7_5MT%ZA_C4H>=:[Y I; _S!)LRT.V8- MC?(A`($9$4!09P2V<+',X$6$+1=C;O["O4YQ$(! KP J+WJ+H*%``0 `(&N M$D (JOIR5/CBYOA=[5[B `$( "!>1&(":K2R*Q7]&DS/^$%`0A ``(0 ("8 M0$I0O\H+`A" ``0 ``$! >.//QY!%7 B"P0 ``$(0"!)H+R JJLK80X!"$ ` M`A 8&P$$-=KCYD8!Z3%AW^TA:_0(R\\JLZ>9[9.P9CSU7L'F3W^&-WT)*K!$ M=Z='0JEQDN#C?%2DO3T=BH0- 6D(E!=4/7=,$U-W]DU,TTZ0\ISVCLWVZ Z? M4I'$)O2L 925.4MZIR]95Q<LQSF9\,?5])#36NX$IN,IU>3I Z<$"/2(P! $ MU?8T07_C;_1W">J<(W )\Y0EC29SUEX]&E59H?IS=UIC8H4'R_$)Q^ [0V)& MPI8F,U.GF. \TWJS! .9(=!K`C,1U/F?X?JS9%"K[(VU[YWS^EA^8SZ$)_5. MJ,*]>CW(LE0D:) DS8^1C FM[QH3?5&DF]*%)$X(9E2[*398/F=[DE%'' C8 M!.H%U3ESMP_"Q$E]>G;PQ<DNJD$/I04U&&>MH.J97=Y>X:R7%N8&;>_[+L&A M8AHEI)HXAY.7GR6H#8Z+K/)C)Q8-ZO5/'<S8]H\[L\7WZ(GC*%&.4V!N_.2W M3]GAW/WQ,).?S<CGP2)ZD!#49L+I^TZ['#_F]*=V? 2U=C75'CSR 13+.2-! M;3!N8^V21"[G$ ML&CEOT%AV < ("=0[U,90II\"Y%7/0E"#9]8QYQ035'^[ M$^H\*<EYSC-G0O"RX$AD*;W,FQ#RK$ DDF8*%%8Z?0!9 JHS3U_I/ <2=4& M=0)#$%1;^8)R93+X;YSE%,>8!C75MYBQ8LW"6G#US%YV:WT<M!B ,VO;,(51 M.?SMDQZ_-'^T.)(6/#>:7EIJQUZLWMBYFA"./<RRJIB^R?((R0F!81 8 J . MHR?&W(J.S]T=#V_,(X>V0Z!3!&8HJ)UJ)\%TF4#'%:OCX76Y9XD-`J,B *". MJKMI+ 0 ``$(S(I 2E#59[P ``$(0 `"$! 2B/YL)O; U7D]\)5Z( `!"$ ` M`O, $-,[+9#"I!Y%CJ#.H[>H`P(0 `$.DL (:C"F#=LV(" "EF1#0(0 `$ M!DL +: 2AXJ #G9PT# (0 `"$) 3Z(2 JE\4R"..Y=2_-P]^FEM^;O[I V^W MA+;::VY3T&[SB]<^!YYSJ$*()7'<"4O(S3:W&K, MSB8$W%F-2&W(V*3;:R# MG& 2Q.83ME_+]/5J0;5OP**W*&^J</7,H4Z/(Z'6148;A1 "L^NL,4#N%+W9 M!5/D%+E!>+GJ:%?1H+K9'133!-/L. K6F*N=LPX[%L_T]?J"JLJ<GZ#Z#3-G M-Z9M]AO]7G &9'(&ST3\BF+Y[=,-(7&[7<[!EFZRT]C:/_W" ZV(-2$QL(1Q MIH\ZNUY[ULA%FBA'%VL/";MG&_"Q6U3+S1F*L^9I&NM 3_.)=:5_-.7VRS3Q M!#G;79D()CT/^&,R-F/4CMX&HB*9(B3'16P<QK %6SW_<9)H?O"C6'X)1A]% M5G]EQ1,LV>]'?\E7YPDZ5+W=206^0W4:YD^()H,S;_K#)=9L![TSN=>6D]6[ MP4E<SQ22,.S&!O,+R[';&*LW."$*RZ]EDBC'IY$X$M+QQ)H0Q!B<6&/EYVX7 M`A<.CV9 '+"U[4T<4+7]6ZJ],2")09*>!V+HY"T*#BKA9%U;BV0\)PY8O_Q8 MC?(#L. X230_^)$P^%KXP2:D]\J*I_9\19=F'*IC57U!U0&KUSP$U1G0L<FQ M5 E E%+*FOV3\\""4$-3D\)53#]X<Q'P3$4S-QL0HSM58LQ?7BG]<..WR\G M/<74\G$*=_*;3YV^"VZ7C+=8/(F9J':<Q_A(I Q)>[,FIC1/?_PD!H9DMI5S MT\>F/+\\I_R ,"-$?OS6'C 22F7K3<PG"6B2T9A+LE9HTQ-+[:PEWUVW+KCD MJSYR!-4Y1FQ-G8E#15!C!-+J+ID"TO+CE]]8`-(3 234H#[YZI)N42S^W$,W M:]J*G3DY>&MCBYT>-2A?>/Z4BR4]8!*G`J;M<Q-4^9"3#+S&<W%N>TL):O%Z M):>/B8&:AIS;60V4-4O :[L[(:C.=ZB.FNH_C:;V7E!K!28Q"6;-=\(![6>K M/:+2DV#M[G+ERQ(`>;'I R%Q:.5.REF'4"S^MGA*%%$?G/+Q8.>O[:]81]0" M"<83[+M$_+%V269>IUCAY"LI65A43%<D[:W%VZ!?9CI.8DRF.?IJ.3?HXJQX M& OJ7*_RU13,2TN706._,:<S= ;[0'7*\?,[!V16.4Y PM[U^S =9+"6X$#Q MN=G[^D=+L%[A+CYD.0U)ITBFK41[[8X.CH?:01+C$*PT`6T./$UCG1$8.VIJ M^]T^68RU-TA8?GR9_HT=YOY1[\A/;#P+QZ%D ,5X!H^^X.$OSQF;Y1RD00A. M6VJ[K)5Q$M2>Q%",\:R=9GU$PET2W+)&B]^HEJ_R%;;?GA-S=R'_" ED'15] MY%.P 06+*D*R:_$4:51;A12$*2Q*F"T]I><64 KO]/5VXL8.0ASV&:YP%[*- MD, 8QLF41W[,+K0U6KH63UL<BM<[_W$B/_H2.:<,NS'&Z>OMDZ VQL2.$( ` M!" ` 5D32 BJNMI(^.+F^+/N)LJ'``0 `(&N$X )JM+(K!>/;^MZ3Q,?!" ` M`0C,E #/0YTI7 J'``0 `(&Q$.!YJ&/I:=H)`0A ``(S)<!%23/%2^$0 `$ M(# 6`G,25/NR>%VE#5A^I76+W9+UP^T6XTQ4/?U%X=UL5RM1=7 \-#B..MB* M5GJ32B%0A, \!-6Y+84CJ%FS?%;F(H <X2]>9KK MMK;5KUSQCME=9VBU# 8 MR8Z2/%/"9'<(#(# S 55JZE?C6+G"&WM0>OD-_3M$W/_O:DHZ(EK*TT+:O ' MZ>:LWS_]#X87&T:Q]CKH)*,PZ%UB<2;JK0U5Q^9WC;\QV"]ER_>KJ!U"LQ / M_E /\I%4G1AOP8\*\DP,(7^<2\8D>2 P/ (20?6%3VV1WAS?[.P\*,Z>4^18 M8Y..,U\[$Y;^T^1Q"I%,9$X)M7_:4TRP7N$<%(RM5/R.WL08UO9.4"P=90T* M;1"C7UVS\OT!%N-6BF=N^;GUIO,W&\;! >KW2]EQ6#NBR "!GA*0"*K23D=3 M,Q[?YJOQ+)9\$X(:G%B=J(2=)Y_1 O'D3J"^)M4*>;HA_K0HX58+)S&5QSAG MB7?!\NUXG+.NX$=9/!/]&RL\JU+Y\&L<MJ2_[,*;'4>U(XH,$. I`:& VIJ: M_8!QYZB;A: :[4E/:D)+%.M+^8R&H-8Z5/]$1X ]MF/NR8')+_=V3H3R\>"( M4+"EM6$TJR[M^.UNDAP[B8;4QM_3*9*P(2 G(!=4K:F.FJH_1<]#M36UE* & MCW_)I-#XR)?/:+6"JH'4]E-M.3$7*YRR)2)4&V<,BU.XI"Y)V$$A='C:>6+" M.3=!E?"1]*-\^,D=JLTMM[\2^6L'-AD ,$ "68+JJZE(4&TU5>^-H#K;:R=N MXR]C:N278%?AG%S'/HK-Z<'\Z8UZEG3F+//G-.W-"MX.(Q&,KTDQSD'3X[34 M[RR[X<'WB0.LMA]-&VW_J G[=?GM<H9B[:$>RU\[2'P1"G*+!2 I7S*N[$K3 M0\+AZ10>*Z<6(!D ,$ "\Q#48!VSH.E/)9+)91:12,KL<FR2^,D#`0A ``(V M 8$(:JT]ZDBOYSK+CH1-&!" ``0 4$M (():VTXR0 `"$( `!&9* .>ASA0O MA4,``A" P% (S/QYJ,$+F= (`0A ``(0 $"" /X)3?7;&G5"`BD(0 `"$( ` M!)H16!94]8X7!" ``0A ``*-"50.5?WC!0$(0 `"$(# E 3^/^.A6>[YQF5H ,`````$E%3D2N0F"" ` end
Apr 01 2005
next sibling parent "Charlie" <charles jwavro.com> writes:
Umm ... amazing!  I didn't even know they had a lint mode, how cool!


nifty. I'll stick it in the zip file if you don't object.

No not at all "Ben Hinkle" <ben.hinkle gmail.com> wrote in message news:d2kuks$22a8$1 digitaldaemon.com...
 "Charlie" <charles jwavro.com> wrote in message
 news:d2kbrj$1hu4$1 digitaldaemon.com...
 I'm working on getting a basic dlint going and hooking it up to
 the emacs mode for error and warning highlighting

Coolness.

Attached is a sneak-peak at dlint minor-mode in emacs (using the D major-mode). There are two warnings in the code- one about a function that should return a value that doesn't and another about a narrowing cast. I'll clean things up over the weekend and make another post when dlint

(and
 the d-mode update) is ready. Thanks to Walter for the wonderful front-end
 code and warning implementation.

 -Ben

 ps -notice the cute little Dlint menu, too. It basically came for free

from
 the mlint highlighter I'm using (written by my buddy Eric Ludlam - Emacs
 hacker extraordinaire) :-)

Apr 02 2005
prev sibling parent reply "Charlie" <charles jwavro.com> writes:
Do you mind if I use this for elephant ?

C

"Ben Hinkle" <ben.hinkle gmail.com> wrote in message
news:d2kuks$22a8$1 digitaldaemon.com...
 "Charlie" <charles jwavro.com> wrote in message
 news:d2kbrj$1hu4$1 digitaldaemon.com...
 I'm working on getting a basic dlint going and hooking it up to
 the emacs mode for error and warning highlighting

Coolness.

Attached is a sneak-peak at dlint minor-mode in emacs (using the D major-mode). There are two warnings in the code- one about a function that should return a value that doesn't and another about a narrowing cast. I'll clean things up over the weekend and make another post when dlint

(and
 the d-mode update) is ready. Thanks to Walter for the wonderful front-end
 code and warning implementation.

 -Ben

 ps -notice the cute little Dlint menu, too. It basically came for free

from
 the mlint highlighter I'm using (written by my buddy Eric Ludlam - Emacs
 hacker extraordinaire) :-)

Apr 03 2005
parent "Ben Hinkle" <ben.hinkle gmail.com> writes:
"Charlie" <charles jwavro.com> wrote in message 
news:d2pn5u$8i9$1 digitaldaemon.com...
 Do you mind if I use this for elephant ?

 C

Please do. That's what it's there for. I'll post a real announcement now that I put it up.
Apr 03 2005
prev sibling parent reply "Lynn Allan" <l_d_allan adelphia.net> writes:
 Currently only Windows is supported (but that's probably just

becuase I
 haven't made a Makefile for Linux yet). The project is GPL.

Just curious why you are using gpl ... was that necessary based on derivation, or your preference? If preference, why?
Apr 01 2005
parent reply "Ben Hinkle" <bhinkle mathworks.com> writes:
"Lynn Allan" <l_d_allan adelphia.net> wrote in message 
news:d2k3fj$19b0$1 digitaldaemon.com...
 Currently only Windows is supported (but that's probably just

becuase I
 haven't made a Makefile for Linux yet). The project is GPL.

Just curious why you are using gpl ... was that necessary based on derivation, or your preference? If preference, why?

The dmd source allows either GPL or the artistic license and I just chose GPL because I understand it. I haven't looked closely at the artistic one - would you prefer that license? I'm not really sure how it differs from GPL, to be honest. Maybe I should keep the same style as dmd and say "either GPL or Artistic". That would probably be the best approach.
Apr 01 2005
next sibling parent "Walter" <newshound digitalmars.com> writes:
"Ben Hinkle" <bhinkle mathworks.com> wrote in message
news:d2k6ff$1cca$1 digitaldaemon.com...
 "Lynn Allan" <l_d_allan adelphia.net> wrote in message
 news:d2k3fj$19b0$1 digitaldaemon.com...
 Currently only Windows is supported (but that's probably just

becuase I
 haven't made a Makefile for Linux yet). The project is GPL.

Just curious why you are using gpl ... was that necessary based on derivation, or your preference? If preference, why?

The dmd source allows either GPL or the artistic license and I just chose GPL because I understand it. I haven't looked closely at the artistic

one -
 would you prefer that license? I'm not really sure how it differs from

GPL,
 to be honest. Maybe I should keep the same style as dmd and say "either

GPL
 or Artistic". That would probably be the best approach.

The artistic license applies if you want to make a close source version.
Apr 02 2005
prev sibling parent reply "Lynn Allan" <l_d_allan adelphia.net> writes:
"Ben Hinkle" <bhinkle mathworks.com> wrote in message
news:d2k6ff$1cca$1 digitaldaemon.com...
 "Lynn Allan" <l_d_allan adelphia.net> wrote in message
 news:d2k3fj$19b0$1 digitaldaemon.com...
 Currently only Windows is supported (but that's probably just

becuase I
 haven't made a Makefile for Linux yet). The project is GPL.

Just curious why you are using gpl ... was that necessary based on derivation, or your preference? If preference, why?

The dmd source allows either GPL or the artistic license and I just

chose
 GPL because I understand it. I haven't looked closely at the

artistic one -
 would you prefer that license? I'm not really sure how it differs

from GPL,
 to be honest. Maybe I should keep the same style as dmd and say

"either GPL
 or Artistic". That would probably be the best approach.

<alert comment="IANAL"> And I'm also not a fan of gpl. From a developer's point of view, I've only seen downsides to using gpl compared to other common open source licenses (mpl, Artistic, LGPL, etc.), and no upside. Whenever I see a project with gpl, I just groan. "Crud, another library / tool that will be harder to work with than it has to be." I would come close to recommending public domain over gpl, but Artistic seems like quite a good choice. I remember trying to sort out the different license choices some time back, and Artistic was the choice I was going to use. A possible problem with Artistic is that I recall some time back, SourceForge didn't have "Artistic" as one of the options in the drop-down menu for which license you wanted to select. Or maybe it was some variant of "Modified Artistic"? It may very well have been added since then, so this is moot. </alert>
Apr 04 2005
parent "Ben Hinkle" <ben.hinkle gmail.com> writes:
 Whenever I see a project with gpl, I just groan. "Crud, another
 library / tool that will be harder to work with than it has to be." I
 would come close to recommending public domain over gpl, but Artistic
 seems like quite a good choice. I remember trying to sort out the
 different license choices some time back, and Artistic was the choice
 I was going to use.

It's funny you say that because I totally agree. Most of my stuff is public domain.
Apr 04 2005