www.digitalmars.com         C & C++   DMDScript  

D - BUG FIX - thread-windows.zip

reply jhenzie mac.com writes:
Attached is the version(windows) fix for the deadlocking problem. It seems to
work as expected but I would apprciate review.

Cheers

Justin
Sep 26 2003
parent reply "dickl" <dick221z yahoo.com> writes:
Great find !
I've installed your code and things seem to be working just fine (and put
the gc code back to its orginal form)

I've also made a small modification to the thread code to allow threads
which have completed
to be restarted.
    In start()
        if (state != TS.INITIAL)
   becomes
        if (state != TS.INITIAL && state != TS.TERMINATED)

I've come to the conclusion that it is too dangerious to add a killThread
rountine with all the
locking that goes on with the gc routines.

I think thats about it for the thread issues

tnx for your help Justin

<jhenzie mac.com> wrote in message news:bl2enp$2mcg$1 digitaldaemon.com...
 Attached is the version(windows) fix for the deadlocking problem. It seems

 work as expected but I would apprciate review.

 Cheers

 Justin

Sep 29 2003
parent jhe <jhe_member pathlink.com> writes:
My pleasure, I am going to start working on some refinements to the threading
model so I will make sure to keep you in the loop.

Justin

In article <bl9l7q$67q$1 digitaldaemon.com>, dickl says...
Great find !
I've installed your code and things seem to be working just fine (and put
the gc code back to its orginal form)

I've also made a small modification to the thread code to allow threads
which have completed
to be restarted.
    In start()
        if (state != TS.INITIAL)
   becomes
        if (state != TS.INITIAL && state != TS.TERMINATED)

I've come to the conclusion that it is too dangerious to add a killThread
rountine with all the
locking that goes on with the gc routines.

I think thats about it for the thread issues

tnx for your help Justin

<jhenzie mac.com> wrote in message news:bl2enp$2mcg$1 digitaldaemon.com...
 Attached is the version(windows) fix for the deadlocking problem. It seems

 work as expected but I would apprciate review.

 Cheers

 Justin

