home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1994 March / Source_Code_CD-ROM_Walnut_Creek_March_1994.iso / compsrcs / misc / volume33 / xvi / part04 < prev    next >
Encoding:
Text File  |  1992-10-22  |  55.8 KB  |  1,485 lines

  1. Newsgroups: comp.sources.misc
  2. From: jmd@cyclone.bt.co.uk (John Downey)
  3. Subject:  v33i013:  xvi - portable multi-window vi-like editor, Part04/18
  4. Message-ID: <1992Oct23.181117.29959@sparky.imd.sterling.com>
  5. X-Md4-Signature: 3c8e32974bf0f6b1def97681fdae8c33
  6. Date: Fri, 23 Oct 1992 18:11:17 GMT
  7. Approved: kent@sparky.imd.sterling.com
  8.  
  9. Submitted-by: jmd@cyclone.bt.co.uk (John Downey)
  10. Posting-number: Volume 33, Issue 13
  11. Archive-name: xvi/part04
  12. Environment: Unix, MS-DOS, OS/2, QNX
  13.  
  14. #! /bin/sh
  15. # This is a shell archive.  Remove anything before this line, then feed it
  16. # into a shell via "sh file" or similar.  To overwrite existing files,
  17. # type "sh file -c".
  18. # Contents:  xvi/doc/source.UU.b xvi/src/ex_cmds1.c
  19. # Wrapped by kent@sparky on Thu Oct 22 09:03:41 1992
  20. PATH=/bin:/usr/bin:/usr/ucb:/usr/local/bin:/usr/lbin ; export PATH
  21. echo If this archive is complete, you will see the following message:
  22. echo '          "shar: End of archive 4 (of 18)."'
  23. if test -f 'xvi/doc/source.UU.b' -a "${1}" != "-c" ; then 
  24.   echo shar: Will not clobber existing file \"'xvi/doc/source.UU.b'\"
  25. else
  26.   echo shar: Extracting \"'xvi/doc/source.UU.b'\" \(34078 characters\)
  27.   sed "s/^X//" >'xvi/doc/source.UU.b' <<'END_OF_FILE'
  28. XM90H@(" @(&UO9'5L92 @=&\@8F4@86)L92!T;R!T96QL('1H92!T97)M:6YA
  29. XM;"!I;G1E<F9A8V4@;6]D=6QE('1O(&5N=&5R"B @(" @;W(@97AI="!?"'9?
  30. XM"&E?"'-?"'5?"&%?"&P@;6]D92X@(%1H:7,@;6EG:'0@;65A;B!C:&%N9VEN
  31. XM9R!T:&4@=&5R;6EN86P@<W1A=&4*(" @("!B971W965N(")R87<B(&%N9" B
  32. XM8V]O:V5D(B!M;V1E<RP@;W(@<W=I=&-H:6YG(&1I<W!L87D@<&%G97,N("!.
  33. XM;PH@(" @('-P96-I9FEC(&EN=&5R9F%C92!F;W(@=&AI<R!I<R @9&5F:6YE
  34. XM9"P@(&%L=&AO=6=H("!T:&4@('-T86YD87)D"B @(" @54Y)6" @86YD("!-
  35. XM4RU$3U,@:6UP;&5M96YT871I;VYS(&1O('5S92!S=6-H(&$@9F%C:6QI='DL
  36. XM(&%N9"!T:&4*(" @("!I;G1E<F9A8V4@9G5N8W1I;VYS(&9O<B!B;W1H('-Y
  37. XM<W1E;7,@87)E(&ED96YT:6-A;&QY(&1E9FEN960N"@H@(" @(%\(-"Y?"#<N
  38. XM("!?"$9?"'5?"&Y?"&-?"'1?"&E?"&]?"&X@7PA+7PAE7PAY7PAS+U\(35\(
  39. XM;U\(=5\(<U\(92!?"$A?"&%?"&Y?"&1?"&Q?"&E?"&Y?"&<*"B @(" @1G5N
  40. XM8W1I;VX@:V5Y('9A;'5E<R!A<F4@8V]D960@:6YT;R!A('-E="!O9B C7PAD
  41. XM7PAE7PAF7PAI7PAN7PAE9"!C;VYS=&%N=',@:6X*(" @("!T:&4@9FEL92!?
  42. XM"&%?"'-?"&-?"&E?"&DN7PAH.R!E+F<N('1H92!V86QU92!?"$M?7PA57PA!
  43. XM7PA27PA27PA/7PA7(&UI9VAT(&)E(&=I=F5N(&%S(&EN<'5T"B @(" @=VAE
  44. XM;B!T:&4@:V5Y8F]A<F0@=7 M87)R;W<@:V5Y(&AA<R!B965N('!R97-S960N
  45. XM"@H@(" @($EF('1H92!G;&]B86P@=F%R:6%B;&4@7PA37PAT7PAA7PAT7PAE
  46. XM(&ES(&YO="!E<75A;"!T;R!?"$Y?"$]?"%)?"$U?"$%?"$PL(&%L;"!F=6YC
  47. XM=&EO;@H@(" @(&ME>7,@97AC97!T(&9O<B!A(&)A8VMS<&%C92!K97D@87)E
  48. XM(&EN=F%L:60@:6YP=70N("!)9B!A;B!I;G9A;&ED"B @(" @:V5Y(&ES('!R
  49. XM97-S960L('1H92!S869E<W0@<W1R871E9WD@;6%Y(&)E('1O(&)E97 @86YD
  50. XM("!W86ET("!F;W(*(" @("!A;F]T:&5R(&ME>2!T;R!B92!P<F5S<V5D+B @
  51. XM7PA.7PA/7PA27PA-7PA!7PA,(&ES(&1E9FEN960@:6X@7PAX7PAV7PAI+E\(
  52. XM:"X*"@H*(" @("!?"#)?"#5?"'1?"&@@7PA37PAE7PAP7PAT7PAE7PAM7PAB
  53. XM7PAE7PAR(%\(,5\(.5\(.5\(,B @(" @(" @(" @(" @(" @(" @(" @(" @
  54. XM(" @(" @(" @(" @(%\(4%\(85\(9U\(92!?"#%?"#,*"@H*"@H@(" @(%\(
  55. XM,5\(-" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @
  56. XM(%\(6%\(=E\(:2!?"%-?"&]?"'5?"')?"&-?"&4@7PA#7PAO7PAD7PAE(%\(
  57. XM3E\(;U\(=%\(95\(<PH*"B @(" @06YO=&AE<B!F86-I;&ET>2!W:&EC:"!M
  58. XM87D@8F4@<')O=FED960@:7,@:&%N9&QI;F<@;6]U<V4@:6YP=70@;VX*(" @
  59. XM("!S>7-T96US("!W:&5R92 @:70@(&ES("!A=F%I;&%B;&4N("!4:&4@<W1R
  60. XM871E9WD@9F]R(&EN=&5R<')E=&EN9PH@(" @(&UO=7-E(&EN<'5T("!I<R @
  61. XM8V]N=')O;&QE9" @8GD@('1H92 @7PAM7PAO7PAU7PAS7PAE7PAC7PAL7PAI
  62. XM7PAC7PAK*"D@(&9U;F-T:6]N(" H:6X*(" @("!?"&U?"&]?"'5?"'-?"&4N
  63. XM7PAC*3L@('1H92 @:61E82 @:7,@('1O(&UA:V4@=&AE('-T<F%T96=Y(&EN
  64. XM9&5P96YD96YT(&]F(&%N>0H@(" @('-P96-I9FEC(&1E=FEC92!I;G1E<F9A
  65. XM8V4N("!)9B!A(&UO=7-E(&)U='1O;B!I<R!P<F5S<V5D(&)E9F]R92!A"B @
  66. XM(" @:V5Y8F]A<F0@:V5Y(&ES('!R97-S960L('1H92!F;VQL;W=I;F<@<F]U
  67. XM=&EN92!S:&]U;&0@8F4@8V%L;&5D.@H*"2 @(" @7PAM7PAO7PAU7PAS7PAE
  68. XM7PAC7PAL7PAI7PAC7PAK*%\(:5\(;E\(="!?"')?"&]?"'<L(%\(:5\(;E\(
  69. XM="!?"&-?"&]?"&Q?"'5?"&U?"&XI.PH*(" @("!W:&5R92!R;W<@86YD(&-O
  70. XM;'5M;B!A<F4@=&AE("!C=7)R96YT("!C;RUO<F1I;F%T97,L("!C;W5N=&5D
  71. XM("!I;@H@(" @(&-H87)A8W1E<B @<&]S:71I;VYS+" @;V8@('1H92!M;W5S
  72. XM92!P;VEN=&5R('=I=&AI;B!T:&4@<V-R965N(&]R"B @(" @961I=&EN9R!W
  73. XM:6YD;W<N("!)9B!T:&4@;6]U<V4@:7,@;6]V960@=VAI;&4@(&$@(&)U='1O
  74. XM;B @:7,@(&AE;&0*(" @("!D;W=N+"!T:&4@<F]U=&EN90H*"2 @(" @7PAM
  75. XM7PAO7PAU7PAS7PAE7PAD7PAR7PAA7PAG*%\(:5\(;E\(="!?"'-?"'1?"&%?
  76. XM"')?"'1?"')?"&]?"'<L(%\(:5\(;E\(="!?"&5?"&Y?"&1?"')?"&]?"'<L
  77. XM(%\(:5\(;E\(="!?"'-?"'1?"&%?"')?"'1?"&-?"&]?"&Q?"'5?"&U?"&XL
  78. XM(%\(:5\(;E\(="!?"&5?"&Y?"&1?"&-?"&]?"&Q?"'5?"&U?"&XI.PH*(" @
  79. XM("!S:&]U;&0@8F4@8V%L;&5D('=I=&@@8V\M;W)D:6YA=&5S(&1E<V-R:6)I
  80. XM;F<@=&AE("!M;W9E;65N="X@("!)9@H@(" @('1H92!G;&]B86P@=F%R:6%B
  81. XM;&4@7PA37PAT7PAA7PAT7PAE(&ES(&YO="!E<75A;"!T;R!?"$Y?"$]?"%)?
  82. XM"$U?"$%?"$PL(&UO=7-E(&EN<'5T(&-A;@H@(" @(&)E(&EG;F]R960@86QT
  83. XM;V=E=&AE<BX*"B @(" @06QL('1H:7,@=VEL;"!B92!C;VYS:61E<F%B;'D@
  84. XM=&ED:65D('5P(&%T(&$@;&%T97(@<W1A9V4L('=H96X@=V4*(" @("!H879E
  85. XM('!R;W!E<B!?"'A?"'9?"$5?"'9?"&5?"&Y?"'0@='EP97,@9F]R(&9U;F-T
  86. XM:6]N(&ME>7,@86YD(&UO=7-E(&%C=&EO;G,N"@H@(" @(%\(-"Y?"#@N("!?
  87. XM"$U?"&%?"&E?"&X*"B @(" @1FEN86QL>2P@=&AE("!S>7-T96T@(&EN=&5R
  88. XM9F%C92 @;6]D=6QE("!M=7-T("!P<F]V:61E("!A("!M86EN*"D*(" @("!F
  89. XM=6YC=&EO;BX@("!4:&ES("!F=6YC=&EO;B @;75S="!C86QL('AV:5]S=&%R
  90. XM='5P*'9S+"!A<F=C+"!A<F=V+ H@(" @(&5N=BD@870@<W1A<G1U<"P@=VET
  91. XM:"!P87)A;65T97)S(&%S(&9O;&QO=W,Z"@H@(" @(%9I<G-T4V-R("IV<SL*
  92. XM"2 @5&AI<R!I<R!A('!O:6YT97(@=&\@=&AE(%9I<G138W(@('-T<G5C='5R
  93. XM92 @9F]R("!T:&4@(&9I<G-T"@D@('=I;F1O=RP@;W(@9F]R('1H92!T97)M
  94. XM:6YA;"!S8W)E96XN"@H@(" @(&EN="!A<F=C+"!C:&%R("HJ87)G=CL*"2 @
  95. XM5&AE<V4@87)E(&%S(&9O<B!A(&UA:6XH*2!F=6YC=&EO;BX*"B @(" @8VAA
  96. XM<B J96YV.PH)("!4:&ES(&ES(&%N(&5N=FER;VYM96YT('-T<FEN9RP@(&YO
  97. XM<FUA;&QY("!T:&4@(')E='5R;B @=F%L=64*"2 @9G)O;2 @(&=E=&5N=B@B
  98. XM6%9)3DE4(BDN(" @268@('1H92 @8V]N8V5P=" @;V8@(&5N=FER;VYM96YT
  99. XM"@D@('9A<FEA8FQE<R @9&]E<R @;F]T(" @97AI<W0L(" @82 @('-T<FEN
  100. XM9R @(&]F(" @=&AE(" @9F]R;0H)(" B<V]U<F-E(%\(9E\(:5\(;%\(95\(
  101. XM;E\(85\(;5\(92(@(&UA>2 @8F4@('!A<W-E9" @:6YS=&5A9"P@('-O(&%S
  102. XM('1O(&%L;&]W"@D@('5S97)S('1O(&QO8V%L:7-E('1H96ER('5S86=E(&]F
  103. XM('1H92!E9&ET;W(N"@H@(" @(%1H92!R971U<FX@=F%L=64@9G)O;2!X=FE?
  104. XM<W1A<G1U<"@I(&ES(&$@<&]I;G1E<BP@=VAI8V@@('=I;&P@(&)E"B @(" @
  105. XM=7-E9"!I;B!F=71U<F4@=&\@:61E;G1I9GD@=&AE('=I;F1O=R!F;W(@:6YP
  106. XM=70@979E;G1S+B @1F]R(&YO=RP*(" @("!I="!S:&]U;&0@8F4@<W1O<F5D
  107. XM(&EN('1H92!6:7)T4V-R)W,@<'9?=VEN9&]W(&9I96QD+@H*(" @("!(879I
  108. XM;F<@8V%L;&5D('AV:5]S=&%R='5P*"DL(&EN<'5T(&5V96YT<R!M87D@=&AE
  109. XM;B!B92 @<&%S<V5D("!T;PH@(" @('1H92 @961I=&]R("!B>2 @8V%L;&EN
  110. XM9R @>'9I7VAA;F1L95]E=F5N=" @=VET:" @82!P;VEN=&5R('1O(&%N"B @
  111. XM(" @>'9%=F5N="!S=')U8W1U<F4@(&%S("!T:&4@('-O;&4@(&%R9W5M96YT
  112. XM+B @(%1H:7,@('-T<G5C='5R92 @:7,*(" @("!D969I;F5D(&%S(&9O;&QO
  113. XM=W,Z"@H*"@H*"B @(" @7PA07PAA7PAG7PAE(%\(,5\(-" @(" @(" @(" @
  114. XM(" @(" @(" @(" @(" @(" @(" @(" @(" @(%\(,E\(-5\(=%\(:"!?"%-?
  115. XM"&5?"'!?"'1?"&5?"&U?"&)?"&5?"'(@7P@Q7P@Y7P@Y7P@R"@H*"@H*(" @
  116. XM("!?"%A?"'9?"&D@7PA37PAO7PAU7PAR7PAC7PAE(%\(0U\(;U\(9%\(92!?
  117. XM"$Y?"&]?"'1?"&5?"',@(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @
  118. XM(" @(" @(" @("!?"#%?"#4*"@H*"2 @(" @7PAT7PAY7PAP7PAE7PAD7PAE
  119. XM7PAF(%\(<U\(=%\(<E\(=5\(8U\(="!?"&5?"'9?"&5?"&Y?"'0@>PH)"2!?
  120. XM"&5?"&Y?"'5?"&T@>PH)"2 @(" @7PA%7PAV7U\(8U\(:%\(85\(<BP*"0D@
  121. XM(" @(%\(15\(=E]?"'1?"&E?"&U?"&5?"&]?"'5?"'0*"0D@?2 @(" @(" @
  122. XM(" @(" @(" @("!?"&5?"'9?7PAT7PAY7PAP7PAE.PH)"2!?"'5?"&Y?"&E?
  123. XM"&]?"&X@>PH)"2 @(" @+RH@7PA%7PAV7U\(8U\(:%\(85\(<CH@*B\*"0D@
  124. XM(" @(%\(:5\(;E\(="!?"&5?"'9?"'5?7PAI7PAN7PAC7PAH7PAA7PAR.PH*
  125. XM"0D@(" @("\J(%\(15\(=E]?"'1?"&E?"&U?"&5?"&]?"'5?"'0Z("HO"@D)
  126. XM('T@(" @(" @(" @(" @(" @(" @7PAE7PAV7U\(=3L*"2 @(" @?2!?"'A?
  127. XM"'9?"$5?"'9?"&5?"&Y?"'0["@H)(" @(" C7PAD7PAE7PAF7PAI7PAN7PAE
  128. XM(%\(95\(=E]?"&E?"&Y?"&-?"&A?"&%?"'(@(" @(" @7PAE7PAV7U\(=2Y?
  129. XM"&5?"'9?"'5?7PAI7PAN7PAC7PAH7PAA7PAR"@H*(" @("!4:&4@979?='EP
  130. XM92!F:65L9"!I<R!A('1A9R!W:&EC:"!I9&5N=&EF:65S("!T:&4@('1Y<&4@
  131. XM(&]F("!E=F5N= H@(" @('=H:6-H("!H87,@(&]C8W5R<F5D+B @070@<')E
  132. XM<V5N="P@;VYL>2!T=V\@979E;G1S(&%R92!S=7!P;W)T960Z"B @(" @86X@
  133. XM:6YP=70@8VAA<F%C=&5R(&9R;VT@=&AE('5S97(L(&%N9"!A('1I;65O=70N
  134. XM("!4:&4@=6YI;VX@=VAI8V@*(" @("!F;VQL;W=S("!C;VYT86EN<R!D871A
  135. XM(&%S<V]C:6%T960@=VET:"!E86-H(&5V96YT('1Y<&4[(&-U<G)E;G1L>0H@
  136. XM(" @(&]N;'D@=&AE('1Y<&4@179?8VAA<B!R97%U:7)E<R!D871A+"!A<R!M
  137. XM87D@8F4@<V5E;BX@(%1H92 C7PAD7PAE7PAF7PAI7PAN7PAE"B @(" @9F]R
  138. XM(&5V7VEN8VAA<B!I<R!P<F]V:61E9"!P=7)E;'D@9F]R(&-O;G9E;FEE;F-E
  139. XM+@H*(" @("!4:&4@<F5T=7)N('9A;'5E(&9R;VT@>'9I7VAA;F1L95]E=F5N
  140. XM="@I(&ES(&$@;&]N9R!I;G1E9V5R("!V86QU90H@(" @('=H:6-H("!I<R @
  141. XM=&AE("!T:6UE("!I;B @;6EL;&ES96-O;F1S("!F;W(@('=H:6-H("!T:&4@
  142. XM961I=&]R(&ES"B @(" @<')E<&%R960@=&\@=V%I="!F;W(@;6]R92!I;G!U
  143. XM="X@($EF(&YO(&EN<'5T(&%R<FEV97,@=VET:&EN('1H870*(" @("!T:6UE
  144. XM+" @=&AE("!F=6YC=&EO;B!S:&]U;&0@8F4@8V%L;&5D(&%G86EN('=I=&@@
  145. XM86X@979E;G0@;V8@='EP90H@(" @($5V7W1I;65O=70N("!4:&4@=&EM96]U
  146. XM="!V86QU92!R971U<FYE9" @;6%Y("!B92 @,$PL("!I;F1I8V%T:6YG"B @
  147. XM(" @=&AA="!N;R!T:6UE;W5T(&ES(&YE8V5S<V%R>2X@($ET(&ES('9E<GD@
  148. XM:6UP;W)T86YT('1H870@=&EM96]U=',*(" @("!S:&]U;&0@86-T=6%L;'D@
  149. XM8F4@:6UP;&5M96YT960@8F5C875S92!T:&5Y(&%R92 @;F5E9&5D("!F;W(@
  150. XM('1H90H@(" @(%\(<%\(<E\(95\(<U\(95\(<E\(=E\(92!F86-I;&ET>2X*
  151. XM"B @(" @0W5R<F5N=&QY+" @("!I9B @("!A(" @(&ME>6)O87)D(" @(&EN
  152. XM=&5R<G5P=" @("!I<R @("!R96-E:79E9"P*(" @("!?"'A?"'9?"&E?7PAH
  153. XM7PAA7PAN7PAD7PAL7PAE7U\(95\(=E\(95\(;E\(="@I("!N965D("!N;W0@
  154. XM(&)E(&-A;&QE9" H:70@<VAO=6QD+"!I;B!A;GD@8V%S92P*(" @("!N979E
  155. XM<B!B92!C86QL960@9G)O;2!A;B!A<WEN8VAR;VYO=7,@:6YT97)R=7!T(&]R
  156. XM('-I9VYA;"!H86YD;&5R*0H@(" @(&)U=" @=&AE("!G;&]B86P@('9A<FEA
  157. XM8FQE("!?"&M?"&)?"&1?"&E?"&Y?"'1?"'(@('-H;W5L9" @8F4@<V5T('1O
  158. XM(&$@;F]N+7IE<F\*(" @("!V86QU92X*"@H*(" @("!?"#4N("!?"$1?"$%?
  159. XM"%1?"$$@7PA37PA47PA27PA57PA#7PA47PA57PA27PA%7PA3"@H@(" @(%-T
  160. XM<G5C='5R97,@=7-E9"!I;B!X=FD@87)E(&%L;"!T>7!E9&5F)V0L(&%N9"!A
  161. XM;&P@(&)E9VEN("!W:71H("!A"B @(" @8V%P:71A;" @;&5T=&5R+B @(%1H
  162. XM97D@87)E(&1E9FEN960@:6X@7PAX7PAV7PAI+E\(:"X@(%1H92!F;VQL;W=I
  163. XM;F<@9&%T80H@(" @('-T<G5C='5R97,@87)E(&1E9FEN960Z"@H@(" @(%\(
  164. XM-2Y?"#$N("!?"$Q?"&E?"&Y?"&4*"B @(" @5&AI<R!S=')U8W1U<F4@:7,@
  165. XM=7-E9"!T;R!H;VQD(&$@<VEN9VQE('1E>'0@;&EN92X@("!)=" @8V]N=&%I
  166. XM;G,*(" @("!F;W)W87)D("!A;F0@(&)A8VMW87)D("!P;VEN=&5R<R @=VAI
  167. XM8V@@87)E(&-O;FYE8W1E9"!T;V=E=&AE<B!T;PH@(" @(&9O<FT@82!T=V\M
  168. XM=V%Y(&QI;FME9"!L:7-T+B @270@86QS;R!C;VYT86EN<R @82 @<&]I;G1E
  169. XM<B @=&\@(&%N"B @(" @86QL;V-A=&5D("!T97AT("!B=69F97(L(&%N(&EN
  170. XM=&5G97(@<F5C;W)D:6YG('1H92!N=6UB97(@;V8@8GET97,*(" @("!A;&QO
  171. XM8V%T960@9F]R('1H92!T97AT+"!A;F0@=&AE(&QI;F4@;G5M8F5R("AA;B @
  172. XM=6YS:6=N960@(&QO;F<I+@H@(" @(%1H92 @=&5X=" @:7,@;G5L;"UT97)M
  173. XM:6YA=&5D+"!A;F0@=&AE('-P86-E(&%L;&]C871E9"!F;W(@:70@;6%Y"@H*
  174. XM(" @("!?"#)?"#5?"'1?"&@@7PA37PAE7PAP7PAT7PAE7PAM7PAB7PAE7PAR
  175. XM(%\(,5\(.5\(.5\(,B @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @
  176. XM(" @(" @(%\(4%\(85\(9U\(92!?"#%?"#4*"@H*"@H@(" @(%\(,5\(-B @
  177. XM(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(%\(6%\(
  178. XM=E\(:2!?"%-?"&]?"'5?"')?"&-?"&4@7PA#7PAO7PAD7PAE(%\(3E\(;U\(
  179. XM=%\(95\(<PH*"B @(" @8F4@9W)O=VX@8G5T(&ES(&YE=F5R('-H<G5N:RX@
  180. XM(%1H92!M87AI;75M('-I>F4@;V8@=&AI<R!S<&%C92 @:7,*(" @("!G:79E
  181. XM;B!B>2!?"$U?"$%?"%A?7PA,7PA)7PA.7PA%7U\(3%\(15\(3E\(1U\(5%\(
  182. XM2"X*"B @(" @5&AE(&QI;F4@;G5M8F5R(&ES('5S960@=VAE;B!S:&]W:6YG
  183. XM(&QI;F4@;G5M8F5R<R!O;B!S8W)E96XL("!B=70*(" @("!T:&ES(&ES('-E
  184. XM8V]N9&%R>2!T;R!I=',@;6%I;B!P=7)P;W-E(&]F('!R;W9I9&EN9R!A;B!O
  185. XM<F1E<FEN9R!O;@H@(" @(&QI;F5S.R!T:&4@;W)D97)I;F<@;V8@='=O(&QI
  186. XM;F5S(&EN(&$@;&ES="!M87D@8F4@97-T86)L:7-H960@(&)Y"B @(" @<VEM
  187. XM<&QY("!C;VUP87)I;F<@('1H96ER("!L:6YE("!N=6UB97)S("AM86-R;W,@
  188. XM87)E(&%V86EL86)L92!F;W(*(" @("!T:&ES('!U<G!O<V4[('-E92!L871E
  189. XM<B!F;W(@9&5T86EL<RDN"@H@(" @(%\(-2Y?"#(N("!?"$)?"'5?"&9?"&9?
  190. XM"&5?"'(*"B @(" @5&AI<R!S=')U8W1U<F4@:&]L9',@=&AE(&EN=&5R;F%L
  191. XM(')E<')E<V5N=&%T:6]N(&]F(&$@(&9I;&4N(" @270*(" @("!C;VYT86EN
  192. XM<R @<&]I;G1E<G,@=&\@=&AE(&QI;FME9"!L:7-T(&]F(&QI;F5S('=H:6-H
  193. XM(&-O;7!R:7-E('1H90H@(" @(&%C='5A;"!T97AT+B @5V4@86QW87ES(&%L
  194. XM;&]C871E(&%N(&5X=')A(&QI;F4@870@('1H92 @8F5G:6YN:6YG"B @(" @
  195. XM86YD("!T:&4@96YD+"!W:71H(&QI;F4@;G5M8F5R<R P(&%N9"!?"$U?"$%?
  196. XM"%A?7PA,7PA)7PA.7PA%7PA.7PA/(')E<W!E8W1I=F5L>2P@:6X*(" @("!O
  197. XM<F1E<B!T;R!M86ME('1H92!C;V1E('=H:6-H(&1E86QS('=I=&@@('1H:7,@
  198. XM('-T<G5C='5R92 @96%S:65R+@H@(" @(%1H92 @;&EN92 @;G5M8F5R<R @
  199. XM;V8@($QI;F4@('-T<G5C='5R97,@(&EN("!A($)U9F9E<B!A<F4@86QW87ES
  200. XM"B @(" @;6%I;G1A:6YE9"!B>2!C;V1E(&EN('5N9&\N8RP@=VAI8V@@:7,@
  201. XM=&AE(&]N;'D@;6]D=6QE('=H:6-H(&5V97(*(" @("!C:&%N9V5S('1H92!T
  202. XM97AT(&]F(&$@0G5F9F5R+@H*(" @("!4:&4@0G5F9F5R('-T<G5C='5R92!A
  203. XM;'-O(&-O;G1A:6YS.@H*(" @("!O""L@(" @9FQA9W,L(&EN8VQU9&EN9R!R
  204. XM96%D;VYL>2!A;F0@;6]D:69I960*"B @(" @;P@K(" @(&-U<G)E;G0@9FEL
  205. XM96YA;64@87-S;V-I871E9"!W:71H('1H92!B=69F97(*"B @(" @;P@K(" @
  206. XM('1E;7!O<F%R>2!F:6QE;F%M92!F;W(@8G5F9F5R('!R97-E<G9A=&EO;@H*
  207. XM(" @("!O""L@(" @<W!A8V4@9F]R('1H92!?"&U?"&%?"')?"&L@;6]D=6QE
  208. XM('1O('-T;W)E(&EN9F]R;6%T:6]N(&%B;W5T("!M87)K960*"2 @;&EN97,*
  209. XM"B @(" @;P@K(" @('-P86-E(&9O<B!T:&4@7PAU7PAN7PAD7PAO(&UO9'5L
  210. XM92!T;R @<W1O<F4@(&EN9F]R;6%T:6]N("!A8F]U=" @=&AE"@D@(&QA<W0@
  211. XM8VAA;F=E"@H@(" @(&\(*R @("!N=6UB97(@;V8@=VEN9&]W<R!A<W-O8VEA
  212. XM=&5D('=I=&@@=&AE(&)U9F9E<@H*(" @("!4:&4@9F]L;&]W:6YG(&UA8W)O
  213. XM<R!A<F4@=7-E9"!T;R @9FEN9" @;W5T("!C97)T86EN("!I;F9O<FUA=&EO
  214. XM;@H@(" @(&%B;W5T($QI;F5S('=I=&AI;B!"=69F97)S.@H*(" @("!L:6YE
  215. XM;F\H0G5F9F5R("IB+"!,:6YE("IL*0H)("!2971U<FYS('1H92!L:6YE(&YU
  216. XM;6)E<B!O9B!T:&4@<W!E8VEF:65D($QI;F4L('=H:6-H(&)E;&]N9W,*"2 @
  217. XM=&\@=&AE('-P96-I9FEE9"!"=69F97(N"@H@(" @(&5A<FQI97(H3&EN92 J
  218. XM;#$L($QI;F4@*FPR*0H)("!2971U<FYS(%\(5%\(4E\(55\(12!I9B!L,2!I
  219. XM<R!E87)L:65R(&EN('1H92!B=69F97(@=&AA;B!L,BX*"B @(" @;&%T97(H
  220. XM3&EN92 J;#$L($QI;F4@*FPR*0H)("!2971U<FYS(%\(5%\(4E\(55\(12!I
  221. XM9B!L,2!I<R!L871E<B!I;B!T:&4@8G5F9F5R('1H86X@;#(N"@H@(" @(&ES
  222. XM7VQA<W1L:6YE*$QI;F4@*FPQ*0H)("!2971U<FYS(%\(5%\(4E\(55\(12!I
  223. XM9B!L,2!I<R!T:&4@;&%S="!L:6YE("AI+F4N('1H92!E>'1R82!L:6YE("!A
  224. XM= H)("!T:&4@96YD+"!N;W0@=&AE(&QA<W0@=&5X="!L:6YE*2!O9B!T:&4@
  225. XM8G5F9F5R+@H*"@H*"B @(" @7PA07PAA7PAG7PAE(%\(,5\(-B @(" @(" @
  226. XM(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(%\(,E\(-5\(=%\(:"!?
  227. XM"%-?"&5?"'!?"'1?"&5?"&U?"&)?"&5?"'(@7P@Q7P@Y7P@Y7P@R"@H*"@H*
  228. XM(" @("!?"%A?"'9?"&D@7PA37PAO7PAU7PAR7PAC7PAE(%\(0U\(;U\(9%\(
  229. XM92!?"$Y?"&]?"'1?"&5?"',@(" @(" @(" @(" @(" @(" @(" @(" @(" @
  230. XM(" @(" @(" @(" @("!?"#%?"#<*"@H@(" @(&ES7VQI;F4P*$QI;F4@*FPQ
  231. XM*0H)("!2971U<FYS(%\(5%\(4E\(55\(12!I9B!L,2!I<R!T:&4@,'1H(&QI
  232. XM;F4@*&DN92X@=&AE(&5X=')A("!L:6YE("!A= H)("!T:&4@<W1A<G0L(&YO
  233. XM="!T:&4@9FER<W0@=&5X="!L:6YE*2!O9B!T:&4@8G5F9F5R+@H*(" @("!?
  234. XM"#4N7P@S+B @7PA07PAO7PAS7PAN"@H@(" @(%1H:7,@<W1R=6-T=7)E(&ES
  235. XM('9E<GD@<VEM<&QE.R!I="!C;VYT86EN<R!A($QI;F4@<&]I;G1E<B!A;F0@
  236. XM(&%N"B @(" @:6YT96=E<B @:6YD97@@(&EN=&\@('1H92 @;&EN92=S("!T
  237. XM97AT+" @86YD(&ES('5S960@=&\@<F5C;W)D(&$*(" @("!P;W-I=&EO;B!W
  238. XM:71H:6X@82!B=69F97(L(&4N9RX@=&AE(&-U<G)E;G0@8W5R<V]R('!O<VET
  239. XM:6]N+@H*(" @("!4:&5S92!F=6YC=&EO;G,@87)E(&%V86EL86)L92!F;W(@
  240. XM;W!E<F%T:6YG(&]N(%!O<VX@<W1R=6-T=7)E<SH*"B @(" @9V-H87(H4&]S
  241. XM;B J*0H)("!2971U<FYS('1H92!C:&%R86-T97(@=VAI8V@@:7,@870@=&AE
  242. XM(&=I=F5N('!O<VET:6]N+@H*(" @("!I;F,H4&]S;B J*0H)("!);F-R96UE
  243. XM;G1S('1H92!G:79E;B!P;W-I=&EO;BP@;6]V:6YG("!P87-T("!E;F0M;V8M
  244. XM;&EN92 @=&\*"2 @=&AE(&YE>'0@;&EN92!I9B!N96-E<W-A<GDN("!4:&4@
  245. XM9F]L;&]W:6YG('1Y<&4@:7,@<F5T=7)N960Z"@H)(" @(%\(95\(;E\(=5\(
  246. XM;2!?"&U?"'9?"'1?"'E?"'!?"&4@>PH)"5\(;5\(=E]?"$Y?"$]?"$U?"$]?
  247. XM"%9?"$4L(" @("\J(%\(85\(="!?"&)?"&5?"&=?"&E?"&Y?"&Y?"&E?"&Y?
  248. XM"&<@7PAO7PAR(%\(95\(;E\(9"!?"&]?"&8@7PAB7PAU7PAF7PAF7PAE7PAR
  249. XM("HO"@D)7PAM7PAV7U\(4U\(05\(35\(15\(3%\(25\(3E\(12P@("\J(%\(
  250. XM<U\(=%\(:5\(;%\(;"!?"'=?"&E?"'1?"&A?"&E?"&X@7PAS7PAA7PAM7PAE
  251. XM(%\(;%\(:5\(;E\(92 J+PH)"5\(;5\(=E]?"$-?"$A?"$Q?"$E?"$Y?"$4L
  252. XM(" @("\J(%\(8U\(:%\(85\(;E\(9U\(95\(9"!?"'1?"&\@7PAD7PAI7PAF
  253. XM7PAF7PAE7PAR7PAE7PAN7PAT(%\(;%\(:5\(;E\(92 J+PH)"5\(;5\(=E]?
  254. XM"$5?"$]?"$PL(" @(" @("\J(%\(85\(="!?"'1?"&5?"')?"&U?"&E?"&Y?
  255. XM"&%?"'1?"&E?"&Y?"&<@)U\(7%\(,"<@*B\*"2 @("!].PH*"B @(" @9&5C
  256. XM*%!O<VX@*BD*"2 @07,@9F]R(&EN8R@I(&)U="!D96-R96UE;G1S('1H92!P
  257. XM;W-I=&EO;BX*"B @(" @;'0H4&]S;B J<#$L(%!O<VX@*G R*0H)("!2971U
  258. XM<FYS(%\(5%\(4E\(55\(12!I9B!T:&4@<&]S:71I;VX@<W!E8VEF:65D(&)Y
  259. XM(' Q(&ES("!E87)L:65R("!I;@H)("!T:&4@8G5F9F5R('1H86X@=&AA="!S
  260. XM<&5C:69I960@8GD@<#(N"@H@(" @(%\(-2Y?"#0N("!?"%A?"'9?"&E?"'=?
  261. XM"&E?"&X*"B @(" @5&AI<R!S=')U8W1U<F4@;6%P<R!A('-C<F5E;B!W:6YD
  262. XM;W<@;VYT;R!A($)U9F9E<BX@($ET(&-O;G1A:6YS.@H*(" @("!O""L@(" @
  263. XM82!P;VEN=&5R('1O('1H92!"=69F97(@<W1R=6-T=7)E('=H:6-H(&ET(&ES
  264. XM(&UA<'!E9"!O;G1O"@H@(" @(&\(*R @("!T:&4@(&-U<G-O<B=S("!?"&Q?
  265. XM"&]?"&=?"&E?"&-?"&%?"&P@('!O<VET:6]N("!I;B @=&AE("!B=69F97(@
  266. XM("AA(" @4&]S;@H)("!S=')U8W1U<F4I"@H@(" @(&\(*R @("!T:&4@8W5R
  267. XM<V]R)W,@(%\(<%\(:%\(>5\(<U\(:5\(8U\(85\(;" @<&]S:71I;VX@(&EN
  268. XM("!T:&4@('=I;F1O=R @*')O=R @86YD"@D@(&-O;'5M;BD*"B @(" @;P@K
  269. XM(" @(&EN9F]R;6%T:6]N(&%B;W5T('-I>F4@86YD(&QO8V%T:6]N(&]F('-C
  270. XM<F5E;B!W:6YD;W<*"B @(" @;P@K(" @(&-U<G)E;G0@=&5X="!O9B!S=&%T
  271. XM=7,@;&EN90H*(" @("!O""L@(" @9F]R=V%R9"!A;F0@8F%C:W=A<F0@<&]I
  272. XM;G1E<G,@=&\@;W1H97(@=VEN9&]W<PH*(" @("!.;W1E('1H870@=&AE<F4@
  273. XM:7,@870@;&5A<W0@;VYE(%AV:7=I;B!F;W(@979E<GD@0G5F9F5R+@H*(" @
  274. XM("!7:&5N('1H92!E9&ET;W(@=V%S(&UO9&EF:65D("!T;R @<W5P<&]R=" @
  275. XM8G5F9F5R("!W:6YD;W=S+" @;6%N>0H*"B @(" @7P@R7P@U7PAT7PAH(%\(
  276. XM4U\(95\(<%\(=%\(95\(;5\(8E\(95\(<B!?"#%?"#E?"#E?"#(@(" @(" @
  277. XM(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @("!?"%!?"&%?"&=?"&4@
  278. XM7P@Q7P@W"@H*"@H*(" @("!?"#%?"#@@(" @(" @(" @(" @(" @(" @(" @
  279. XM(" @(" @(" @(" @(" @(" @("!?"%A?"'9?"&D@7PA37PAO7PAU7PAR7PAC
  280. XM7PAE(%\(0U\(;U\(9%\(92!?"$Y?"&]?"'1?"&5?"',*"@H@(" @(&=L;V)A
  281. XM;" @('9A<FEA8FQE<R @('=E<F4@("!M;W9E9" @:6YT;R @=&AE("!"=69F
  282. XM97(@(&%N9" @6'9I=VEN"B @(" @<W1R=6-T=7)E<SL@<V]M92!W97)E(&QE
  283. XM9G0@87,@9VQO8F%L<RX@($9O<B @:6YS=&%N8V4L("!T:&4@(%\(=5\(;E\(
  284. XM9%\(;PH@(" @(&%N9" @7PAM7PAA7PAR7PAK("!F86-I;&ET:65S("!A<F4@
  285. XM(&]B=FEO=7-L>2!B=69F97(M<F5L871E9"P@8G5T(%\(>5\(85\(;E\(:R!I
  286. XM<PH@(" @('5S969U;"!I9B!I="!I<R!G;&]B86P@*&%C='5A;&QY('-T871I
  287. XM8R!W:71H:6X@:71S("!O=VX@(&UO9'5L92D["B @(" @:70@=V%S(&1E8VED
  288. XM960@=&AA="!?"'-?"&5?"&%?"')?"&-?"&@@86YD(%\(<E\(95\(9%\(;R!S
  289. XM:&]U;&0@86QS;R!B92!G;&]B86PN"@H@(" @(%-O;64@;6]D=6QE<R!H879E
  290. XM('1H96ER(&]W;B!I;G1E<FYA;"!S=&%T:6,@9&%T82!S=')U8W1U<F5S.R @
  291. XM9F]R"B @(" @:6YS=&%N8V4L("!T:&4@(%\(<U\(95\(85\(<E\(8U\(:"!M
  292. XM;V1U;&4@<F5M96UB97)S('1H92!L87-T('!A='1E<FX@<V5A<F-H960*(" @
  293. XM("!F;W(N(" @06QS;RP@(&-E<G1A:6X@(&UO9'5L97,@('5S92 @9&%T82 @
  294. XM<W1R=6-T=7)E<R @=VAI8V@@(&%R90H@(" @(&EN8VQU9&5D(&EN(&UO<F4@
  295. XM9VQO8F%L(&]N97,[(&4N9RX@96%C:"!"=69F97(@<W1R=6-T=7)E(&-O;G1A
  296. XM:6YS"B @(" @<V]M92!D871A('5S960@(&]N;'D@('=I=&AI;B @7PAU7PAN
  297. XM7PAD7PAO+E\(8RX@("!4:&ES("!I<R @;F]T("!V97)Y("!W96QL"B @(" @
  298. XM<W1R=6-T=7)E9"P@(&)U=" @:6X@('!R86-T:6-E(&ET)W,@<75I=&4@8VQE
  299. XM86X@8F5C875S92!W92!S:6UP;'D*(" @("!E;G-U<F4@=&AA="!R969E<F5N
  300. XM8V5S('1O('-U8V@@<W1R=6-T=7)E<R!A<F4@:V5P="!L;V-A;" @=&\@('1H
  301. XM90H@(" @(&UO9'5L92!W:&EC:" B;W=N<R(@=&AE;2X*"B @(" @7P@U+E\(
  302. XM-2X@(%\(35\(85\(<E\(:PH*(" @("!4:&ES(&1A=&$@<W1R=6-T=7)E(')E
  303. XM8V]R9',@82!M87)K("AD969I;F5D(&)Y("!T:&4@(&T@(&-O;6UA;F0I+@H@
  304. XM(" @($ET(&-O;G1A:6YS(&$@4&]S;B!A;F0@82!C:&%R86-T97(@9FEE;&0@
  305. XM=&\@:&]L9"!T:&4@;&5T=&5R('=H:6-H"B @(" @9&5F:6YE<R!T:&4@(&UA
  306. XM<FLN(" @16%C:" @0G5F9F5R("!C;VYT86EN<R @86X@(&%R<F%Y("!O9B @
  307. XM=&AE<V4*(" @("!S=')U8W1U<F5S("!F;W(@(&AO;&1I;F<@(&%L<&AA8F5T
  308. XM:6,@(&UA<FMS+" @<&QU<R @;VYE("!F;W(@('1H90H@(" @('!R979I;W5S
  309. XM(&-O;G1E>'0@;6%R:R H87,@=7-E9"!B>2!T:&4@)R<@86YD(&!@("!C;VUM
  310. XM86YD<RDN(" @5&AE"B @(" @9FEL92!?"&U?"&%?"')?"&LN7PAC(&1E86QS
  311. XM('=I=&@@;6%R:W,N"@H@(" @(%\(-2Y?"#8N("!?"$-?"&A?"&%?"&Y?"&=?
  312. XM"&4*"B @(" @5&AI<R!S=')U8W1U<F4@<F5C;W)D<R!A('-I;F=L92!C:&%N
  313. XM9V4@=VAI8V@@:&%S(&)E96X@;6%D92 @=&\@(&$*(" @("!B=69F97(N(" @
  314. XM270@(&%L<V\@(&-O;G1A:6YS("!A('!O:6YT97(L('-O('1H870@:70@;6%Y
  315. XM(&)E(&9O<FUE9 H@(" @(&EN=&\@82!L:7-T+B @4V5E('1H92!D:7-C=7-S
  316. XM:6]N("!O9B @7PAU7PAN7PAD7PAO+E\(8R @8F5L;W<@(&9O<B @9G5R=&AE
  317. XM<@H@(" @(&1E=&%I;',N"@H@(" @(%\(-2Y?"#<N("!?"$9?"&Q?"&5?"'A?
  318. XM"&)?"'5?"&8*"B @(" @5&AI<R!S=')U8W1U<F4@:7,@=7-E9"!T;R!S=&]R
  319. XM92!T97AT('-T<FEN9W,@9F]R('=H:6-H('1H92!L96YG=&@*(" @("!I<R @
  320. XM=6YK;F]W;BX@(%1H92!F;VQL;W=I;F<@;W!E<F%T:6]N<R!A<F4@9&5F:6YE
  321. XM9"!F;W(@=&AI<R!T>7!E+@H@(" @($%L;"!F=6YC=&EO;G,@=&%K92!A($9L
  322. XM97AB=68@<&]I;G1E<B!A<R!A('!A<F%M971E<BX*"B @(" @9FQE>&YE=RAF
  323. XM*0H)("!);FET:6%L:7-E(&$@1FQE>&)U9CL@;F]T(&YE961E9"!F;W(@<W1A
  324. XM=&EC($9L97AB=69S+@H*(" @("!F;&5X8VQE87(H9BD*"2 @5')U;F-A=&4@
  325. XM82!&;&5X8G5F("!T;R @>F5R;R @;&5N9W1H+" @8G5T("!D;VXG=" @9G)E
  326. XM92 @:71S"@D@('-T;W)A9V4N"@H@(" @(&9L97AD96QE=&4H9BD*"2 @1G)E
  327. XM92!A;&P@<W1O<F%G92!B96QO;F=I;F<@=&\@82!&;&5X8G5F+@H*(" @("!F
  328. XM;&5X96UP='DH9BD*"2 @4F5T=7)N(%\(5%\(4E\(55\(12!I9B!T:&4@1FQE
  329. XM>&)U9B!I<R!E;7!T>2X*"B @(" @9FQE>&QE;BAF*0H)("!2971U<FX@=&AE
  330. XM(&YU;6)E<B!O9B!C:&%R86-T97)S(&EN('1H92!&;&5X8G5F+@H*"@H*"B @
  331. XM(" @7PA07PAA7PAG7PAE(%\(,5\(." @(" @(" @(" @(" @(" @(" @(" @
  332. XM(" @(" @(" @(" @(" @(%\(,E\(-5\(=%\(:"!?"%-?"&5?"'!?"'1?"&5?
  333. XM"&U?"&)?"&5?"'(@7P@Q7P@Y7P@Y7P@R"@H*"@H*(" @("!?"%A?"'9?"&D@
  334. XM7PA37PAO7PAU7PAR7PAC7PAE(%\(0U\(;U\(9%\(92!?"$Y?"&]?"'1?"&5?
  335. XM"',@(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @("!?
  336. XM"#%?"#D*"@H@(" @(&9L97AR;6-H87(H9BD*"2 @4F5M;W9E('1H92!L87-T
  337. XM(&-H87)A8W1E<B!F<F]M(&$@1FQE>&)U9BX*"B @(" @9FQE>'!O<&-H*&8I
  338. XM"@D@(%)E;6]V92!T:&4@9FER<W0@8VAA<F%C=&5R(&9R;VT@82!&;&5X8G5F
  339. XM(&%N9"!R971U<FX@:70N"@H@(" @(&9L97AG971S='(H9BD*"2 @4F5T=7)N
  340. XM(&$@<&]I;G1E<B!T;R!T:&4@<W1R:6YG(&-O;G1A:6YE9"!I;B!T:&4@1FQE
  341. XM>&)U9BX*"B @(" @9FQE>&%D9&-H*&8L(&,I"@D@($%D9"!T:&4@8VAA<F%C
  342. XM=&5R(&,@=&\@=&AE(&5N9"!O9B!T:&4@1FQE>&)U9BX*"B @(" @;&9O<FUA
  343. XM="AF+"!F;70L("XN+BD*"2 @02!S=6)S970@;V8@<W!R:6YT9B@I(&)U="!F
  344. XM;W(@1FQE>&)U9G,N"@H@(" @('9F;W)M870H9BP@9FUT+"!V85]L:7-T*0H)
  345. XM("!!('-U8G-E="!O9B!V<W!R:6YT9B@I(&)U="!F;W(@1FQE>&)U9G,N"@H@
  346. XM(" @(%1H92!L87-T('1W;R!F=6YC=&EO;G,@87)E(&5S<&5C:6%L;'D@=7-E
  347. XM9G5L+" @<VEN8V4@('1H97D@(&%V;VED"B @(" @=&AE('5S=6%L('!R;V)L
  348. XM96US('=I=&@@=&AE(&QA8VL@;V8@8F]U;F1S+6-H96-K:6YG(&EN('-P<FEN
  349. XM=&8H*2X*(" @("!!;&P@8V]D92!I;B!T:&4@961I=&]R(&ET<V5L9B!N;W<@
  350. XM('5S97,@($9L97AB=69S("!T;R @879O:60@('1H90H@(" @('!O<W-I8FEL
  351. XM:71Y("!O9B @8G5F9F5R("!O=F5R<G5N<RP@(&%N9"!T;R!R961U8V4@=&AE
  352. XM('-I>F4@;V8@=&AE"B @(" @97AE8W5T86)L92X@(%-O;64@3U,M<W!E8VEF
  353. XM:6,@;6]D=6QE<RP@:&]W979E<BP@;6%Y('-T:6QL('5S92!T:&4*(" @("!P
  354. XM<FEN=&8H*2 @9F%M:6QY+B @(%1H92 @<W5B<V5T("!O9B!P<FEN=&8M;&EK
  355. XM92!F;W)M870@<W!E8VEF:65R<PH@(" @(&EM<&QE;65N=&5D(&EN8VQU9&5S
  356. XM('1H;W-E(&9O<B!I;G1E9V5R<R!A;F0@<W1R:6YG<RP@8G5T(&YO=" @9F]R
  357. XM"B @(" @9FQO871I;F<M<&]I;G0@;G5M8F5R<RX*"B @(" @7P@U+E\(."X@
  358. XM(%\(8E\(;U\(;U\(;%]?"'0*"B @(" @02!S:6UP;&4@0F]O;&5A;B!T>7!E
  359. XM.R!H87,@('9A;'5E<R @7PA47PA27PA57PA%("!A;F0@(%\(1E\(05\(3%\(
  360. XM4U\(12P@('=H:6-H("!A<F4*(" @("!D969I;F5D("!A<R @,2 @86YD(" P
  361. XM("!S;R @87,@=&\@8F4@8V]M<&%T:6)L92!W:71H($,@8V]M<&%R:7-O;@H@
  362. XM(" @(&]P97)A=&]R<RX*"B @(" @7P@U+E\(.2X@(%\(>%\(=E\(15\(=E\(
  363. XM95\(;E\(= H*(" @("!4:&ES('1Y<&4@:7,@9&5F:6YE9"!I;B!T:&4@<')E
  364. XM=FEO=7,@<V5C=&EO;BP@<VEN8V4@:70@9F]R;7,@<&%R= H@(" @(&]F('1H
  365. XM92!P;W)T:6YG(&EN=&5R9F%C92X*"B @(" @7P@U+E\(,5\(,"X@(%\(5E\(
  366. XM:5\(<E\(=%\(4U\(8U\(<@H*(" @("!4:&ES('1Y<&4@<F5P<F5S96YT<R!A
  367. XM('9I<G1U86P@<V-R965N+"!A;F0@:7,@(&-O;G-T<G5C=&5D("!I;B @80H@
  368. XM(" @('-I;6EL87(@=V%Y('1O(&$@7PAC7PAL7PAA7PAS7PAS+B @270@8V]N
  369. XM=&%I;G,@<V]M92!F=6YC=&EO;B!P;VEN=&5R<R!W:&EC: H@(" @(&UA>2!B
  370. XM92!U<V5D('1O(&UA;FEP=6QA=&4@=&AE('-C<F5E;B!I;B!V87)I;W5S("!W
  371. XM87ES+" @86YD("!S;VUE"B @(" @<')I=F%T92!D871A('=H:6-H(&ES('5S
  372. XM960@8GD@=&AE(&EM<&QE;65N=&%T:6]N(&]F('1H92!C;&%S<RX*"B @(" @
  373. XM5&AE(&]L9"!T97)M:6YA;"!I;G1E<F9A8V4L('=H:6-H(&-O;G-I<W1E9"!O
  374. XM9B!A('-E="!O9B!D:7-P87)A=&4*(" @("!F=6YC=&EO;G,L("!I<R!B96EN
  375. XM9R!R97!L86-E9"!B>2!T:&4@5FER=%-C<B!I;G1E<F9A8V4[('1H92!F:7)S
  376. XM= H@(" @('-T97 @:6X@=&AI<R!P<F]C97-S(&AA<R!B965N(&%C8V]M<&QI
  377. XM<VAE9"!B>2!T:&4@<')O=FES:6]N(&]F("!A"B @(" @9&5F875L="!6:7)T
  378. XM4V-R(&EM<&QE;65N=&%T:6]N('5S:6YG('1H92!O;&0@<')I;6ET:79E(&9U
  379. XM;F-T:6]N<RX*(" @("!.97<L(&YA=&EV92P@5FER=%-C<B!I;7!L96UE;G1A
  380. XM=&EO;G,@;6%Y(&YO=R!B92!C;V1E9"P@=VAI8V@@=VEL; H@(" @(&EN8W)E
  381. XM87-E('1H92!E9F9I8VEE;F-Y(&]F('-C<F5E;B!O=71P=70N"@H@(" @($%S
  382. XM('1H92!F:6YA;"!S=&%G92P@82!W:6YD;W=I;F<@(&EM<&QE;65N=&%T:6]N
  383. XM("!O9B @=&AE("!6:7)T4V-R"B @(" @8VQA<W,@("!W:6QL(" @8F4@("!P
  384. XM<F]V:61E9"P@("!U<VEN9R @('1H92 @('5N9&5R;'EI;F<@(%9I<G138W(*
  385. XM(" @("!I;7!L96UE;G1A=&EO;G,L(&%N9"!T:&4@=VEN9&]W+6AA;F1L:6YG
  386. XM(&-O9&4@:6X@=&AE(&5D:71O<B @=VEL; H*"B @(" @7P@R7P@U7PAT7PAH
  387. XM(%\(4U\(95\(<%\(=%\(95\(;5\(8E\(95\(<B!?"#%?"#E?"#E?"#(@(" @
  388. XM(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @("!?"%!?"&%?"&=?
  389. XM"&4@7P@Q7P@Y"@H*"@H*(" @("!?"#)?"# @(" @(" @(" @(" @(" @(" @
  390. XM(" @(" @(" @(" @(" @(" @(" @("!?"%A?"'9?"&D@7PA37PAO7PAU7PAR
  391. XM7PAC7PAE(%\(0U\(;U\(9%\(92!?"$Y?"&]?"'1?"&5?"',*"@H@(" @(&)E
  392. XM("!M;V1I9FEE9" @=&\@=&AA="!E86-H(&]C8W5R<F5N8V4@;V8@86X@6'9I
  393. XM=VEN(')E9F5R96YC97,@:71S"B @(" @;W=N(%9I<G138W(N("!)="!W:6QL
  394. XM('1H96X@8F4@<&]S<VEB;&4@=&\@8G5I;&0@82!V97)S:6]N(&]F("!T:&4*
  395. XM(" @("!E9&ET;W(@('=H:6-H(&]P97)A=&5S(&EN(&$@=')U92!W:6YD;W=I
  396. XM;F<@96YV:7)O;FUE;G0@8GD@=7-I;F<@80H@(" @('-E<&%R871E('-C<F5E
  397. XM;B!W:6YD;W<@9F]R(&5A8V@@8G5F9F5R+"!I;G-T96%D("!O9B @=&AE("!C
  398. XM=7)R96YT"B @(" @=F5R=&EC86PM<W!L:70@;65T:&]D+@H*(" @("!!(&9U
  399. XM;&P@9&5F:6YI=&EO;B!O9B!T:&4@(%9I<G138W(@('1Y<&4@('=I;&P@(&)E
  400. XM("!F;W5N9" @:6X@('1H90H@(" @('!R979I;W5S('-E8W1I;VXN"@H@(" @
  401. XM(%\(-2Y?"#%?"#$N("!?"$=?"&Q?"&]?"&)?"&%?"&P@7PA67PAA7PAR7PAI
  402. XM7PAA7PAB7PAL7PAE7PAS"@H@(" @(%1H97)E(&%R92!O;FQY(&$@9F5W(&=L
  403. XM;V)A;"!V87)I86)L97,@:6X@=&AE(&5D:71O<BX@("!4:&5S92 @87)E"B @
  404. XM(" @=&AE(&EM<&]R=&%N="!O;F5S.@H*(" @("!C=7)B=68*"2 @("!P;VEN
  405. XM=&5R('1O('1H92!C=7)R96YT($)U9F9E<@H*(" @("!C=7)W:6X*"2 @("!P
  406. XM;VEN=&5R('1O('1H92!C=7)R96YT(%AV:7=I;@H*(" @("!3=&%T92 @('1H
  407. XM92!C=7)R96YT(%\(<U\(=%\(85\(=%\(92!O9B!T:&4@961I=&]R.R!C;VYT
  408. XM<F]L<R!W:&%T('=E(&1O('=I=&@*"2 @("!I;G!U="!C:&%R86-T97)S+B @
  409. XM5&AE('9A;'5E(&ES(&]N92!O9B!T:&4@9F]L;&]W:6YG.@H*"2 @("!.3U)-
  410. XM04P@(" @5&AE("!D969A=6QT("!S=&%T93L@('9I+6UO9&4@(&-O;6UA;F1S
  411. XM("!M87D@(&)E"@D)(" @(" @97AE8W5T960*"@D@(" @24Y315)4(" @($EN
  412. XM<V5R="!M;V1E+"!I+F4N(&-H87)A8W1E<G,@='EP960@9V5T("!I;G-E<G1E
  413. XM9 H)"2 @(" @(&EN=&\@=&AE(&-U<G)E;G0@8G5F9F5R"@H)(" @(%)%4$Q!
  414. XM0T4@("!297!L86-E("!M;V1E+" @8VAA<F%C=&5R<R @:6X@('1H92 @8G5F
  415. XM9F5R("!G970*"0D@(" @("!O=F5R=W)I='1E;B!B>2!W:&%T(&ES('1Y<&5D
  416. XM"@H)(" @($--1$Q)3D4@("!296%D:6YG(&$@8V]L;VXM8V]M;6%N9"P@<F5G
  417. XM=6QA<B @97AP<F5S<VEO;B @;W(*"0D@(" @("!P:7!E(&-O;6UA;F0*"@D@
  418. XM(" @1$E34$Q!62 @($1I<W!L87EI;F<@=&5X="P@:2YE+B Z<" @8V]M;6%N
  419. XM9"P@(&]R(" Z<V5T("!O<@H)"2 @(" @(#IM87 @=VET:"!N;R!A<F=U;65N
  420. XM= H*(" @("!E8VAO(" @5&AI<R @=F%R:6%B;&4@("!C;VYT<F]L<R @('=H
  421. XM870@("!O=71P=70@("!I<R @(&-U<G)E;G1L>0H)(" @(&1I<W!L87EA8FQE
  422. XM+B @($ET("!I<R @=7-E9" @870@('9A<FEO=7,@<&]I;G1S('=I=&AI;B!T
  423. XM:&4*"2 @("!E9&ET;W(@=&\@<W1O<"!C97)T86EN(&]U='!U="!W:&EC:"!I
  424. XM<R!E:71H97(@('5N9&5S:7)A8FQE"@D@(" @;W(@('-U8BUO<'1I;6%L+B @
  425. XM($ET("!M=7-T("!A;'=A>7,@(&)E("!R97-T;W)E9" @=&\@(&ET<PH)(" @
  426. XM('!R979I;W5S("!V86QU92 @869T97(@('1H92 @8V]D92 @=VAI8V@@(&-H
  427. XM86YG960@(&ET("!H87,*"2 @("!F:6YI<VAE9"!W:&%T(&ET(&ES(&1O:6YG
  428. XM+@H*(" @("!K8F1I;G1R"@D@(" @5&AI<R!C86X@8F4@<V5T('1O(&$@;F]N
  429. XM+7IE<F\@=F%L=64@=&\@(&EN9&EC871E("!T:&%T("!A;@H)(" @(&%S>6YC
  430. XM:')O;F]U<R @=7-E<BUG96YE<F%T960@:6YT97)R=7!T("AS=6-H(&%S(&$@
  431. XM:V5Y8F]A<F0*"2 @("!I;G1E<G)U<'0I(&AA<R!O8V-U<G)E9"X@("!3964@
  432. XM('1H92 @9&ES8W5S<VEO;B @;V8@(&5V96YT"@D@(" @:&%N9&QI;F<@:6X@
  433. XM=&AE('!R979I;W5S('-E8W1I;VXN"@H*"@H*"@H@(" @(%\(4%\(85\(9U\(
  434. XM92!?"#)?"# @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @
  435. XM("!?"#)?"#5?"'1?"&@@7PA37PAE7PAP7PAT7PAE7PAM7PAB7PAE7PAR(%\(
  436. XM,5\(.5\(.5\(,@H*"@H*"B @(" @7PA87PAV7PAI(%\(4U\(;U\(=5\(<E\(
  437. XM8U\(92!?"$-?"&]?"&1?"&4@7PA.7PAO7PAT7PAE7PAS(" @(" @(" @(" @
  438. XM(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @7P@R7P@Q"@H*(" @("!?
  439. XM"#8N("!?"%-?"$]?"%5?"%)?"$-?"$4@7PA&7PA)7PA,7PA%7PA3"@H@(" @
  440. XM(%1H92!H96%D97(@9FEL92!?"'A?"'9?"&DN7PAH(&-O;G1A:6YS("!A;&P@
  441. XM('1H92 @='EP92 @9&5F:6YI=&EO;G,@('5S960*(" @("!W:71H:6X@=&AE
  442. XM(&5D:71O<BP@87,@=V5L;"!A<R!F=6YC=&EO;B!D96-L87)A=&EO;G,@971C
  443. XM+@H*(" @("!4:&4@9F]L;&]W:6YG('-O=7)C92!F:6QE<R!F;W)M("!T:&4@
  444. XM('!R:6UA<GD@(&EN=&5R9F%C92 @=&\@('1H90H@(" @(&5D:71O<CH*"B @
  445. XM(" @<W1A<G1U<"YC"@D@(" @(" @16YT<GD@<&]I;G0@9F]R('1H92!E9&ET
  446. XM;W(N("!$96%L<R @=VET:" @87)G=6UE;G0@(&%N9 H)(" @(" @(&]P=&EO
  447. XM;B @('!A<G-I;F<@(&%N9" @:6YI=&EA;" @<V5T=7 L("!C86QL:6YG("!M
  448. XM;V1U;&4*"2 @(" @("!I;FET:6%L:7-A=&EO;B!F=6YC=&EO;G,@87,@;F5C
  449. XM97-S87)Y+@H*(" @("!E=F5N=',N8R @($-O;G1A:6YS('1H92!R;W5T:6YE
  450. XM('AV:5]H86YD;&5?979E;G0H*2P@=VAI8V@@:7,@('1H90H)(" @(" @(&5N
  451. XM=')Y("!P;VEN="!F;W(@:&%N9&QI;F<@:6YP=70@=&\@=&AE(&5D:71O<CL@
  452. XM:6YP=70@:7,*"2 @(" @("!P87-S960@=&\@9&EF9F5R96YT(')O=71I;F5S
  453. XM("!A8V-O<F1I;F<@('1O("!T:&4@(%-T871E"@D@(" @(" @=F%R:6%B;&4N
  454. XM(" @5&EM96]U=',@;VX@:6YP=70@87)E(&%L<V\@:&%N9&QE9"!H97)E+"!B
  455. XM>0H)(" @(" @(&-A;&QI;F<@87!P<F]P<FEA=&4@<F]U=&EN97,@:6X@;6%P
  456. XM+F,@;W(@<')E<V5R=F4N8RX*"B @(" @961I="YC(" @($1E86QS('=I=&@@
  457. XM:6YS97)T(&%N9"!R97!L86-E(&UO9&5S+@H*(" @("!N;W)M86PN8R @($AA
  458. XM;F1L97,@;F]R;6%L+6UO9&4@8V]M;6%N9',N"@H@(" @(&UA<"YC(" @("!4
  459. XM:&ES(&9I;&4@:7,@<F5S<&]N<VEB;&4@9F]R(&%L;" @:6YP=70@(&UA<'!I
  460. XM;F<@("AB;W1H"@D@(" @(" @<V5T(" @=7 @("!B>2 @=&AE(" Z;6%P("!C
  461. XM;VUM86YD("!A;F0@(&EN=&5R;F%L;'D@(&9O<@H)(" @(" @(&9U;F-T:6]N
  462. XM+6ME>2!M87!P:6YG<SL@(&ET("!A;'-O("!I;7!L96UE;G1S("!A("!S='5F
  463. XM9BT*"2 @(" @("!C:&%R86-T97)S+6EN=&\M=&AE+6EN<'5T+7-T<F5A;2 @
  464. XM(&9U;F-T:6]N(" @9F]R(" @=7-E"@D@(" @(" @=VET:&EN('1H92!E9&ET
  465. XM;W(N(" @5&AI<R @:7,@('5S960L("!F;W(@(&5X86UP;&4L("!T;PH)(" @
  466. XM(" @(&EM<&QE;65N="!C;VUM86YD(')E9&\@*&)U="!?"&Y?"&]?"'0@=&\@
  467. XM:6UP;&5M96YT(")U;F1O(B!A;F0*"2 @(" @(" B<'5T(B!A<R!I;B!35$56
  468. XM244I+@H*"B @(" @0V]L;VX@*&5X+71Y<&4I(&-O;6UA;F1S(&%R92!H86YD
  469. XM;&5D(&)Y('1H:7,@9W)O=7 Z"@H@(" @(&-M9&QI;F4N8PH)(" @(" @($1E
  470. XM8V]D97,@86YD(&5X96-U=&5S(&-O;&]N(&-O;6UA;F1S+@H*(" @("!E>%]C
  471. XM;61S,2YC"@D@(" @(" @1FEL92TL($)U9F9E<BT@86YD(%AV:7=I;BUR96QA
  472. XM=&5D(&-O;&]N(&-O;6UA;F1S+@H*(" @("!E>%]C;61S,BYC"@D@(" @(" @
  473. XM3W1H97(@8V]L;VX@8V]M;6%N9',@*&4N9RX@<VAE;&P@97-C87!E*2X*"@H@
  474. XM(" @(%-C<F5E;B!U<&1A=&EN9R!I<R!D;VYE('=I=&AI;B!T:&4@9F]L;&]W
  475. XM:6YG(&9I;&5S.@H*(" @("!S8W)E96XN8R @(%-C<F5E;B!U<&1A=&EN9R!C
  476. XM;V1E+"!I;F-L=61I;F<@:&%N9&QI;F<@;V8@;&EN92UB87-E9 H)(" @(" @
  477. XM(&5N=')Y(" H9F]R("!C;VQO;B @8V]M;6%N9',L('-E87)C:&5S(&5T8RD@
  478. XM87,@=&AE>2!A<F4*"2 @(" @("!T>7!E9" @:6XL("!A;F0@(&1I<W!L87DM
  479. XM;6]D92 @<W1U9F8@(" H9F]R(" @<&%R86UE=&5R"@D@(" @(" @9&ES<&QA
  480. XM>6EN9RP@.E\(9R]?"')?"&4O7PAP(&5T8RDN"@H@(" @(&-U<G-O<BYC(" @
  481. XM5&AI<R!F:6QE(&-O;G1A:6YS('1H92!S:6YG;&4@(&9U;F-T:6]N("!C=7)S
  482. XM=7!D871E*"DL"@D@(" @(" @=VAI8V@@(&ES("!R97-P;VYS:6)L92 @9F]R
  483. XM(&1E8VED:6YG('=H97)E('1H92!P:'ES:6-A; H)(" @(" @('-C<F5E;B!C
  484. XM=7)S;W(@<VAO=6QD(&)E+"!A8V-O<F1I;F<@=&\@=&AE("!P;W-I=&EO;B @
  485. XM;V8*"2 @(" @("!T:&4@(&QO9VEC86P@(&-U<G-O<B @:6X@=&AE(&)U9F9E
  486. XM<B!A;F0@=&AE('!O<VET:6]N(&]F"@H*(" @("!?"#)?"#5?"'1?"&@@7PA3
  487. XM7PAE7PAP7PAT7PAE7PAM7PAB7PAE7PAR(%\(,5\(.5\(.5\(,B @(" @(" @
  488. XM(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(%\(4%\(85\(9U\(92!?
  489. XM"#)?"#$*"@H*"@H@(" @(%\(,E\(,B @(" @(" @(" @(" @(" @(" @(" @
  490. XM(" @(" @(" @(" @(" @(" @(%\(6%\(=E\(:2!?"%-?"&]?"'5?"')?"&-?
  491. XM"&4@7PA#7PAO7PAD7PAE(%\(3E\(;U\(=%\(95\(<PH*"@D@(" @(" @=&AE
  492. XM('=I;F1O=R!O;G1O('1H870@8G5F9F5R+B @5&AI<R!R;W5T:6YE(&ES(&YO
  493. XM=" @=F5R>0H)(" @(" @(&]P=&EM86PL(&%N9"!W:6QL('!R;V)A8FQY(&1I
  494. XM<V%P<&5A<B!I;B!D=64@8V]U<G-E+@H*(" @("!D969S8W(N8R @(%1H:7,@
  495. XM9FEL92!C;VYT86EN<R!T:&4@9&5F875L="!I;7!L96UE;G1A=&EO;B @;V8@
  496. XM('1H90H)(" @(" @(%9I<G138W(@(&-L87-S+" @;VX@('1O<" @;V8@('1H
  497. XM92 @;VQD("!T97)M:6YA;"]S>7-T96T*"2 @(" @("!I;G1E<F9A8V4N"@H@
  498. XM(" @('-T871U<RYC(" @1G5N8W1I;VYS('1O('5P9&%T92!T:&4@<W1A='5S
  499. XM(&QI;F4@;V8@82!W:6YD;W<[('1H97)E"@D@(" @(" @87)E("!D:69F97)E
  500. XM;G0@(&9U;F-T:6]N<R @=&\@(&1I<W!L87D@9FEL92!I;F9O<FUA=&EO;@H)
  501. XM(" @(" @("AN86UE+"!P;W-I=&EO;B!E=&,N*2!A;F0@97)R;W(O:6YF;W)M
  502. XM871I;VX@;65S<V%G97,N"@H*(" @("!4:&5S92!F:6QE<R!D96%L('=I=&@@
  503. XM<W!E8VEF:6,@87)E87,@;V8@9G5N8W1I;VYA;&ET>3H*"B @(" @9FEN9"YC
  504. XM(" @(%-E87)C:"!F=6YC=&EO;G,Z("!A;&P@(&MI;F1S("!O9B @<V5A<F-H
  505. XM97,L("!I;F-L=61I;F<*"2 @(" @("!C:&%R86-T97(M8F%S960@("!A;F0@
  506. XM('=O<F0M8F%S960@(&-O;6UA;F1S+" @<V5C=&EO;G,L"@D@(" @(" @<&%R
  507. XM86=R87!H<RP@(&%N9" @=&AE("!I;G1E<F9A8V4@('1O(" B<F5A;"(@('-E
  508. XM87)C:&EN9PH)(" @(" @("AW:&EC:"!I<R!A8W1U86QL>2!D;VYE(&EN(%\(
  509. XM<U\(95\(85\(<E\(8U\(:"Y?"&,I+@H*(" @("!M87)K+F,@(" @4')O=FED
  510. XM97,@<')I;6ET:79E<R!T;R!R96-O<F0@;6%R:W,@('=I=&AI;B @82 @0G5F
  511. XM9F5R+ H)(" @(" @(&%N9"!T;R!F:6YD('1H92!M87)K<R!A9V%I;BX*"B @
  512. XM(" @;6]U<V4N8R @($-O9&4@=&\@(&AA;F1L92 @;6EC92 @;6]V:6YG("!T
  513. XM:&4@(&-U<G-O<B @87)O=6YD("!A;F0*"2 @(" @("!R97-I>FEN9R!W:6YD
  514. XM;W=S+@H*(" @("!P87)A;2Y;8VA="@D@(" @(" @0V]D92!T;R!H86YD;&4@
  515. XM<V5T=&EN9R!O9BP@86YD(&%C8V5S<R @=&\L("!P87)A;65T97)S+@H)(" @
  516. XM(" @("A4:&5S92!A<F4@=&AI;F=S(&QI:V4@=&%B<W1O<',L(&%U=&]I;F1E
  517. XM;G0L(&5T8RXI"@H@(" @('!I<&4N8R @("!(86YD;&5S('!I<&EN9R!T:')O
  518. XM=6=H('-Y<W1E;2!C;VUM86YD<RX*"B @(" @<')E<V5R=F4N8PH)(" @(" @
  519. XM($9I;&4@<')E<V5R=F%T:6]N(')O=71I;F5S+@H*(" @("!S96%R8V@N8R @
  520. XM($-O9&4@(&9O<B @<&%T=&5R;BUS96%R8VAI;F<@(&EN("!A("!B=69F97(L
  521. XM("!A;F0@(&9O<@H)(" @(" @('-U8G-T:71U=&EO;G,@(&%N9" @9VQO8F%L
  522. XM(&5X96-U=&EO;BX@(%5S97,@<F5G97AP+EMC:%T*"2 @(" @("!F;W(@=&AE
  523. XM(&%C='5A;"!R96=U;&%R(&5X<')E<W-I;VX@<W1U9F8N"@H@(" @('1A9W,N
  524. XM8R @("!2;W5T:6YE<R!T;R!H86YD;&4@=&%G<R M(&9O<B Z=&%G+" M="!A
  525. XM;F0@7ETN"@H@(" @('5N9&\N8R @("!#;V1E('1O(&1E86P@=VET:"!D;VEN
  526. XM9R!A;F0@=6YD;VEN9SL@(&DN92X@(&UA:VEN9R @86YD"@D@(" @(" @=6YM
  527. XM86MI;F<@(&-H86YG97,@=&\@82!B=69F97(N("!4:&ES(&ES(&]N92!O9B!T
  528. XM:&4@;6]R90H)(" @(" @(&-O;7!L97@@86YD(&1E;&EC871E(&9I;&5S+@H*
  529. XM(" @("!Y86YK<'5T+F,*"2 @(" @("!#;V1E('1O(&1E86P@=VET:"!Y86YK
  530. XM:6YG(&%N9"!P=71T:6YG("!T97AT+" @:6YC;'5D:6YG"@D@(" @(" @;F%M
  531. XM960@8G5F9F5R<RX*"@H@(" @('=H:6QE('1H97-E(&9I;&5S('!R;W9I9&4@
  532. XM;&]W97(M;&5V96P@9G5N8W1I;VYS.@H*(" @("!A;&QO8RYC(" @365M;W)Y
  533. XM(&%L;&]C871I;VX@<F]U=&EN97,N"@H*"@H*(" @("!?"%!?"&%?"&=?"&4@
  534. XM7P@R7P@R(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @
  535. XM7P@R7P@U7PAT7PAH(%\(4U\(95\(<%\(=%\(95\(;5\(8E\(95\(<B!?"#%?
  536. XM"#E?"#E?"#(*"@H*"@H@(" @(%\(6%\(=E\(:2!?"%-?"&]?"'5?"')?"&-?
  537. XM"&4@7PA#7PAO7PAD7PAE(%\(3E\(;U\(=%\(95\(<R @(" @(" @(" @(" @
  538. XM(" @(" @(" @(" @(" @(" @(" @(" @(" @(%\(,E\(,PH*"B @(" @87-C
  539. XM:6DN6V-H70H)(" @(" @($1E86QS("!W:71H("!T:&4@('9I<W5A;" @<F5P
  540. XM<F5S96YT871I;VX@("!O9B @('-P96-I86P*"2 @(" @("!C:&%R86-T97)S
  541. XM(&]N('1H92!D:7-P;&%Y("AE+F<N('1A8G,L(&-O;G1R;VP@8VAA<G,I+@H*
  542. XM(" @("!B=69F97)S+F,*"2 @(" @("!2;W5T:6YE<R!D96%L:6YG('=I=&@@
  543. XM=&AE("!A;&QO8V%T:6]N("!A;F0@(&9R965I;F<@(&]F"@D@(" @(" @0G5F
  544. XM9F5R<RX*"B @(" @9FEL96EO+F,@("!&:6QE($DO3R!R;W5T:6YE<SL@<F5A
  545. XM9&EN9RP@=W)I=&EN9RP@<F4M961I=&EN9R!F:6QE<RX*"2 @(" @("!!;'-O
  546. XM(&AA;F1L:6YG(&]F('1H92!F;W)M870@<&%R86UE=&5R+@H*(" @("!F;&5X
  547. XM8G5F+F,*"2 @(" @("!&;&5X:6)L92UL96YG=&@@8VAA<F%C=&5R+6)U9F9E
  548. XM<B!R;W5T:6YE<RX*"B @(" @;6ES8V-M9',N8PH)(" @(" @($UI<V-E;&QA
  549. XM;F5O=7,@9G5N8W1I;VYS+@H*(" @("!M;W9E;65N="YC"@D@(" @(" @0V]D
  550. XM92!T;R!D96%L('=I=&@@(&UO=FEN9R @=&AE("!C=7)S;W(@(&%R;W5N9" @
  551. XM:6X@('1H90H)(" @(" @(&)U9F9E<BP@86YD('-C<F]L;&EN9R!T:&4@<V-R
  552. XM965N(&5T8RX*"B @(" @<'1R9G5N8RY;8VA="@D@(" @(" @4')I;6ET:79E
  553. XM<R!T;R!H86YD;&4@4&]S;B!S=')U8W1U<F5S.R!I;F-L=61I;F<@=F%R:6]U
  554. XM<PH)(" @(" @(&]P97)A=&]R<R!T;R!C;VUP87)E('!O<VET:6]N<R!I;B!A
  555. XM('1E>'0@8G5F9F5R+@H*(" @("!R96=E>' N6V-H72P@<F5G;6%G:6,N: H)
  556. XM(" @(" @(%)E9W5L87(M97AP<F5S<VEO;B!S='5F9BP@;W)I9VEN86QL>2!W
  557. XM<FET=&5N("!B>2 @2&5N<GD*"2 @(" @("!3<&5N8V5R(" H=&AA;FMS("!(
  558. XM96YR>2D@(&%N9" @<VQI9VAT;'D@(&AA8VME9"!F;W(@=7-E"@D@(" @(" @
  559. XM=VET:&EN('AV:2X*"B @(" @<VEG;F%L+F,@("!(86YD;&EN9R!O9B @=&5R
  560. XM;6EN86PM9V5N97)A=&5D("!S:6=N86QS("!I;B @86X@($%.4TD*"2 @(" @
  561. XM("!E;G9I<F]N;65N="X*"B @(" @=FER='-C<BYH"@D@(" @(" @5FER='5A
  562. XM;"!38W)E96X@:6YT97)F86-E(&1E9FEN:71I;VXN(" @5&AI<R @:7,@(&$@
  563. XM(&YE=PH)(" @(" @('!A<G0@(&]F("!X=FDL(&%N9"!I<R!N;W0@>65T(&9U
  564. XM;&QY(&-O;7!L971E9"X@(%=H96X@:70*"2 @(" @("!I<R!F:6YI<VAE9"P@
  565. XM:70@=VEL;"!P<F]V:61E('1H92!A8FEL:71Y("!T;R @:6UP;&5M96YT"@D@
  566. XM(" @(" @(FYA=&EV92(@("!V97)S:6]N<R @;V8@('AV:2 @=6YD97(@('9A
  567. XM<FEO=7,@('=I;F1O=VEN9PH)(" @(" @('-Y<W1E;7,L(&EN(&$@8VQE86X@
  568. XM86YD('=H;VQE<V]M92!W87DN("!#=7)R96YT;'D@=&AE<F4*"2 @(" @("!I
  569. XM<R @82 @<VEN9VQE("!I;G-T86YC92 @;V8@=&AE(%9I<G138W(@8VQA<W,L
  570. XM('=H:6-H(&ES"@D@(" @(" @9&5F:6YE9"!O;B!T;W @;V8@=&AE(&]L9"!S
  571. XM>7-T96TO=&5R;6EN86P@:6YT97)F86-E+@H*(" @("!W:6YD;W=S+F,*"2 @
  572. XM(" @("!#;V1E('1O(&1E86P@=VET:"!C<F5A=&EN9RP@9&5L971I;F<L(')E
  573. XM<VEZ:6YG('=I;F1O=W,N"@H@(" @('9E<G-I;VXN8PH)(" @(" @($-O;G1A
  574. XM:6YS(&]N;'D@=&AE('9E<G-I;VX@<W1R:6YG+@H*"@H*"@H*"@H*(" @("!?
  575. XM"#)?"#5?"'1?"&@@7PA37PAE7PAP7PAT7PAE7PAM7PAB7PAE7PAR(%\(,5\(
  576. XM.5\(.5\(,B @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @
  577. X7(%\(4%\(85\(9U\(92!?"#)?"#,*"@H@
  578. Xend
  579. END_OF_FILE
  580.   if test 34078 -ne `wc -c <'xvi/doc/source.UU.b'`; then
  581.     echo shar: \"'xvi/doc/source.UU.b'\" unpacked with wrong size!
  582.   elif test -f 'xvi/doc/source.UU.a'; then 
  583.     echo shar: Uudecoding \"'xvi/doc/source.lst'\" \(56183 characters\) 
  584.     cat 'xvi/doc/source.UU.a' 'xvi/doc/source.UU.b' | uudecode 
  585.     if test -f xvi/doc/source.lst; then   
  586.       if test 56183 -ne `wc -c <'xvi/doc/source.lst'`; then 
  587.         echo shar: \"'xvi/doc/source.lst'\" uudecoded with wrong size! 
  588.       else 
  589.         rm 'xvi/doc/source.UU.a' 'xvi/doc/source.UU.b'
  590.       fi 
  591.     else 
  592.       echo shar: \"'xvi/doc/source.lst'\" uudecode failed!
  593.     fi 
  594.   fi 
  595.   # end of 'xvi/doc/source.UU.b'
  596. fi
  597. if test -f 'xvi/src/ex_cmds1.c' -a "${1}" != "-c" ; then 
  598.   echo shar: Will not clobber existing file \"'xvi/src/ex_cmds1.c'\"
  599. else
  600.   echo shar: Extracting \"'xvi/src/ex_cmds1.c'\" \(18835 characters\)
  601.   sed "s/^X//" >'xvi/src/ex_cmds1.c' <<'END_OF_FILE'
  602. X/* Copyright (c) 1990,1991,1992 Chris and John Downey */
  603. X#ifndef lint
  604. Xstatic char *sccsid = "@(#)ex_cmds1.c    2.1 (Chris & John Downey) 7/29/92";
  605. X#endif
  606. X
  607. X/***
  608. X
  609. X* program name:
  610. X    xvi
  611. X* function:
  612. X    PD version of UNIX "vi" editor, with extensions.
  613. X* module name:
  614. X    ex_cmds1.c
  615. X* module function:
  616. X    File, window and buffer-related command functions
  617. X    for ex (colon) commands.
  618. X* history:
  619. X    STEVIE - ST Editor for VI Enthusiasts, Version 3.10
  620. X    Originally by Tim Thompson (twitch!tjt)
  621. X    Extensive modifications by Tony Andrews (onecom!wldrdg!tony)
  622. X    Heavily modified by Chris & John Downey
  623. X
  624. X***/
  625. X
  626. X#include "xvi.h"
  627. X
  628. X#ifdef    MEGAMAX
  629. Xoverlay "ex_cmds1"
  630. X#endif
  631. X
  632. Xstatic    char    **files;    /* list of input files */
  633. Xstatic    int    numfiles;    /* number of input files */
  634. Xstatic    int    curfile;    /* number of the current file */
  635. X
  636. Xchar        *altfilename;
  637. Xstatic    long    altfileline;
  638. X
  639. Xstatic    char    nowrtmsg[] = "No write since last change (use ! to override)";
  640. Xstatic    char    nowrtbufs[] = "Some buffers not written (use ! to override)";
  641. X
  642. Xstatic    bool_t    more_files P((void));
  643. X
  644. Xvoid
  645. Xdo_quit(window, force)
  646. XXviwin    *window;
  647. Xbool_t    force;
  648. X{
  649. X    Xviwin    *wp;
  650. X    bool_t    changed;
  651. X    bool_t    canexit;
  652. X
  653. X    if (force) {
  654. X    canexit = TRUE;
  655. X    } else {
  656. X    /*
  657. X     * See if any buffers remain modified and unwritten.
  658. X     */
  659. X    changed = FALSE;
  660. X    wp = window;
  661. X    do {
  662. X        if (is_modified(wp->w_buffer)) {
  663. X        changed = TRUE;
  664. X        }
  665. X    } while ((wp = next_window(wp)) != window);
  666. X
  667. X    if (changed) {
  668. X        show_error(window, nowrtbufs);
  669. X        canexit = FALSE;
  670. X    } else {
  671. X        canexit = ! more_files();
  672. X    }
  673. X    }
  674. X
  675. X    if (canexit) {
  676. X    sys_exit(0);
  677. X    }
  678. X}
  679. X
  680. X/*
  681. X * Split the current window into two, leaving both windows mapped
  682. X * onto the same buffer.
  683. X */
  684. Xvoid
  685. Xdo_split_window(window)
  686. XXviwin    *window;
  687. X{
  688. X    Xviwin    *newwin;
  689. X
  690. X    newwin = split_window(window);
  691. X    if (newwin == NULL) {
  692. X    show_error(window, "No more windows!");
  693. X    return;
  694. X    }
  695. X
  696. X    map_window_onto_buffer(newwin, window->w_buffer);
  697. X
  698. X    /*
  699. X     * Update the status line of the old window
  700. X     * (since it will have been moved).
  701. X     * Also update the window - this will almost certainly
  702. X     * have no effect on the screen, but is necessary.
  703. X     */
  704. X    show_file_info(window);
  705. X    update_window(window);
  706. X
  707. X    /*
  708. X     * Show the new window.
  709. X     */
  710. X    init_sline(newwin);
  711. X    update_window(newwin);
  712. X    show_file_info(newwin);
  713. X
  714. X    /*
  715. X     * Update the global window variable.
  716. X     */
  717. X    curwin = newwin;
  718. X}
  719. X
  720. X/*
  721. X * Open a new buffer window, with a possible filename arg.
  722. X *
  723. X * do_buffer() is responsible for updating the screen image for the
  724. X * old window, but not the new one, since we may want to move to a
  725. X * different location in the new buffer (e.g. for a tag search).
  726. X */
  727. Xbool_t
  728. Xdo_buffer(window, filename)
  729. XXviwin    *window;
  730. Xchar    *filename;
  731. X{
  732. X    Buffer    *buffer;
  733. X    Buffer    *new;
  734. X    Xviwin    *newwin;
  735. X
  736. X    buffer = window->w_buffer;
  737. X
  738. X    if (window->w_nrows < (MINROWS + 1) * 2) {
  739. X    show_error(window, "Not enough room!");
  740. X    return(FALSE);
  741. X    }
  742. X
  743. X    new = new_buffer();
  744. X    if (new == NULL) {
  745. X    show_error(window, "No more buffers!");
  746. X    return(FALSE);
  747. X    }
  748. X    newwin = split_window(window);
  749. X    if (newwin == NULL) {
  750. X    free_buffer(new);
  751. X    show_error(window, "No more windows!");
  752. X    return(FALSE);
  753. X    }
  754. X
  755. X    map_window_onto_buffer(newwin, new);
  756. X
  757. X    /*
  758. X     * Update the status lines of each buffer.
  759. X     *
  760. X     * Even if (echo & e_SHOWINFO) is turned off, show_file_info()
  761. X     * will always call update_sline(), which is what we really
  762. X     * need here.
  763. X     *
  764. X     * Note that we don't need to call move_window_to_cursor() for
  765. X     * the old window until it becomes the current window again.
  766. X     */
  767. X    show_file_info(window);
  768. X    init_sline(newwin);
  769. X
  770. X    if (filename != NULL) {
  771. X    (void) do_edit(newwin, FALSE, filename);
  772. X    } else {
  773. X    new->b_filename = new->b_tempfname = NULL;
  774. X    show_file_info(newwin);
  775. X    }
  776. X
  777. X    update_window(window);
  778. X
  779. X    /*
  780. X     * The current buffer (a global variable) has
  781. X     * to be updated here. No way around this.
  782. X     */
  783. X    curbuf = new;
  784. X    curwin = newwin;
  785. X
  786. X    return(TRUE);
  787. X}
  788. X
  789. X/*
  790. X * "close" (the current window).
  791. X */
  792. Xvoid
  793. Xdo_close_window(win, force)
  794. XXviwin    *win;
  795. Xbool_t    force;
  796. X{
  797. X    Buffer    *buffer;
  798. X    Xviwin    *best;
  799. X
  800. X    buffer = win->w_buffer;
  801. X
  802. X    if (is_modified(buffer) && !force && buffer->b_nwindows < 2) {
  803. X    /*
  804. X     * Don't close a modified buffer.
  805. X     */
  806. X    show_error(win, nowrtmsg);
  807. X    } else if (next_window(win) != win || !more_files()) {
  808. X    Xviwin    *w;
  809. X
  810. X    /*
  811. X     * We can close this window if:
  812. X     *
  813. X     * (
  814. X     *    the buffer has not been modified
  815. X     *  or    they are forcing the close
  816. X     *  or    there are other windows onto this buffer
  817. X     * )
  818. X     * AND
  819. X     * (
  820. X     *    there are other windows still open
  821. X     *  or    there are no more files to be edited
  822. X     * )
  823. X     */
  824. X
  825. X    /*
  826. X     * Find an adjacent window to take up the screen
  827. X     * space used by the one being closed.
  828. X     */
  829. X    best = NULL;
  830. X    for (w = next_window(win); w != win; w = next_window(w)) {
  831. X
  832. X        if (w->w_cmdline + 1 == win->w_winpos ||
  833. X        w->w_winpos - 1 == win->w_cmdline ||
  834. X        w->w_nrows == 0) {
  835. X
  836. X        /*
  837. X         * We have found an adjacent window;
  838. X         * if it is the first such, or if
  839. X         * it is smaller than the previous
  840. X         * best, it is now the new best.
  841. X         */
  842. X        if (best == NULL || w->w_nrows < best->w_nrows) {
  843. X            best = w;
  844. X        }
  845. X        }
  846. X    }
  847. X
  848. X    if (best == NULL) {
  849. X        sys_exit(0);
  850. X    }
  851. X
  852. X    if (buffer->b_nwindows == 1 && buffer->b_filename != NULL) {
  853. X        /*
  854. X         * Before we free the buffer, save its filename.
  855. X         */
  856. X        if (altfilename != NULL) {
  857. X        free(altfilename);
  858. X        }
  859. X        altfilename = buffer->b_filename;
  860. X        buffer->b_filename = NULL;
  861. X        altfileline = lineno(buffer,
  862. X            win->w_cursor->p_line);
  863. X    }
  864. X
  865. X    /*
  866. X     * Now "best" points  to the smallest adjacent window;
  867. X     * amalgamate the spaces used.
  868. X     */
  869. X    if (best->w_winpos > win->w_winpos) {
  870. X        best->w_winpos = win->w_winpos;
  871. X    }
  872. X    best->w_nrows += win->w_nrows;
  873. X    best->w_cmdline = best->w_winpos + best->w_nrows - 1;
  874. X    free_window(win);
  875. X
  876. X    if (buffer->b_nwindows == 0) {
  877. X        free_buffer(buffer);
  878. X    }
  879. X
  880. X    /*
  881. X     * Have to update the globals "curbuf" and "curwin" here.
  882. X     */
  883. X    curwin = best;
  884. X    curbuf = best->w_buffer;
  885. X    {
  886. X        unsigned    savecho;
  887. X
  888. X        savecho = echo;
  889. X        /*
  890. X         * Adjust position of new current window
  891. X         * within buffer before updating it, to avoid
  892. X         * wasting screen output - but don't do any
  893. X         * scrolling at this stage because the old
  894. X         * window is still on the screen.
  895. X         */
  896. X        echo &= ~(e_CHARUPDATE | e_SHOWINFO | e_SCROLL);
  897. X        move_window_to_cursor(curwin);
  898. X        echo = savecho;
  899. X
  900. X    }
  901. X    update_window(curwin);
  902. X    show_file_info(curwin);
  903. X    }
  904. X}
  905. X
  906. X/*
  907. X * Close current window.
  908. X *
  909. X * If it is the last window onto the buffer, also close the buffer.
  910. X *
  911. X * If the buffer has been modified, we must write it out before closing it.
  912. X */
  913. Xvoid
  914. Xdo_xit(window)
  915. XXviwin    *window;
  916. X{
  917. X    Buffer    *buffer;
  918. X
  919. X    buffer = window->w_buffer;
  920. X
  921. X    if (is_modified(buffer) && buffer->b_nwindows < 2) {
  922. X    if (buffer->b_filename != NULL) {
  923. X        if (!writeit(window, buffer->b_filename,
  924. X                (Line *) NULL, (Line *) NULL, FALSE)) {
  925. X        return;
  926. X        }
  927. X    } else {
  928. X        show_error(window, "No output file");
  929. X        return;
  930. X    }
  931. X    }
  932. X
  933. X    do_close_window(window, FALSE);
  934. X}
  935. X
  936. X/*
  937. X * Edit the given filename in the given buffer,
  938. X * replacing any current contents.  Note that the
  939. X * screen is not updated, since there are routines
  940. X * which use this function before moving the cursor
  941. X * to a different position in the file.
  942. X *
  943. X * Returns TRUE for success, FALSE for failure.
  944. X */
  945. Xbool_t
  946. Xdo_edit(window, force, arg)
  947. XXviwin    *window;
  948. Xbool_t    force;
  949. Xchar    *arg;
  950. X{
  951. X    long    line = 1;        /* line # to go to in new file */
  952. X    long    nlines;            /* no of lines read from file */
  953. X    Line    *head;            /* start of list of lines */
  954. X    Line    *tail;            /* last element of list of lines */
  955. X    bool_t    readonly;        /* true if cannot write file */
  956. X    Buffer    *buffer;
  957. X    Xviwin    *wp;
  958. X
  959. X    buffer = window->w_buffer;
  960. X
  961. X    if (!force && is_modified(buffer)) {
  962. X    show_error(window, nowrtmsg);
  963. X    return(FALSE);
  964. X    }
  965. X
  966. X    if (arg == NULL || arg[0] == '\0') {
  967. X    /*
  968. X     * No filename specified; we must already have one.
  969. X     */
  970. X    if (buffer->b_filename == NULL) {
  971. X        show_error(window, "No filename");
  972. X        return(FALSE);
  973. X    }
  974. X    } else /* arg != NULL */ {
  975. X    /*
  976. X     * Filename specified.
  977. X     */
  978. X
  979. X    /*
  980. X     * First detect a ":e" on the current file. This is mainly
  981. X     * for ":ta" commands where the destination is within the
  982. X     * current file.
  983. X     */
  984. X    if (buffer->b_filename != NULL &&
  985. X        strcmp(arg, buffer->b_filename) == 0) {
  986. X        if (!is_modified(buffer) || (is_modified(buffer) && !force)) {
  987. X        return(TRUE);
  988. X        }
  989. X    }
  990. X
  991. X    /*
  992. X     * Detect an edit of the alternate file, and set
  993. X     * the line number.
  994. X     */
  995. X    if (altfilename != NULL && strcmp(arg, altfilename) == 0) {
  996. X        line = altfileline;
  997. X    }
  998. X
  999. X    /*
  1000. X     * Save the name of the previous file.
  1001. X     * If the strsave() of the new filename
  1002. X     * fails, we will have lost the previous
  1003. X     * value of altfilename. What a shame.
  1004. X     */
  1005. X    if (buffer->b_filename != NULL) {
  1006. X        if (altfilename != NULL)
  1007. X        free(altfilename);
  1008. X        altfilename = strsave(buffer->b_filename);
  1009. X        altfileline = lineno(buffer, window->w_cursor->p_line);
  1010. X    }
  1011. X
  1012. X    /*
  1013. X     * Edit a named file.
  1014. X     */
  1015. X    buffer->b_filename = strsave(arg);
  1016. X    if (buffer->b_filename == NULL)
  1017. X        return(FALSE);
  1018. X    if (buffer->b_tempfname != NULL)
  1019. X        free(buffer->b_tempfname);
  1020. X    buffer->b_tempfname = NULL;
  1021. X    }
  1022. X
  1023. X    /*
  1024. X     * Clear out the old buffer and read the file.
  1025. X     */
  1026. X    if (clear_buffer(buffer) == FALSE) {
  1027. X    show_error(window, "Out of memory");
  1028. X    return(FALSE);
  1029. X    }
  1030. X
  1031. X    /*
  1032. X     * Be sure to re-map all window structures onto the buffer,
  1033. X     * in order to eliminate any pointers into the old buffer.
  1034. X     */
  1035. X    wp = window;
  1036. X    do {
  1037. X    if (wp->w_buffer != buffer)
  1038. X        continue;
  1039. X
  1040. X    unmap_window(wp);
  1041. X    map_window_onto_buffer(wp, buffer);
  1042. X
  1043. X    } while ((wp = next_window(wp)) != window);
  1044. X
  1045. X    readonly = Pb(P_readonly) || !can_write(buffer->b_filename);
  1046. X
  1047. X    nlines = get_file(window, buffer->b_filename, &head, &tail,
  1048. X                    (readonly ? " [Read only]" : ""),
  1049. X                    " [New file]");
  1050. X
  1051. X    update_sline(window);        /* ensure colour is updated */
  1052. X
  1053. X    if (nlines == gf_NEWFILE) {    /* no such file */
  1054. X    return(FALSE);
  1055. X    } else if (nlines >= 0) {
  1056. X    unsigned savecho;
  1057. X
  1058. X    /*
  1059. X     * Success.
  1060. X     */
  1061. X    if (readonly) {
  1062. X        buffer->b_flags |= FL_READONLY;
  1063. X    } else {
  1064. X        buffer->b_flags &= ~FL_READONLY;
  1065. X    }
  1066. X
  1067. X    if (nlines == 0) {    /* empty file */
  1068. X        return(TRUE);
  1069. X    }
  1070. X
  1071. X    /*
  1072. X     * We have successfully read the file in,
  1073. X     * so now we must link it into the buffer.
  1074. X     */
  1075. X    replbuffer(window, head);
  1076. X
  1077. X    move_cursor(window, gotoline(buffer, line), 0);
  1078. X    begin_line(window, TRUE);
  1079. X    setpcmark(window);
  1080. X
  1081. X    /*
  1082. X     * We only call update_window() here because we want
  1083. X     * window->w_botline to be updated; we don't let it do any
  1084. X     * actual screen updating, for the reason explained above.
  1085. X     */
  1086. X    savecho = echo;
  1087. X    echo &= ~(e_CHARUPDATE | e_SCROLL | e_REPORT | e_SHOWINFO);
  1088. X    update_window(window);
  1089. X    echo = savecho;
  1090. X
  1091. X    return(TRUE);
  1092. X    } else {
  1093. X    /*
  1094. X     * We failed to read in the file. An appropriate
  1095. X     * message will already have been printed by
  1096. X     * get_file() (or alloc()).
  1097. X     */
  1098. X
  1099. X    if (buffer->b_filename != NULL)
  1100. X        free(buffer->b_filename);
  1101. X    if (buffer->b_tempfname != NULL)
  1102. X        free(buffer->b_tempfname);
  1103. X    buffer->b_filename = buffer->b_tempfname = NULL;
  1104. X    return(FALSE);
  1105. X    }
  1106. X}
  1107. X
  1108. Xvoid
  1109. Xdo_args(window)
  1110. XXviwin    *window;
  1111. X{
  1112. X    register char    *tmpbuf;
  1113. X    int        count;
  1114. X    register int    curpos = 0;
  1115. X
  1116. X    if (numfiles == 0) {
  1117. X    show_message(window, "No files");
  1118. X    return;
  1119. X    }
  1120. X
  1121. X    tmpbuf = alloc((unsigned) window->w_ncols + 1);
  1122. X    if (tmpbuf == NULL) {
  1123. X    return;
  1124. X    }
  1125. X
  1126. X    for (count = 0; count < numfiles; count++) {
  1127. X    register char    *sp;
  1128. X
  1129. X    if (count == curfile && curpos < window->w_ncols)
  1130. X        tmpbuf[curpos++] =  '[';
  1131. X    for (sp = files[count]; curpos < window->w_ncols &&
  1132. X            (tmpbuf[curpos] = *sp++) != '\0'; curpos++) {
  1133. X        ;
  1134. X    }
  1135. X    if (count == curfile && curpos < window->w_ncols)
  1136. X        tmpbuf[curpos++] =  ']';
  1137. X    if (curpos < window->w_ncols)
  1138. X        tmpbuf[curpos++] =  ' ';
  1139. X    }
  1140. X    tmpbuf[curpos < window->w_ncols ? curpos : window->w_ncols] =  '\0';
  1141. X
  1142. X    show_message(window, "%s", tmpbuf);
  1143. X
  1144. X    free(tmpbuf);
  1145. X}
  1146. X
  1147. X/*
  1148. X * Change the current file list to the one specified, or edit the next
  1149. X * file in the current file list, or edit the next file in the list if
  1150. X * no argument is given.
  1151. X */
  1152. Xvoid
  1153. Xdo_next(window, argc, argv, force)
  1154. XXviwin    *window;
  1155. Xint    argc;
  1156. Xchar    *argv[];
  1157. Xbool_t    force;
  1158. X{
  1159. X    unsigned    savecho;
  1160. X
  1161. X    savecho = echo;
  1162. X    if (argc > 0) {
  1163. X    int    count;
  1164. X
  1165. X    /*
  1166. X     * Arguments given - this means a new set of filenames.
  1167. X     */
  1168. X    if (!force && is_modified(window->w_buffer)) {
  1169. X        show_error(window, nowrtmsg);
  1170. X        return;
  1171. X    }
  1172. X
  1173. X    /*
  1174. X     * There were no files before, so start from square one.
  1175. X     */
  1176. X    if (numfiles == 0) {
  1177. X        files = (char **) alloc((unsigned) argc * sizeof(char *));
  1178. X        if (files == NULL) {
  1179. X        return;
  1180. X        }
  1181. X    } else {
  1182. X        /*
  1183. X         * We can change the existing list of files.
  1184. X         * Free up all the individual filenames
  1185. X         * which we got last time.
  1186. X         */
  1187. X        for (count = 0; count < numfiles; count++) {
  1188. X        free(files[count]);
  1189. X        }
  1190. X        if (argc != numfiles) {
  1191. X        files = (char **) realloc((char *) files,
  1192. X                    (unsigned) argc * sizeof(char *));
  1193. X        if (files == NULL) {
  1194. X            numfiles = 0;
  1195. X            return;
  1196. X        }
  1197. X        }
  1198. X    }
  1199. X
  1200. X    /*
  1201. X     * Now record all the new filenames.
  1202. X     */
  1203. X    for (count = 0; count < argc; count++) {
  1204. X        files[count] = strsave(argv[count]);
  1205. X        if (files[count] == NULL) {
  1206. X        /*
  1207. X         * Aargh. Failed half-way through.
  1208. X         * Clean up the mess ...
  1209. X         */
  1210. X        while (--count >= 0)
  1211. X            free(files[count]);
  1212. X        free((char *) files);
  1213. X        files = NULL;
  1214. X        numfiles = 0;
  1215. X        return;
  1216. X        }
  1217. X    }
  1218. X    numfiles = argc;
  1219. X    curfile = 0;
  1220. X
  1221. X    /*
  1222. X     * And try to edit the first few of them.
  1223. X     *
  1224. X     * In this case, we don't want report() or
  1225. X     * show_file_info() to be called, because otherwise
  1226. X     * the messages printed by get_file() won't be seen.
  1227. X     */
  1228. X    echo &= ~(e_SCROLL | e_REPORT | e_SHOWINFO);
  1229. X
  1230. X    (void) do_edit(curwin, force, files[0]);
  1231. X
  1232. X    /*
  1233. X     * This is not very good because it
  1234. X     * doesn't split the screen evenly for
  1235. X     * autosplit > 2.  However, it will
  1236. X     * just have to do for the moment.
  1237. X     */
  1238. X
  1239. X    /*
  1240. X     * Update the current window before
  1241. X     * creating any new ones.
  1242. X     */
  1243. X    move_window_to_cursor(curwin);
  1244. X
  1245. X    while ((curfile + 1) < numfiles && can_split()) {
  1246. X        bool_t    success;
  1247. X
  1248. X        success = do_buffer(curwin, files[++curfile]);
  1249. X        /*
  1250. X         * Make sure move_window_to_cursor() is called
  1251. X         * for every window before calling
  1252. X         * update_buffer().
  1253. X         */
  1254. X        move_window_to_cursor(curwin);
  1255. X        if (!success)
  1256. X        break;
  1257. X    }
  1258. X    update_window(curwin);
  1259. X
  1260. X    } else if ((curfile + 1) < numfiles) {
  1261. X    /*
  1262. X     * No arguments; this is the normal usage, and
  1263. X     * indicates we should edit the next file in the list.
  1264. X     * Don't grab the next file if the current one is
  1265. X     * modified and not written, or we will "lose"
  1266. X     * files from the list.
  1267. X     */
  1268. X    if (!force && is_modified(window->w_buffer)) {
  1269. X        show_error(window, nowrtmsg);
  1270. X        return;
  1271. X    }
  1272. X
  1273. X    /*
  1274. X     * Just edit the next file.
  1275. X     */
  1276. X    echo &= ~(e_SCROLL | e_REPORT | e_SHOWINFO);
  1277. X    (void) do_edit(window, force, files[++curfile]);
  1278. X    move_window_to_cursor(window);
  1279. X    update_buffer(window->w_buffer);
  1280. X    } else {
  1281. X    show_message(window, "No more files");
  1282. X    }
  1283. X    echo = savecho;
  1284. X}
  1285. X
  1286. X/*ARGSUSED*/
  1287. Xvoid
  1288. Xdo_rewind(window, force)
  1289. XXviwin    *window;
  1290. Xbool_t    force;
  1291. X{
  1292. X    unsigned    savecho;
  1293. X
  1294. X    if (numfiles <= 1)        /* nothing to rewind */
  1295. X    return;
  1296. X
  1297. X    curfile = 0;
  1298. X
  1299. X    savecho = echo;
  1300. X    echo &= ~(e_SCROLL | e_REPORT | e_SHOWINFO);
  1301. X    (void) do_edit(window, force, files[0]);
  1302. X    move_window_to_cursor(window);
  1303. X    update_buffer(window->w_buffer);
  1304. X    echo = savecho;
  1305. X}
  1306. X
  1307. X/*
  1308. X * Write out the buffer, to the given filename,
  1309. X * from "line1" to "line2", forcing if necessary.
  1310. X *
  1311. X * If no filename given, use the buffer's filename.
  1312. X */
  1313. Xbool_t
  1314. Xdo_write(window, filename, l1, l2, force)
  1315. XXviwin    *window;
  1316. Xchar    *filename;
  1317. XLine    *l1, *l2;
  1318. Xbool_t    force;
  1319. X{
  1320. X    if (filename == NULL) {
  1321. X    filename = window->w_buffer->b_filename;
  1322. X    }
  1323. X
  1324. X    if (filename == NULL) {
  1325. X    show_error(window, "No output file");
  1326. X    return(FALSE);
  1327. X    } else {
  1328. X    return(writeit(window, filename, l1, l2, force));
  1329. X    }
  1330. X}
  1331. X
  1332. X/*
  1333. X * Write to the given filename then quit.
  1334. X */
  1335. Xvoid
  1336. Xdo_wq(window, filename, force)
  1337. XXviwin    *window;
  1338. Xchar    *filename;
  1339. Xbool_t    force;
  1340. X{
  1341. X    if (do_write(window, filename, (Line *) NULL, (Line *) NULL, force)) {
  1342. X    do_quit(window, force);    
  1343. X    }
  1344. X}
  1345. X
  1346. X/*
  1347. X * Read the given file into the buffer after the specified line.
  1348. X * The line may not be NULL, but should be a line in the buffer
  1349. X * referenced by the passed window parameter.
  1350. X */
  1351. Xvoid
  1352. Xdo_read(window, filename, atline)
  1353. XXviwin    *window;
  1354. Xchar    *filename;
  1355. XLine    *atline;
  1356. X{
  1357. X    Line    *head;        /* start of list of lines */
  1358. X    Line    *tail;        /* last element of list of lines */
  1359. X    long    nlines;        /* number of lines read */
  1360. X
  1361. X    nlines = get_file(window, filename, &head, &tail, "", " No such file");
  1362. X
  1363. X    /*
  1364. X     * If nlines > 0, we need to insert the lines returned into
  1365. X     * the buffer. Otherwise, either the file is empty or an error
  1366. X     * message has already been printed: in either case, we don't
  1367. X     * need to do anything.
  1368. X     */
  1369. X    if (nlines > 0) {
  1370. X    /*
  1371. X     * We want to see the message printed by
  1372. X     * get_file() here, not the message printed by
  1373. X     * report().
  1374. X     */
  1375. X    echo &= ~e_REPORT;
  1376. X    repllines(window, atline->l_next, 0L, head);
  1377. X    echo |= e_REPORT;
  1378. X    update_buffer(window->w_buffer);
  1379. X
  1380. X    /*
  1381. X     * Move the cursor to the first character
  1382. X     * of the file we just read in.
  1383. X     */
  1384. X    move_cursor(window, atline->l_next, 0);
  1385. X    begin_line(window, TRUE);
  1386. X    }
  1387. X}
  1388. X
  1389. X/*
  1390. X * Edit alternate file. Called when control-^ is typed.
  1391. X */
  1392. Xvoid
  1393. Xdo_alt_edit(window)
  1394. XXviwin    *window;
  1395. X{
  1396. X    if (altfilename == NULL) {
  1397. X    show_error(window, "No alternate file to edit");
  1398. X    } else {
  1399. X    if (do_buffer(window, altfilename)) {
  1400. X        move_window_to_cursor(curwin);
  1401. X        update_window(curwin);
  1402. X    }
  1403. X    }
  1404. X}
  1405. X
  1406. Xvoid
  1407. Xdo_compare()
  1408. X{
  1409. X    Xviwin        *w;
  1410. X    enum mvtype    incres;
  1411. X    Posn        pos1, pos2;
  1412. X
  1413. X    w = next_window(curwin);
  1414. X    if (w == curwin) {
  1415. X    show_error(curwin, "No other buffers to compare");
  1416. X    } else if (w->w_buffer == curbuf) {
  1417. X    show_error(curwin, "Next window has same buffer");
  1418. X    } else {
  1419. X    pos1 = *(curwin->w_cursor);
  1420. X    pos2 = *(w->w_cursor);
  1421. X    while ((incres = inc(&pos1)) == inc(&pos2)) {
  1422. X        if (incres == mv_EOL) {
  1423. X        continue;
  1424. X        } else if (incres == mv_NOMOVE) {
  1425. X        (void) dec(&pos1);
  1426. X        (void) dec(&pos2);
  1427. X        break;
  1428. X        } else {
  1429. X        if (gchar(&pos1) != gchar(&pos2)) {
  1430. X            break;
  1431. X        }
  1432. X        }
  1433. X    }
  1434. X    if (gchar(&pos1) == '\0' && pos1.p_index > 0) {
  1435. X        (void) dec(&pos1);
  1436. X    }
  1437. X    if (gchar(&pos2) == '\0' && pos2.p_index > 0) {
  1438. X        (void) dec(&pos2);
  1439. X    }
  1440. X    move_cursor(curwin, pos1.p_line, pos1.p_index);
  1441. X    move_cursor(w, pos2.p_line, pos2.p_index);
  1442. X    move_window_to_cursor(w);
  1443. X    cursupdate(w);
  1444. X    wind_goto(w);
  1445. X    }
  1446. X}
  1447. X
  1448. Xstatic bool_t
  1449. Xmore_files()
  1450. X{
  1451. X    int    n;
  1452. X
  1453. X    n = numfiles - (curfile + 1);
  1454. X    if (n > 0) {
  1455. X    show_error(curwin, "%d more file%s to edit", n, (n > 1) ? "s" : "");
  1456. X    return(TRUE);
  1457. X    } else {
  1458. X    return(FALSE);
  1459. X    }
  1460. X}
  1461. END_OF_FILE
  1462.   if test 18835 -ne `wc -c <'xvi/src/ex_cmds1.c'`; then
  1463.     echo shar: \"'xvi/src/ex_cmds1.c'\" unpacked with wrong size!
  1464.   fi
  1465.   # end of 'xvi/src/ex_cmds1.c'
  1466. fi
  1467. echo shar: End of archive 4 \(of 18\).
  1468. cp /dev/null ark4isdone
  1469. MISSING=""
  1470. for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ; do
  1471.     if test ! -f ark${I}isdone ; then
  1472.     MISSING="${MISSING} ${I}"
  1473.     fi
  1474. done
  1475. if test "${MISSING}" = "" ; then
  1476.     echo You have unpacked all 18 archives.
  1477.     rm -f ark[1-9]isdone ark[1-9][0-9]isdone
  1478. else
  1479.     echo You still must unpack the following archives:
  1480.     echo "        " ${MISSING}
  1481. fi
  1482. exit 0
  1483. exit 0 # Just in case...
  1484.