I am in the process of developing a PurePerl DBD driver for DataFlex files.

In the process I have deciphered the attached information regarding DatFlex
file formats.
I am fairly certain that DataFlex's data file format has not changed since
DF 3.0. That includes
all versions of Visual DataFlex.

While I consider myself to be a competent programmer, My knowledge of Perl
has some fairly
large gaps. I can accomplish what i need to and love it as a language, but
my solutions are not
nearly as elegant (or cryptic) as others. Anyway, I hope to be able to
release a pre-alpha readonly
version shortly. The driving force behind this is that I need it myself.
While my need is high my
requirements are not, so additional functionality (support for index files,
... may wait)

Reading through a number of drivers they appear to refer to information not
contained in the
DBD driver writers guide 11.2. I havenot found any other refernce available
for writing DBD
drivers. Is there further information available ?

Is there any somewhat standardized definition of what a DSN is ?
Most of the file based drivers I have read either treat it as a directory
containing the appropriate files,
or just an individual file. The DataFlex definition of a Database most
closely corresponds to an SQL table.
There is no direct equivalent of an SQL database, but DataFlex has a config
file that basically is a table
of available databases. Dataflex requires that to handle its approximate
equivalent of Joins but these are
hard wired and I see no need to support them. Further DF will search a path
for the "Databases" it is
looking for (so long as they are in the config file). My conception of a DSN
is a path where all found DF
Databases become Tables in the Database/DSN. Is there any reason to reject
that ?

Finally, am I correct in reading that the only subs in the module that
absolutely must directly manipulate
the file are:
        statement::open_table
        statement::seek
        statement::fetch_row
and   statement::push_row ?

Thank You.

"Jaap Voets" <[EMAIL PROTECTED]> wrote in message
[EMAIL PROTECTED]">news:[EMAIL PROTECTED]...
> I hope this is the right place to ask this question. If not please accept
my
> apologies.
>
> I've been looking around for a DBD module to fetch data from DataFlex
files.
> Personally I never heard about the product before someone handed me over
> some very nice data  that was inside a DataFlex database. There are some
> commercial products around that can interface with this data, but these
are
> way to expensive for the non-profit website I program for. The only thing
at
> moment I would like to do is read from the DataFlex files from within
perl.
>
> Does anyone have experience with DataFlex, or maybe a file format
> description? Some prototype code for this database that never left your
PC?
>
> regards
>
> jaap voets
>
> ps. www.dataaccess.com is the company that produces dataflex.