begin 666 thread.d M+R\ 0V]P>7)I9VAT("AC*2 R,# R(&)Y($1I9VET86P 36%R<PHO+R!!;&P M4FEG:'1S(%)E<V5R=F5D"B\O('=R:71T96X 8GD 5V%L=&5R($)R:6=H= HO M+R!W=W<N9&EG:71A;&UA<G,N8V]M" HO+V1E8G5G/71H<F5A9#L*"B\J(#T] M/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T](%=I;C,R(#T]/3T]/3T] M/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/2 J+PH*=F5R<VEO;B H5VEN,S(I M"GL*"FEM<&]R="!W:6YD;W=S.PH*97AT97)N("A7:6YD;W=S*2!A;&EA<R!U M:6YT(" J<W1D9G I*'9O:60 *BD[" IE>'1E<FX *$,I"B ("!T:')E861? M:&1L(%]B96=I;G1H<F5A9&5X*'9O:60J('-E8W5R:71Y+"!U:6YT('-T86-K M7W-I>F4L" ES=&1F<"!S=&%R=%]A9&1R+"!V;VED*B!A<F=L:7-T+"!U:6YT M(&EN:71F;&%G+ H)=&AR96%D7VED*B!T:')D861D<BD[" H*+R\ 5&AI<R!I M<R!E<75I=F%L96YT('1O(&$ 2$%.1$Q%(&9R;VT =VEN9&]W<RYD"F%L:6%S M($A!3D1,12!T:')E861?:&1L.PH*86QI87, =6EN="!T:')E861?:60[" IC M;&%S<R!4:')E861%<G)O<B Z($5R<F]R"GL*(" ('1H:7,H8VAA<EM=(',I M"B ("![" ES=7!E<B B5&AR96%D(&5R<F]R.B B('X <RD["B ("!]"GT* M"F-L87-S(%1H<F5A9 I["B ("!T:&ES*"D*(" ('L*(" ('T*"B ("!T M:&ES*&EN=" H*F9P*2AV;VED("HI+"!V;VED("IA<F<I"B ("![" ET:&ES M+F9P(#T 9G [" ET:&ES+F%R9R ](&%R9SL*(" ('T*"B ("!T:&ES*&EN M="!D96QE9V%T92 I(&1G*0H (" >PH)=&AI<RYD9R ](&1G.PH (" ?0H* M(" ('1H<F5A9%]H9&P :&1L.PH (" =&AR96%D7VED(&ED.PH (" =F]I M9"H <W1A8VM";W1T;VT[" H (" =F]I9"!S=&%R=" I"B ("![" EI9B H M<W1A=&4 (3T 5%,N24Y)5$E!3" F)B!S=&%T92$]5%,N5$5234E.051%1"D* M"2 ("!E<G)O<B B86QR96%D>2!S=&%R=&5D(BD[" H)<WEN8VAR;VYI>F5D M("AT:')E861,;V-K*0H)>PH)(" (&9O<B H:6YT(&D /2 P.R Q.R!I*RLI M" D (" >PH)"6EF("AI(#T](&%L;%1H<F5A9',N;&5N9W1H*0H)"2 ("!E M<G)O<B B=&]O(&UA;GD =&AR96%D<R(I.PH)"6EF(" A86QL5&AR96%D<UMI M72D*"0E[(" 86QL5&AR96%D<UMI72 ]('1H:7,[" D)(" (&ED>" ](&D[ M" D)(" (&EF("AI(#X](&%L;%1H<F5A9'-$:6TI" D)"6%L;%1H<F5A9'-$ M:6T /2!I("L ,3L*"0D (" 8G)E86L[" D)?0H)(" ('T*"2 ("!N=&AR M96%D<RLK.PH)?0H*"7-T871E(#T 5%,N4E5.3DE.1SL*"6AD;" ](%]B96=I M;G1H<F5A9&5X*&YU;&PL(# L("9T:')E861S=&%R="P =&AI<RP ,"P )FED M*3L*"6EF("AH9&P /3T 8V%S="AT:')E861?:&1L*3 I" E[(" <W1A=&4 M/2!44RY415)-24Y!5$5$.PH)(" (&%L;%1H<F5A9'-;:61X72 ](&YU;&P[ M" D (" :61X(#T +3$[" D (" 97)R;W(H(F9A:6QE9"!T;R!S=&%R="(I M.PH)?0H (" ?0H*(" (&EN="!R=6XH*0H (" >PH):68 *&9P*0H)(" M(')E='5R;B!F<"AA<F<I.PH)96QS92!I9B H9&<I" D (" <F5T=7)N(&1G M*"D["B ("!]" H (" =F]I9"!W86ET*"D*(" ('L*"6EF("AT:&ES(#T] M/2!G9714:&ES*"DI" D (" 97)R;W(H(G=A:70 ;VX <V5L9B(I.PH):68 M*'-T871E(#T](%13+E)53DY)3D<I" E[(" 1%=/4D0 9'<[" H)(" (&1W M(#T 5V%I=$9O<E-I;F=L94]B:F5C="AH9&PL(#!X1D9&1D9&1D8I.PH)?0H M(" ?0H*(" ('9O:60 =V%I="AU:6YT(&UI;&QI<V5C;VYD<RD*(" ('L* M"6EF("AT:&ES(#T]/2!G9714:&ES*"DI" D (" 97)R;W(H(G=A:70 ;VX M<V5L9B(I.PH):68 *'-T871E(#T](%13+E)53DY)3D<I" E[(" 1%=/4D0 M9'<[" H)(" (&1W(#T 5V%I=$9O<E-I;F=L94]B:F5C="AH9&PL(&UI;&QI M<V5C;VYD<RD[" E]"B ("!]" H (" 96YU;2!44PH (" >PH)24Y)5$E! M3"P*"5)53DY)3D<L" E415)-24Y!5$5$"B ("!]" H (" 5%, 9V5T4W1A M=&4H*0H (" >PH)<F5T=7)N('-T871E.PH (" ?0H*(" (&5N=6T 4%)) M3U))5%D*(" ('L*"4E.0U)%05-%+ H)1$5#4D5!4T4L" E)1$Q%+ H)0U)) M5$E#04P*(" ('T*"B ("!V;VED('-E=%!R:6]R:71Y*%!224]22519(' I M"B ("![" EI;G0 ;E!R:6]R:71Y.PH*"7-W:71C:" H<"D*"7L*"2 ("!C M87-E(%!224]22519+DE.0U)%05-%. H)"6Y0<FEO<FET>2 ](%1(4D5!1%]0 M4DE/4DE465]!0D]615].3U)-04P[" D)8G)E86L[" D (" 8V%S92!04DE/ M4DE462Y$14-214%313H*"0EN4')I;W)I='D /2!42%)%041?4%))3U))5%E? M0D5,3U=?3D]234%,.PH)"6)R96%K.PH)(" (&-A<V4 4%))3U))5%DN241, M13H*"0EN4')I;W)I='D /2!42%)%041?4%))3U))5%E?241,13L*"0EB<F5A M:SL*"2 ("!C87-E(%!224]22519+D-2251)0T%,. H)"6Y0<FEO<FET>2 ] M(%1(4D5!1%]04DE/4DE465]424U%7T-2251)0T%,.PH)"6)R96%K.PH)?0H* M"6EF("A39714:')E8610<FEO<FET>2AH9&PL(&Y0<FEO<FET>2D /3T 5$A2 M14%$7U!224]225197T524D]27U)%5%523BD*"2 ("!E<G)O<B B<V5T('!R M:6]R:71Y(BD["B ("!]" H (" <W1A=&EC(%1H<F5A9"!G9714:&ES*"D* M(" ('L*"71H<F5A9%]I9"!I9#L*"51H<F5A9"!R97-U;'0[" H)+R]P<FEN M=&8H(F=E=%1H:7,H*2P 86QL5&AR96%D<T1I;2 ]("5D7&XB+"!A;&Q4:')E M861S1&EM*3L*"7-Y;F-H<F]N:7IE9" H=&AR96%D3&]C:RD*"7L*"2 ("!I M9" ]($=E=$-U<G)E;G14:')E861)9" I.PH)(" (&9O<B H:6YT(&D /2 P M.R!I(#P 86QL5&AR96%D<T1I;3L :2LK*0H)(" ('L*"0E4:')E860 =" ] M(&%L;%1H<F5A9'-;:5T[" D):68 *'0 )B8 :60 /3T ="YI9"D*"0E[" D) M(" (')E='5R;B!T.PH)"7T*"2 ("!]" E]" EP<FEN=&8H(F1I9&XG="!F M:6YD(&ET7&XB*3L*"6%S<V5R="AR97-U;'0I.PH)<F5T=7)N(')E<W5L=#L* M(" ('T*"B ("!S=&%T:6, 5&AR96%D6UT 9V5T06QL*"D*(" ('L*"7)E M='5R;B!A;&Q4:')E861S6S +BX 86QL5&AR96%D<T1I;5T["B ("!]" H M(" =F]I9"!P875S92 I"B ("![(" " EI9B H<W1A=&4 (3T 5%,N4E5. M3DE.1R!\?"!3=7-P96YD5&AR96%D*&AD;"D /3T ,'A&1D9&1D9&1BD*"2 M("!E<G)O<B B8V%N;F]T('!A=7-E(BD["B ("!]" H (" =F]I9"!R97-U M;64H*0H (" >PH):68 *'-T871E("$](%13+E)53DY)3D< ?'P 4F5S=6UE M5&AR96%D*&AD;"D /3T ,'A&1D9&1D9&1BD*"2 ("!E<G)O<B B8V%N;F]T M(')E<W5M92(I.PH (" ?0H*(" ('-T871I8R!V;VED('!A=7-E06QL*"D* M(" ('L*"6EF("AN=&AR96%D<R ^(#$I" E[" D (" 5&AR96%D('1T:&ES M(#T 9V5T5&AI<R I.PH*"2 ("!F;W( *&EN="!I(#T ,#L :2 \(&%L;%1H M<F5A9'-$:6T[(&DK*RD*"2 ("![(" 5&AR96%D('0[" H)"70 /2!A;&Q4 M:')E861S6VE=.PH*"0EI9B H=" F)B!T("$]/2!T=&AI<R F)B!T+G-T871E M(#T](%13+E)53DY)3D<I" D)(" ('0N<&%U<V4H*3L*"2 ("!]" E]"B M("!]" H (" <W1A=&EC('9O:60 <F5S=6UE06QL*"D*(" ('L*"6EF("AN M=&AR96%D<R ^(#$I" E[" D (" 5&AR96%D('1T:&ES(#T 9V5T5&AI<R I M.PH*"2 ("!F;W( *&EN="!I(#T ,#L :2 \(&%L;%1H<F5A9'-$:6T[(&DK M*RD*"2 ("![(" 5&AR96%D('0[" H)"70 /2!A;&Q4:')E861S6VE=.PH) M"6EF("AT("8F('0 (3T]('1T:&ES("8F('0N<W1A=&4 /3T 5%,N4E5.3DE. M1RD*"0D (" ="YR97-U;64H*3L*"2 ("!]" E]"B ("!]" H (" <W1A M=&EC('9O:60 >6EE;&0H*0H (" >PH)4VQE97 H,"D["B ("!]"B (" * M(" ('-T871I8R!U:6YT(&YT:')E861S(#T ,3L*"B <')I=F%T93H*"B M("!S=&%T:6, =6EN="!A;&Q4:')E861S1&EM.PH (" <W1A=&EC($]B:F5C M="!T:')E861,;V-K.PH (" <W1A=&EC(%1H<F5A9%LP>#0P,%T 86QL5&AR M96%D<SL)+R\ ;&5N9W1H(&UA=&-H97, =F%L=64 :6X 0R!R=6YT:6UE" H M(" 5%, <W1A=&4["B ("!I;G0 :61X(#T +3$["0D)+R\ :6YD97 :6YT M;R!A;&Q4:')E861S6UT*"B ("!I;G0 *"IF<"DH=F]I9" J*3L*(" ('9O M:60 *F%R9SL*"B ("!I;G0 9&5L96=A=&4H*2!D9SL*"B ("!V;VED(&5R M<F]R*&-H87);72!M<V<I"B ("![" ET:')O=R!N97< 5&AR96%D17)R;W(H M;7-G*3L*(" ('T*" H (" +RHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ M*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ* H (" ("H 5&AI<R!I<R!J=7-T(&$ M=W)A<'!E<B!T;R!I;G1E<F9A8V4 8F5T=V5E;B!#(')T;"!A;F0 5&AR96%D M+G)U;B I+ H (" ("HO" H (" 97AT97)N("A7:6YD;W=S*2!S=&%T:6, M=6EN="!T:')E861S=&%R="AV;VED("IP*0H (" >PH)5&AR96%D('0 /2!C M87-T*%1H<F5A9"EP.PH):6YT(')E<W5L=#L*" ED96)U9R H=&AR96%D*2!P M<FEN=&8H(E-T87)T:6YG('1H<F5A9" E9%QN(BP ="YI9' I.PH)="YS=&%C M:T)O='1O;2 ](&]S7W%U97)Y7W-T86-K0F]T=&]M*"D[" ET<GD*"7L*"2 M("!R97-U;'0 /2!T+G)U;B I.PH)?0H)8V%T8V *$]B:F5C="!O*0H)>PH) M(" ('!R:6YT9B B17)R;W(Z("(I.PH)(" (&\N<')I;G0H*3L*"2 ("!R M97-U;'0 /2 Q.PH)?0H*"61E8G5G("AT:')E860I('!R:6YT9B B16YD:6YG M('1H<F5A9" E9%QN(BP ="YI9' I.PH)="YS=&%T92 ](%13+E1%4DU)3D%4 M140[" EA;&Q4:')E861S6W0N:61X72 ](&YU;&P[" ET+FED>" ]("TQ.PH) M;G1H<F5A9',M+3L*"7)E='5R;B!R97-U;'0["B ("!]" H*(" ("\J*BHJ M*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ* H (" ("H 0W)E M871E(&$ 5&AR96%D(&9O<B!G;&]B86P ;6%I;B I+ H (" ("HO" H (" M<W1A=&EC('1H:7,H*0H (" >PH)=&AR96%D3&]C:R ](&YE=R!/8FIE8W0H M*3L*" E4:')E860 =" ](&YE=R!4:')E860H*3L*" ET+G-T871E(#T 5%,N M4E5.3DE.1SL*"70N:60 /2!'971#=7)R96YT5&AR96%D260H*3L*(" (" M("!T+FAD;" ](%1H<F5A9"YG971#=7)R96YT5&AR96%D2&%N9&QE*"D["B M(" (" ="YS=&%C:T)O='1O;2 ](&]S7W%U97)Y7W-T86-K0F]T=&]M*"D[ M" D*(" (" ("!S>6YC:')O;FEZ960 *'1H<F5A9$QO8VLI" E[" D (" M87-S97)T*"%A;&Q4:')E861S6S!=*3L*"2 ("!A;&Q4:')E861S6S!=(#T M=#L*"2 ("!A;&Q4:')E861S1&EM(#T ,3L*"2 ("!T+FED>" ](# [" E] M"B ("!]" H (" ('-T871I8R!^=&AI<R I('L*(" (" (" ($-L;W-E M2&%N9&QE*&%L;%1H<F5A9'-;,%TN:&1L*3L*(" ("!]"B (" (" (" * M(" ("\J* H (" ("H 4F5T=7)N<R!T:&4 :&%N9&QE(&]F('1H92!C=7)R M96YT('1H<F5A9 H (" ("H 5&AE(')E='5R;F5D('1H<F5A9"!H86YD;&4 M:7, 82!W:6YD;W=S(')E<V]U<F-E(&%N9"!M=7-T(&)E(&5X<&QI8VET;'D* M(" (" J(&-L;W-E9"X*(" (" J+PH (" ('-T871I8R!T:')E861?:&1L M(&=E=$-U<G)E;G14:')E861(86YD;&4H*2!["B (" (" (" *(" (" M(" ('1H<F5A9%]H9&P 8W5R<F5N=%1H<F5A9" ]($=E=$-U<G)E;G14:')E M860H*3L*(" (" (" ('1H<F5A9%]H9&P 86-T=6%L5&AR96%D2&%N9&QE M.PH (" (" (" =&AR96%D7VAD;"!C=7)R96YT4')O8V5S<R ](&-A<W0H M=&AR96%D7VAD;"DM,3L*"B (" (" ("!U:6YT(&%C8V5S<R ](&-A<W0H M=6EN="DP># P,# P,# R.PH*(" (" (" ($1U<&QI8V%T94AA;F1L92AC M=7)R96YT4')O8V5S<RP 8W5R<F5N=%1H<F5A9"P 8W5R<F5N=%!R;V-E<W,L M"B (" (" (" (" (" (" (" (" )F%C='5A;%1H<F5A9$AA;F1L M92P 8V%S="AU:6YT*3 L(%12544L(&%C8V5S<RD[" H (" (" (" <F5T M=7)N(&%C='5A;%1H<F5A9$AA;F1L93L*(" ("!]"GT*" HO*BHJ*BHJ*BHJ M*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ* H *B!$971E M<FUI;F4 (F)O='1O;2( ;V8 <W1A8VL *&%C='5A;&QY('1H92!T;W ;VX M5VEN,S( <WES=&5M<RDN"B J+PH*=F]I9" J;W-?<75E<GE?<W1A8VM";W1T M;VTH*0I["B ("!A<VT*(" ('L*"6YA:V5D"0D).PH);6]V"45!6"Q&4SHT M"3L*"7)E= D)"3L*(" ('T*?0H*?0H*+RH /3T]/3T]/3T]/3T]/3T]/3T] M/3T]/3T]/3T]/3T]/3T ;&EN=7 /3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T] M/3T]/3T]/3T]("HO" IV97)S:6]N("AL:6YU>"D*>PH*:6UP;W)T(&QI;G5X M.PII;7!O<G0 ;&EN=7AE>'1E<FX[" IA;&EA<R!U:6YT('!T:')E861?=#L* M97AT97)N("A#*2!A;&EA<R!V;VED(" J7U]S:6=H86YD;&5R7W0I*&EN="D[ M" IS=')U8W0 <VEG<V5T7W0*>PH (" =6EN="!?7W9A;%LQ,#(T("\ *# M*B!U:6YT+G-I>F4I73L*?0H*<W1R=6-T('-I9V%C=&EO;E]T"GL*(" (%]? M<VEG:&%N9&QE<E]T('-A7VAA;F1L97(["B ("!S:6=S971?="!S85]M87-K M.PH (" :6YT('-A7V9L86=S.PH (" =F]I9" H*G-A7W)E<W1O<F5R*2 I M.PI]" IS=')U8W0 7W!T:')E861?9F%S=&QO8VL*>PH (" :6YT(%]?<W1A M='5S.PH (" :6YT(%]?<W!I;FQO8VL["GT*"G-T<G5C="!S96U?= I["B M("!?<'1H<F5A9%]F87-T;&]C:R!?7W-E;5]L;V-K.PH (" :6YT(%]?<V5M M7W9A;'5E.PH (" =F]I9"H 7U]S96U?=V%I=&EN9SL*?0H*=6YI='1E<W0* M>PH (" 87-S97)T*'-I9W-E=%]T+G-I>F4 (#T](#$R."D["B ("!A<W-E M<G0H<VEG86-T:6]N7W0N<VEZ92 ]/2 Q-# I.PH (" 87-S97)T*'-E;5]T M+G-I>F4 /3T ,38I.PI]" IE>'1E<FX *$,I"GL*(" (&EN="!P=&AR96%D M7V-R96%T92AP=&AR96%D7W0J+"!V;VED*BP =F]I9"H *"HI*'9O:60J*2P M=F]I9"HI.PH (" :6YT('!T:')E861?:F]I;BAP=&AR96%D7W0L('9O:60J M*BD["B ("!I;G0 <'1H<F5A9%]K:6QL*'!T:')E861?="P :6YT*3L*(" M('!T:')E861?="!P=&AR96%D7W-E;&8H*3L*(" (&EN="!P=&AR96%D7V5Q M=6%L*'!T:')E861?="P <'1H<F5A9%]T*3L*(" (&EN="!S96U?=V%I="AS M96U?="HI.PH (" :6YT('-E;5]I;FET*'-E;5]T*BP :6YT+"!U:6YT*3L* M(" (&EN="!S96U?<&]S="AS96U?="HI.PH (" :6YT('-C:&5D7WEI96QD M*"D["B ("!I;G0 <VEG9FEL;'-E="AS:6=S971?="HI.PH (" :6YT('-I M9V1E;'-E="AS:6=S971?="HL(&EN="D["B ("!I;G0 <VEG86-T:6]N*&EN M="P <VEG86-T:6]N7W0J+"!S:6=A8W1I;VY?="HI.PH (" :6YT('-I9W-U M<W!E;F0H<VEG<V5T7W0J*3L*?0H*8VQA<W, 5&AR96%D17)R;W( .B!%<G)O M< I["B ("!T:&ES*&-H87);72!S*0H (" >PH)<W5P97(H(E1H<F5A9"!E M<G)O<CH (B!^(',I.PH (" ?0I]" IC;&%S<R!4:')E860*>PH (" =&AI M<R I"B ("!["B ("!]" H (" =&AI<RAI;G0 *"IF<"DH=F]I9" J*2P M=F]I9" J87)G*0H (" >PH)=&AI<RYF<" ](&9P.PH)=&AI<RYA<F< /2!A M<F<["B ("!]" H (" =&AI<RAI;G0 9&5L96=A=&4H*2!D9RD*(" ('L* M"71H:7,N9&< /2!D9SL*(" ('T*"B ("!P=&AR96%D7W0 :60["B ("!V M;VED*B!S=&%C:T)O='1O;3L*(" ('9O:60J('-T86-K5&]P.PH*(" ('9O M:60 <W1A<G0H*0H (" >PH):68 *'-T871E("$](%13+DE.251)04P )B8 M<W1A=&4A/513+E1%4DU)3D%4140I" D (" 97)R;W(H(F%L<F5A9'D <W1A M<G1E9"(I.PH*"7-Y;F-H<F]N:7IE9" H=&AR96%D3&]C:RD*"7L*"2 ("!F M;W( *&EN="!I(#T ,#L ,3L :2LK*0H)(" ('L*"0EI9B H:2 ]/2!A;&Q4 M:')E861S+FQE;F=T:"D*"0D (" 97)R;W(H(G1O;R!M86YY('1H<F5A9',B M*3L*"0EI9B H(6%L;%1H<F5A9'-;:5TI" D)>R (&%L;%1H<F5A9'-;:5T M/2!T:&ES.PH)"2 ("!I9' /2!I.PH)"2 ("!I9B H:2 ^/2!A;&Q4:')E M861S1&EM*0H)"0EA;&Q4:')E861S1&EM(#T :2 K(#$[" D)(" (&)R96%K M.PH)"7T*"2 ("!]" D (" ;G1H<F5A9',K*SL*"7T*" ES=&%T92 ](%13 M+E)53DY)3D<[" EI;G0 <F5S=6QT.PH)+R]P<FEN=&8H(F-R96%T:6YG('1H M<F5A9"!X)7A<;B(L('1H:7,I.PH)<F5S=6QT(#T <'1H<F5A9%]C<F5A=&4H M)FED+"!N=6QL+" F=&AR96%D<W1A<G0L('1H:7,I.PH):68 *')E<W5L="D* M"7L ("!S=&%T92 ](%13+E1%4DU)3D%4140[" D (" 86QL5&AR96%D<UMI M9'A=(#T ;G5L;#L*"2 ("!I9' /2 M,3L*"2 ("!E<G)O<B B9F%I;&5D M('1O('-T87)T(BD["2\O($)51SH <VAO=6QD(')E<&]R="!E<G)N;PH)?0H) M+R]P<FEN=&8H(G0 /2!X)7 L(&ED(#T )61<;B(L('1H:7,L(&ED*3L*(" M('T*"B ("!I;G0 <G5N*"D*(" ('L*"6EF("AF<"D*"2 ("!R971U<FX M9G H87)G*3L*"65L<V4 :68 *&1G*0H)(" (')E='5R;B!D9R I.PH (" M?0H*(" ('9O:60 =V%I=" I"B ("![" EI9B H=&AI<R ]/3T 9V5T5&AI M<R I*0H)(" (&5R<F]R*")W86ET(&]N('-E;&8B*3L*"6EF("AS=&%T92 ] M/2!44RY254Y.24Y'*0H)>R (&EN="!R97-U;'0[" D (" =F]I9" J=F%L M=64[" H)(" (')E<W5L=" ]('!T:')E861?:F]I;BAI9"P )G9A;'5E*3L* M"2 ("!I9B H<F5S=6QT*0H)"65R<F]R*")F86EL960 =&\ =V%I="(I.PH) M?0H (" ?0H*(" ('9O:60 =V%I="AU:6YT(&UI;&QI<V5C;VYD<RD*(" M('L*"7=A:70H*3L*"2\K(&YO="!I;7!L96UE;G1E9 H):68 *'1H:7, /3T] M(&=E=%1H:7,H*2D*"2 ("!E<G)O<B B=V%I="!O;B!S96QF(BD[" EI9B H M<W1A=&4 /3T 5%,N4E5.3DE.1RD*"7L ("!$5T]21"!D=SL*" D (" 9'< M/2!786ET1F]R4VEN9VQE3V)J96-T*&AD;"P ;6EL;&ES96-O;F1S*3L*"7T* M"2LO"B ("!]" H (" 96YU;2!44PH (" >PH)24Y)5$E!3"P*"5)53DY) M3D<L" E415)-24Y!5$5$"B ("!]" H (" 5%, 9V5T4W1A=&4H*0H (" M>PH)<F5T=7)N('-T871E.PH (" ?0H*(" (&5N=6T 4%))3U))5%D*(" M('L*"4E.0U)%05-%+ H)1$5#4D5!4T4L" E)1$Q%+ H)0U))5$E#04P*(" M('T*"B ("!V;VED('-E=%!R:6]R:71Y*%!224]22519(' I"B ("![" DO M*R!N;W0 :6UP;&5M96YT960*"6EN="!N4')I;W)I='D[" H)<W=I=&-H("AP M*0H)>PH)(" (&-A<V4 4%))3U))5%DN24Y#4D5!4T4Z" D);E!R:6]R:71Y M(#T 5$A214%$7U!224]225197T%"3U9%7TY/4DU!3#L*"0EB<F5A:SL*"2 M("!C87-E(%!224]22519+D1%0U)%05-%. H)"6Y0<FEO<FET>2 ](%1(4D5! M1%]04DE/4DE465]"14Q/5U].3U)-04P[" D)8G)E86L[" D (" 8V%S92!0 M4DE/4DE462Y)1$Q%. H)"6Y0<FEO<FET>2 ](%1(4D5!1%]04DE/4DE465]) M1$Q%.PH)"6)R96%K.PH)(" (&-A<V4 4%))3U))5%DN0U))5$E#04PZ" D) M;E!R:6]R:71Y(#T 5$A214%$7U!224]225197U1)345?0U))5$E#04P[" D) M8G)E86L[" E]" H):68 *%-E=%1H<F5A9%!R:6]R:71Y*&AD;"P ;E!R:6]R M:71Y*2 ]/2!42%)%041?4%))3U))5%E?15)23U)?4D5455).*0H)(" (&5R M<F]R*")S970 <')I;W)I='DB*3L*"2LO"B ("!]" H (" :6YT(&ES4V5L M9B I"B ("![" DO+W!R:6YT9B B:60 /2 E9"P <V5L9B ]("5D7&XB+"!I M9"P <'1H<F5A9%]S96QF*"DI.PH)<F5T=7)N('!T:')E861?97%U86PH<'1H M<F5A9%]S96QF*"DL(&ED*3L*(" ('T*"B ("!S=&%T:6, 5&AR96%D(&=E M=%1H:7,H*0H (" >PH)<'1H<F5A9%]T(&ED.PH)5&AR96%D(')E<W5L=#L* M" DO+W!R:6YT9B B9V5T5&AI<R I+"!A;&Q4:')E861S1&EM(#T )61<;B(L M(&%L;%1H<F5A9'-$:6TI.PH)<WEN8VAR;VYI>F5D("AT:')E861,;V-K*0H) M>PH)(" (&ED(#T <'1H<F5A9%]S96QF*"D[" D (" +R]P<FEN=&8H(FED M(#T )61<;B(L(&ED*3L*"2 ("!F;W( *&EN="!I(#T ,#L :2 \(&%L;%1H M<F5A9'-$:6T[(&DK*RD*"2 ("![" D)5&AR96%D('0 /2!A;&Q4:')E861S M6VE=.PH)"2\O<')I;G1F*")A;&Q4:')E861S6R5D72 ](' E>"P :60 /2 E M9%QN(BP :2P ="P *'0 /R!T+FED(#H ,"DI.PH)"6EF("AT("8F('!T:')E M861?97%U86PH:60L('0N:60I*0H)"7L*"0D (" <F5T=7)N('0[" D)?0H) M(" ('T*"7T*"7!R:6YT9B B9&ED;B=T(&9I;F0 :71<;B(I.PH)87-S97)T M*')E<W5L="D[" ER971U<FX <F5S=6QT.PH (" ?0H*(" ('-T871I8R!4 M:')E861;72!G971!;&PH*0H (" >PH)<F5T=7)N(&%L;%1H<F5A9'-;," N M+B!A;&Q4:')E861S1&EM73L*(" ('T*"B ("!V;VED('!A=7-E*"D*(" M('L*"6EF("AS=&%T92 ]/2!44RY254Y.24Y'*0H)>R (&EN="!R97-U;'0[ M" H)(" (')E<W5L=" ]('!T:')E861?:VEL;"AI9"P 4TE'55-2,2D[" D M(" :68 *')E<W5L="D*"0EE<G)O<B B8V%N;F]T('!A=7-E(BD[" D (" M96QS90H)"7-E;5]W86ET*"9F;&%G4W5S<&5N9"D["2\O('=A:70 9F]R(&%C M:VYO=VQE9&=E;65N= H)?0H)96QS90H)(" (&5R<F]R*")C86YN;W0 <&%U M<V4B*3L*(" ('T*"B ("!V;VED(')E<W5M92 I"B ("![" EI9B H<W1A M=&4 /3T 5%,N4E5.3DE.1RD*"7L ("!I;G0 <F5S=6QT.PH*"2 ("!R97-U M;'0 /2!P=&AR96%D7VMI;&PH:60L(%-)1U534C(I.PH)(" (&EF("AR97-U M;'0I" D)97)R;W(H(F-A;FYO="!R97-U;64B*3L*"7T*"65L<V4*"2 ("!E M<G)O<B B8V%N;F]T(')E<W5M92(I.PH (" ?0H*(" ('-T871I8R!V;VED M('!A=7-E06QL*"D*(" ('L*"6EF("AN=&AR96%D<R ^(#$I" E[" D (" M5&AR96%D('1T:&ES(#T 9V5T5&AI<R I.PH)(" (&EN="!N<&%U<V4 /2 P M.PH*"2 ("!F;W( *&EN="!I(#T ,#L :2 \(&%L;%1H<F5A9'-$:6T[(&DK M*RD*"2 ("![(" 5&AR96%D('0[" H)"70 /2!A;&Q4:')E861S6VE=.PH) M"6EF("AT("8F('0 (3T]('1T:&ES("8F('0N<W1A=&4 /3T 5%,N4E5.3DE. M1RD*"0E[(" :6YT(')E<W5L=#L*" D)(" (')E<W5L=" ]('!T:')E861? M:VEL;"AT+FED+"!324=54U(Q*3L*"0D (" :68 *')E<W5L="D*"0D)9V5T M5&AI<R I+F5R<F]R*")C86YN;W0 <&%U<V4B*3L*"0D (" 96QS90H)"0EN M<&%U<V4K*SL)+R\ 8V]U;G0 ;V8 <&%U<V5D('1H<F5A9',*"0E]" H)"2\O M(%=A:70 9F]R(&5A8V <&%U<V5D('1H<F5A9"!T;R!A8VMN;W=L961G90H) M"7=H:6QE("AN<&%U<V4M+2D*"0E[" D)(" ('-E;5]W86ET*"9F;&%G4W5S M<&5N9"D[" D)?0H)(" ('T*"7T*(" ('T*"B ("!S=&%T:6, =F]I9"!R M97-U;65!;&PH*0H (" >PH):68 *&YT:')E861S(#X ,2D*"7L*"2 ("!4 M:')E860 ='1H:7, /2!G9714:&ES*"D[" H)(" (&9O<B H:6YT(&D /2 P M.R!I(#P 86QL5&AR96%D<T1I;3L :2LK*0H)(" ('L ("!4:')E860 =#L* M" D)=" ](&%L;%1H<F5A9'-;:5T[" D):68 *'0 )B8 =" A/3T ='1H:7, M)B8 ="YS=&%T92 ]/2!44RY254Y.24Y'*0H)"2 ("!T+G)E<W5M92 I.PH) M(" ('T*"7T*(" ('T*"B ("!S=&%T:6, =F]I9"!Y:65L9" I"B ("![ M" ES8VAE9%]Y:65L9" I.PH (" ?0H*(" ('-T871I8R!U:6YT(&YT:')E M861S(#T ,3L*"B <')I=F%T93H*"B ("!S=&%T:6, =6EN="!A;&Q4:')E M861S1&EM.PH (" <W1A=&EC($]B:F5C="!T:')E861,;V-K.PH (" <W1A M=&EC(%1H<F5A9%LO*E]03U-)6%]42%)%041?5$A214%$4U]-05 J+R Q,#!= M(&%L;%1H<F5A9',["B ("!S=&%T:6, <V5M7W0 9FQA9U-U<W!E;F0[" H M(" 5%, <W1A=&4["B ("!I;G0 :61X(#T +3$["0D)+R\ :6YD97 :6YT M;R!A;&Q4:')E861S6UT*(" (&EN="!F;&%G<R ](# [" H (" :6YT(" J M9G I*'9O:60 *BD["B ("!V;VED("IA<F<[" H (" :6YT(&1E;&5G871E M*"D 9&<[" H (" =F]I9"!E<G)O<BAC:&%R6UT ;7-G*0H (" >PH)=&AR M;W< ;F5W(%1H<F5A9$5R<F]R*&US9RD["B ("!]" H*(" ("\J*BHJ*BHJ M*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BH*(" M(" J(%1H:7, :7, :G5S="!A('=R87!P97( =&\ :6YT97)F86-E(&)E='=E M96X 0R!R=&P 86YD(%1H<F5A9"YR=6XH*2X*(" (" J+PH*(" (&5X=&5R M;B H0RD <W1A=&EC('9O:60 *G1H<F5A9'-T87)T*'9O:60 *G I"B ("![ M" E4:')E860 =" ](&-A<W0H5&AR96%D*7 [" EI;G0 <F5S=6QT.PH*"61E M8G5G("AT:')E860I('!R:6YT9B B4W1A<G1I;F< =&AR96%D(' E>" H)60I M7&XB+"!T+"!T+FED>"D[" H)+R\ 3F5E9"!T;R!S970 ="YI9"!H97)E+"!B M96-A=7-E('1H<F5A9"!I<R!O9F8 86YD(')U;FYI;F<*"2\O(&)E9F]R92!P M=&AR96%D7V-R96%T92 I('-E=', :70N" ET+FED(#T <'1H<F5A9%]S96QF M*"D[" H)="YS=&%C:T)O='1O;2 ](&=E=$534" I.PH)=')Y" E[" D (" M<F5S=6QT(#T ="YR=6XH*3L*"7T*"6-A=&-H("A/8FIE8W0 ;RD*"7L*"2 M("!P<FEN=&8H(D5R<F]R.B B*3L*"2 ("!O+G!R:6YT*"D[" D (" <F5S M=6QT(#T ,3L*"7T*" ED96)U9R H=&AR96%D*2!P<FEN=&8H(D5N9&EN9R!T M:')E860 )61<;B(L('0N:61X*3L*"70N<W1A=&4 /2!44RY415)-24Y!5$5$ M.PH)86QL5&AR96%D<UMT+FED>%T /2!N=6QL.PH)="YI9' /2 M,3L*"6YT M:')E861S+2T[" ER971U<FX *'9O:60J*7)E<W5L=#L*(" ('T*" H (" M+RHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ"B (" M*B!#<F5A=&4 82!4:')E860 9F]R(&=L;V)A;"!M86EN*"DN"B (" *B\* M"B ("!S=&%T:6, =&AI<R I"B ("![" ET:')E861,;V-K(#T ;F5W($]B M:F5C=" I.PH*"51H<F5A9"!T(#T ;F5W(%1H<F5A9" I.PH*"70N<W1A=&4 M/2!44RY254Y.24Y'.PH)="YI9" ]('!T:')E861?<V5L9B I.PH)="YS=&%C M:T)O='1O;2 ]("AV;VED*BE?7VQI8F-?<W1A8VM?96YD.PH)<WEN8VAR;VYI M>F5D("AT:')E861,;V-K*0H)>PH)(" (&%S<V5R=" A86QL5&AR96%D<ULP M72D[" D (" 86QL5&AR96%D<ULP72 ]('0[" D (" 86QL5&AR96%D<T1I M;2 ](#$[" D (" ="YI9' /2 P.PH)?0H*"2\J($EN<W1A;&P <VEG;F%L M(&AA;F1L97)S('-O('=E(&-A;B!S=7-P96YD+W)E<W5M92!T:')E861S" D M*B\*" EI;G0 <F5S=6QT.PH)<VEG86-T:6]N7W0 <VEG86-T.PH)<F5S=6QT M(#T <VEG9FEL;'-E=" F<VEG86-T+G-A7VUA<VLI.PH):68 *')E<W5L="D* M"2 ("!G;W1O($QF86EL.PH)<VEG86-T+G-A7VAA;F1L97( /2 F<&%U<V5( M86YD;&5R.PH)<F5S=6QT(#T <VEG86-T:6]N*%-)1U534C$L("9S:6=A8W0L M(&YU;&PI.PH):68 *')E<W5L="D*"2 ("!G;W1O($QF86EL.PH)<VEG86-T M+G-A7VAA;F1L97( /2 F<F5S=6UE2&%N9&QE<CL*"7)E<W5L=" ]('-I9V%C M=&EO;BA324=54U(R+" F<VEG86-T+"!N=6QL*3L*"6EF("AR97-U;'0I" D M(" 9V]T;R!,9F%I;#L*" ER97-U;'0 /2!S96U?:6YI=" F9FQA9U-U<W!E M;F0L(# L(# I.PH):68 *')E<W5L="D*"2 ("!G;W1O($QF86EL.PH*"7)E M='5R;CL*"B (" ($QF86EL. H)9V5T5&AI<R I+F5R<F]R*")C86YN;W0 M:6YI=&EA;&EZ92!T:')E861S(BD["B ("!]" H (" +RHJ*BHJ*BHJ*BHJ M*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BH*(" (" J(%1H:7, 9V5T<R!C86QL M960 =VAE;B!A('1H<F5A9"!G971S(%-)1U534C$N"B (" *B\*"B ("!E M>'1E<FX *$,I('-T871I8R!V;VED('!A=7-E2&%N9&QE<BAI;G0 <VEG*0H M(" >PEI;G0 <F5S=6QT.PH*"2\O(%-A=F4 86QL(')E9VES=&5R<R!O;B!T M:&4 <W1A8VL <V\ =&AE>2=L;"!B92!S8V%N;F5D(&)Y('1H92!'0PH)87-M M" E[" D (" <'5S:&$).PH)?0H*"6%S<V5R="AS:6< /3T 4TE'55-2,2D[ M" ES96U?<&]S=" F9FQA9U-U<W!E;F0I.PH*"7-I9W-E=%]T('-I9VUA<VL[ M" ER97-U;'0 /2!S:6=F:6QL<V5T*"9S:6=M87-K*3L*"6%S<V5R="AR97-U M;'0 /3T ,"D[" ER97-U;'0 /2!S:6=D96QS970H)G-I9VUA<VLL(%-)1U53 M4C(I.PH)87-S97)T*')E<W5L=" ]/2 P*3L*" E4:')E860 =" ](&=E=%1H M:7,H*3L*"70N<W1A8VM4;W /2!G971%4U H*3L*"70N9FQA9W, )CT ?C$[ M" EW:&EL92 H,2D*"7L*"2 ("!S:6=S=7-P96YD*"9S:6=M87-K*3L)+R\ M<W5S<&5N9"!U;G1I;"!324=54U(R" D (" :68 *'0N9FQA9W, )B Q*0D) M+R\ 96YS=7)E(&ET('=A<R!R97-U;65(86YD;&5R*"D*"0EB<F5A:SL*"7T* M" DO+R!297-T;W)E(&%L;"!R96=I<W1E<G,*"6%S;0H)>PH)(" ('!O<&$) M.PH)?0H (" ?0H*(" ("\J*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ M*BHJ*BHJ"B (" *B!4:&ES(&=E=', 8V%L;&5D('=H96X 82!T:')E860 M9V5T<R!324=54U(R+ H (" ("HO" H (" 97AT97)N("A#*2!S=&%T:6, M=F]I9"!R97-U;65(86YD;&5R*&EN="!S:6<I"B ("![" E4:')E860 =" ] M(&=E=%1H:7,H*3L*" ET+F9L86=S('P](#$["B ("!]" H (" <W1A=&EC M('9O:60J(&=E=$534" I"B ("![" EA<VT*"7L ("!N86ME9 D[" D (" J;6]V($5!6"Q%4U ).PH)(" (')E= D).PH)?0H (" ?0I]" H*?0H* ` end

Sep 29 2003