Not sure if this is really a submission or not.
(I don't really expect it to be accepted)
Attached is an optional "foreach" task.
Really it's just AntCallOn.
It supports iterating over filesets, and over a set of parameters.
eg
<foreach target="doSomething">
<param name="param1">
<fileset refid="fset1"/>
</param>
<param name="param2">
<item value="value1"/>
<item value="value2"/>
</param>
</foreach>
The parameters form a cartesian product, so every item in fileset
"fset1" will be paired against "value1" and then "value2"
It's slightly unfinished (the task is incorrectly formated, and undocmented),
but I'm going on holidays in about 20 hours, and I don't know if I'll have any
time to work on it between now and then.
I don't have any real need for it right now, but with all the "how do I iterate
over a fileset" questions that popup, I thouht it would be work having lying
around somewhere.
<<foreach.xml>> <<ForeachTask.java>>
begin 600 foreach.xml
M/#]X;[EMAIL PROTECTED]<VEO;CTB,2XP(C\^#0H-"CQP<F]J96-T(&YA;64](D9/4D5!
[EMAIL PROTECTED](&1E9F%U;'0](FUA:6XB(&)A<V5D:7(](BXB/@T*#0H@(#QT87-K9&5F
M(&YA;64](F9O<[EMAIL PROTECTED](&-L87-S;F%M93TB;W)G+F%P86-H92YT;V]L<RYA
M;G0N=&%S:V1E9G,N;W!T:6]N86PN1F]R96%C:%1A<VLB+SX-"@T*("`\9FEL
M97-E="!I9#TB9G,Q(B!D:7(](BXB/@T*"3QI;F-L=61E(&YA;64](BHN<[EMAIL PROTECTED]
M+SX-"B`@/"]F:6QE<V5T/@T*#0H@(#QF:6QE<V5T(&ED/2)F<S(B(&1I<CTB
M+B(^#0H)/&EN8VQU9&4@;F%M93TB*BYX;6PB+SX-"B`@/"]F:6QE<V5T/@T*
M#0H@(#QT87)G970@;F%M93TB;7-G(CX-"@D\96-H;R!M97-S86=E/2(N+BXN
M+BXN+BXN+BXN+BXN+B(O/@T*"3QE8VAO(&UE<W-A9V4](E`Q.B1[<&%R86TQ
M?2(O/@T*"3QE8VAO(&UE<W-A9V4](E`R.B1[<&%R86TR?2(O/@T*"3QE8VAO
M(&UE<W-A9V4](E`S.B1[<&%R86TS?2(O/@T*("`\+W1A<F=E=#X-"@T*("`\
M=&%R9V5T(&YA;64](FUA:6XB/@T*(`D\9F]R96%C:"!T87)G970](FUS9R(^
M#0H)"3QP87)A;2!N86UE/2)P87)A;3$B/@T*"0D)/&9I;&5S970@<F5F:60]
M(F9S,2(O/@T*"0D\+W!A<F%M/@T*"0D\<&%R86T@;F%M93TB<&%R86TR(CX-
M"@D)"3QI=&5M('9A;'5E/2)V,2(O/@T*"0D)/&[EMAIL PROTECTED](G8R(B\^
M#0H)"3PO<&%R86T^#0H)"3QP87)A;2!N86UE/2)P87)A;3,B/@T*"0D)/&9I
M;&5S970@<F5F:60](F9S,B(O/@T*"0D)/&[EMAIL PROTECTED](G8S(B\^#0H)
M"3PO<&%R86T^#0H)/"]F;W)E86-H/@T*("`@/"]T87)G970^#0H-"CPO<')O
':F5C=#X-"@==
`
end
begin 600 ForeachTask.java
M+RH-"B`J(%1H92!!<&%C:&[EMAIL PROTECTED]'=A<[EMAIL PROTECTED]&[EMAIL
PROTECTED]<VEO;B`Q
M+C$-"[EMAIL PROTECTED];W!Y<FEG:'[EMAIL PROTECTED]&,I([EMAIL
PROTECTED]&AE($%P86-H92!3;V9T
M=V%R92!&;W5N9&%T:[EMAIL PROTECTED](')I9VAT<PT*("H@<F5S97)V960N#0H@
[EMAIL PROTECTED]("[EMAIL PROTECTED]:7-T<FEB=71I;[EMAIL
PROTECTED]('5S92!I;B!S;[EMAIL PROTECTED](&)I
M;F%R>2!F;W)M<[EMAIL PROTECTED]:"!O<B!W:71H;[EMAIL PROTECTED];V1I9FEC871I;VXL
M(&%R92!P97)M:71T960@<')[EMAIL PROTECTED]&AA="!T:&[EMAIL PROTECTED];&]W:6YG(&-O
M;F1I=&EO;G,-"B`J(&[EMAIL PROTECTED]@T*("H@,[EMAIL PROTECTED]:7-T<FEB=71I
M;VYS(&]F('-O=7)C92!C;V1E(&UU<W0@<F5T86EN('1H92!A8F]V92!C;W!Y
M<FEG:'0-"B`J"6YO=&[EMAIL PROTECTED]&AI<R!L:7-T(&]F(&-O;F1I=&EO;G,@86YD
M('1H92!F;VQL;W=I;F<@9&ES8VQA:6UE<BX-"[EMAIL PROTECTED]<W1R
M:6)U=&EO;G,@:[EMAIL PROTECTED])Y(&9O<FT@;75S="!R97!R;[EMAIL PROTECTED]&AE(&%B
M;W9E(&-O<'ER:6=H=`T*("H);F]T:6-E+"!T:&ES(&QI<W0@;[EMAIL PROTECTED]&ET
M:6]N<R!A;[EMAIL PROTECTED]&AE(&9O;&QO=VEN9R!D:7-C;&%I;65R(&[EMAIL
PROTECTED]@ET:&4@
M9&]C=6UE;G1A=&EO;B!A;F0O;W(@;W1H97(@;6%T97)I86QS('!R;W9I9&5D
M('=I=&@@=&[EMAIL PROTECTED]@ED:7-T<FEB=71I;[EMAIL PROTECTED]@T*("H@,[EMAIL
PROTECTED]&AE(&5N
M9"UU<V5R(&1O8W5M96YT871I;VX@:6YC;'[EMAIL PROTECTED]:"!T:&4@<F5D:7-T
M<FEB=71I;VXL(&[EMAIL PROTECTED]@EA;GDL(&UU<W0@:6YC;'5D92!T:&[EMAIL
PROTECTED];&]W
M:6YG(&%C:[EMAIL PROTECTED]("H)("`@(E1H:7,@<')O9'5C="!I;F-L
M=61E<R!S;V9T=V%R92!D979E;&[EMAIL PROTECTED]@=&[EMAIL PROTECTED]@D)07!A8VAE(%-O
M9G1W87)E($9O=6YD871I;[EMAIL PROTECTED]&AT='`Z+R]W=W<N87!A8VAE+F]R9R\I+B(-
M"B`J"4%L=&5R;F%T96QY+"!T:&ES(&%C:VYO=VQE9V5M96YT(&UA>2!A<'!E
M87(@:[EMAIL PROTECTED]&AE('-O9G1W87)E(&ET<V5L9BP-"B`J"6EF(&%N9"!W:&5R979E
M<B!S=6-H('1H:7)D+7!A<G1Y(&%C:VYO=VQE9V5M96YT<R!N;W)M86QL>2!A
M<'!E87([EMAIL PROTECTED]@T*("[EMAIL PROTECTED]"[EMAIL
PROTECTED]&AE(&YA;65S(")4:&[EMAIL PROTECTED])T82!0<F]J
M96-T(BP@(D%N="(L(&%N9"`B07!A8VAE(%-O9G1W87)[EMAIL PROTECTED]@E&;W5N9&%T
M:6]N(B!M=7-T(&YO="!B92!U<V5D('1O(&5N9&]R<V4@;W(@<')O;6]T92!P
M<F]D=6-T<R!D97)[EMAIL PROTECTED]@EF<F]M('1H:7,@<V]F='=A<[EMAIL PROTECTED]:&]U
M="!P<FEO<B!W<FET=&5N('!E<FUI<W-I;VXN($9O<B!W<FET=&[EMAIL PROTECTED]@EP
M97)M:7-S:6]N+"!P;&5A<[EMAIL PROTECTED]&%C="!A<&%C:&5`87!A8VAE+F]R9RX-
M"[EMAIL PROTECTED]<F]D=6-T<R!D97)I=F5D(&9R;[EMAIL PROTECTED]&AI<R!S;V9T=V%R
M92!M87D@;F]T(&)E(&-A;&QE9"`B07!A8VAE(@T*("H);F]R(&UA>2`B07!A
M8VAE(B!A<'!E87(@:[EMAIL PROTECTED]&AE:7(@;F%M97,@=VET:&]U="!P<FEO<B!W<FET
M=&[EMAIL PROTECTED]@EP97)M:7-S:6]N(&]F('1H92!!<&%C:&[EMAIL PROTECTED])[EMAIL
PROTECTED]@T*
M("[EMAIL PROTECTED])4R!33T945T%212!)4R!04D]6241%1"[EMAIL
PROTECTED]($E3)R<@04Y$($%.
[EMAIL PROTECTED](@24U03$E%1`T*("[EMAIL PROTECTED]@24Y#3%5$
M24Y'+"!"[EMAIL PROTECTED]($Q)[EMAIL PROTECTED](%1(12!)35!,245$(%=!4E)!3E1)
M15,-"B`J($]&($U%4D-(04Y404))[EMAIL PROTECTED]&3U(@02!0
M05)424-53$%2(%!54E!/[EMAIL PROTECTED])[EMAIL PROTECTED])[EMAIL PROTECTED]@3D\@
[EMAIL PROTECTED]@5$A%($%004-(12!33T945T%212!&3U5.1$%424].($]2
[EMAIL PROTECTED])5%,@0T].5%))0E543U)3($)%($Q)04),12!&3U(@04Y9($1)4D5#
M5"[EMAIL PROTECTED])%0U0L([EMAIL PROTECTED],+"!%6$5-4$Q!
M4EDL($]2($-/3E-%455%3E1)[EMAIL PROTECTED]'+"!"550@
[EMAIL PROTECTED],24U)5$5$(%1/+"!04D]#55)%345.5"!/1B!354)35$E4551%
M($=/3T13($]2(%-%4E9)0T53.R!,3U-3($]&[EMAIL PROTECTED]($1!5$$L($]2
M(%!23T9)5%,[($]2($)54TE.15-3($E.5$524E505$E/[EMAIL PROTECTED]
[EMAIL PROTECTED]@*B!/[EMAIL PROTECTED])9($]&($Q)04))[EMAIL PROTECTED]
M5$A%4B!)3B!#3TY44D%#5"[EMAIL PROTECTED]($Q)04))3$E462P-"B`J($]2(%1/
[EMAIL PROTECTED],24=%3D-%($]2([EMAIL PROTECTED]))4TE.
M1R!)[EMAIL PROTECTED]($]55`T*("[EMAIL PROTECTED]@5$A%(%5312!/1B!42$E3(%-/1E17
M05)%+"!%5D5.($E&([EMAIL PROTECTED]@5$A%(%!/4U-)0DE,2519($]�H@
M*B!354-(($1!34%'12X-"B`J(#T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]
M/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]#0H@
[EMAIL PROTECTED]("[EMAIL
PROTECTED]&AI<R!S;V9T=V%R92!C;VYS:7-T<R!O9B!V;VQU;G1A<[EMAIL PROTECTED]
M=')I8G5T:6]N<R!M861E(&)Y(&UA;GD-"B`J(&EN9&EV:61U86QS(&]N(&)E
M:&%L9B!O9B!T:&[EMAIL PROTECTED](%-O9G1W87)E($9O=6YD871I;VXN("!&;W(@
M;6]R90T*("H@:6YF;W)M871I;VX@;[EMAIL PROTECTED]&AE($%P86-H92!3;V9T=V%R92!&
M;W5N9&%T:6]N+"!P;&5A<V4@<[EMAIL PROTECTED]:'1T<#HO+W=W=RYA<&%C:&4N
M;W)[EMAIL PROTECTED]"@T*<&%C:V%G92!O<F<N87!A8VAE+G1O;VQS+F%N="YT
M87-K9&5F<RYO<'1I;VYA;#L-"@T*:6UP;W)T(&]R9RYA<&%C:&4N=&]O;',N
[EMAIL PROTECTED]:6UP;W)T(&]R9RYA<&%C:&4N=&]O;',N86YT+G1Y<&5S+D9I
M;&[EMAIL PROTECTED]:6UP;W)T(&]R9RYA<&%C:&4N=&]O;',N86YT+G1A<VMD969S
M+D-A;&Q487)[EMAIL PROTECTED]:6UP;W)T(&]R9RYA<&%C:&4N=&]O;',N86YT+G1A
M<VMD969S+E!R;W!E<G1Y(#L-"@T*:6UP;W)T(&IA=F$N=71I;"Y696-T;W(@
M.PT*:6UP;W)T(&IA=F$N=71I;"Y(87-H=&%B;&[EMAIL PROTECTED]:6UP;W)T(&IA=F$N
M=71I;"Y%;G5M97)A=&EO;B`[#0H-"[EMAIL PROTECTED]("[EMAIL
PROTECTED];"!A('1A<F=E="!F
M;W)E86-H(&5N=')Y(&EN(&$@<V5T(&]F('!A<F%M971E<G,-"[EMAIL PROTECTED]@
M/'!R93X-"B`J"3QT87)G970@;F%M93TB=&%R9V5T,2([EMAIL PROTECTED]@D@(#QF;W)E
M86-H('1A<F=E=#TB=&%R9V5T,B([EMAIL PROTECTED]@D)/'!A<F%M(&YA;64](G!A<F%M
M,2([EMAIL PROTECTED]@D)"3QF:6QE<V5T(')E9FED/2)F<V5T,2(O/@T*("H)"3PO<&%R
[EMAIL PROTECTED]@D)/'!A<F%M(&YA;64](G!A<F%M,B([EMAIL PROTECTED]@D)("`\:71E;2!V
M86QU93TB:F%R(B`O/@T*("H)"2`@/&[EMAIL PROTECTED](GII<"(@+SX-"B`J
M"0D\+W!A<F%M/@T*("H)("`@/"]F;W)E86-H/@T*("H)/"]T87)G970^#0H@
[EMAIL PROTECTED]("H)/'1A<F=E="!N86UE/2)T87)G970R(CX-"B`J"2`@/&5C:&\@;65S
M<V%G93TB<')O<"!I<R`D>W!A<F%M,7TN)'MP87)A;3)](B`O/@T*("H)/"]T
M87)[EMAIL PROTECTED]"[EMAIL PROTECTED]<#Y4:&ES(&]N;'[EMAIL PROTECTED]:W,@
M87,@97AP96-T960@:68@;F5I=&AE<B!P87)A;3$@;F]R('!A<F%M,B!A<F4-
M"B`J(&1E9FEN960@:[EMAIL PROTECTED]&AE('!R;VIE8W0@:[EMAIL PROTECTED]("H-"B`J#0H@
M*B!`875T:&]R(#QA(&AR968](FUA:6QT;SIS=&5F86XN8F]D97=I9T!M96=A
M8FET+FYE="(^4W1E9F%N($)O9&5W:6<\+V$^(`T*("HO#0IP=6)L:6,@8VQA
M<W,@1F]R96%C:%1A<[EMAIL PROTECTED]<R!487-K('L-"@T*"7!U8FQI8R!C;&%S
M<R!087)A;4ET96T@>PT*#0H)"7!R:79A=&[EMAIL PROTECTED]:6YG('9A;'5E(#L-"@T*
M"0EP=6)L:6,@=F]I9"!S971686QU92@@4W1R:6YG('9A;'5E("D@>PT*"0D)
M=&AI<RYV86QU92`]('9A;'5E(#L-"@D)?0T*"2`@(`T*"0EP=6)L:6,@4W1R
M:6YG(&=E=%9A;'5E*"D@>PT*"0D)<F5T=7)N('1H:7,[EMAIL PROTECTED]"0E]
M#0H)("[EMAIL PROTECTED])?0T*#0H)<'5B;&EC(&-L87-S(%!A<F%M4V5T('L-"@T*"0EP
M<FEV871E(%9E8W1O<@D@(&9I;&5S971S(#L-"@D)<')I=F%T92!696-T;W(@
M("`@:71E;7,@.PT*"0EP<FEV871E(%-T<FEN9PD@(&YA;[EMAIL PROTECTED])"7!U
M8FQI8R!087)A;5-E="@I('L-"@D)"69I;&5S971S(#T@;F5W(%9E8W1O<[EMAIL PROTECTED]
M(#L-"@D)"6ET96US("`@(#T@;F5W(%9E8W1O<[EMAIL PROTECTED](#L-"@D)?0T*("[EMAIL
PROTECTED])
M"7!U8FQI8R!V;VED(&%D9$9I;&5S970H($9I;&[EMAIL PROTECTED]"`I('L-
M"@D)"69I;&5S971S+F%D9$5L96UE;G0H(&9I;&[EMAIL PROTECTED])"7T-"@T*
M"0EP=6)L:6,@4&%R86U)=&5M(&-R96%T94ET96TH*2A;4ET96TH*2`[#0H)"0EI=&5M<RYA9&1%;&5M
M96YT*"!I=&5M("[EMAIL PROTECTED]"0D)<F5T=7)N(&[EMAIL PROTECTED]"0E]#0H)"2`-"@D)
M<'5B;&EC('9O:60@<V5T3F%M92@@4W1R:6YG(&YA;[EMAIL PROTECTED])"0ET:&ES
M+FYA;64@/2!N86UE(#L-"@D)?0T*#0H)"7!U8FQI8R!3=')I;F<@9V5T3F%M
M92@@*2![#0H)"0ER971U<FX@;F%M92`[#0H)"7T-"@T*"0EP=6)L:6,@16YU
M;65R871I;[EMAIL PROTECTED]"!0<F]J96-T('!R;[EMAIL PROTECTED]"@D)
M"59E8W1O<B!V86QU97,@/2!N97<@5F5C=&]R*"[EMAIL PROTECTED])"0E%;G5M97)A
M=&EO;B!E;G5M([EMAIL PROTECTED]',N96QE;65N=',H*2`[#0H)"0EW:&EL92@@
M96YU;2YH87--;W)E16QE;65N=',H*2`I('L-"@T*"0D)"49I;&[EMAIL PROTECTED]
M95-E="`]("A&:6QE4V5T*65N=6TN;F5X=$5L96UE;G0H*2`[#0H)"0D)1&ER
M96-T;W)Y4V-A;FYE<B!S8V%N;F5R([EMAIL PROTECTED]"YG971$:7)E8W1O<GE3
M8V%N;F5R*'!R;VIE8W0I(#L-"@D)"0E3=')I;F=;72!F:6QE<R`]('-C86YN
M97(N9V5T26YC;'5D961&:6QE<[EMAIL PROTECTED](#L-"@T*"0D)"69O<B@@:6YT(&D],"`[
M(&D\(&9I;&5S+FQE;F=T:"`[(&DK*R`I('L-"@D)"0D)=F%L=65S+F%D9$5L
M96UE;G0H(&9I;&5S6VE=("[EMAIL PROTECTED]"0D)"7T-"@D)"7T-"@T*"0D)96YU;2`]
M(&ET96US+F5L96UE;G1S*"[EMAIL PROTECTED]"0D)=VAI;&4H(&5N=6TN:&%S36]R945L
M96UE;G1S*"[EMAIL PROTECTED]"@D)"0E087)A;4ET96T@:71E;2`]("A087)A;4ET
M96TI96YU;2YN97AT16QE;65N="@I(#L-"@D)"0EV86QU97,N861D16QE;65N
M="@@:71E;[EMAIL PROTECTED]("[EMAIL PROTECTED]"0D)?0T*"0D)#0H)"0ER971U<FX@
M=F%L=65S+F5L96UE;G1S*"[EMAIL PROTECTED]"0E]#0H-"@E]#0H-"@EP<FEV871E(%-T
M<FEN9R`@("!S=6)487)G970[#0H)<')I=F%T92!696-T;W(@("`@<&%R86US
M(#L-"@EP<FEV871E($AA<VAT86)L92!P<F]P97)T:65S(#L-"@T*"7!U8FQI
M8R!&;W)E86-H5&%S:R@@*2"7!R;W!E<G1I97,@(#T@;F5W($AA<VAT86)[EMAIL PROTECTED](#L-"@E]#0H-"@EP
M=6)L:6,@=F]I9"!I;FET*"D@>PT*"7T-"@T*"7!R:79A=&[EMAIL PROTECTED]"!B=6EL
M9%!R;W!E<G1Y*"!3=')I;F<@<')O<$YA;64L(%-T<FEN9R!P<F]P5F%L=64@
M*2![#0H)"7!R;W!E<G1I97,N<'5T*'!R;W!.86UE+'!R;[EMAIL PROTECTED]
M"7T-"@T*"7!R:79A=&[EMAIL PROTECTED]"!E>&5C=71E5&%R9V5T*"D@>PT*#0H)"4-A
M;&Q487)[EMAIL PROTECTED];&5E.PT*"0EC86QL964@/2`H0V%L;%1A<F=E="D@<')O
M:F5C="YC<F5A=&5487-K*")A;G1C86QL(BD[#0H)"6-A;&QE92YI;FET*"D@
M.PT*#0H)"6-A;&QE92YS971487)G970H<W5B5&%R9V5T*3L-"@T*"0E%;G5M
M97)A=&EO;B!K97ES(#T@<')O<&5R=&EE<RYK97ES*"D[#0H)"7=H:6QE*"!K
M97ES+FAA<TUO<F5%;&5M96YT<[EMAIL PROTECTED]("D@>PT*#0H)"0E3=')I;F<@:V5Y(#T@
M*%-T<FEN9REK97ES+FYE>'1%;&5M96YT*"[EMAIL PROTECTED]"0D)4W1R:6YG('9A;"`]
M("A3=')I;F<I<')O<&5R=&EE<RYG970H:V5Y*2`[#0H-"@D)"5!R;W!E<G1Y
M('!R;W`@/2!C86QL964N8W)E871E4&%R86TH*2`[#0H)"0EP<F]P+G-E=$YA
M;64H(&ME>2`I(#L-"@D)"7!R;W`N<V5T5F%L=64H('9A;"`I(#L-"@D)?0T*
M#0H)"6-A;&QE92YE>&5C=71E*"D[#0H)?0T*#0H)<')I=F%T92!V;VED(&5X
M96-U=&5087)A;65T97)S*"!I;G0@<&%R86U.=6UB97(@*2"65X96-U
M=&5487)G970H*2`[#0H)"7T-"@D)96QS92A;5-E="EP87)A;7,N96QE;65N=$%T*'!A<F%M3G5M8F5R
M*2`[#0H-"@D)"45N=6UE<F%T:6]N('9A;'5E<R`]('!A<F%M4V5T+F=E=%9A
M;'5E<RAP<F]J96-T*2`[#0H)"0EW:&EL92@@=F%L=65S+FAA<TUO<F5%;&5M
M96YT<[EMAIL PROTECTED]("D@>R`-"@T*"0D)"5-T<FEN9R!V86P@/2`H4W1R:6YG*79A;'5E
M<RYN97AT16QE;65N="@I(#L-"@D)"0EB=6EL9%!R;W!E<G1Y*"!P87)A;5-E
M="YG971.86UE*"DL('9A;"`I(#L-"@T*"0D)"65X96-U=&5087)A;65T97)S
M*"!P87)A;4YU;6)E<BLQ("[EMAIL PROTECTED]"0D)?0T*"0E]#0H)?0T*#0H)<'5B;&EC
M('9O:[EMAIL PROTECTED]@I('L-"@D)#0H)"6EF("AS=6)487)G970@/3T@;G5L
M;"D@>PT*"0D)=&AR;W<@;F5W($)U:6QD17AC97!T:6]N*")!='1R:6)U=&4@
M=&%R9V5T(&ES(')E<75I<F5D+B(L(`T*"0D)"0D)"0D)(&QO8V%T:6]N*3L-
M"@D)?0T*"0D-"@D)97AE8W5T95!A<F%M971E<G,H,"[EMAIL PROTECTED]"7T-"@T*"7!U
M8FQI8R!087)A;5-E="!C<F5A=&5087)A;[EMAIL PROTECTED]('L-"@D)4&%R86U3970@<&%R
M86T@/2!N97<@4&%R86U3970H*2`[#0H)"7!A<F%M<RYA9&1%;&5M96YT*"!P
M87)A;2`I(#L-"@D)<F5T=7)N('!A<F%M(#L-"@E]#0H-"@EP=6)L:6,@=F]I
M9"!S971487)G970H4W1R:6YG('1A<F=E="D@>PT*"0ES=6)487)G970@/2!T
/87)G970[#0H)?0T*?0T*
`
end