Re: MD4 class in VB.NET

From: Bismark Prods (xanaia#nospam#_at_urbanet.ch)
Date: 08/01/04

  • Next message: kv: "Reason behind implicit FullTrust LinkDemand?"
    Date: Sun, 1 Aug 2004 17:33:27 +0200
    
    

    in vb.net :

    see attachment

    Bismark

    "Rob Teixeira [MVP]" <RobTeixeira@@msn.com> a écrit dans le message de
    news:%23m4Y$4cdEHA.4092@TK2MSFTNGP10.phx.gbl...
    > There is no native MD4 implementation in the .NET framework. I'm sure you
    > might be able to find some code on the internet you can use in .NET (or
    > convert to .NET) because I've seen some open source projects here and
    there
    > that still use it.
    >
    > However, as a word of caution, this is from www.hack.gr
    >
    > "Attacks on versions of MD4 with either the first or the last rounds
    missing
    > were developed very quickly by Den Boer and Bosselaers and others.
    Dobbertin
    > has shown how collisions for the full version of MD4 can be found in under
    a
    > minute on a typical PC. Clearly, MD4 should now be considered broken."
    >
    > If you are using MD4 to interface with legacy data, that's one thing. But
    I
    > would not recommend using MD4 for new applications.
    >
    > -Rob Teixeira [MVP]
    >
    > "Chris Berrington" <ChrisBerrington@discussions.microsoft.com> wrote in
    > message news:70ADF698-302F-406D-B83E-7C74083EA4F0@microsoft.com...
    > > Hi,
    > >
    > > Does anyone know of a VB.NET class to compute MD4 Hashes? It seems only
    > MD5 was implemented?
    > >
    > > Cheers
    > >
    > > Chris
    > >
    >
    >

    begin 666 MD4.vb
    M)T-O<'ER:6=H=" H8RD@,C P,"!/<F5N($YO=F]T;GD@*&]S;D!P;RYC=W)U
    M+F5D=2D-"B=097)M:7-S:6]N(&ES(&=R86YT960@=&\@=7-E('1H:7,@8V]D
    M92!F;W(@86YY=&AI;F<N#0HG1&5R:79E9"!F<F]M('1H92!24T$@1&%T82!3
    M96-U<FET>2P@26YC+B!-1#0@365S<V%G92U$:6=E<W0@06QG;W)I=&AM+B -
    M"B=H='1P.B\O=W=W+G)S87-E8W5R:71Y+F-O;2(^4E-!($1A=&$@4V5C=7)I
    M='DL($EN8RX\+V$^(')E<75I<F5S( T*)V%T=')I8G5T:6]N(&9O<B!A;GD@
    M=V]R:R!T:&%T(&ES(&1E<FEV960@9G)O;2!T:&4@340T($UE<W-A9V4M1&EG
    M97-T( T*)T%L9V]R:71H;3L@9F]R(&1E=&%I;',@<V5E(#QA(&AR968](FAT
    M=' Z+R]W=W<N<F]X96XN8V]M+W)F8R]R9F,Q,S(P+FAT;6PB/@T*)U)&0R Q
    M,S(P/"]A/BX-"B=4:&ES(&-O9&4@:7,@<&]R=&5D(&9R;VT@3F]R8F5R="!(
    M<F%N:71Z:WDG<R -"B<H;F]R8F5R="YH<F%N:71Z:WE ;6-H<"YS:65M96YS
    M+F1E*0T*)TIA=F$@=F5R<VEO;BX-"@T*26UP;W)T<R!3>7-T96T-"DEM<&]R
    M=',@4WES=&5M+E1E>'0-"@T*3F%M97-P86-E($U$-$AA<V@-"@T*(" @("=)
    M;7!L96UE;G1S('1H92!-1#0@;65S<V%G92!D:6=E<W0@86QG;W)I=&AM(&EN
    M(%9"+DYE= T*(" @#0H@(" @)R!2;VYA;&0@3"X@4FEV97-T+ T*(" @("<@
    M:'1T<#HO+W=W=RYR;WAE;BYC;VTO<F9C+W)F8S$S,C N:'1M; T*(" @("<@
    M5&AE($U$-"!-97-S86=E+41I9V5S="!!;&=O<FET:&T-"B @(" G($E%5$8@
    M4D9#+3$S,C @*&EN9F]R;6%T:6]N86PI+@T*(" @( T*(" @(%!U8FQI8R!#
    M;&%S<R!-1#0-"@T*(U)E9VEO;B B340T('-P96-I9FEC(&]B:F5C="!V87)I
    M86)L97,B#0H-"B @(" @(" @)R!4:&4@<VEZ92!I;B!B>71E<R!O9B!T:&4@
    M:6YP=70@8FQO8VL@=&\@=&AE('1R86YS9F]R;6%T:6]N(&%L9V]R:71H;0T*
    M(" @(" @("!0<FEV871E($-O;G-T($),3T-+7TQ%3D=42"!!<R!);G1E9V5R
    M(#T@-C0@(" @)R ](#4Q,B O(#@-"B @(" @(" @)R T(#,R+6)I="!W;W)D
    M<R H:6YT97)I;2!R97-U;'0I#0H@(" @(" @(%!R:79A=&4@8V]N=&5X="@T
    M*2!!<R!);G0V- T*(" @(" @(" G($YU;6)E<B!O9B!B>71E<R!P<F]C97-E
    M9"!S;R!F87(@;6]D+B R('!O=V5R(&]F(#8T+@T*(" @(" @("!0<FEV871E
    M(&-O=6YT($%S($EN=&5G97(-"B @(" @(" @)R U,3(M8FET(&EN<'5T(&)U
    M9F9E<B ](#$V('@@,S(M8FET('=O<F1S(&AO;&1S('5N=&EL(&ET(')E86-H
    M97,@-3$R(&)I=',-"B @(" @(" @4')I=F%T92!B=69F97(H0DQ/0TM?3$5.
    M1U1(*2!!<R!">71E#0H@(" @(" @("<@-3$R+6)I="!W;W)K(&)U9F9E<B ]
    M(#$V('@@,S(M8FET('=O<F1S#0H@(" @(" @(%!R:79A=&4@6"@Q-BD@07,@
    M26YT-C0-"B-%;F0@4F5G:6]N#0H-"B-296=I;VX@(D-O;G-T<G5C=&]R<R(-
    M"B @(" @(" @4'5B;&EC(%-U8B!.97<H*0T*(" @(" @(" @(" @96YG:6YE
    M4F5S970H*0T*(" @(" @("!%;F0@4W5B#0H-"B @(" @(" @)R!4:&ES(&-O
    M;G-T<G5C=&]R(&ES(&AE<F4@=&\@:6UP;&5M96YT('1H92!C;&]N86)I;&ET
    M>2!O9B!T:&ES(&-L87-S#0H@(" @(" @(%!R:79A=&4@4W5B($YE=RA">59A
    M;"!M9"!!<R!-1#0I#0H@(" @(" @(" @("!C;VYT97AT(#T@0U1Y<&4H;60N
    M8V]N=&5X="Y#;&]N92@I+"!);G0V-"@I*0T*(" @(" @(" @(" @8G5F9F5R
    M(#T@0U1Y<&4H;60N8G5F9F5R+D-L;VYE*"DL($)Y=&4H*2D-"B @(" @(" @
    M(" @(&-O=6YT(#T@;60N8V]U;G0-"B @(" @(" @16YD(%-U8@T*(T5N9"!2
    M96=I;VX-"@T*(U)E9VEO;B B0VQO;F%B;&4@;65T:&]D(&EM<&QE;65N=&%T
    M:6]N(@T*(" @(" @("!0=6)L:6,@1G5N8W1I;VX@0VQO;F4H*2!!<R!/8FIE
    M8W0-"B @(" @(" @(" @(%)E='5R;B!.97<@340T*$UE*0T*(" @(" @("!%
    M;F0@1G5N8W1I;VX-"B-%;F0@4F5G:6]N#0H-"B-296=I;VX@(DI#12!M971H
    M;V1S(@T*#0H@(" @(" @("<@4F5S971S('1H:7,@;V)J96-T(&1I<W)E9V%R
    M9&EN9R!A;GD@=&5M<&]R87)Y(&1A=&$@<')E<V5N="!A="!T:&4-"B @(" @
    M(" @)R!T:6UE(&]F('1H92!I;G9O8V%T:6]N(&]F('1H:7,@8V%L;"X-"B @
    M(" @(" @4')I=F%T92!3=6(@96YG:6YE4F5S970H*0T*(" @(" @(" @(" @
    M)R!I;FET:6%L('9A;'5E<R!O9B!-1#0@:2YE+B!!+"!"+"!#+"!$#0H@(" @
    M(" @(" @(" G(&%S('!E<B!R9F,M,3,R,#L@=&AE>2!A<F4@;&]W+6]R9&5R
    M(&)Y=&4@9FER<W0-"B @(" @(" @(" @(&-O;G1E>'0H,"D@/2 F2#8W-#4R
    M,S Q#0H@(" @(" @(" @("!C;VYT97AT*#$I(#T@)DA%1D-$04(X.0T*(" @
    M(" @(" @(" @8V]N=&5X="@R*2 ]("9(.3A"041#1D4-"B @(" @(" @(" @
    M(&-O;G1E>'0H,RD@/2 F2#$P,S(U-#<V#0H@(" @(" @(" @("!C;W5N=" ]
    M(# -"B @(" @(" @(" @($1I;2!I($%S($EN=&5G97(@/2 P#0H@(" @(" @
    M(" @("!$;R!5;G1I;"!I(#P@0DQ/0TM?3$5.1U1(#0H@(" @(" @(" @(" @
    M(" @8G5F9F5R*&DI(#T@, T*#0H@(" @(" @(" @(" @(" @:2 K/2 Q#0H@
    M(" @(" @(" @("!,;V]P#0H@(" @(" @($5N9"!3=6(-"@T*(" @(" @(" G
    M($-O;G1I;G5E<R!A;B!-1#0@;65S<V%G92!D:6=E<W0@=7-I;F<@=&AE(&EN
    M<'5T(&)Y=&4-"B @(" @(" @)R @(&)Y=&4@=&\@:6YP=70-"B @(" @(" @
    M4')I=F%T92!3=6(@96YG:6YE57!D871E*$)Y5F%L(&(@07,@0GET92D-"B @
    M(" @(" @(" @("<@8V]M<'5T92!N=6UB97(@;V8@8GET97,@<W1I;&P@=6YH
    M87-H960[(&EE+B!P<F5S96YT(&EN(&)U9F9E<@T*(" @(" @(" @(" @1&EM
    M(&D@07,@26YT96=E<B ]($-4>7!E*&-O=6YT($UO9"!"3$]#2U],14Y'5$@L
    M($EN=&5G97(I#0H@(" @(" @(" @("!C;W5N=" K/2 Q("<@=7!D871E(&YU
    M;6)E<B!O9B!B>71E<PT*(" @(" @(" @(" @8G5F9F5R*&DI(#T@8@T*(" @
    M(" @(" @(" @268@:2 ]("A"3$]#2U],14Y'5$@@+2 Q*2!4:&5N#0H@(" @
    M(" @(" @(" @(" @=')A;G-F;W)M*&)U9F9E<BP@,"D-"B @(" @(" @(" @
    M($5N9"!)9@T*(" @(" @("!%;F0@4W5B#0H-"B @(" @(" @)R!-1#0@8FQO
    M8VL@=7!D871E(&]P97)A=&EO;@T*(" @(" @(" G($-O;G1I;G5E<R!A;B!-
    M1#0@;65S<V%G92!D:6=E<W0@;W!E<F%T:6]N(&)Y(&9I;&QI;F<@=&AE(&)U
    M9F9E<BP@#0H@(" @(" @("<@=')A;G-F;W)M*&EN9RD@9&%T82!I;B U,3(M
    M8FET(&UE<W-A9V4@8FQO8VLH<RDL('5P9&%T:6YG('1H92!V87)I86)L97,-
    M"B @(" @(" @)R!C;VYT97AT(&%N9"!C;W5N="P@86YD(&QE879I;F<@*&)U
    M9F9E<FEN9RD@=&AE(')E;6%I;FEN9R!B>71E<R!I;B!B=69F97(-"B @(" @
    M(" @)R!F;W(@=&AE(&YE>'0@=7!D871E(&]R(&9I;FES:"X-"B @(" @(" @
    M)R @(&EN<'5T(" ](&EN<'5T(&)L;V-K#0H@(" @(" @("<@("!O9F9S970@
    M/2!S=&%R="!O9B!M96%N:6YG9G5L(&)Y=&5S(&EN(&EN<'5T#0H@(" @(" @
    M("<@("!L96X@(" @/2!C;W5N="!O9B!B>71E<R!I;B!I;G!U="!B;&-O:R!T
    M;R!C;VYS:61E<@T*(" @(" @("!0<FEV871E(%-U8B!E;F=I;F55<&1A=&4H
    M0GE686P@:6YP=70H*2!!<R!">71E+"!">59A;"!O9F9S970@07,@26YT96=E
    M<BP@0GE686P@;&5N($%S($EN=&5G97(I#0H@(" @(" @(" @(" G(&UA:V4@
    M<W5R92!W92!D;VXG="!E>&-E960@:6YP=70G<R!A;&QO8V%T960@<VEZ92]L
    M96YG=&@-"B @(" @(" @(" @($EF("AO9F9S970@/" P($]R(&QE;B \(# @
    M3W(@0U1Y<&4H;V9F<V5T+"!);G1E9V5R*2 K(&QE;B ^(&EN<'5T+DQE;F=T
    M:"D@5&AE;@T*(" @(" @(" @(" @(" @(%1H<F]W($YE=R!!<F=U;65N=$]U
    M=$]F4F%N9V5%>&-E<'1I;VXH*0T*(" @(" @(" @(" @16YD($EF#0H@(" @
    M(" @(" @(" G(&-O;7!U=&4@;G5M8F5R(&]F(&)Y=&5S('-T:6QL('5N:&%S
    M:&5D.R!I92X@<')E<V5N="!I;B!B=69F97(-"B @(" @(" @(" @($1I;2!B
    M=69F97).9'@@07,@26YT96=E<B ]($-4>7!E*&-O=6YT($UO9"!"3$]#2U],
    M14Y'5$@L($EN=&5G97(I#0H@(" @(" @(" @("!C;W5N=" K/2!L96X@("<@
    M=7!D871E(&YU;6)E<B!O9B!B>71E<PT*(" @(" @(" @(" @1&EM('!A<G1,
    M96X@07,@26YT96=E<B ]($),3T-+7TQ%3D=42" M(&)U9F9E<DYD> T*(" @
    M(" @(" @(" @1&EM(&D@07,@26YT96=E<B ](# -"B @(" @(" @(" @($EF
    M(&QE;B ^/2!P87)T3&5N(%1H96X-"B @(" @(" @(" @(" @("!!<G)A>2Y#
    M;W!Y*&EN<'5T+"!O9F9S970@*R!I+"!B=69F97(L(&)U9F9E<DYD>"P@<&%R
    M=$QE;BD-"B @(" @(" @(" @(" @("!T<F%N<V9O<FTH8G5F9F5R+" P*0T*
    M(" @(" @(" @(" @(" @(&D@/2!P87)T;&5N#0H@(" @(" @(" @(" @(" @
    M1&\@56YT:6P@:2 K($),3T-+7TQ%3D=42" M(#$@/"!L96X-"B @(" @(" @
    M(" @(" @(" @(" @=')A;G-F;W)M*&EN<'5T+"!O9F9S970@*R!I*0T*(" @
    M(" @(" @(" @(" @(" @("!I("L]($),3T-+7TQ%3D=42 T*(" @(" @(" @
    M(" @(" @($QO;W -"B @(" @(" @(" @(" @("!B=69F97).9'@@/2 P#0H@
    M(" @(" @(" @("!%;F0@268-"B @(" @(" @(" @("<@8G5F9F5R(')E;6%I
    M;FEN9R!I;G!U= T*(" @(" @(" @(" @268@:2 \(&QE;B!4:&5N#0H@(" @
    M(" @(" @(" @(" @07)R87DN0V]P>2AI;G!U="P@;V9F<V5T("L@:2P@8G5F
    M9F5R+"!B=69F97).9'@L(&)U9F9E<BY,96YG=&@I#0H@(" @(" @(" @("!%
    M;F0@268-"B @(" @(" @16YD(%-U8@T*#0H@(" @(" @("<@0V]M<&QE=&5S
    M('1H92!H87-H(&-O;7!U=&%T:6]N(&)Y('!E<F9O<FUI;F<@9FEN86P@;W!E
    M<F%T:6]N<R!S=6-H#0H@(" @(" @("<@87,@<&%D9&EN9RX@($%T('1H92!R
    M971U<FX@;V8@=&AI<R!E;F=I;F5$:6=E<W0L('1H92!-1"!E;F=I;F4@:7,-
    M"B @(" @(" @)R!R97-E="X-"B @(" @(" @)R @(')E='5R;G,@=&AE(&%R
    M<F%Y(&]F(&)Y=&5S(&9O<B!T:&4@<F5S=6QT:6YG(&AA<V@@=F%L=64N#0H@
    M(" @(" @(%!R:79A=&4@1G5N8W1I;VX@96YG:6YE1&EG97-T*"D@07,@0GET
    M92@I#0H@(" @(" @(" @(" G('!A9"!O=71P=70@=&\@-38@;6]D(#8T.R!A
    M<R!21D,Q,S(P('!U=',@:70Z(&-O;F=R=65N="!T;R T-#@@;6]D(#4Q,@T*
    M(" @(" @(" @(" @1&EM(&)U9F9E<DYD>"!!<R!);G1E9V5R(#T@0U1Y<&4H
    M8V]U;G0@36]D($),3T-+7TQ%3D=42"P@26YT96=E<BD-"B @(" @(" @(" @
    M($1I;2!P861,96X@07,@26YT96=E<@T*(" @(" @(" @(" @268@8G5F9F5R
    M3F1X(#P@-38@5&AE;@T*(" @(" @(" @(" @(" @('!A9$QE;B ](#4V("T@
    M8G5F9F5R3F1X#0H@(" @(" @(" @("!%;'-E#0H@(" @(" @(" @(" @(" @
    M<&%D3&5N(#T@,3(P("T@8G5F9F5R3F1X#0H@(" @(" @(" @("!%;F0@268-
    M"B @(" @(" @(" @("<@<&%D9&EN9R!I<R!A;'=A>7,@8FEN87)Y(#$@9F]L
    M;&]W960@8GD@8FEN87)Y(# G<PT*(" @(" @(" @(" @1&EM('1A:6PH<&%D
    M3&5N("L@."D@07,@0GET90T*(" @(" @(" @(" @=&%I;"@P*2 ]($-4>7!E
    M*"9(.# L($)Y=&4I#0H-"B @(" @(" @(" @("<@87!P96YD(&QE;F=T:"!B
    M969O<F4@9FEN86P@=')A;G-F;W)M#0H@(" @(" @(" @(" G('-A=F4@;G5M
    M8F5R(&]F(&)I=',L(&-A<W1I;F<@=&AE(&QO;F<@=&\@86X@87)R87D@;V8@
    M."!B>71E<PT*(" @(" @(" @(" @)R!S879E(&QO=RUO<F1E<B!B>71E(&9I
    M<G-T+@T*(" @(" @(" @(" @1&EM(&D@07,@26YT96=E<@T*(" @(" @(" @
    M(" @1F]R(&D@/2 P(%1O(#<@4W1E<" Q#0H@(" @(" @(" @(" @(" @)R=D
    MZ6-A;&%G92#@(&1R;VET92 _($%.1" _/S\-"B @(" @(" @(" @(" @(" G
    M(" @(" @(" @(" @(" @('1A:6PH<&%D3&5N("L@:2D@/2 @8V]U;G0@*B X
    M(#X^(#@@*B!I#0H-"B @(" @(" @(" @($YE>'0-"B @(" @(" @(" @(&5N
    M9VEN955P9&%T92AT86EL+" P+"!T86EL+DQE;F=T:"D-"@T*(" @(" @(" @
    M(" @1&EM(')E<W5L="@Q-BD@07,@0GET90T*(" @(" @(" @(" @1&EM(&H@
    M07,@26YT96=E<@T*(" @(" @(" @(" @)R!C87-T('1H:7,@340T)W,@8V]N
    M=&5X=" H87)R87D@;V8@-"!U:6YT<RD@:6YT;R!A;B!A<G)A>2!O9B Q-B!B
    M>71E<RX-"B @(" @(" @(" @($9O<B!I(#T@,"!4;R S(%-T97 @,0T*(" @
    M(" @(" @(" @(" @($9O<B!J(#T@,"!4;R S(%-T97 @,0T*(" @(" @(" @
    M(" @(" @(" @(" G<F5S=6QT*&D@*B T("L@:BD@/2!C='EP92@H8V]N=&5X
    M="AI*2 ^/B H." J(&HI*2QB>71E*0T*(" @(" @(" @(" @(" @($YE>'0-
    M"B @(" @(" @(" @($YE>'0-"B @(" @(" @(" @("<@<F5S970@=&AE(&5N
    M9VEN90T*(" @(" @(" @(" @96YG:6YE4F5S970H*0T*(" @(" @(" @(" @
    M4F5T=7)N(')E<W5L= T*(" @(" @("!%;F0@1G5N8W1I;VX-"@T*(" @(" @
    M(" G(%)E='5R;G,@82!B>71E(&AA<V@@9G)O;2!A('-T<FEN9PT*(" @(" @
    M(" G(" @<R ]('-T<FEN9R!T;R!H87-H#0H@(" @(" @("<@("!R971U<FYS
    M(&)Y=&4M87)R87D@=&AA="!C;VYT86EN<R!T:&4@:&%S: T*(" @(" @("!0
    M=6)L:6,@1G5N8W1I;VX@1V5T0GET94AA<VA&<F]M4W1R:6YG*$)Y5F%L(',@
    M07,@4W1R:6YG*2!!<R!">71E*"D-"B @(" @(" @(" @($1I;2!B*"D@07,@
    M0GET92 ]($5N8V]D:6YG+E541C@N1V5T0GET97,H<RD-"B @(" @(" @(" @
    M($1I;2!?;60T($%S($U$-" ]($YE=R!-1#0H*0T*#0H@(" @(" @(" @("!?
    M;60T+F5N9VEN955P9&%T92AB+" P+"!B+DQE;F=T:"D-"@T*(" @(" @(" @
    M(" @4F5T=7)N(%]M9#0N96YG:6YE1&EG97-T*"D-"B @(" @(" @16YD($9U
    M;F-T:6]N#0H-"B @(" @(" @)R!2971U<FYS(&$@8FEN87)Y(&AA<V@@9G)O
    M;2!A;B!I;G!U="!B>71E(&%R<F%Y#0H@(" @(" @("<@("!B(#T@8GET92UA
    M<G)A>2!T;R!H87-H#0H@(" @(" @("<@("!R971U<FYS(&)I;F%R>2!H87-H
    M(&]F(&EN<'5T#0H@(" @(" @(%!U8FQI8R!&=6YC=&EO;B!'971">71E2&%S
    M:$9R;VU">71E<RA">59A;"!B*"D@07,@0GET92D@07,@0GET92@I#0H@(" @
    M(" @(" @("!$:6T@7VUD-"!!<R!-1#0@/2!.97<@340T*"D-"@T*(" @(" @
    M(" @(" @7VUD-"YE;F=I;F55<&1A=&4H8BP@,"P@8BY,96YG=&@I#0H-"B @
    M(" @(" @(" @(%)E='5R;B!?;60T+F5N9VEN941I9V5S="@I#0H@(" @(" @
    M($5N9"!&=6YC=&EO;@T*#0H@(" @(" @("<@4F5T=7)N<R!A('-T<FEN9R!T
    M:&%T(&-O;G1A:6YS('1H92!H97AA9&5C:6UA;"!H87-H#0H@(" @(" @("<@
    M("!B(#T@8GET92UA<G)A>2!T;R!I;G!U= T*(" @(" @(" G(" @<F5T=7)N
    M<R!3=')I;F<@=&AA="!C;VYT86EN<R!T:&4@:&5X(&]F('1H92!H87-H#0H@
    M(" @(" @(%!U8FQI8R!&=6YC=&EO;B!'971(97A(87-H1G)O;4)Y=&5S*$)Y
    M5F%L(&(H*2!!<R!">71E*2!!<R!3=')I;F<-"B @(" @(" @(" @($1I;2!E
    M*"D@07,@0GET92 ]($=E=$)Y=&5(87-H1G)O;4)Y=&5S*&(I#0H@(" @(" @
    M(" @("!2971U<FX@8GET97-4;TAE>"AE+"!E+DQE;F=T:"D-"B @(" @(" @
    M16YD($9U;F-T:6]N#0H-"B @(" @(" @)R!2971U<FYS(&$@8GET92!H87-H
    M(&9R;VT@=&AE(&EN<'5T(&)Y=&4-"B @(" @(" @)R @(&(@/2!B>71E('1O
    M(&AA<V@-"B @(" @(" @)R @(')E='5R;G,@8FEN87)Y(&AA<V@@;V8@=&AE
    M(&EN<'5T(&)Y=&4-"B @(" @(" @4'5B;&EC($9U;F-T:6]N($=E=$)Y=&5(
    M87-H1G)O;4)Y=&4H0GE686P@8B!!<R!">71E*2!!<R!">71E*"D-"B @(" @
    M(" @(" @($1I;2!?;60T($%S($U$-" ]($YE=R!-1#0H*0T*#0H@(" @(" @
    M(" @("!?;60T+F5N9VEN955P9&%T92AB*0T*#0H@(" @(" @(" @("!2971U
    M<FX@7VUD-"YE;F=I;F5$:6=E<W0H*0T*(" @(" @("!%;F0@1G5N8W1I;VX-
    M"@T*(" @(" @(" G(%)E='5R;G,@82!S=')I;F<@=&AA="!C;VYT86EN<R!T
    M:&4@:&5X861E8VEM86P@:&%S: T*(" @(" @(" G(" @8B ](&)Y=&4@=&\@
    M:&%S: T*(" @(" @(" G(" @<F5T=7)N<R!3=')I;F<@=&AA="!C;VYT86EN
    M<R!T:&4@:&5X(&]F('1H92!H87-H#0H@(" @(" @(%!U8FQI8R!&=6YC=&EO
    M;B!'971(97A(87-H1G)O;4)Y=&4H0GE686P@8B!!<R!">71E*2!!<R!3=')I
    M;F<-"B @(" @(" @(" @($1I;2!E*"D@07,@0GET92 ]($=E=$)Y=&5(87-H
    M1G)O;4)Y=&4H8BD-"B @(" @(" @(" @(%)E='5R;B!B>71E<U1O2&5X*&4L
    M(&4N3&5N9W1H*0T*(" @(" @("!%;F0@1G5N8W1I;VX-"@T*(" @(" @(" G
    M(%)E='5R;G,@82!S=')I;F<@=&AA="!C;VYT86EN<R!T:&4@:&5X861E8VEM
    M86P@:&%S: T*(" @(" @(" G(" @<R ]('-T<FEN9R!T;R!H87-H#0H@(" @
    M(" @("<@("!R971U<FYS(%-T<FEN9R!T:&%T(&-O;G1A:6YS('1H92!H97@@
    M;V8@=&AE(&AA<V@-"B @(" @(" @4'5B;&EC($9U;F-T:6]N($=E=$AE>$AA
    M<VA&<F]M4W1R:6YG*$)Y5F%L(',@07,@4W1R:6YG*2!!<R!3=')I;F<-"B @
    M(" @(" @(" @($1I;2!B*"D@07,@0GET92 ]($=E=$)Y=&5(87-H1G)O;5-T
    M<FEN9RAS*0T*(" @(" @(" @(" @4F5T=7)N(&)Y=&5S5&](97@H8BP@8BY,
    M96YG=&@I#0H@(" @(" @($5N9"!&=6YC=&EO;@T*#0H@(" @(" @(%!R:79A
    M=&4@4VAA<F5D($9U;F-T:6]N(&)Y=&5S5&](97@H0GE686P@82@I($%S($)Y
    M=&4L($)Y5F%L(&QE;B!!<R!);G1E9V5R*2!!<R!3=')I;F<-"B @(" @(" @
    M(" @($1I;2!T96UP($%S(%-T<FEN9R ]($)I=$-O;G9E<G1E<BY4;U-T<FEN
    M9RAA*0T*(" @(" @(" @(" @1&EM(&D@07,@26YT96=E<@T*(" @(" @(" @
    M(" @)R!792!N965D('1O(')E;6]V92!T:&4@9&%S:&5S('1H870@8V]M92!F
    M<F]M('1H92!":71#;VYV97)T97(-"B @(" @(" @(" @($1I;2!S8B!!<R!3
    M=')I;F="=6EL9&5R(#T@3F5W(%-T<FEN9T)U:6QD97(H0U1Y<&4H*&QE;B M
    M(#(I("\@,BP@26YT96=E<BDI("<@5&AI<R!S:&]U;&0@8F4@=&AE(&9I;F%L
    M('-I>F4-"@T*(" @(" @(" @(" @1F]R(&D@/2 P(%1O('1E;7 N3&5N9W1H
    M("T@,2!3=&5P(#$-"B @(" @(" @(" @(" @("!)9B!T96UP+E-U8G-T<FEN
    M9RAI+" Q*2 \/B B+2(@5&AE;@T*(" @(" @(" @(" @(" @(" @("!S8BY!
    M<'!E;F0H=&5M<"Y3=6)S=')I;F<H:2P@,2DI#0H@(" @(" @(" @(" @(" @
    M16YD($EF#0H@(" @(" @(" @("!.97AT#0H@(" @(" @(" @("!2971U<FX@
    M<V(N5&]3=')I;F<H*0T*(" @(" @("!%;F0@1G5N8W1I;VX-"B-%;F0@4F5G
    M:6]N#0H-"B-296=I;VX@(F]W;B!M971H;V1S(@T*#0H@(" @(" @("<@340T
    M(&)A<VEC('1R86YS9F]R;6%T:6]N#0H@(" @(" @("<@5')A;G-F;W)M<R!C
    M;VYT97AT(&)A<V5D(&]N(#4Q,B!B:71S(&9R;VT@:6YP=70@8FQO8VL@<W1A
    M<G1I;F<-"B @(" @(" @)R!F<F]M('1H92!O9F9S970G=&@@8GET92X-"B @
    M(" @(" @)R @(&)L;V-K(" ](&EN<'5T('-U8BUA<G)A>0T*(" @(" @(" G
    M(" @;V9F<V5T(#T@<W1A<G1I;F<@<&]S:71I;VX@;V8@<W5B+6%R<F%Y#0H@
    M(" @(" @(%!R:79A=&4@4W5B('1R86YS9F]R;2A">5)E9B!B;&]C:R@I($%S
    M($)Y=&4L($)Y5F%L(&]F9G-E="!!<R!);G1E9V5R*0T*(" @(" @(" @(" @
    M)R!D96-O9&5S(#8T(&)Y=&5S(&9R;VT@:6YP=70@8FQO8VL@:6YT;R!A;B!A
    M<G)A>2!O9B Q-B S,BUB:70-"B @(" @(" @(" @("<@96YT:71I97,N(%5S
    M92!!(&%S(&$@=&5M<"!V87(N#0H@(" @(" @(" @("!$:6T@:2!!<R!);G1E
    M9V5R#0H@(" @(" @(" @("!&;W(@:2 ](# @5&\@,34@4W1E<" Q#0H@(" @
    M(" @(" @(" @(" @268@;V9F<V5T(#X](&)L;V-K+DQE;F=T:"!4:&5N($5X
    M:70@1F]R#0H@(" @(" @(" @(" @(" @6"AI*2 ]("A#5'EP92AB;&]C:RAO
    M9F9S970I+"!);G0V-"D@06YD("9(1D8I($]R(%\-"B @(" @(" @(" @(" @
    M("A#5'EP92AB;&]C:RAO9F9S970I+"!);G0V-"D@06YD("9(1D8I(#P\(#@@
    M3W(@7PT*(" @(" @(" @(" @(" H0U1Y<&4H8FQO8VLH;V9F<V5T*2P@26YT
    M-C0I($%N9" F2$9&*2 \/" Q-B!/<B!?#0H@(" @(" @(" @(" @("A#5'EP
    M92AB;&]C:RAO9F9S970I+"!);G0V-"D@06YD("9(1D8I(#P\(#(T#0H@(" @
    M(" @(" @(" @(" @;V9F<V5T("L](#$-"B @(" @(" @(" @($YE>'0-"@T*
    M(" @(" @(" @(" @1&EM($$@07,@26YT-C0@/2!C;VYT97AT*# I#0H@(" @
    M(" @(" @("!$:6T@0B!!<R!);G0V-" ](&-O;G1E>'0H,2D-"B @(" @(" @
    M(" @($1I;2!#($%S($EN=#8T(#T@8V]N=&5X="@R*0T*(" @(" @(" @(" @
    M1&EM($0@07,@26YT-C0@/2!C;VYT97AT*#,I#0H-"B @(" @(" @(" @($$@
    M/2!&1BA!+"!"+"!#+"!$+"!8*# I+" S*0T*(" @(" @(" @(" @1" ]($9&
    M*$0L($$L($(L($,L(%@H,2DL(#<I#0H@(" @(" @(" @("!#(#T@1D8H0RP@
    M1"P@02P@0BP@6"@R*2P@,3$I#0H@(" @(" @(" @("!"(#T@1D8H0BP@0RP@
    M1"P@02P@6"@S*2P@,3DI#0H@(" @(" @(" @("!!(#T@1D8H02P@0BP@0RP@
    M1"P@6"@T*2P@,RD-"B @(" @(" @(" @($0@/2!&1BA$+"!!+"!"+"!#+"!8
    M*#4I+" W*0T*(" @(" @(" @(" @0R ]($9&*$,L($0L($$L($(L(%@H-BDL
    M(#$Q*0T*(" @(" @(" @(" @0B ]($9&*$(L($,L($0L($$L(%@H-RDL(#$Y
    M*0T*(" @(" @(" @(" @02 ]($9&*$$L($(L($,L($0L(%@H."DL(#,I#0H@
    M(" @(" @(" @("!$(#T@1D8H1"P@02P@0BP@0RP@6"@Y*2P@-RD-"B @(" @
    M(" @(" @($,@/2!&1BA#+"!$+"!!+"!"+"!8*#$P*2P@,3$I#0H@(" @(" @
    M(" @("!"(#T@1D8H0BP@0RP@1"P@02P@6"@Q,2DL(#$Y*0T*(" @(" @(" @
    M(" @02 ]($9&*$$L($(L($,L($0L(%@H,3(I+" S*0T*(" @(" @(" @(" @
    M1" ]($9&*$0L($$L($(L($,L(%@H,3,I+" W*0T*(" @(" @(" @(" @0R ]
    M($9&*$,L($0L($$L($(L(%@H,30I+" Q,2D-"B @(" @(" @(" @($(@/2!&
    M1BA"+"!#+"!$+"!!+"!8*#$U*2P@,3DI#0H-"B @(" @(" @(" @($$@/2!'
    M1RA!+"!"+"!#+"!$+"!8*# I+" S*0T*(" @(" @(" @(" @1" ]($='*$0L
    M($$L($(L($,L(%@H-"DL(#4I#0H@(" @(" @(" @("!#(#T@1T<H0RP@1"P@
    M02P@0BP@6"@X*2P@.2D-"B @(" @(" @(" @($(@/2!'1RA"+"!#+"!$+"!!
    M+"!8*#$R*2P@,3,I#0H@(" @(" @(" @("!!(#T@1T<H02P@0BP@0RP@1"P@
    M6"@Q*2P@,RD-"B @(" @(" @(" @($0@/2!'1RA$+"!!+"!"+"!#+"!8*#4I
    M+" U*0T*(" @(" @(" @(" @0R ]($='*$,L($0L($$L($(L(%@H.2DL(#DI
    M#0H@(" @(" @(" @("!"(#T@1T<H0BP@0RP@1"P@02P@6"@Q,RDL(#$S*0T*
    M(" @(" @(" @(" @02 ]($='*$$L($(L($,L($0L(%@H,BDL(#,I#0H@(" @
    M(" @(" @("!$(#T@1T<H1"P@02P@0BP@0RP@6"@V*2P@-2D-"B @(" @(" @
    M(" @($,@/2!'1RA#+"!$+"!!+"!"+"!8*#$P*2P@.2D-"B @(" @(" @(" @
    M($(@/2!'1RA"+"!#+"!$+"!!+"!8*#$T*2P@,3,I#0H@(" @(" @(" @("!!
    M(#T@1T<H02P@0BP@0RP@1"P@6"@S*2P@,RD-"B @(" @(" @(" @($0@/2!'
    M1RA$+"!!+"!"+"!#+"!8*#<I+" U*0T*(" @(" @(" @(" @0R ]($='*$,L
    M($0L($$L($(L(%@H,3$I+" Y*0T*(" @(" @(" @(" @0B ]($='*$(L($,L
    M($0L($$L(%@H,34I+" Q,RD-"@T*(" @(" @(" @(" @02 ]($A(*$$L($(L
    M($,L($0L(%@H,"DL(#,I#0H@(" @(" @(" @("!$(#T@2$@H1"P@02P@0BP@
    M0RP@6"@X*2P@.2D-"B @(" @(" @(" @($,@/2!(2"A#+"!$+"!!+"!"+"!8
    M*#0I+" Q,2D-"B @(" @(" @(" @($(@/2!(2"A"+"!#+"!$+"!!+"!8*#$R
    M*2P@,34I#0H@(" @(" @(" @("!!(#T@2$@H02P@0BP@0RP@1"P@6"@R*2P@
    M,RD-"B @(" @(" @(" @($0@/2!(2"A$+"!!+"!"+"!#+"!8*#$P*2P@.2D-
    M"B @(" @(" @(" @($,@/2!(2"A#+"!$+"!!+"!"+"!8*#8I+" Q,2D-"B @
    M(" @(" @(" @($(@/2!(2"A"+"!#+"!$+"!!+"!8*#$T*2P@,34I#0H@(" @
    M(" @(" @("!!(#T@2$@H02P@0BP@0RP@1"P@6"@Q*2P@,RD-"B @(" @(" @
    M(" @($0@/2!(2"A$+"!!+"!"+"!#+"!8*#DI+" Y*0T*(" @(" @(" @(" @
    M0R ]($A(*$,L($0L($$L($(L(%@H-2DL(#$Q*0T*(" @(" @(" @(" @0B ]
    M($A(*$(L($,L($0L($$L(%@H,3,I+" Q-2D-"B @(" @(" @(" @($$@/2!(
    M2"A!+"!"+"!#+"!$+"!8*#,I+" S*0T*(" @(" @(" @(" @1" ]($A(*$0L
    M($$L($(L($,L(%@H,3$I+" Y*0T*(" @(" @(" @(" @0R ]($A(*$,L($0L
    M($$L($(L(%@H-RDL(#$Q*0T*(" @(" @(" @(" @0B ]($A(*$(L($,L($0L
    M($$L(%@H,34I+" Q-2D-"@T*(" @(" @(" @(" @8V]N=&5X="@P*2 K/2!!
    M#0H@(" @(" @(" @("!C;VYT97AT*#$I("L]($(-"B @(" @(" @(" @(&-O
    M;G1E>'0H,BD@*ST@0PT*(" @(" @(" @(" @8V]N=&5X="@S*2 K/2!$#0H@
    M(" @(" @($5N9"!3=6(-"B-%;F0@4F5G:6]N#0H-"B-296=I;VX@(E1H92!B
    M87-I8R!-1#0@871O;6EC(&9U;F-T:6]N<RXB#0H-"B @(" @(" @4')I=F%T
    M92!&=6YC=&EO;B!&1BA">59A;"!A($%S($EN=#8T+"!">59A;"!B($%S($EN
    M=#8T+"!">59A;"!C($%S($EN=#8T+"!">59A;"!D($%S($EN=#8T+"!">59A
    M;"!X($%S($EN=#8T+"!">59A;"!S($%S($EN=&5G97(I($%S($EN=#8T#0H@
    M(" @(" @(" @("!$:6T@="!!<R!);G0V- T*(" @(" @(" @(" @5')Y#0H@
    M(" @(" @(" @(" @(" @=" ](&$@*R H*&(@06YD(&,I($]R("A.;W0@8B!!
    M;F0@9"DI("L@> T*(" @(" @(" @(" @(" @(%)E='5R;B!T(#P\(',@3W(@
    M=" ^/B H,S(@+2!S*0T*(" @(" @(" @(" @0V%T8V@-"B @(" @(" @(" @
    M(" @("!2971U<FX@=" \/"!S($]R('0@/CX@*#,R("T@<RD-"B @(" @(" @
    M(" @($5N9"!4<GD-"B @(" @(" @16YD($9U;F-T:6]N#0H@(" @(" @(%!R
    M:79A=&4@1G5N8W1I;VX@1T<H0GE686P@82!!<R!);G0V-"P@0GE686P@8B!!
    M<R!);G0V-"P@0GE686P@8R!!<R!);G0V-"P@0GE686P@9"!!<R!);G0V-"P@
    M0GE686P@>"!!<R!);G0V-"P@0GE686P@<R!!<R!);G1E9V5R*2!!<R!);G0V
    M- T*(" @(" @(" @(" @1&EM('0@07,@26YT-C0-"B @(" @(" @(" @(%1R
    M>0T*(" @(" @(" @(" @(" @('0@/2!A("L@*"AB($%N9" H8R!/<B!D*2D@
    M3W(@*&,@06YD(&0I*2 K('@@*R F2#5!.#(W.3DY#0H@(" @(" @(" @(" @
    M(" @4F5T=7)N('0@/#P@<R!/<B!T(#X^("@S,B M(',I#0H@(" @(" @(" @
    M("!#871C: T*(" @(" @(" @(" @(" @(%)E='5R;B!T(#P\(',@3W(@=" ^
    M/B H,S(@+2!S*0T*(" @(" @(" @(" @16YD(%1R>0T*(" @(" @("!%;F0@
    M1G5N8W1I;VX-"B @(" @(" @4')I=F%T92!&=6YC=&EO;B!(2"A">59A;"!A
    M($%S($EN=#8T+"!">59A;"!B($%S($EN=#8T+"!">59A;"!C($%S($EN=#8T
    M+"!">59A;"!D($%S($EN=#8T+"!">59A;"!X($%S($EN=#8T+"!">59A;"!S
    M($%S($EN=&5G97(I($%S($EN=#8T#0H@(" @(" @(" @("!$:6T@="!!<R!)
    M;G0V- T*(" @(" @(" @(" @5')Y#0H@(" @(" @(" @(" @(" @=" ](&$@
    M*R H8B!>(&,@7B!D*2 K('@@*R F2#9%1#E%0D$Q#0H@(" @(" @(" @(" @
    M(" @4F5T=7)N('0@/#P@<R!/<B!T(#X^("@S,B M(',I#0H@(" @(" @(" @
    M("!#871C: T*(" @(" @(" @(" @(" @(%)E='5R;B!T(#P\(',@3W(@=" ^
    M/B H,S(@+2!S*0T*(" @(" @(" @(" @16YD(%1R>0T*(" @(" @("!%;F0@
    M1G5N8W1I;VX-"B-%;F0@4F5G:6]N#0H-"B @("!%;F0@0VQA<W,-"D5N9"!.
    *86UE<W!A8V4-"@``
    `
    end


  • Next message: kv: "Reason behind implicit FullTrust LinkDemand?"