httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Kornél Pál" <kornel...@hotmail.com>
Subject Re: Windows HTTP API
Date Mon, 21 Jun 2004 21:17:06 GMT
Replay to William A. Rowe, Jr.'s 1) - 2):

I think this should be implemented as new MPM as in other cases the data
prepocessed by HTTP API sould be used to construct lower level things (even
raw request bytes at some level) and this would kill the goals of HTTP API.

Only thing you have to do is to translate HTTP API structures to Apache
HTTPD connection an request structures and in reverse order on response.

HTTP API provides a lot of things including pooling, the only things that
Apache HTTPD has to provide are threads for processing.

And I think filters that are processing raw data should be ignored for this
MPM as they are not usefult in this situation and the raw data should be
recreated from HTTP API structures to can be passed to filters and then
reprocessed again. Other filters dealing with headers and entity body can be
used.

Note that it's possible to preprocess all the raw data that goes through
http.sys, but it's not documented and resuts in performance lost.
See the attached newsgroup article for details.

And you don't have to take care of SSL at all, as you will see HTTPS and
HTTP request the same way. The only difference is that server certificates
has to be configured for SSL and client certificates can be retrieved.
See http://msdn.microsoft.com/library/en-us/http/http/ssl_certificates.asp
and
http://msdn.microsoft.com/library/en-us/http/http/httpreceiveclientcertificate.asp

William A. Rowe, Jr. wrote:
>So it's an interesting thought experiment to me.  But because all of the
>headers decoding would be double-processed in the Win32 kernel and
>in Apache itself, and win32 is handling this processing at the -kernel-
level
>(something both IIS and Apache are guilty of bungling from time to time),
>the schema doesn't strike me as a secure or fast solution.  I didn't see
>any sendfile() or other optimized mechanisms for response bodies, maybe
>I just wasn't digging deep enough.

If you use Winsock the data has to be transported from kernel mode to user
mode and the response in the reverse way as well as TCP/IP is implemented in
kernel mode so this method cannot be slower, but it has to be faster as the
data is preprocessed and only necessary data are transported.
And I think HTTP API doesn't influence the security of a web server, but of
course it can have it's own security holes.:)

If you use kernel mode caching on static files or cacheable dynamic content
it can be really fast as you can send cached content specifying it's name.
And of course you are able to send data from files or from memory buffer.
See http://msdn.microsoft.com/library/en-us/http/http/http_data_chunk.asp

William A. Rowe, Jr. wrote:
>You are handling an HTTP_REQUEST structure, not an arbitrary stream
>of bytes from the client, so it's not a match.  This looks too far
different
>from Apache's socket model, so I'm afraid that working at the I/O layer
>would be overkill.  Replacing the connection mechanism and request pooling
>logic is the straight line.

You have absolutely right. HTTP API does a lot of work this work shouldn't
be dismissed.

Jeff White wrote:
>HTTP.SYS is for quick static responses.
>
>They may be cached html files sent via
>the Windows kernel.  Not a real new big
>business web server. But may be a server
>for the one man shop and may be for security
>of open ports, etc. :)

I have to say you are wrong. HTTP API is really fast in cached responses
however it doesn't mean any overhead on dynamic responses as the work it
does with the request and response should be done by the web server if it
don't use HTTP API. And I think HTTP API doesn't provides any extra
security.

Sincerely,
Kornel