begin 666 df30.txt
M"0T*#0H)"41!5$%&3$58(#,N,"!$051!1DE,12!(14%$15(@4U1254-455)%
M#0H-"E1H:7,@9&5S8W)I<'1I;VX@;V8@=&AE($1A=&%F;&5X(#,N,"L@9FEL
M92!S=')U8W1U<F4@:7,@;&]O<V5L>2!B87-E9"!O;B!A( T*,BXS8B!F:6QE
M(&1E<V-R:7!T:6]N($D@=V%S(&%B;&4@=&\@9FEN9"!O;B!T:&4@=V5B(&1O
M;F4@8GDZ#0H-"D)Y(%!E=&5R($TN($=R:6QL;PT*34%)3E-44D5!32!#3TU0
M551%4B!#3TY354Q424Y'#0H-"DEN('1H92!C;W5R<V4@;V8@9&5V96QO<&EN
M9R!A($1"22!D<FEV97(@9F]R($1A=&%F;&4@,RYX(&9O<FUA=" N1$%4(&9I
M;&5S#0I)(&AA=F4@:&%D('1O('5P9&%T92!I="!T;R!R969L96-T('1H92!S
M:6UI;&%R(&)U="!D:69F97)E;G0@<W1R=6-T=7)E(&]F(&$-"D1&(#,N>"!F
M;W)M870@9&%T86)A<V4N($D@:&%V92!F;V-U<V5D(&]N(&1E8VEP:&5R:6YG
M('1H92!I;F9O<FUA=&EO;B!T:&%T( T*22!N965D960@9F]R('1H870@<'5R
M<&]S92X@4V\@9F%R('1H92!I;F9O<FUA=&EO;B!)(&AA=F4@9&5C:7!H97)E
M9"!H87,-"F)E96X@;6]R92!T:&%N('-U9F9I:6-I96YT('1O(&UE970@;7D@
M;F5E9',N($AO<&5F=6QL>2!I="!C86X@8F4@;V8@=7-E('1O( T*;W1H97)S
M+@T*#0H-"E1H92!$1B S+G@@+D1!5"!F:6QE(&1I=FED97,@:6YT;R!T=V\@
M<&]R=&EO;G,Z#0H-"@E!(&AE861E<B!C;VYT86EN:6YG(&EN9F]R;6%T:6]N
M(&1E<V-R:6)I;F<@=&AE(&-O;G1E;G1S(&]F('1H92!F:6QE+@T*"4$@8F]D
M>2!S=&%R=&EN9R!W:71H('1H92!.54Q,(')E8V]R9"!W:71H(#$@<F5C;W)D
M(&9O<B!E86-H(')E8V]R9" -"@EI;B!T:&4@9&%T86)A<V4N#0H-"@T*5&AE
M("Y(1%(@9FEL92!T:&%T(&ES(&-R96%T960@:68@:&5A9&5R(&EN=&5G<FET
M>2!I<R!E;F%B;&5D(&ES('9I<G1U86QL>2 -"FED96YT:6-A;"!T;R!T:&4@
M:&5A9&5R('!O<G1I;VX@;V8@=&AE(&1A=&%B87-E('5P('1H<F]U9V@@<F5C
M;W)D(# N#0I(;W=E=F5R(&ET(&UA>2!H879E('-L:6=H=&QY(&1I9F9E<F5N
M="!C:&5C:W-U;2!V86QU97,@86YD('-O;64@<F5C;W)D#0IC;W5N="!F:65L
M9',@87)E('-O;65T:6UE<R!S;&EG:'1L>2!B96AI;F0N#0H-"@T*06QL('9A
M;'5E<R!I;B!T:&4@:&5A9&5R(&%R92!S=&]R960@:6X@3%-"+4U30B!O<F1E
M<BX-"@T*5&AE($AE861E<B!H87,@<V5V97)A;"!P;W)T:6]N<RX-"@T*#0H)
M5&AE(%!R:6UA<GD@:&5A9&5R+@T*#0H)"51H:7,@:&%S(&9E:6QD<R!D97-C
M<FEB:6YG(&]V97)A;"!A='1R:6)U=&5S(&%N9"!O<'1I;VYS#0IO9B!T:&4@
M+D1!5"!F:6QE(&%S(&9O;&QO=W,Z#0H-"F]F9G-E="!F<F]M('-T87)T(&]F
M(&9I;&4@*&AE>"D@1&5S8W)I<'1I;VX-"@T*,'@P(" )1%=/4D0@"0D)2&EG
M:&5S="!296-O<F0@3G5M8F5R("AE=F5R*2 -"C!X-" @"4173U)$(" @"0E(
M87,@<V]M971H:6YG('1O(&1O('=I=&@@<F5U<V4@;V8@9&5L971E9"!S<&%C
M90T*"0D)"3 @:68@9&5L971E9"!S<&%C92!I<R!N;W0@<F4M=7-E9 T*"0D)
M"75N9&5C:7!H97)E9"!V86QU92 M('!O<W-I8FQY(&9I<G-T(&%V86EL86)L
M92!R96-O<F0@(R!O=&AE<G=I<V4N#0H-"C!X." @"4173U)$"0D)4F5C;W)D
M<R!U<V5D( T*,'AC(" )1%=/4D0)"0E-87AI;75M(')E8V]R9',@*'-E="!I
M;B!$1DE,12!P87)A;65T97)S*0T*,'@Q," @( E$5T]21 D@"0D_(&AE861E
M<B!I;G1E9W)I='D@#0H)"0D),"!I9B!H96%D97(@:6YT96=R:71Y(&1I<V%B
M;&5D#0H)"0D)/R!#:&5C:W-U;2!I9B!E;F%B;&5D#0HP>#$T(" )1%=/4D0@
M(" )"3\@0VAE8VMS=6T-"@D)"0E4:&5R92!A<&5A<B!T;R!B92 T(&]F('1H
M97-E(&%T#0H)"0D)"3!X,30-"@D)"0D),'@Q. T*"0D)"0DP>#,X#0H)"0D)
M"3!X-3 -"@D)"0E/<FEG:6YA;&QY($D@=&AO=6=H="!T:&5S92!W97)E(&1A
M=&4O=&EM92 -"@D)"0ES=&%M<',L(&)U="!N;W<@22!A;2!S=7-P:6-I;W5S
M('1H870@=&AE>0T*"0D)"6%R92!S;VUE('1Y<&4@;V8@8VAE8VMS=6TN($%N
M>7=A>2!T:&5Y(&-H86YG92 -"@D)"0EP<F5T='D@;75C:"!A;GD@=&EM92!T
M:&%T('EO=2!M86ME(&$@8VAA;F=E('1O( T*"0D)"6$@9FEL92!W:71H($1&
M1DE,12X-"C!X,3@)1%=/4D0)"0D_($-H96-K<W5M( T*,'@Q8R @"4)95$4)
M,S )"4D@8F5L96EV92!T:&ES(&ES('1H92!F:6QE(&9O<FUA="!V97)S:6]N
M+@T*"4)95$4),S )"4)Y=&5S(#!X,6,@86YD(#!X,60@87!P96%R('1O(&%L
M=V%Y<R!B92 P>#%E(&]R(#,P(&1E8VEM86P-"@D)( T*,'@Q90E"651%"3 -
M"C!X,68)0EE410D)"4-O;7!R97-S:6]N(# ];F]N92 Q/69A<W0@,CUS=&%N
M9&%R9" S/0T*,'@R," @"4173U)$(" @"0D_($9I<G-T(&%V86EL86)L92!R
M96-O<F0-"@D)"0DP(&EF(&1E;&5T960@<W!A8V4@:7,@<F4M=7-E9" -"C!X
M,C@)1%=/4D0)"0DP+"!U;F1E8VEP:&5R960@:68@0V]M<')E<VEO;@T*,'@S
M, E$5T]21 D)"3 L('5N9&5C:7!H97)E9"!I9B!S=&%N9&%R9"!C;VUP<F5S
M<VEO;@T*,'@S. E$5T]21 D)"3\@0VAE8VMS=6T-"C!X,V,)1%=/4D0)"0D_
M(&%L=V%Y<R P( D-"C!X-# )0EE410D)"7)E;&%T960@=&\@:&5A9&5R(&EN
M=&5G<FET>2X@(# ](&1I<V%B;&5D('5N9&5C:7!H97)E9"!I9B!E;F%B;&5D
M#0HP>#0Q"4)95$4)"0E&:6QE($QO8VMI;F<@,3U4<G5E(# ]9F%L<V4-"C!X
M-&$)5T]21 D)"3 ]4F5U<V4@9&5L971E9"!S<&%C92 M,3T@9&\@;F]T+B @
M+3$]($-O;7!R97-S:6]N#0HP>#1C"5=/4D0)"0D_($-H96-K<W5M(&-H86YG
M97,@;6]R92!F<F5Q=65N=&QY('1H86X@=&AE($173U)$(&-H96-K<W5M<PT*
M,'@U, E$5T]21 D)"3\@0VAE8VMS=6T@#0HP>#DX"5=/4D0)"0E296-O<F1S
M('5N=&EL(')E;6%I;F1E<B!B;&]C:R -"@D)"0E"87-I8V%L;'D@<F5C;W)D
M<R\U,3(@8GET92!B;&]C:R!O<@T*"0D)"3$@9F]R(&%N>71H:6YG('1H870@
M:&%S(&YO(')E;6%I;F1E<B!B;&]C:W,N#0HP>#EA"5=/4D0)"0E296-O<F0@
M3&5N9W1H( D-"C!X830)0EE410D)"5)E=7-E($1E;&5T960@<F5C;W)D<R Q
M/51R=64@,#UF86QS90T*,'AA-0E"651%"0D)1FEE;&1S+U)E8V]R9" -"C!X
M83@)0EE410D)"49I;&4@3&]C:VEN9R Q/71R=64@,#UF86QS90T*,'AA.0E"
M651%"0D)/R!A;'=A>7,@,0T*,'AA9 E"651%"0D)/R!A;'=A>7,@,0D-"C!X
M864)0EE410D)"3\@#0H)"0T*,'AB, E);F1E>"!486)L90T*#0H),38@16YT
M<FEE<R!O9B Q."!">71E<R!E86-H(&%S(&9O;&QO=W,Z#0H-"@E"651%"0D)
M3G5M8F5R(&]F(&9I96QD<R!I;B!I;F1E>" K(#!X.# @:68@=&AE(&EN9&5X
M(&ES(&$@0F%T8V@@:6YD97@-"B @(" Q-B @0EE415,)"0E&:65L9"!N=6UB
M97)S(&9O<B!E86-H('-E9VUE;G0-"B @(" )0EE410D)"49L86<@8GET92 P
M>#$@/2!$97-C96YD:6YG+T%S8V5N9&EN9R P>#(@/2!5<'!E<F-A<V4-"@T*
M"0T*,'@R9# )1&%T8F%S92!.86UE#0H@(" @,38@0GET97,)"0E&:6QE(')O
M;W0@;F%M92!.=6QL(&9I;&QE9 T*#0HP>#)E," )1FEE;&0@1&5F:6YI=&EO
M;B!T86)L92 -"@T*"3(U-B!E;G1R:65S(&]F(#@@8GET97,-"@D-"@E73U)$
M"0D)3V9F<V5T(&9R;VT@<W1A<G0@;V8@<F5C;W)D#0H)0EE410D)"4AI9V@@
M3FEB8FQE(#T@36%I;B!);F1E>"!.=6UB97(-"@D)"0E,;W<@3FEB8FQE(#T@
M1&5C:6UA;"!P;VEN=',O,@T*"4)95$4)"0E&:65L9"!,96YG=&@@*$)Y=&5S
M*0T*(" @( D)"0D)0GET97,O05-#24D-"@D)"0D)0GET97,O,38@9F]R(%1%
M6%0O0FEN87)Y#0H-"@E"651%"0D)1FEE;&0@5'EP90T*"0D)"0DP(#T@05-#
M24D-"@D)"0D),2 ]($YU;65R:6,-"@D)"0D),B ]($1A=&4-"@D)"0D),R ]
M($]V97)L87 -"@D)"0D)-2 ](%1E>'0@#0H)"0D)"38@/2!":6YA<GD@#0H-
M"B @( E"651%"0D)4F5L871E<R!T;R!F:6QE(",-"@E73U)$"0D)4F5L871E
M<R!T;R!&:65L9" C#0H-"@D-"C!X,&,P, E296-O<F0@(R P($YU;&P@9FEL
M;&5D#0H-"@E&;VQL=V5D(&)Y(')E8V]R9',@:6X@9&%T86)A<V4@:6X@<F5C
M;W)D(&YU;6)E<B!O<F1E<B!B;&]C:V5D('1O(#4Q,B!B>71E(&)L;V-K<PT*
M"7=I=&@@8FQO8VL@9FEL;"!A<R!R97%U:7)E9"X-"@T*#0H)22!H879E(&YO
M="!N965D960@=&\@9&EC:7!H97(@86YY(&]F('1H92!C;VUP<F5S<VEO;B!S
M8VAE;65S('5S960N( T*"5=H96X@9&%T82!I<R!U;F-O;7!R97-S960@9FEE
M;&1S(&]C8W5R(&EN('1H92!R96-O<F0@:6X@=&AE(&]R9&5R('1H97D@87)E
M(&1E9FEN960L( T*"71H;W5G:"!T:&4@9FEE;&0@=&%B;&4@9F]R;6%T('=O
M=6QD(&%L;&]W('1H96T@=&\@8F4@:6X@82!D:69F97)E;G0@;W)D97(N#0H-
M"@E!4T-)22!V86QU97,@87)E('-T;W)E9"!A<R!!4T-)22!D871A(#$@8VAA
M<F%C=&5R+V)Y=&4@=VET:"!F:65L9',@8FQA;FL@9FEL;&5D+@T*"4Y534)%
M4B!V86QU97,@87)E('-T;W)E9"!A<R!"0T0@96YC;V1E9"!N=6UB97)S('=I
M=&@@=&AE(&1E8VEM86P@<&]I;G0@;&]C871E9"!B>2!T:&4@9FEE;&0-"@ED
M969I;FET:6]N+@T*"41!5$4@=F%L=65S(&%R92!S=&]R960@87,@8FEN87)Y
M(&1A>2!N=6UB97)S(&EN(#,@8GET97,L($Q30B!F:7)S="X-"@E3:7IE('9A
M;'5E<R!F;W(@05-#24DL($Y534)%4B!A;F0@1$%412!A<F4@:6X@8GET97,-
M"@D-"@E415A4(&%N9"!"24Y!4ED@=F%L=65S(&%R92!S=&]R960@,2!"651%
M+T)95$4@#0H)4VEZ92!V86QU97,@87)E(&EN(#$V(&)Y=&4@;75L=&EP;&5S
M+@T*"0T*"0T*26YD97@@1FEL92!&;W)M870-"@T*"51H92!I;F1E>&5S(&%R
M92!I;B Q,#(T(&)Y=&4@8FQO8VMS#0H)96%C:"!B;&]C:R!S=&%R=',@=VET
M:" T(&)Y=&5S#0H)5&AE(#-R9"!B>71E(&ES('1H92!C;W5N="!O9B!R96-O
M<F1S(&EN('1H92!B;&]C:RX-"@E4:&4@8FQO8VMS(&%R92 P(&9I;&QE9 T*
M"51H92 @:6YD97@@<F5C;W)D<R!S=&%R="!A="!O9F9S970@-"!I;B!T:&4@
M8FQO8VL-"@E4:&4@:6YD97@@:7,@8F%S:6-A;&QY('1H92!D871A('9A;'5E
M<R!F<F]M('1H92!I;F1E>"!F:65L9',@<W1O<F5D(&EN(&]R9&5R( T*"0EO
M9B!T:&4@:6YD97@@:V5Y<SH-"@D)07-C:6D@5F%L=65S(&%R92!C;VYV97)T
M960@=&\@=&AE:7(@8V]L;&%T:6YG('-E<75E;F-E(&YU;6)E<G,@9FER<W0-
M"@D)26X@=&AE(&%M97)I8V%N(&-O86QA=&EN9R!S97%U96YC92 -"@D)03TR
M,#0@86YD('1H92!O<F1E<B!O9B!C:&%R86-T97)S(&ES($%A0F(N+BX-"@D)
M3F]N+6%S8VEI('9A;'5E<R!A<F4@87,@=&AE>2!A<F4@<W1O<F5D(&EN('1H
M92!$0@T*"51H97)E(&ES(&$@,R!B>71E(&9I96QD('!O:6YT:6YG('1O('1H
M92!R96-O<F0@;G5M8F5R(&EN('1H92!F:6QE(&%T('1H92!E;F0@;V8@=&AE
M(&EN9&5X(')E8V]R9 T*#0H)22!B96QE:79E('1H92!I;F1E>"!R96-O<F1S
M(&%R92!I;B!O<F1E<B!F<F]M('1H92!P:'ES:6-A;"!S=&%R="!O9B!T:&4@
M9FEL92!T:')O=6=H('1H92!E;F0@86YD( T*"71H92!B;&]C:VEN9R!A;F0@
M;G5L;"!F:6QL:6YG(&]F('1H92!I;F1E>"!B;V-K<R!I<R!T;R!M86ME(&ET
M(&5A<VEE<B!T;R!I;G-E<G0@:6YD97@@<F5C;W)D<RX-"@E-;W-T(&]F('1H
M92!);F1E>&5S('1H870@22!H879E(&1U;7!E9"!S965M('1O(&AA=F4@<F]O
M;2!F;W(@<V5V97)A;"!A9&1I=&EO;F%L(')E8V]R9',@870@=&AE( T*"65N
M9"!O9B!E86-H(&)L;V-K+@T*#0H)5&AE<F4@:7,@82!P;W-S:6)L92!U<V4@
M9F]R('1H92!I;F1E>"!F:6QE<R!B97EO;F0@=&AA="!O9B!P<F]G<F5S<VEN
M9R!T:')O=6=H('1H92!F:6QE(&EN(&$@#0H)<W!E8VEF:6,@;W)D97(N($ET
M('-H;W5L9"!B92!P;W-S:6)L92!T;R!R96-O;G-T<G5C="!T:&4@9&%T82!F
M;W(@=&AO<V4@9FEE;&1S(&]F(&$@9&%T86)A<V4-"@ET:&%T(&%R92!C;VYT
M86EN960@:6X@=&AE(&EN9&5X(&)Y(&5X=')A8W1I;F<@=&AE(&1A=&$@9G)O
M;2!T:&4@:6YD97AE<R!I9B!T:&5Y(&%R92!A=F%I;&%B;&4N#0H)26X@;6%N
M>2!I;G-T86YC97,@;6%N>2!O<B!A;&P@9FEE;&1S(&]F(&$@9&%T86)A<V4@
M<&%R=&EC:7!A=&4@:6X@=&AE(&EN9&5X+B!!<VED92!F<F]M(&-O;G9E<G1I
M;F<-"@ET:&4@05-#24D@=F%L=65S(&9R;VT@=&AE:7(@8V]L;&%L871I;F<@
M97%U:79A;&5N=',L('1H:7,@<VAO=6QD(&%C='5A;&QY(&)E(&9A:7)L>2!S
M:6UP;&4@86YD( T*"71H97)E(&%R92!C97)T86EN;'D@:6YS=&%N8V5S(&EN
M('1H92!P87-T('=H97)E($D@=VES:"!)(&AA9"!T:&%T(&-A<&%B:6QI='DN
M#0H-"DD@:&%V92!N;R!P87)T:6-U;&%R(&YE960@9F]R($9I;&5L:7-T+F-F
M9R!F;W(@;7D@<'5R<&]S97,@8G5T(&ET('-E96US('1O(')E;6%I;B!A<R!D
M97-C<FEB960@:6X@#0IT:&4@,BXS8B!F;W)M870@9FEL92!B>2!0971E<B!-
M+B!'<FEL;&\@3&ES=&5D(&)E;&]W(&5X8V5P="!T:&%T(&ET(&-A;B!B92!E
M>'1E;F1E9"!T;R!M;W)E(')E8V]R9',-"F9O<B!M;W)E(&9I;&5S.@T*#0H)
M1FEL96QI<W0N8V9G(&ES(&$@8V]L;&5C=&EO;B!O9B Q,C@@8GET92!R96-O
M<F1S+B Q('!E<B!F:6QE(&EN(&]R9&5R(&)Y($1&($9I;&4@;G5M8F5R+@T*
M"5)E8V]R9" P(&-O;G1A:6YS('1H92!2;V]T($9I;&4@;F%M92!&:6QE;&ES
M="YC9F<@86YD(&ES(&]T:&5R=VES92!N=6QL(&9I;&QE9"X-"@E296-O<F0@
M,2!C;W)R97-P;VYD<R!T;R!$1B!F:6QE(",@,0T*#0I(97@@(" @(" )"41E
M<V-R:7!T:6]N#0H-"C!X," )0EE412 )"49I;&4@4F]O="!.86UE"2A.=6QL
M($9I;&QE9"D-"C!X,CD@"4)95$4)"49I;&4@1&5S8W)I<'1I;VX@*$YU;&P@
M1FEL;&5D*0T*,'@T02 )0EE410D)1&%T869L97@@1FEL92!.86UE("A.=6QL
M($9I;&QE9"D-"@T*0T]065))1TA4#0H-"@T*(" @(" @($1A=FED($@N($QY
M;F-H($IR+@T*(" @(" @(#QD:&QI:4 Q9&QA+F-O;3X-"@T*(" @0V]P>7)I
M9VAT("A#*2 R,# R(&)Y($1A=FED($@N($QY;F-H($IR+@T*#0H@("!!;&P@
M<FEG:'1S(')E<V5R=F5D+@T*#0H)07-I9&4@9G)O;2!0971E<B!#<FEL;&\G
M<R!$1B R+C-B($9I;&4@9F]R;6%T(&1E<V-R:7!T:6]N+"!M>2!O=VX@<&]K
M:6YG(&%R;W5N9"P-"@EA;F0@=&AE(&EN<VEG:'1S(&=A:6YE9"!F<F]M(#(P
M('EE87)S(&9O($1&('!R;V=R86UI;F<L($D@:&%V92!N;W0@=7-E9"!A;GD@
M#0H@(" @(" @($1A=&%!8V-E<W,@:6YF;W)M871I;VX@;W(@<F5S;W5R8V5S
M+B!4:&5R969O<F4@=&AI<R!I<R!A;B!O<FEG:6YA;"!W;W)K+@T*"4D@8F5L
M96EV92!$871A06-C97-S(&-O;G-I9&5R<R!T:&4@1&%T849L97@@1FEL92!F
M;W)M871S('!R;W!R:65T87)Y+B -"@E!;GD@=7-E('EO=2!M86ME(&]F('1H
M:7,@:6YF;W)M871I;VX@:7,@870@>6]U<B!O=VX@<FES:RX-"@T*"4EF('EO
M=2!A<F4@86)L92!T;R!A9'9A;F-E('1H92!K;F]W;&5D9V4@8V]N=&%I;F5D
M(&EN('1H:7,@9FEL92!W:71H;W5T#0H);6%K:6YG('5S92!O9B!I;F9O<FUA
M=&EO;B!S;W5R8V5S('1H870@=V]U;&0@=FEO;&%T92!T:&4@=&5R;7,@86YD
M(&-O;F1I=&EO;G,@;V8-"@EL:6-E;G-E<R!O<B!A9W)E96UE;G1S('=I=&@@
M1&%T84%C8V5S<R!A;F0@>6]U(&%R92!W:6QL:6YG('1O(&9O<G=A<F0@=&AA
M=" -"@EI;F9O<FUA=&EO;B!T;R H9&AL:6E ,61L82YC;VT^($D@=VEL;"!I
M;F-O<G!O<F%T92!I="!W:71H(&-R961I="!I;B!A;GD@9G5T=7)E( T*"7)E
M;&5A<V5S('1H97)E(&UA>2!B92!O9B!T:&ES(&9I;&4N#0H-"@E&=7)T:&5R
M('1H92!P=7)P;W-E(&]F(&=A=&AE<FEN9R!T:&ES(&EN9F]R;6%T:6]N('=A
M<R!T:&4@9&5V96QO<&UE;G0@;V8@#0H)82!P97)L($1"1"!D<FEV97(@9F]R
M($1A=&%F;&5X+B!)(&%M(&-U<G)E;G1L>2!E;F=A9V5D(&EN('1H870@969F
M;W)T(&%N9" -"@EH;W!E('1O(&AA=F4@82!R96%D(&]N;'D@=F5R<VEO;B!T
M:&%T(&1O97,@;F]T('-U<'!O<G0@:6YD97AE<R!S:&]R=&QY+@T*"4D@97AP
M96-T('1O('!O<W0@;F]T:6-E(&]F('1H870@=VET:"!T:&4@4&5R;"!$0D0@
M9&5V96QO<&5R<R!A;F0@=&AA="!W96(@#0H)<VET92!W:6QL(')E9FQE8W0@
M=&AE(&-U<G)E;G0@<W1A='5S+B!);B!T:&4@979E;G0@>6]U(&UI9VAT('=I
M<V@@=&\@#0H)87-S:7-T('=I=&@@=&AE(&1E=F5L;W!M96YT(&9E96P@9G)E
M92!T;R!C;VYT86-T(&UE+B!)(&-A;B!U<V4@86QL('1H92 -"@EH96QP($D@
M8V%N(&=E="X@22!A;2!D;VEN9R!T:&ES('!R:6UA<FEL>2!B96-A=7-E($D@
M;F5E9"!I="!A;F0@;F\@;VYE( T*"65L<V4@:&%S(&1O;F4@:70N#0H)#0H@
M("!9;W4@;6%Y(&1I<W1R:6)U=&4@=&AI<R!U;F1E<B!T:&4@=&5R;7,@;V8@
M=&AE($=.52!'96YE<F%L(%!U8FQI8R!,:6-E;G-E+@T*#0I615)324].#0H@
M(" @5&AI<R!D;V-U;65N="!R969E<G,@=&\@=F5R<VEO;B P+C Q(&]F(&1F
M,S N='AT+"!R96QE87-E9"!/8W0@,3 L(#(P,#(N#0H-"D%55$A/4@T*(" @
G($1A=FED($@N($QY;F-H($IR.BX@*&1H;&EI0#%D;&$N8V]M*0T*
`
end

Reply via email to