begin 666 Re_ IIS and HTTP API.nws
M1G)O;3H@(D1A=FED(%=A;F<@6TUS9G1=(B \<V]M96]N94!O;FQI;F4N;6EC
M<F]S;V9T+F-O;3X-"E)E9F5R96YC97,Z(#Q/2V=W:5(C545(02XS,#$R0'1K
M,FUS9G1N9W Q,RYP:'@N9V)L/@T*4W5B:F5C=#H@4F4Z($E)4R!A;F0@2%14
M4"!!4$D-"D1A=&4Z(%-A="P@,3D@2G5N(#(P,#0@,#,Z,#(Z,#4@+3 W,# -
M"DQI;F5S.B Q-S8-"E@M4')I;W)I='DZ(#,-"E@M35--86EL+5!R:6]R:71Y
M.B!.;W)M86P-"E@M3F5W<W)E861E<CH@36EC<F]S;V9T($]U=&QO;VL@17AP
M<F5S<R V+C P+C(X,# N,30P.0T*6"U-:6UE3TQ%.B!0<F]D=6-E9"!">2!-
M:6-R;W-O9G0@36EM94],12!6-BXP,"XR.# P+C$T,#D-"DUE<W-A9V4M240Z
M(#PC-DEW86=E5D5(02XS-30P0%1+,DU31E1.1U Q,2YP:'@N9V)L/@T*3F5W
M<V=R;W5P<SH@;6EC<F]S;V9T+G!U8FQI8RYI;F5T<V5R=F5R+FEI<RQM:6-R
M;W-O9G0N<'5B;&EC+G!L871F;W)M<V1K+FEN=&5R;F5T+G-E<G9E<BYI<V%P
M:2UD978-"DY.5% M4&]S=&EN9RU(;W-T.B!T:61E,3 X+FUI8W)O<V]F="YC
M;VT@,C W+C0V+C(R."XQ-@T*4&%T:#H@5$LR35-&5$Y'4# X+G!H>"YG8FPA
M5$LR35-&5$Y'4#$Q+G!H>"YG8FP-"EAR968Z(%1+,DU31E1.1U P."YP:'@N
M9V)L(&UI8W)O<V]F="YP=6)L:6,N<&QA=&9O<FUS9&LN:6YT97)N970N<V5R
M=F5R+FES87!I+61E=CHU,S8S(&UI8W)O<V]F="YP=6)L:6,N:6YE='-E<G9E
M<BYI:7,Z,S$R-3,W#0H-"E1H86YK<R!F;W(@=&AE('%U97)Y+B @22=V92!A
M8W1U86QL>2!N;W0@<V5E;B!E:71H97(@;V8@=&AE<V4@2T)S('5N=&EL(&YO
M=RP-"F)U="!)(&-A;B!T96QL('EO=2!T:&%T('1H92!+0B!I<R!W<F]N9R!T
M;R!S87D@=&AA="!34TP@:6X@24E3-B!U<V5S('1H90T*4T9?3D]424997U)%
M041?4D%77T1!5$$@9FEL=&5R(&YO=&EF:6-A=&EO;B!T;R!F=6YC=&EO;BX@
M($ET(&1O97,@;F]T+B @4U-,#0II;B!)25,V(&ES(&YO="!A;B!)4T%022!&
M:6QT97(N("!))VT@86QS;R!G;VEN9R!T;R!T<GD@=&\@8VQA<FEF>2!T:&4@
M:6YF;PT*:6X@,S$Q.#4R(&)E8V%U<V4@22!T:&EN:R!T:&4@=7-A9V4@;V8@
M=&AE('=O<F1S(")214%$7U)!5U]$051!(B!A;F0-"B)31E].3U1)1EE?4D5!
M1%]205=?1$%402(@87)E('%U:71E(&5R<F%T:6,O8V]N9G5S:6YG+"!A;F0@
M22=M(&%L<V\@9V]I;F<@=&\-"G=O<FL@=&\@9V5T('1H97-E($M"<R!F:7AE
M9"X-"@T*5&AE(&-R=7@@;V8@=VAA="!I<R!G;VEN9R!O;B!I<R!T:&ES("AR
M;W5G:"!C;VYC97!T=6%L(&1E=&%I;',I.@T*#0I(5%10+E-94R!B87-I8V%L
M;'DZ#0HQ+B!R96%D<R!D871A(&9R;VT@=&AE(&YE='=O<FMI;F<@;&%Y97(-
M"C(N('!A<G-E<R!I= T*,RX@9&]E<R!S;VUE(&)A<VEC($A45% M;&5V96P@
M=F%L:61A=&EO;G,@86-C;W)D:6YG('1O($A45% O,2XQ('-P96,-"C0N(')O
M=71E<R!I="!T;R!A('5S97(@;6]D92!P<F]C97-S(&9O<B!R97%U97-T(&5X
M96-U=&EO;BX-"@T*06QL(&]F('1H97-E('-T97!S(&AA<'!E;B!I;B!K97)N
M96P@;6]D92X-"@T*5'=O(&-O;F-E<'1S(&UU8VL@=VET:"!T:&ES(&%R8VAI
M=&5C='5R92!I;B!)25,@+2T@4U-,(&%N9 T*4T9?3D]424997U)%041?4D%7
M7T1!5$$@9FEL=&5R<RX@($)O=&@@8V]N8V5P=',@<F5Q=6ER92!A8V-E<W,@
M=&\@=&AE(')A=PT*9&%T82!S=')E86T@<')I;W(@=&\@:70@8F5I;F<@<&%R
M<V5D(&)Y($A45% N4UE3+"!M96%N:6YG('1H870@:70@:&%S('1O(&)E#0IS
M;VUE:&]W(&EN=&5R:F5C=&5D(&)E='=E96X@<W1E<',@(S$@86YD(",R(&%B
M;W9E+B @4VEN8V4@=V4@8V%N;F]T(&IU<W0-"F5X96-U=&4@97AI<W1I;F<@
M4T9?3D]424997U)%041?4D%77T1!5$$@9FEL=&5R<R H=VAI8V@@87)E('5S
M97(@;6]D92!$3$QS*0T*:6X@:V5R;F5L(&UO9&4L('1H:7,@;65A;G,@=&AA
M="!(5%10+E-94R!W:6QL(&YE960@=&\@:&%V92!S;VUE(")M96-H86YI<VTB
M#0IT;R!S=')E86T@<F%W(&1A=&$@9G)O;2 C,2!I;G1O(&$@=7-E<B!M;V1E
M('!R;V-E<W,L(&QE="!I="!M=6YG92!T:&4@9&%T80T*:&]W979E<B!I="!W
M86YT<RP@86YD('1H96X@<F5T=7)N('1H92!D871A('1O($A45% N4UE3(&EN
M(&ME<FYE;"!M;V1E(&9O<B C,@T*86YD(&-O;G1I;G5E(')E<75E<W0@:&%N
M9&QI;F<N("!.965D;&5S<R!T;R!S87DL('1H:7,@:7,@<75I=&4@82!P<FEV
M:6QE9V5D#0IO<&5R871I;VXN#0H-"E1H=7,L(&)O=&@@4U-,(&%N9"!31E].
M3U1)1EE?4D5!1%]205=?1$%402!R96QY(&]N('1H:7,@(FUE8VAA;FES;2(@
M=&\-"G-T<F5A;2!R87<@9&%T82!F<F]M(&ME<FYE;"!M;V1E(&EN=&\@=7-E
M<B!M;V1E(&%N9"!B86-K+"!P<FEO<B!T;R!S=&5P(",R+@T*3F]W+"!(5%10
M+E-94R!H87!P96YS('1O(&]N;'D@<W5P<&]R="!T:&ES(")M96-H86YI<VTB
M(&9O<B!A(%-)3D=,12!U<V5R#0IM;V1E('!R;V-E<W,@9F]R('9A<FEO=7,@
M=&5C:&YI8V%L(')E87-O;G,@*&EN8VQU9&EN9R!T:&4@9F%C="!T:&%T(&AO
M<W0-"FAE861E<G,@87)E(&YO="!K;F]W;B!;4T9?3D]424997U)%041?4D%7
M7T1!5$$@8V]U;&0@8VAA;F=E(&ET(&%S('=E;&Q=*2X-"@T*5&AE<F5F;W)E
M+"!A;&P@<F5Q=65S=',@=&AA="!R97%U:7)E(%-33"!A;F0O;W(@4T9?3D]4
M24997U)%041?4D%77T1!5$$@9V\-"G1H<F]U9V@@=&AI<R!M96-H86YI<VT@
M+2T@9FER<W0L('1H92!D871A(&ES(')E860@:6X@:V5R;F5L(&UO9&4L('1H
M96X-"G1R86YS:71I;VYE9"!I;G1O('5S97(@;6]D92!T;R!M=6YG92]D96-R
M>7!T+"!T:&5N('1R86YS:71I;VYE9"!B86-K(&EN=&\-"FME<FYE;"!M;V1E
M('1O('!A<G-E+"!A;F0@;&%T97(@<VAU='1L960@8F%C:R!I;G1O('5S97(@
M;6]D92!T;R!E>&5C=71E+@T*3F]T('9E<GD@<')E='1Y+"!B=70@:70@=V]R
M:W,@86YD(&ES(&YO="!T:&4@9&5F875L="!C87-E+@T*#0I.;W<L('=H870@
M9&]E<R!T:&ES(&AA=F4@86YY=&AI;F<@=&\@9&\@=VET:"!)25,V(&UO9&5S
M/R @5V5L;"P@:6X@24E3-0T*0V]M<&%T:6)I;&ET>2!-;V1E+"!T:&4@(FUE
M8VAA;FES;2(@8V%N('5S92!I;F5T:6YF;RYE>&4@87,@=&AE(&QO;F4@=7-E
M<@T*;6]D92!P<F]C97-S('1O(&AA;F1L92!T:&4@<F%W(&1A=&$@<VEN8V4@
M8F]T:"!)4T%022!&:6QT97)S(&%N9"!34TP@;F5E9',-"G1O(')U;B!I;B!T
M:&%T('!R;V-E<W,@86YY=V%Y(&9O<B!C;VUP870@<F5A<V]N<RP@86YD('-O
M#0I31E].3U1)1EE?4D5!1%]205=?1$%402!I<R!C;&5A;FQY('-U<'!O<G1E
M9"X-"@T*5&AI<R!A;&P@8G)E86MS(&1O=VX@:6X@24E3-B!7;W)K97(@4')O
M8V5S<R!)<V]L871I;VX@36]D92!B96-A=7-E#0II;F1I=FED=6%L('<S=W N
M97AE(&QO860@=&AE:7(@;W=N($E305!)($9I;'1E<G,@+2T@<V\@;75L=&EP
M;&4@:6YS=&%N8V5S(&]F#0IT:&4@<V%M92!&:6QT97(@1$Q,(&-A;B!B92!I
M;B!M96UO<GD@:6X@<V5P87)A=&4@=S-W<"YE>&4@+2T@86YD('=H870-"FAA
M<'!E;G,@:68@=&AI<R!&:6QT97(@=7-E<R!31E].3U1)1EE?4D5!1%]205=?
M1$%402 _("!792!N;W<@:&%V92 ^,0T*<')O8V5S<R!W86YT:6YG('1H92!R
M87<@9&%T82!R;W5T960@=&\@:70L(&)U="!(5%10+E-94R!C86X@;VYL>2!R
M;W5T92!T;R!A#0IS:6YG;&4@<')O8V5S<RX@($YO=RP@>6]U(&UA>2!A<F=U
M92!T:&%T('=E('-H;W5L9"!H879E('-P=6X@=7 @;VYE('-I;F=L90T*<W5R
M<F]G871E('!R;V-E<W,@=&\@:&]S="!A;&P@25-!4$D@1FEL=&5R<R!A;F0@
M4U-,+"!B=70@=&AI<R!D97-I9VX-"F1E<W1R;WES(%=O<FME<B!0<F]C97-S
M($ES;VQA=&EO;B!-;V1E("TM('1H:7,@<W5R<F]G871E('!R;V-E<W,@:7,@
M;VYC90T*86=A:6X@82!S:6YG;&4@<&]I;G0@;V8@9F%I;'5R92!F;W(@86QL
M('<S=W N97AE(&%N9"!I<R!N;R!B971T97(@=&AA;B!T:&4-"DE)4S4@<')O
M8V5S<R!M;V1E;" H<W5B<W1I='5T92!I;F5T:6YF;RYE>&4@9F]R('1H92!S
M:6YG;&4@<W5R<F]G871E('!R;V-E<W,-"F%N9"!Y;W4@9V5T('1H92!S86UE
M(&QO;VMI;F<@<&EC='5R92DN("!!;&P@;V8@=&AE(&]T:&5R(&1E<VEG;G,@
M870@=')Y:6YG#0IT;R!E;F%B;&4@4T9?3D]424997U)%041?4D%77T1!5$$@
M:6X@24E3-B!7;W)K97(@4')O8V5S<R!)<V]L871I;VX@36]D92!H879E#0IO
M=&AE<B!S:6UI;&%R(&)U="!F871A;"!F;&%W<RX-"@T*4V\L('1H92!W:&]L
M92!31E].3U1)1EE?4D5!1%]205=?1$%402!C;VYC97!T(&IU<W0@9&]E<R!N
M;W0@=V]R:R!W:71H(%=O<FME<@T*4')O8V5S<R!)<V]L871I;VX@36]D92P@
M86YD(&AE;F-E('=E(&1I9"!T:&4@;F5X="!B97-T('1H:6YG("TM(&1I<V%B
M;&4@=&AE#0IB<F]K96X@8V]N8V5P="P@8G5T(&=I=F4@82!B971T97(@86QT
M97)N871I=F4@=&AA="!A;&QO=W,@.3DN.24@;V8@<&5O<&QE('1O#0ID;R!W
M:&%T('1H97D@86-T=6%L;'D@=V%N=&5D('1O(&1O(&%N9"!L:79E('=I=&@@
M8G)E86MI;F<@=&AA=" P+C$E.@T*,2X@3&5T(%-33"!H879E('1H92!L;VYE
M(')A=R!D871A(")M96-H86YI<VTB(&%N9"!H;W-T(&ET(&EN(&QS87-S+F5X
M92!T;PT*:&%V92!O;FQY(&]N92!P<F]C97-S(&EN=F]L=F5D(&EN(&1E8W)Y
M<'1I;F<O96YC<GEP=&EN9R!D871A#0HR+B!$:7-A8FQE(%-&7TY/5$E&65]2
M14%$7U)!5U]$051!(&EN($E)4S8@5V]R:V5R(%!R;V-E<W,@27-O;&%T:6]N
M($UO9&4-"C,N($UA:V4@<W5R92!T:&%T('1H92!N97<@24E3-B!F96%T=7)E
M+"!(4T5?4D517T5814-?55),+"!C86X@=&%K92!C87)E(&]F#0IT:&4@.3DN
M.24@=7-A9V4@8V%S92!O9B!31E].3U1)1EE?4D5!1%]205=?1$%402 H=VAI
M8V@@:7,@=&AE(&UU;F=E('1H90T*:6YC;VUI;F<@<F5Q=65S="P@:6X@<&%R
M=&EC=6QA<B!03U-4(&5N=&ET>2!B;V1Y(&9R;VT@1D]237,I#0H-"D9R;VT@
M;7D@<&5R<W!E8W1I=F4L('1H92!M86EN('5S97)S('1H870@87)E(&QE9G0@
M:6X@=&AE(&-O;&0@8GD@=&AI<PT*9&5C:7-I;VX@87)E('1H92!P96]P;&4@
M=VAO('=R;W1E('!R;W!R:65T87)Y(&]P87%U92!S=')E86T@9FEL=&5R<RP@
M<W5C:"!A<PT*8W5S=&]M(&5N8W)Y<'1I;VXO8V]M<')E<W-I;VXL(&%N9"!W
M86YT('1O(')U;B!I;B!)25,V(%=O<FME<B!0<F]C97-S#0I)<V]L871I;VX@
M36]D92X@(%1H97)E(&%R92!N;R!S;VQU=&EO;G,@:6X@=&AI<R!C87-E(&]T
M:&5R('1H86X@24E3-0T*0V]M<&%T:6)I;&ET>2!-;V1E+@T*#0I9;W5R('-U
M9V=E<W1I;VX@;V8@(BXN+DEF('EO=2!D;VXG="!W86YT('1O(&UO9&EF>2!I
M=',@8F5H879I;W(@>6]U('-H;W5L9 T*861D(&$@;F5W(&YO=&EF:6-A=&EO
M;B!T>7!E("AI;G!U="!A;F0@;W5T<'5T(&%S('=E;&PI(&]N;'D@9F]R(&UO
M9&EF>6EN9PT*=&AE(&5N=&ET>2!B;V1Y+B(@=V%S(&-O;G-I9&5R960@870@
M;VYE('!O:6YT+"!B=70@=V4@<F5J96-T960@:70N("!790T*86QR96%D>2!I
M;G1R;V1U8V5D($A315]215%?15A%0U]54DP@:6X@25-!4$D@17AT96YS:6]N
M(&EN($E)4S8@=&\@:&%N9&QE('1H90T*.3DN.24@=7-A9V4@8V%S92!O9B!M
M;V1I9GEI;F<@=&AE(&5N=&ET>2!B;V1Y+"!A;F0@25-!4$D@1FEL=&5R(&ES
M(&YO="!T:&4-"G!R969E<G)E9"!)25,@97AT96YS:6]N(&UE8VAA;FES;2 H
M25-!4$D@17AT96YS:6]N(&ES(&9A<B!R:6-H97(@86YD#0ID971E<FUI;FES
M=&EC*2P@<V\@=V4@8VAO<V4@;F]T('1O(&%D9"!A;GD@;F5W(&9I;'1E<B!N
M;W1I9FEC871I;VYS+@T*#0I3;RP@:68@>6]U<B!W:&]L92!R96%S;VX@9F]R
M(%-&7TY/5$E&65]214%$7U)!5U]$051!(&ES('1O(&=E="!A8V-E<W,@86YD
M#0IC;VYT<F]L(&]F('1H92!I;F-O;6EN9R!R97%U97-T+"!T:&5R92!A<F4@
M8F5T=&5R(&%N9"!S=7!P;W)T960@=V%Y<R!O9@T*9&]I;F<@=&AI<R!I;B!)
M25,V+B @0V]N9FEG=7)E(&$@25-!4$D@17AT96YS:6]N(&%S(&$@5VEL9&-A
M<F0@07!P;&EC871I;VX-"DUA<'!I;F<@86YD('5S92!(4T5?4D517T5814-?
M55),+B @66]U('=I;&P@;F]T:6-E('1H870@2%-%7U)%45]%6$5#7U523"!I
M<PT*86)L92!T;R!M;V1I9GD@=&AE(&5N=&ER92!R97%U97-T('1H870@:7,@
M<')O8V5S<V5D(&)Y($E)4RP@:6YC;'5D:6YG(%523"P-"FAE861E<G,L(&5N
M=&ET>2!B;V1Y+"!)25,@:6UP97)S;VYA=&EO;B!T;VME;BP@86YD('-O;64@
M4V5R=F5R5F%R:6%B;&4-"G9A;'5E<R H;&EK92!!551(7U194$4L($%55$A?
M55-%4BP@3$]'3TY?55-%4BP@971C*2P@86YD('=H96X@8V]N9FEG=7)E9"!A
M<PT*82!7:6QD8V%R9"!!<'!L:6-A=&EO;B!-87!P:6YG+"!I="!G971S(&9I
M<G-T(&-R86-K(&%T(&%L;"!T:&4@<F5Q=65S=',@86YD#0IC86X@9FEL=&5R
M+W)E9&ER96-T(&%S(&ET('!L96%S97,N($A315]215%?15A%0U]54DP@:7,@
M979E;B!A8FQE('1O(&-O;G-U;64-"F%N9"!O=&AE<G=I<V4@;75N9V4@=&AE
M(&5N=&ER92!E;G1I='D@8F]D>2!W:71H;W5T('1H92!C:&EL9"!54DP@<F5A
M;&EZ:6YG#0II="P@86YD(&ET(&ES(&9U;&QY(&-O;7!A=&EB;&4@=VET:"!3
M4TPN#0H-"E1H:7,@:7,@8F%S:6-A;&QY('=H870@;6]S="!P96]P;&4@=V%N
M="!T;R!D;R!O;B!T:&4@<V5R=F5R+"!A;F0@24E3-B!G:79E<PT*:70@=&\@
M>6]U(&EN('1H870@;6%N;F5R+B @5V4@9&ED;B=T(&AA=F4@=&AI<R!I;B!P
M<FEO<B!V97)S:6]N<R!O9B!)25,L('-O#0IP96]P;&4@:&%V92!H860@=&\@
M:&%C:R!T;V=E=&AE<B!&:6QT97)S('5S:6YG(%-&7TY/5$E&65]214%$7U)!
M5U]$051!('1O#0IB=69F97(@86YD(&UO9&EF>2!I;F-O;6EN9R!R97%U97-T
M<R H:6YC;'5D:6YG(&5N=&ET>2!B;V1Y*2 M+2!W:&EC:"!D;V5S;B=T#0IW
M;W)K('=I=&@@4U-,+"!31E].3U1)1EE?4%)%4%)/0U](14%$15)3(&9I;'1E
M<B!A;F0@8V]M8F\@25-!4$D@17AT96YS:6]N(&EF#0IY;W4@:G5S="!W86YT
M('1O(&-H86YG92!54DPL(&AE861E<G,L(&%N9"!F=61G92!S;VUE(%-E<G9E
M<E9A<FEA8FQE('9A;'5E<PT*:68@>6]U(&-O;W)D:6YA=&4@=VET:"!31E].
M3U1)1EE?05542$5.5$E#051)3TXL(&%N9"!S;R!O;BX-"DA315]215%?15A%
M0U]54DP@:&%S(&YO;F4@;V8@=&AO<V4@:&%C:WD@;&EM:71A=&EO;G,@+2T@
M>6]U('-I;7!L92!C:&%N9V4-"G1H92!E;G1I<F4@<F5Q=65S="!T:&%T(&=E
M=',@97AE8W5T960@8GD@24E3(&%N9"!T:&5N('1E;&P@24E3('1O(&5X96-U
M=&4-"FET+@T*#0I9;W4@8V%N('-T:6QL(&1O(&%L;"!T:&]S92!H86-K>2!T
M:&EN9W,@:6X@24E3-2!#;VUP871I8FEL:71Y($UO9&4@*'1H870G<PT*=VAA
M="!C;VUP871I8FEL:71Y(&ES(&9O<BDL(&)U="!W92!H:6=H;'D@9&ES8V]U
M<F%G92!I="!I;B!)25,V(%=O<FME<@T*4')O8V5S<R!)<V]L871I;VX@36]D
M92!B96-A=7-E('1H97)E(&%R92!B971T97(@86QT97)N871I=F5S+B @268@
M=V4@9&ED;B=T#0IH879E(&)E='1E<B!A;'1E<FYA=&EV97,L('=E('=O=6QD
M(&AA=F4@;6%D92!S=7)E('1H870-"E-&7TY/5$E&65]214%$7U)!5U]$051!
M(')E;6%I;F5D('1H92!S86UE(&EN(&%L;"!M;V1E<RX-"@T*268@>6]U('=A
M;G0@=&\@=')E870@2%144"!L;V=I8V%L;'DL('-U8V@@87,@55),+"!H96%D
M97)S+"!E;G1I='DM8F]D>2P@>6]U#0IC86X@96ET:&5R(&1O('1H92!H87)D
M('=O<FL@;V8@<&%R<VEN9R!T:')O=6=H(&1A=&$@<W1R96%M(&%S('=I=&@@
M=&AE($%027,-"GEO=2=R92!A<VMI;F<@86)O=70L(&]R('EO=2!C86X@=7-E
M('1H92!L;V=I8V%L($%022!O9B!(4T5?4D517T5814-?55),('1O#0IM;V1I
M9GD@=&AE(&5X86-T('-A;64@=&AI;F<@<')I;W(@=&\@24E3(&5X96-U=&EN
M9R!T:&4@<F5Q=65S="X@($D@;&5A=F4@:70-"G5P('1O('EO=2!T;R!D96-I
M9&4@=VAI8V@@:7,@96%S:65R(&%N9"!M86ME<R!M;W)E('-E;G-E+@T*#0I0
M97)S;VYA;&QY+"!)('-U9V=E<W0@=&AA="!Y;W4@9&]N)W0@9V5T(&AU;F<@
M=7 @;VX@4T9?3D]424997U)%041?4D%77T1!5$$-"FYO<B!(5%1005!)("TM
M('EO=2=R92!R96%L;'D@;F]T(")L;W-I;F<B(&%N>71H:6YG(&EM<&]R=&%N
M="!O=&AE<B!T:&%N(&$-"F)I9R!H86ER8F%L;"!M97-S+@T*#0I!<R!F;W(@
M>6]U<B!S=&%T96UE;G0@:6X@(S(@86)O=70@24E3-B!U<VEN9R!U;F1O8W5M
M96YT960@2%144"!!4$D@=&\-"G!R;V-E<W,@=&AE(')A=R!D871A("TM($D@
M86T@;F]T(&$@;&%W>65R(&YO<B!A;2!)(&%U=&AO<FET871I=F4@;VX@=&AE
M#0IS=6)J96-T+"!B=70@22!C86X@=&5L;"!Y;W4@=&AA=#H-"C$N(%1H92!)
M25,@86YD($A45% N4UE3('1E86US('-P96YT(&$@;&]T(&]F('1I;64@=VET
M:"!T:&4@;&%W>65R<RP@=VAO#0IG<FEL;&5D('5S(&]V97(@86QL(&]F('1H
M:7,-"C(N($QE9V%L;'DL($E)4S8@:7,@8V]N<VED97)E9"!A('!A<G0@;V8@
M5VEN9&]W<R!397)V97(@,C P,R!/4SL@=&AU<R!T:&ES#0II<R!M97)E;'D@
M82!P<FEV871E($%022!B971W965N('1W;R!/4R!C;VUP;VYE;G1S("TM('=H
M:6-H(&ES('!E<F9E8W1L>0T*86-C97!T86)L92!B>2!T:&4@8V]N<V5N="!D
M96-R964N#0H-"BTM( T*+R]$879I9 T*24E3#0I4:&ES('!O<W1I;F<@:7,@
M<')O=FED960@(D%3($E3(B!W:71H(&YO('=A<G)A;G1I97,L(&%N9"!C;VYF
M97)S(&YO(')I9VAT<RX-"B\O#0HB2V]R;NEL(%#A;"(@/&%N;VYY;6]U<T!D
M:7-C=7-S:6]N<RYM:6-R;W-O9G0N8V]M/B!W<F]T92!I;B!M97-S86=E#0IN
M97=S.D]+9W=I4B4R,U5%2$$N,S Q,D!T:S)M<V9T;F=P,3,N<&AX+F=B;"XN
M+@T*2&DL#0H-"DDG=F4@9F]U;F0@=&AE<V4@87)T:6-L97,Z#0IH='1P.B\O
M<W5P<&]R="YM:6-R;W-O9G0N8V]M+V1E9F%U;'0N87-P>#]S8VED/6MB.V5N
M+75S.W$S,3$X-3(-"FAT=' Z+R]S=7!P;W)T+FUI8W)O<V]F="YC;VTO9&5F
M875L="YA<W!X/W-C:60]:V([96XM=7,[<3,R-S8Q,0T*#0I&:7)S="!O9B!A
M;&P@22=V92!G;W0@82!Q=65S=&EO;BX@4D5!1%]205=?1$%402!C86X@8F4@
M=7-E9"!T;R!M;V1I9GD@=&AE#0IR97%U97-T(&)O9'D@;F]T(&]N;'D@=&AE
M(&AE861E<G,N(%=H>2!I<R!I="!G;VYE/R!)9B!Y;W4@9&]N)W0@=V%N="!T
M;PT*;6]D:69Y(&ET<R!B96AA=FEO<B!Y;W4@<VAO=6QD(&%D9"!A(&YE=R!N
M;W1I9FEC871I;VX@='EP92 H:6YP=70@86YD(&]U='!U= T*87,@=V5L;"D@
M;VYL>2!F;W(@;6]D:69Y:6YG('1H92!E;G1I='D@8F]D>2X-"@T*0G5T(&UY
M(&UA:6X@<75E<W1I;VX@:7,@=&AA="!T:&ES(&%R=&EC;&4@<V%Y<R!T:&%T
M($E)4R V(&]P97)A=&5S('%U:71E#0ID:69F97)E;G0@:6X@24E3(#4@;6]D
M92X-"@T*22!S96-T:6]N(")34TP@:6X@24E3(#8N,"(@22=V92!R96%D('1H
M870@:6X@24E3(#4@;6]D92!)25,@-B!H;W-T<R!34TP@86YD#0IF:6QT97)S
M(&-A;B!U<V4@4T9?3D]424997U)%041?4D%77T1!5$$N(%1H:7,@8V%N(&UE
M86X@;VYE(&]F('1H92!T=V\@=&EN9W,Z#0HQ+B!)25,@-B!I<R!N;W0@=7-I
M;F<@2%144"!!4$D@870@86QL+@T*26X@=&AI<R!C87-E(&$@;&]T(&]F($A4
M5% @05!)(&)A<V5D('1H:6YG<R!C86X@8F4@8G)O:V5N+"!I;F-L=61I;F<@
M2%144 T*05!)(&)A<V5D(%=I;F1O=W,@<WES=&5M('-E<G9I8V5S(&%N9"!3
M44P@4V5R=F5R(%EU:V]N)W,@=V5B('-E<G9I8V5S+B!)9@T*:70G<R!T:&4@
M=')U=&@@:7,@82!V97)Y('-T<F%N9V4@=&AI;F<N#0H-"C(N($E)4R V(&ES
M('5S:6YG('5N9&]C=6UE;G1E9"!(5%10($%022!C86QL<R!T:&%T(&UA:V4@
M:70@<&]S<VEB;&4@=&\-"G!R;V-E<W,@=&AE(')A=R!D871A+@T*26X@=&AI
M<R!C87-E('EO=2!S:&]U;&0@9&]C=6UE;G0@=&AE<V4@05!)<R!A<R!T:&5Y
M(&-O=6QD(&)E('5S960@8GD@;W1H97)S+@T*#0IH='1P87!I+F1L;"!E>'!O
M<G1S('-O;64@=6YD;V-U;65N=&5D(&9U;F-T:6]N<R H=VET:&]U="!H96%D
M97(-"F1E8VQA<F%T:6]N<RD@=&AA="!A<F4@=7-E9"!O;FQY(&)Y($E)4RX@
M0G5T(&%S($A45% @05!)(&ES(&%N(&]P97)A=&EN9PT*<WES=&5M('-E<G9I
M8V4@86YD(&YO="!P87)T(&]F($E)4R!)('1H:6YK('EO=2!S:&]U;&0@9&]C
M=6UE;G0@86QL('1H90T*9G5N8W1I;VYA;&ET>2!O9B!(5%10($%022X-"@T*
84VEN8V5R96QY+ T*2V]R;NEL#0H-"@T*
`
end



Mime
View raw message