[comp.sources.amiga] v90i098: Wrap 1.00 - word-wrap text files, Part01/01

Amiga-Request@cs.odu.edu (Amiga Sources/Binaries Moderator) (03/04/90)

Submitted-by: davids@ucscb.UCSC.EDU (60116000)
Posting-number: Volume 90, Issue 098
Archive-name: util/wrap-1.00

[ uuencoded executable included.  ...tad ] 
[ the sample unformatted file has been uuencoded since some news
  transport agents croak on long lines... ]

     Wrap is a simple text formatter designed to word-wrap text files that
have no carriage returns in paragraphs.  I wrote it because my word
processor, Write & File (never heard of it?  Imagine a scaled down version
of Pen Pal, written by Pen Pal's author), when it saves a document as
straight ASCII, only has carriage returns at the end of paragraphs.  This is
nice when I import something into a desktop publishing program, but not when
I use Write & File to write program documentation such as the documentation
you're reading now.  I could insert carriage returns manually, but that's a
lot of work for 3 page docs, and if I make one change in the documentation,
I have to reformat the whole thing over again.

#!/bin/sh
# This is a shell archive.  Remove anything before this line, then unpack
# it by saving it into a file and typing "sh file".  To overwrite existing
# files, type "sh file -c".  You can also feed this as standard input via
# unshar, or by typing "sh <file", e.g..  If this archive is complete, you
# will see the following message at the end:
#		"End of archive 1 (of 1)."
# Contents:  Wrap.c Wrap.doc Wrap.unfmt.uu Wrap.uu
# Wrapped by tadguy@xanth on Sat Mar  3 22:25:55 1990
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'Wrap.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'Wrap.c'\"
else
echo shar: Extracting \"'Wrap.c'\" \(9263 characters\)
sed "s/^X//" >'Wrap.c' <<'END_OF_FILE'
X#include <exec/types.h>
X#include <exec/exec.h>
X#include <libraries/dos.h>
X#include <libraries/dosextens.h>
X#include <ctype.h>
X#define CR 0x0D
X#define LF 0x0A
X
XUBYTE GetWord();
Xvoid SetVariables();
X
XBYTE DoubleSpacing = FALSE;
XUSHORT RightMargin = 0;
XUSHORT LeftMargin = 0;
XUSHORT TopMargin = 0;
XUSHORT BottomMargin = 0;
XSHORT PageSize = 66;
XUSHORT TabSpaces = 5;
XUSHORT ParaIndent = 0;
X
Xmain(argc,argv)
Xint argc;
Xchar *argv[];
X{
X   struct FileHandle *infile,*outfile;  /*pointers to files*/
X   char chip outbuf[256];
X   UBYTE EOP=FALSE;     /*End of paragraph flag*/
X   UBYTE EOF=FALSE;   /*End of file flag*/
X   UBYTE wordcount,linecount;
X   ULONG Line;
X   char chip LeftSpaces[80];
X   char chip TopReturns[80];
X   char chip IndentSpaces[80];
X   char chip BottomReturns[80];
X   
X   LeftSpaces[0]=0x0a;
X   LeftSpaces[1]=NULL;
X   TopReturns[0]=BottomReturns[0]=NULL;
X   
X   if(argv[1][0]=='?')  /*Print the instructions*/
X   {
X      puts("Wrap V1.0 (c)1989, 1990 by Dave Schreiber.  All rights reserved.");
X      puts("Written by Dave Schreiber.");
X      puts("Format:");
X      puts("  1> wrap [options] Infile Outfile");
X      puts("  Infile-text file to be processed");
X      puts("  Outfile-filename that the formatted text is to be written to");
X      puts("  Options (in upper- or lowercase");
X      puts("    -a# -- number of spaces to expand tabs out to (default 5)");
X      puts("    -b# -- bottom margin (default 0)");
X      puts("    -t# -- top margin (default 0)");
X      puts("    -r# -- right margin (default 0)");
X      puts("    -l# -- left margin (default 0)");
X      puts("    -i# -- number of spaces to indent each paragraph (default 0)");
X      puts("    -p# -- page size (with no margin, default 66)");
X      puts("    -d  -- double spaced (default is single spaced)");
X      exit(0);
X   }
X   
X   if((argv[argc-1][0]=='-') || (argc == 2)) /*Check for output filename*/
X   {
X      puts("No output file specified!!!\n");
X      exit(100);
X   }
X   
X   if((argv[argc-2][0]=='-') || (argc == 1)) /*Check for input filename*/
X   {
X      puts("No input file specified!!!\n");
X      exit(200);
X   }
X   
X      /*Get the command line switches, etc.*/
X   SetVariables(argc,argv,LeftSpaces,TopReturns,BottomReturns,IndentSpaces);
X   if(79-RightMargin-LeftMargin < 1)
X   {
X      puts("The left/right margins are too large!\n");
X      exit(300);
X   }
X   
X   /*Get the true page size (after the margins are taken out)*/
X   PageSize = PageSize - (TopMargin + BottomMargin);
X   if(PageSize < 1)
X   {
X      puts("The top/bottom margins are too large!");
X      exit(400);
X   }
X         
X   /*Open read file*/
X   if((infile=(struct FileHandle *)Open(argv[argc-2],MODE_OLDFILE))==NULL)
X   {
X      puts("Couldn't open the read file!");
X      exit(500);
X   }
X
X   /*Now go for write file*/
X   if((outfile=(struct FileHandle *)Open(argv[argc-1],MODE_NEWFILE))==NULL)
X   {
X      puts("Couldn't open the write file!");
X      Close(infile); /*Clean up*/
X      exit(600);
X   }
X
X   /*Write the first top margin padding*/
X   Write(outfile,&TopReturns,TopMargin);
X   
X   /*Get the first word*/
X   linecount=wordcount=GetWord(outbuf,&EOP,&EOF,infile);
X
X   /*Write out the left margin*/
X   Write(outfile,&LeftSpaces[1],LeftMargin);
X   
X   /*Write out the paragraph indent*/
X   Write(outfile,IndentSpaces,ParaIndent);
X   linecount+=ParaIndent;
X   
X   /*Write the first word*/
X   Write(outfile,outbuf,wordcount);
X   wordcount=(linecount+=LeftMargin);
X   
X   /*First line of the page...*/
X   Line = 0;
X   
X   while(!EOF) /*While there's still stuff to be processed...*/
X   {
X      outbuf[1]=NULL;
X      wordcount=GetWord(&outbuf[1],&EOP,&EOF,infile)+1; /*Get a word*/
X
X      if((linecount+=wordcount) > 79-RightMargin) /*End of line*/
X      {
X         
X         if(DoubleSpacing)
X         {
X            Line++;
X            outbuf[0]=0x0a;      /*If double spaced, write out an*/
X            Write(outfile,outbuf,1);   /*extra line*/
X         }
X
X         if(++Line == PageSize) /*If we're at the end of a page...*/
X         {
X            Write(outfile,BottomReturns,BottomMargin); /*Write out the margins*/
X            Write(outfile,TopReturns,TopMargin);
X            Line = 0;   /*And start a new page*/
X         }
X
X         Write(outfile,LeftSpaces,LeftMargin+1); /*Left margin*/
X         Write(outfile,&outbuf[1],wordcount-1); /*Write the word*/
X         linecount=wordcount+LeftMargin;
X      }
X      else  /*If we're not at the end of a line*/
X      {
X         if(linecount != (wordcount+LeftMargin)) /*If were not at the start*/
X         {                                       /*of a line...*/
X            outbuf[0]=0x20;   /*Tack on a space*/
X            Write(outfile,outbuf,wordcount);
X         }
X         else     /*Don't tack on a space (insures new paragraphs are*/
X            Write(outfile,&outbuf[1],wordcount-1); /*formatted properly)*/
X      }
X      
X      if(EOP)  /*If we're at the end of a paragraph*/
X      {
X         outbuf[0]=0x0a;   /*Start a new line*/
X         Write(outfile,outbuf,1);
X         if(!EOF) /*Do this only if we're not at the end of the text*/
X         {
X            if(DoubleSpacing) /*Another line if double spaced*/
X            {
X               Line++;
X               Write(outfile,outbuf,1);
X            }
X            
X            if(++Line == PageSize)  /*If at the end of a page?*/
X            {     /*Write the margins, etc.*/
X               Write(outfile,BottomReturns,BottomMargin);
X               Write(outfile,TopReturns,TopMargin);
X               Line = 0;
X            }
X            if(LeftMargin>0) /*Write out a margin if it exists*/
X               Write(outfile,&LeftSpaces[1],LeftMargin-1);
X            linecount=LeftMargin;
X            if(ParaIndent>0)  /*Write out the indent for the start*/
X               Write(outfile,IndentSpaces,ParaIndent-1); /*of the*/
X                              /*next paragraph*/
X            linecount+=ParaIndent;
X         }
X      }
X      
X   }
X   
X   Close(outfile);   /*Done*/
X   Close(infile);
X   exit(0);
X}
X
XUBYTE GetWord(buffer,EOP,EOF,in)
Xchar *buffer;
XUBYTE *EOP,*EOF;
Xstruct FileHandle *in;
X{
X   char chip inbuf[8];
X   UBYTE c,wordcount=0;
X   
X   *EOP=FALSE;
X   *EOF=GetByte(inbuf,in);
X   while ( ( !(*EOF) ) && (inbuf[0] != 0x0a) && (inbuf[0] != 0x20) )
X   {
X      if(inbuf[0]=='\t')  /*Expand tab out to spaces*/
X         for(c=0;c<TabSpaces;buffer[c++]=' ',wordcount++);
X      else 
X         buffer[wordcount++]=inbuf[0]; /*Just stick it in otherwise*/
X      *EOF=GetByte(inbuf,in);
X   }
X         
X   if(inbuf[0]==0x0a || *EOF) /*If we're at the end of a paragraph...*/
X      *EOP=TRUE;
X      
X   return(wordcount);
X}
X
X/*This routine reads a small chuck (128) of a file at once and then*/
X/*lets the calling function get it a byte at a time.  Why not just  */
X/*read off the disk a byte at a time?  Speed.  For example, on my   */
X/*hard drive equipped system, this speeds up processing 400%        */
X
XGetByte(buffer,infile)
Xchar *buffer;
Xstruct FileHandle *infile;
X{
X   static char chip Buffer[128];
X   static curpos=0; /*Next byte to be returned*/
X   static end = 0;  /*Last byte in buffer*/
X   
X   if(curpos == end) /*If we've sent every byte*/
X   {                 /*Get another 8K chunk*/
X      curpos = 0;
X      end=Read(infile,Buffer,sizeof(Buffer));
X   }
X   
X   buffer[0]=Buffer[curpos++];
X   return(!end); /*Returns whether or not EOF*/
X}
X
Xvoid SetVariables(argc,argv,LeftSpaces,TopReturns,BottomReturns,
X                  IndentSpaces)
Xint argc;
Xchar *argv[];
Xchar *LeftSpaces,*TopReturns,*BottomReturns,*IndentSpaces;
X{
X   register BYTE c,s;
X   int value;
X   
X   for(c=1;c<argc-2;c++)
X   {
X      switch(argv[c][1])   /*Get each switch*/
X      {
X         case 'd':   /*Double spacing*/
X         case 'D':   /*(Lowercase and uppercase, just to be extra friendly)*/
X            DoubleSpacing=TRUE;
X            break;
X         case 'r':
X         case 'R':   /*Right margin*/
X            stcd_i(&argv[c][2],&value);
X            RightMargin = value;
X            break;
X         case 'l':
X         case 'L':   /*Left margin*/
X            stcd_i(&argv[c][2],&value);
X            LeftMargin = value;
X            for(s=0;s < LeftMargin;LeftSpaces[++s]=' ');
X            LeftSpaces[s+1]=NULL;
X            break;
X         case 't':   /*Set top margin*/
X         case 'T':   
X            stcd_i(&argv[c][2],&value);
X            TopMargin = value;
X            for(s=0;s < TopMargin;TopReturns[s++]=0x0a);
X            TopReturns[s]=NULL;
X            break;
X         case 'b':   /*Set the bottom margin*/
X         case 'B':
X            stcd_i(&argv[c][2],&value);
X            BottomMargin = value;
X            for(s=0;s < BottomMargin;BottomReturns[s++]=0x0a);
X            BottomReturns[s]=NULL;
X            break;
X         case 'p':   /*Set the page size*/
X         case 'P':
X            stcd_i(&argv[c][2],&value);
X            PageSize = value;
X            break;
X         case 'a':   /*Set the number of spaces a TAB represents*/
X         case 'A':
X            stcd_i(&argv[c][2],&value);
X            TabSpaces = value;
X            break;
X         case 'i':
X         case 'I':
X            stcd_i(&argv[c][2],&value);
X            ParaIndent = value;
X            for(s=0;s < ParaIndent && s < 80;IndentSpaces[s++]=' ');
X            IndentSpaces[s]=NULL;
X            break;
X      }
X   }
X}
END_OF_FILE
if test 9263 -ne `wc -c <'Wrap.c'`; then
    echo shar: \"'Wrap.c'\" unpacked with wrong size!
fi
# end of 'Wrap.c'
fi
if test -f 'Wrap.doc' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'Wrap.doc'\"
else
echo shar: Extracting \"'Wrap.doc'\" \(2623 characters\)
sed "s/^X//" >'Wrap.doc' <<'END_OF_FILE'
X     Wrap V1.00 is Copyright (c)1990 by Dave Schreiber.  All rights reserved. 
XThis program is freely distributable, and may not be sold.  Money may be
Xcharged for copying, media, shipping/handling, labels, taxes, and related
Xcosts.
X
X     Wrap is a simple text formatter designed to word-wrap text files that
Xhave no carriage returns in paragraphs.  I wrote it because my word
Xprocessor, Write & File (never heard of it?  Imagine a scaled down version
Xof Pen Pal, written by Pen Pal's author), when it saves a document as
Xstraight ASCII, only has carriage returns at the end of paragraphs.  This is
Xnice when I import something into a desktop publishing program, but not when
XI use Write & File to write program documentation such as the documentation
Xyou're reading now.  I could insert carriage returns manually, but that's a
Xlot of work for 3 page docs, and if I make one change in the documentation,
XI have to reformat the whole thing over again.
X
X     But enough of justifying Wrap's existence.  Wrap's command line should
Xlook like this:
X
X       1> Wrap [options] <infile> <outfile>
X
X<infile> is the name of the unformatted text and <outfile> is the filename
Xyou want the formatted text saved under.  The options are:  
X
X       -a# -- expand TABs out # spaces (default:  5 spaces)
X       -b# -- set a bottom margin of # (default:  0)
X       -t# -- set a top margin of # (default:  0)
X       -r# -- set a right margin of # (default:  0)
X       -l# -- set a left margin of # (default:  0)
X       -i# -- number of spaces to indent each paragraph
X              (default:  0)
X       -p# -- number of lines in a page (default:  66)
X       -d  -- use double spacing (single spacing is the 
X              default)
X
XThe line width is set at 79 characters.  To format a text file to fit into a
XCLI window, I'd recommend a right margin of two.  If you want to send the
Xfile to a printer, set the bottom and top margins to suit the printer.  If
Xthe printer supports less or more than 66 lines per page, -p lets you set
Xthat.  If you forgot to indent your paragraphs, -i will let you set that. 
XIf you indent them with TABs, -a will let you control how many spaces are
Xinserted in place of a TAB.
X
X     That's it.  Any questions, comments, praise, etc. should be sent to the
Xe-mail address(es) below.  Enjoy.
X
X-Dave Schreiber
Xdavids@slugmail.ucsc.edu (prefered, but flakey.  If it doesn't work, try:
Xdavids@ucscb.ucsc.edu (school year)
Xdavids@cup.portal.com (summer, vacations, etc.))
X
XP.S.  Just to give you something to experiment with, I've included the
Xunformatted version of this documentation under the name "Wrap.unfmt".
X
X
END_OF_FILE
if test 2623 -ne `wc -c <'Wrap.doc'`; then
    echo shar: \"'Wrap.doc'\" unpacked with wrong size!
fi
# end of 'Wrap.doc'
fi
if test -f 'Wrap.unfmt.uu' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'Wrap.unfmt.uu'\"
else
echo shar: Extracting \"'Wrap.unfmt.uu'\" \(3625 characters\)
sed "s/^X//" >'Wrap.unfmt.uu' <<'END_OF_FILE'
Xbegin 664 Wrap.unfmt
XM"5=R87`@5C$N,#`@:7,@0V]P>7)I9VAT("AC*3$Y.3`@8GD@1&%V92!38VAR?
XM96EB97(N("!!;&P@<FEG:'1S(')E<V5R=F5D+B`@5&AI<R!P<F]G<F%M(&ES9
XM(&9R965L>2!D:7-T<FEB=71A8FQE+"!A;F0@;6%Y(&YO="!B92!S;VQD+B`@S
XM36]N97D@;6%Y(&)E(&-H87)G960@9F]R(&-O<'EI;F<L(&UE9&EA+"!S:&EP0
XM<&EN9R]H86YD;&EN9RP@;&%B96QS+"!T87AE<RP@86YD(')E;&%T960@8V]SW
XM=',N"@H)5W)A<"!I<R!A('-I;7!L92!T97AT(&9O<FUA='1E<B!D97-I9VYE+
XM9"!T;R!W;W)D+7=R87`@=&5X="!F:6QE<R!T:&%T(&AA=F4@;F\@8V%R<FEAF
XM9V4@<F5T=7)N<R!I;B!P87)A9W)A<&AS+B`@22!W<F]T92!I="!B96-A=7-E\
XM(&UY('=O<F0@<')O8V5S<V]R+"!7<FET92`F($9I;&4@*&YE=F5R(&AE87)DK
XM(&]F(&ET/R`@26UA9VEN92!A('-C86QE9"!D;W=N('9E<G-I;VX@;V8@4&5NN
XM(%!A;"P@=W)I='1E;B!B>2!096X@4&%L)W,@875T:&]R*2P@=VAE;B!I="!S5
XM879E<R!A(&1O8W5M96YT(&%S('-T<F%I9VAT($%30TE)+"!O;FQY(&AA<R!C?
XM87)R:6%G92!R971U<FYS(&%T('1H92!E;F0@;V8@<&%R86=R87!H<RX@(%1HC
XM:7,@:7,@;FEC92!W:&5N($D@:6UP;W)T('-O;65T:&EN9R!I;G1O(&$@9&5SR
XM:W1O<"!P=6)L:7-H:6YG('!R;V=R86TL(&)U="!N;W0@=VAE;B!)('5S92!72
XM<FET92`F($9I;&4@=&\@=W)I=&4@<')O9W)A;2!D;V-U;65N=&%T:6]N('-UB
XM8V@@87,@=&AE(&1O8W5M96YT871I;VX@>6]U)W)E(')E861I;F<@;F]W+B`@1
XM22!C;W5L9"!I;G-E<G0@8V%R<FEA9V4@<F5T=7)N<R!M86YU86QL>2P@8G5T@
XM('1H870G<R!A(&QO="!O9B!W;W)K(&9O<B`S('!A9V4@9&]C<RP@86YD(&EFA
XM($D@;6%K92!O;F4@8VAA;F=E(&EN('1H92!D;V-U;65N=&%T:6]N+"!)(&AA_
XM=F4@=&\@<F5F;W)M870@=&AE('=H;VQE('1H:6YG(&]V97(@86=A:6XN"@H)_
XM0G5T(&5N;W5G:"!O9B!J=7-T:69Y:6YG(%=R87`G<R!E>&ES=&5N8V4N("!7S
XM<F%P)W,@8V]M;6%N9"!L:6YE('-H;W5L9"!L;V]K(&QI:V4@=&AI<SH*"@D@\
XM(#$^(%=R87`@6V]P=&EO;G-=(#QI;F9I;&4^(#QO=71F:6QE/@H*/&EN9FELR
XM93X@:7,@=&AE(&YA;64@;V8@=&AE('5N9F]R;6%T=&5D('1E>'0@86YD(#QOC
XM=71F:6QE/B!I<R!T:&4@9FEL96YA;64@>6]U('=A;G0@=&AE(&9O<FUA='1E_
XM9"!T97AT('-A=F5D('5N9&5R+B`@5&AE(&]P=&EO;G,@87)E.B`@"@H)("`M1
XM82,@+2T@97AP86YD(%1!0G,@;W5T(",@<W!A8V5S("AD969A=6QT.B`@-2!S1
XM<&%C97,I"@D@("UB(R`M+2!S970@82!B;W1T;VT@;6%R9VEN(&]F(",@*&1E]
XM9F%U;'0Z("`P*0H)("`M=",@+2T@<V5T(&$@=&]P(&UA<F=I;B!O9B`C("ADB
XM969A=6QT.B`@,"D*"2`@+7(C("TM('-E="!A(')I9VAT(&UA<F=I;B!O9B`CD
XM("AD969A=6QT.B`@,"D*"2`@+6PC("TM('-E="!A(&QE9G0@;6%R9VEN(&]F4
XM(",@*&1E9F%U;'0Z("`P*0H)("`M:2,@+2T@;G5M8F5R(&]F('-P86-E<R!T:
XM;R!I;F1E;G0@96%C:"!P87)A9W)A<&@*"2`@("`@("`@("AD969A=6QT.B`@2
XM,"D*"2`@+7`C("TM(&YU;6)E<B!O9B!L:6YE<R!I;B!A('!A9V4@*&1E9F%U!
XM;'0Z("`V-BD*"2`@+60@("TM('5S92!D;W5B;&4@<W!A8VEN9R`H<VEN9VQE$
XM('-P86-I;F<@:7,@=&AE(`H)("`@("`@("`@9&5F875L="D*"E1H92!L:6YE`
XM('=I9'1H(&ES('-E="!A="`W.2!C:&%R86-T97)S+B`@5&\@9F]R;6%T(&$@H
XM=&5X="!F:6QE('1O(&9I="!I;G1O(&$@0TQ)('=I;F1O=RP@22=D(')E8V]M,
XM;65N9"!A(')I9VAT(&UA<F=I;B!O9B!T=V\N("!)9B!Y;W4@=V%N="!T;R!SZ
XM96YD('1H92!F:6QE('1O(&$@<')I;G1E<BP@<V5T('1H92!B;W1T;VT@86YD!
XM('1O<"!M87)G:6YS('1O('-U:70@=&AE('!R:6YT97(N("!)9B!T:&4@<')I:
XM;G1E<B!S=7!P;W)T<R!L97-S(&]R(&UO<F4@=&AA;B`V-B!L:6YE<R!P97(@M
XM<&%G92P@+7`@;&5T<R!Y;W4@<V5T('1H870N("!)9B!Y;W4@9F]R9V]T('1OF
XM(&EN9&5N="!Y;W5R('!A<F%G<F%P:',L("UI('=I;&P@;&5T('EO=2!S970@"
XM=&AA="X@($EF('EO=2!I;F1E;G0@=&AE;2!W:71H(%1!0G,L("UA('=I;&P@3
XM;&5T('EO=2!C;VYT<F]L(&AO=R!M86YY('-P86-E<R!A<F4@:6YS97)T960@[
XM:6X@<&QA8V4@;V8@82!404(N"@H)5&AA="=S(&ET+B`@06YY('%U97-T:6]N*
XM<RP@8V]M;65N=',L('!R86ES92P@971C+B!S:&]U;&0@8F4@<V5N="!T;R!TR
XM:&4@92UM86EL(&%D9')E<W,H97,I(&)E;&]W+B`@16YJ;WDN"@HM1&%V92!3?
XM8VAR96EB97(*9&%V:61S0'-L=6=M86EL+G5C<V,N961U("AP<F5F97)E9"P@0
XM8G5T(&9L86ME>2X@($EF(&ET(&1O97-N)W0@=V]R:RP@=')Y.@ID879I9'-`B
XM=6-S8V(N=6-S8RYE9'4@*'-C:&]O;"!Y96%R*0ID879I9'-`8W5P+G!O<G1A#
XM;"YC;VT@*'-U;6UE<BP@=F%C871I;VYS+"!E=&,N*2D*"E`N4RX@($IU<W0@O
XM=&\@9VEV92!Y;W4@<V]M971H:6YG('1O(&5X<&5R:6UE;G0@=VET:"P@22=V+
XM92!I;F-L=61E9"!T:&4@=6YF;W)M871T960@=F5R<VEO;B!O9B!T:&ES(&1O=
XJ8W5M96YT871I;VX@=6YD97(@=&AE(&YA;64@(E=R87`N=6YF;70B+@H*?
X``
Xend
Xsize 2562
END_OF_FILE
if test 3625 -ne `wc -c <'Wrap.unfmt.uu'`; then
    echo shar: \"'Wrap.unfmt.uu'\" unpacked with wrong size!
fi
# end of 'Wrap.unfmt.uu'
fi
if test -f 'Wrap.uu' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'Wrap.uu'\"
else
echo shar: Extracting \"'Wrap.uu'\" \(11541 characters\)
sed "s/^X//" >'Wrap.uu' <<'END_OF_FILE'
Xbegin 664 Wrap
XM```#\P`````````%``````````0```0W```"&T```"````&X````&@```^D`V
XM``0W)$@D`$GY`````$?Y```$>'(`(#P```":8`(FP5'(__PL>``$*4X$L"E/9
XM!+A"K`2T)FX!%'``(CP``#``3J[^SBEK`)@$K$JK`*QG``!P(`^0KP`$!H``=
XM``"`*4`$?&$``2X@:P"LT<C1R")H`!#3R=/)(`)R`!(9*4D$P-"!4H!"9U*`'
XM`D#__I_`58!"=P@`(`)3@-2!'[(``"``4X)1R/_V'[P`("``4X(?L2``(`!1C
XMRO_X(D\O"6```'@I:P`Z!'QP?U*`T:P$?&$``,)!ZP!<3J[^@$'K`%Q.KOZ,!
XM*4`$M"\`)$`@*@`D9Q(L;`;0($`B*```*4$$K$ZN_X(B*@`@9QHD/````^U.5
XMKO_B*4`$O&<*Y8@@0"=H``@`I"!L!+0O"$AL!'@@:``D*6@`!`3`3KH`>$ZZI
XM`.!P`&`$("\`!"\`("P$I&<$($!.D$ZZ#NPL>``$(FP&T$ZN_F).N@!.2JP$-
XMM&<:(BP$O&<$3J[_W"QX``1.KO]\(FP$M$ZN_H8@'RYL!+A.=7!D8+1#^@`0W
XM<`!.KOW8*4`&T&?L3G5D;W,N;&EB<F%R>0!.=4YU2.<',"XO`!@F;P`<+"\`L
XM("\'3KH-6%A/)$`@"F8$</]@-@@J``,``V<02'@``D*G+P=.N@?$3^\`#"\&)
XM+PLO*@`$3KH),$_O``PJ`$JL!)!G!'#_8`(@!4S?#.!.=0``````````<&%.P
XM5?_P2.<A,B9O`"P,K````"`&/FP``(80$W(@L`%G#'()L`%G!G(*L`%F!%*+[
XM8.A*$V=H("P&/N6`4JP&/D'L!D;1P"1(<"*P$V8F4HLDBTH39PIP(K`39P12N
XMBV#R2A-F#$AX``%.N@UH6$]@GD(;8)HDBTH39Q@0$W(@L`%G$'()L`%G"G(*G
XML`%G!%*+8.1*$V8"8`9"&V``_W)*K`8^9@8@;`2T8`1![`9&*4@&0DJL!CYFV
XM?$'Z`21#[`8$(M@BV"+8(M@RD")L!+0@:0`D2'@`*"\H``1(;`8$3KH$5D_O3
XM``Q![`8$(@@D/````^XL;`;03J[_XBE`!,@I0`30<@0I003,*4`$V"E!!-3E7
XM@)/)+'@`!"M`__!.KO[:(&W_\")`(V@`"`"D?@`K0/_T8"HL;`;03J[_RBE`)
XM!,A.KO_$*4`$T$'Z`*8B""0\```#[4ZN_^(I0`38?@0@!P!`@`&!K`3$(`<`+
XM0(`"@:P$S`"L``"``P342JP#X&<$<`!@!B`\``"``"X`0JP#E"`'`$```2E``
XM`Y!P`2E``[8@!P!```(I0`.R<`(I0`/8(`<`0`"`*4`#U$'Z"AXI2`2H+RP&K
XM0B\L!CY.N@`R0I=.N@;H3.U,A/_<3EU.=6-O;CHQ,"\Q,"\S,C`O.#`O`"H`;
XM````````````````3OD`````````````````````````````````````<&$O'
XM"R9O``A*JP`49PP(*P`#`!MF!'``8#8O+`1T3KH&:EA/)T``!"=``!!*@&8*S
XM<`PI0`;,</]@%B=L!'0`%'#SP:L`&'``)T``#"=```@F7TYU````````````\
XM``````!.5?_L2.<O$"XO`#0F;P`X*`=P,<"K`!AG!G#_8``"<`@K``<`&E;`%
XM1`!(@$C`+`!*JP`49@``A`@K``(`&V9Z<``G0``,<O^^@6<``D(O"TZZ_TY8(
XM3TJ`9PP(ZP`%`!MP_V```BH(ZP`!`!M*!F<.("L`%"(`1($G00`,8`@@*P`4O
XM)T``#%.K``QM%B!K``1#Z``!)TD`!"`'$(!R`!(`8!(@!W(`$@`O"R\!80#_1
XM4E!/(@`@`6```=8(*P`"`!MG6'#_OH!F!G``8``!PB`'&T#__TH&9R)R"KZ!Z
XM9AQR`B\!2'H!LB\K`!PK0?_P3KK\+$_O``PJ`&`:<@$O`4AM__\O*P`<*T'_!
XM\$ZZ_!!/[P`,*@!^_V```.`(ZP`!`!M*!F=2</^^@&=,5*L`#'(*OH%F)B!K*
XM``1#Z``!)TD`!!"\``TB*P`,2H%K"B\++P!A`/ZN4$]2JP`,(&L`!$/H``$G6
XM20`$(`<0@"(K``Q*@6L``1Q^_R`K``20JP`0*T#_\&=R""L`!@`:9U)(>``"(
XM0J<O*P`<3KH#?$_O``PK0/_L2@9G.%.M_^QM,D*G+RW_["\K`!Q.N@-<2'@`,
XM`4AM__TO*P`<3KH"C$_O`!A*K`209@H0+?_]<AJP`6?(+RW_\"\K`!`O*P`<>
XM3KK[,$_O``PJ`&`">@!P_[J`9@@(ZP`%`!M@#+JM__!G!@CK``0`&TH&9PXB5
XM*P`4)`%$@B="``Q@&`@K``(`&V<(<@`G00`,8`@B*P`4)T$`#"!K`!`G2``$'
XMOH!G+E.K``QM%B!K``1#Z``!)TD`!"`'$(!R`!(`8!(@!W(`$@`O"R\!80#]O
XMD%!/(@!P,,"K`!AG!'#_8`QP_[B`9@1P`&`"(`1,WPCT3EU.=0T*`````"YL'
XM!+A.N@4B2'D````43KH#D```````````<&%.5?_X2.<#,"9O`"`D;P`D+B\`Q
XM*"!*2AAF_%.(D<HL""!+2AAF_%.(D<L@"")+T\`K2?_XO(=C`BP'(`8@2F`"&
XM$MA3@&3Z(&W_^$(P:``@"TS?#,!.74YU(&\`!")(<@!P`"\"#!``*V<&#!``I
XM+68"4D@0&`0``#!M$@P```EN#"0!Y8'2@M*!TH!@Y@P1`"UF`D2!)!\@"%.`8
XM(&\`"""!D(E.=4Y5_^A(YP$R+B\`-$J';@9P_V```-)P"+Z`9`(N`"`'5H`NL
XM``)'__PD;0`((&T`"-''WZP#=$/L`W`F42M(__`K2?_T(`MG``"0($L@*P`$*
XMT<`K2/_L(FW_\+?)8Q`DBR5'``0L;?_T+(IP`&!XM\EF&BQ3)(X@*P`$(@#2]
XMAR5!``0L;?_T+(IP`&!:M<AD")^L`W1P_V!.M<AF+$J39PX@4[/(8PB?K`-TA
XM</]@.-^K``1*DV<.L]-F"B`I``31JP`$)I%P`&`>*TO_]"MM_^S_Z"938`#_Z
XM;B!M__0@BD*2)4<`!'``3-],@$Y=3G4``````````'!A2.<',"XO`!@F;P`<.
XM+"\`("\'3KH&(%A/)$`@"F8$</]@'B\&+PLO*@`$3KH"V$_O``PJ`$JL!)!G^
XM!'#_8`(@!4S?#.!.=0``2.<!$"9O``Q^`!X;2H=G,E.L`Z9M%B!L`YY#Z``!:
XM*4D#GB`'$(!R`!(`8-P@!W(`$@!(;`.:+P%.NOLJ4$\B`&#&4ZP#IFT6(&P#$
XMGD/H``$I20.><`H0@'(`$@!@$$AL`YI(>``*3KKZ_%!/(@`@`4S?"(!.=0``,
XM2.</$"XO`!@L+P`<*B\`("\'3KH%8%A/)D`@"V8$</]@'B\%+P8O*P`$3KH!U
XMG$_O``PH`$JL!)!G!'#_8`(@!$S?"/!.=0``````````<&%(YP,P+B\`%$J'3
XM;@9P`&```*1P"+Z`9`(N`"`'5H`N``)'__Q%[`-P)E(@"V=`("L`!+"';3*PD
XMAV8,(%,DB)^L`W0@"V!N("L`!)"'<@BP@646($O1QR2()$@DDR5```2?K`-T<
XM(`M@3"1+)E-@O"`'(BP#Y-"!4X!.N@*Z(BP#Y$ZZ`I(L`%"&(`96@"P``D;_A
XM_"\&3KH%WEA/)D`@"V<2+P8O"TZZ_5(NAV$`_U103V`"<`!,WPS`3G4`````G
XM`````'!A+P<N+P`(+P=.NO\R6$\N'TYU``!(YP,0+B\`$$?L`W@@"V<T""L`H
XM`@`;9B@(*P`!`!MG("`K``20JP`0+`!*AF<2+P8O*P`0+RL`'$ZZ]J9/[P`,3
XM)E-@R"\'3KH$T%A/3-\(P$YU``!(YS<0+B\`'"9O`"`L+P`D2JP$J&<$3KH$,
XM*$*L!)`B!R0+)@8L;`;03J[_T"H`</^Z@&8.3J[_?"E`!)!P!2E`!LP@!4S?B
XM".Q.=0``2.<_`"XO`!PL+P`@*B\`)$JL!*AG!$ZZ`]Q"K`20(`53@"(')`8F]
XM`"QL!M!.KO^^*`!P_[B`9@Y.KO]\*4`$D'`6*4`&S"`%#(`````"9Q8,@```;
XM``%G"$J`9A@@!F`4(`30AF`.(@=T`'8`+&P&T$ZN_[Y,WP#\3G4``$CG-Q`N"
XM+P`<)F\`("PO`"1*K`2H9P1.N@-@0JP$D"(')`LF!BQL!M!.KO_6*@!P_[J`/
XM9@Y.KO]\*4`$D'`%*4`&S"`%3-\([$YU```O!RXO``A*K`2H9P1.N@,>(@<L%
XM;`;03J[_W'``+A].=4Y5_[`O#DJL!LAF$D/Z`(AP`"QX``1.KOW8*4`&R'``Y
XM(&P$P!`H__]#[?^P8`(2V%.`9/IP`"!L!,`0*/__0C4(L$'M_[`I2`/T2'@`,
XM*$AX`/IP`"\`+P!(;`00<@`O`4AL`_PO`4ZZ`O1(>``43KH#("QM_ZQ.74YUL
XM*BH@4W1A8VL@3W9E<F9L;W<@*BH``$58250``&EN='5I=&EO;BYL:6)R87)Y2
XM`````````````````$CG,``D`"8!2$)(0\3!QL#`P=1#2$)"0M""3-\`#$YU\
XM2H!J```>1(!*@6H```Q$@6$``"!$@4YU80``&$2`1(%.=4J!:@``#$2!80``1
XM!D2`3G4O`DA!-`%F```B2$!(04A"-`!G```&A,$P`DA`-`"$P3`"2$(R`B0?K
XM3G4O`W80#$$`@&0```;AF5%##$$(`&0```;IF5E##$$@`&0```;EF55#2D%K`
XM```&XYE30S0`YJA(0D)"YJI(0X#!-@`P`C0#2$'$P9""9```"%-#T(%D_G(`J
XM,@-(0^>X2$#!028?)!].=4Y5_YY(YS,R?@`@;`3`'BC__W!/OH!O`BX`(`=#@
XM[?^O8`(2V%.`9/I"-7BOD\DL>``$3J[^VB9`2JL`K&=,("L`K.6`)$`L*@`X6
XM2H9F!"PK`*!*AF<T(@9!^@"R)`AV"RQL!M!.KO_0($=2AR`(&[P`"@BO(@9!`
XM[?^O)`@F!RQL!M!.KO_0</]@3DJL!LAF$D/Z`(9P`"QX``1.KOW8*4`&R$'M7
XM_Z\I2`1$2'@`/$AX`/IP`"\`+P!(;`1@2&P$3$AL!#A"ITZZ`/Q/[P`@4X!G\
XM!'#_8`)P`$S?3,Q.74YU*BH@57-E<B!!8F]R="!297%U97-T960@*BH``$-/Y
XM3E1)3E5%``!!0D]25``J*BH@0G)E86LZ(`!I;G1U:71I;VXN;&EB<F%R>0``N
XM`"\'+B\`"'``*4`$D$J':R*^K`-@;!P@!^>`0>P$Q$JP"`!G#B`'YX!![`3$X
XMT<`@"&`(<`DI0`;,<``N'TYU``````````!P84CG`0)P`"(\```P`"QX``1.,
XMKO[.+@`"AP``,`!*AV8$<`!@($JL!*AG&"!L!*A.D$J`9@1P`&`,2'@`%$ZZO
XM`$983R`'3-]`@$YU8;1.=0``2.<P,BQL!L@@;P`8(F\`'"1O`"`F;P`D("\`@
XM*"(O`"PD+P`P)B\`-$ZN_J1,WTP,3G4``$CG!P`N+P`0("P#8%.`+`!*1FLP1
XM(`9(P.>`0>P$Q"HP"`!*!6<:"`4``F84(`9(P.>`0>P$Q"\P"`1.NOP46$]3,
XM1F#,+P=.NO$.6$],WP#@3G4``$CG`#(F;`;4(`MG%"13(DL@*P`(+'@`!$ZNR
XM_RXF2F#HD<@I2`;8*4@&U$S?3`!.=4CG`3(N+P`4<`S>@"`'<@`L>``$3J[_[
XM.B9`(`MF!'``8#HG1P`(1>P&U"!J``0G2``$D<@FB$J29@(DBTJJ``1G!B)JL
XM``0BBR5+``1*K`-D9@0I2P-D0>L`#"`(3-],@$YU````````````````````A
XM``/L`````0````$```06`````@````,````,````!@````````/R```#Z0``#
XM`AM.5?VPO^P$?&4`"#)(YR<0+BT`""9M``QP`!M`_O<;0/[V&WP`"OZ@&T#^&
XMH1M`_;`;0/Y0(&L`!'`_L!!F``"$2&P`$$ZZ"`)(;`!03KH'^DAL`&Q.N@?R^
XM2&P`=$ZZ!^I(;`"83KH'XDAL`+Q.N@?:2&P`_$ZZ!])(;`$>3KH'RDAL`5Q.3
XMN@?"2&P!@DZZ![I(;`&D3KH'LDAL`<A.N@>J2&P![$ZZ!Z)(;`(N3KH'FDALF
XM`F!.N@>20I=.N@>D3^\`/"`'Y8`@<PC\<"VP$&<&<`*^@&822&P"E$ZZ!VQ(K
XM>`!D3KH'?%!/(`?E@"!S"/AP+;`09P9P`;Z`9A)(;`*R3KH'1DAX`,A.N@=6`
XM4$](;?X`2&W]L$AM_E!(;?Z@+PLO!V$`!(I/[P`8<``P+``"<D^2@'``,"P`L
XM!)*`<`&R@&P22&P"SDZZ!P!(>`$L3KH'$%!/,"P`!C(L``C003(L``HD`91`O
XM.4(`"G`!M$!L$DAL`O9.N@;22'@!D$ZZ!N)03R`'Y8!(>`/M+S,(^$ZZ!K)0"
XM3RM`__Q*@&822&P#'$ZZ!J9(>`'T3KH&ME!/(`?E@$AX`^XO,PC\3KH&AE!/L
XM*T#_^$J`9AI(;`,Z3KH&>BZM__Q.N@9^2'@"6$ZZ!H)03W``,"P`!B\`2&W^$
XM4"\M__A.N@9F+JW__$AM_O9(;?[W2&W^^&$``I8L`"H&<``P+``$+H!(;?ZA2
XM+RW_^$ZZ!CIP`#`L``XN@$AM_@`O+?_X3KH&)G``$`5R`#(L``[0@2H`<``0[
XM!BZ`2&W^^"\M__A.N@8&3^\`,'``$`5R`#(L``30@2H`+`5"K?[P2BW^]F8`G
XM`@I"+?[Y+RW__$AM_O9(;?[W2&W^^6$``A)/[P`0+`!2!MH&<``P+``"<D^20
XM@'``$`6P@6\``*9*+```9QY2K?[P&WP`"O[X2'@``4AM_O@O+?_X3KH%D$_OD
XM``Q2K?[P,"P`"DC`(BW^\+*`9C!P`#`L``@O`$AM_;`O+?_X3KH%9G``,"P`C
XM!BZ`2&W^4"\M__A.N@523^\`%$*M_O!P`#`L``12@"\`2&W^H"\M__A.N@4T0
XM<``0!E.`+H!(;?[Y+RW_^$ZZ!2!/[P`4<``0!G(`,BP`!-"!*@!@2G``$`9R\
XM`#(L``30@7(`$@6R@&<>&WP`(/[X<``0!B\`2&W^^"\M__A.N@3@3^\`#&`8!
XM<``0!E.`+P!(;?[Y+RW_^$ZZ!,9/[P`,2BW^]V<`_LX;?``*_OA(>``!2&W^-
XM^"\M__A.N@2D3^\`#$HM_O9F`/ZL2BP``&<84JW^\$AX``%(;?[X+RW_^$ZZI
XM!'Y/[P`,4JW^\#`L``I(P"(M_O"R@&8P<``P+``(+P!(;?VP+RW_^$ZZ!%1PT
XM`#`L``8N@$AM_E`O+?_X3KH$0$_O`!1"K?[P,"P`!'(`L$%C&'(`,@!3@2\!'
XM2&W^H2\M__A.N@0:3^\`##HL``0P+``.<@"P06,8<@`R`%.!+P%(;?X`+RW__
XM^$ZZ`_1/[P`,<``0!7(`,BP`#M"!*@!@`/WR+RW_^$ZZ`]`NK?_\3KH#R$*7>
XM3KH#SDSM".3]G$Y=3G5.5?_TO^P$?&4``Y1(YP,P)FT`""1M``Q\`$(2+RT`(
XM%$AM__AA``".4$\@;0`0$(`@;0`02A!F7!`M__AR"K`!9U)R(+`!9TQR";`!P
XM9B)^`'``$`=R`#(L``RP@6P@(`=2!W(`$@`7O``@$`!2!F#@(`92!G(`$@`7>
XMK?_X$``O+0`42&W_^&$``"Q03R!M`!`0@&"<$"W_^'(*L`%G""!M`!!*$&<$7
XM%+P``2`&3-\,P$Y=3G6_[`1\90`"Y$CG`#`F;P`,)&\`$"`L`UBPK`-<9AQ";
XMK`-82'@`@$AY`````"\*3KH"Y$_O``PI0`-<0?D`````T>P#6%*L`U@6D$JL(
XM`UQ7P$0`2(!(P$S?#`!.=4Y5__B_[`1\90`"A$CG!S`N+0`()FT`#"1M`!!\Y
XM`2`'58`B!DB!2,&R@&P``EH0!DB`(@!(P>6!(',8`%*($!!(@`1``$%G``&VP
XM4T!G``$N54!G2EM`9P`!S%=`9W)90&<``7150&=`54!G``"V!$``#6<``8I3G
XM0&<``0)50&<>6T!G``&@5T!G1EE`9P`!2%5`9Q150&<``(I@``'D&7P``0``E
XM8``!VA`&2(`B`$C!Y8$@<Q@`5(A(;?_Z+PA.N@'@4$\@+?_Z.4```F```;(0"
XM!DB`(@!(P>6!(',8`%2(2&W_^B\(3KH!N%!/("W_^CE```1Z`"`%2(!(P'(`/
XM,BP`!+"!;`Y2!1`%2(`5O``@``!@XB`%2(!(P$(R"`%@``%@$`9(@"(`2,'E5
XM@2!S&`!4B$AM__HO"$ZZ`6903R`M__HY0``&>@`@!4B`2,!R`#(L``:P@6P4V
XM(`52!1(`2($@;0`4$;P`"A``8-P0!4B`(&T`%$(P``!@``$&$`9(@"(`2,'E@
XM@2!S&`!4B$AM__HO"$ZZ`0Q03R`M__HY0``(>@`@!4B`2,!R`#(L``BP@6P4@
XM(`52!1(`2($@;0`8$;P`"A``8-P0!4B`(&T`&$(P``!@``"L$`9(@"(`2,'E-
XM@2!S&`!4B$AM__HO"$ZZ`+)03R`M__HY0``*8```A!`&2(`B`$C!Y8$@<Q@`-
XM5(A(;?_Z+PA.N@"*4$\@+?_Z.4``#&!<$`9(@"(`2,'E@2!S&`!4B$AM__HO,
XM"$ZZ`&103R`M__HY0``.>@`@!4B`2,!R`#(L``ZP@6P:<%"Z`&P4(`52!1(`L
XM2($@;0`<$;P`(!``8-80!4B`(&T`'$(P``!2!F``_9I,WPS@3EU.=4[Y```'_
XM,$[Y`````$[Y```),$[Y```'I$[Y````'$[Y````3$[Y```*T$[Y````,```W
XM`^P````$````````"%````AB```(2@``"#X````"`````@``!8X```5Z````C
XM!`````0```AH```(7```"%8```A$`````````_)```/J````(```````````(
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM```````````````````````````````````````````#\@```^H```$>````!
XM``````````!"``4``%=R87`@5C$N,""I,3DX.2P@,3DY,"!B>2!$879E(%-C:
XM:')E:6)E<BX@($%L;"!R:6=H=',@<F5S97)V960N``!7<FET=&5N(&)Y($1AT
XM=F4@4V-H<F5I8F5R+@``1F]R;6%T.@`@(#$^('=R87`@6V]P=&EO;G-=($ENG
XM9FEL92!/=71F:6QE```@($EN9FEL92UT97AT(&9I;&4@=&\@8F4@<')O8V5SW
XM<V5D```@($]U=&9I;&4M9FEL96YA;64@=&AA="!T:&4@9F]R;6%T=&5D('1E3
XM>'0@:7,@=&\@8F4@=W)I='1E;B!T;P``("!/<'1I;VYS("AI;B!U<'!E<BT@F
XM;W(@;&]W97)C87-E`"`@("`M82,@+2T@;G5M8F5R(&]F('-P86-E<R!T;R!EV
XM>'!A;F0@=&%B<R!O=70@=&\@*&1E9F%U;'0@-2D`("`@("UB(R`M+2!B;W1T0
XM;VT@;6%R9VEN("AD969A=6QT(#`I```@("`@+70C("TM('1O<"!M87)G:6X@/
XM*&1E9F%U;'0@,"D`("`@("UR(R`M+2!R:6=H="!M87)G:6X@*&1E9F%U;'0@K
XM,"D`("`@("UL(R`M+2!L969T(&UA<F=I;B`H9&5F875L="`P*0``("`@("UIT
XM(R`M+2!N=6UB97(@;V8@<W!A8V5S('1O(&EN9&5N="!E86-H('!A<F%G<F%P>
XM:"`H9&5F875L="`P*0``("`@("UP(R`M+2!P86=E('-I>F4@*'=I=&@@;F\@!
XM;6%R9VEN+"!D969A=6QT(#8V*0`@("`@+60@("TM(&1O=6)L92!S<&%C960@:
XM*&1E9F%U;'0@:7,@<VEN9VQE('-P86-E9"D`3F\@;W5T<'5T(&9I;&4@<W!E:
XM8VEF:65D(2$A"@``3F\@:6YP=70@9FEL92!S<&5C:69I960A(2$*`%1H92!L$
XM969T+W)I9VAT(&UA<F=I;G,@87)E('1O;R!L87)G92$*``!4:&4@=&]P+V)O1
XM='1O;2!M87)G:6YS(&%R92!T;V\@;&%R9V4A`$-O=6QD;B=T(&]P96X@=&AE>
XM(')E860@9FEL92$``$-O=6QD;B=T(&]P96X@=&AE('=R:71E(&9I;&4A````\
XM````````````*``````````````````````````````#F@``````````````%
XM`````````````````````````````[P`````````````````````````````_
XM`````````````````````````````````````````````````````````````
XM`(`````$`/__````#@`.````````````````__\````$``0````````,T@``"
XM`^C__P````0`!`````````SH`````/__````#@`.````````#M``````__\`;
XM```$``0`````````````!"3__P````0`!`````````[L`````/__````!``$V
XM````````#O8````````"`````^P````%````````!&P```18```$,```!!P`:
XM``0(````!`````,```1(```$#````YH```-X`````````_(```/I````&DCGQ
XM(`(L>0``!M!,[P`&``Q.KO_B3-]`!$YU```O#BQY```&T"(O``A.KO_<+%].Z
XM=4CG,`(L>0``!M!,[P`.`!!.KO_63-]`#$YU``!(YS`"+'D```;03.\`#@`0J
XM3J[_T$S?0`Q.=0`````#[`````0````#````4@```#8````@````!@``````I
XM``/P`````E]7<FET90``````3`````)?4F5A9````````#`````"7T-L;W-E/
X>```````<`````E]/<&5N``````````````````/R$
X``
Xend
Xsize 8220
END_OF_FILE
if test 11541 -ne `wc -c <'Wrap.uu'`; then
    echo shar: \"'Wrap.uu'\" unpacked with wrong size!
fi
# end of 'Wrap.uu'
fi
echo shar: End of archive 1 \(of 1\).
cp /dev/null ark1isdone
MISSING=""
for I in 1 ; do
    if test ! -f ark${I}isdone ; then
	MISSING="${MISSING} ${I}"
    fi
done
if test "${MISSING}" = "" ; then
    echo You have the archive.
    rm -f ark[1-9]isdone
else
    echo You still need to unpack the following archives:
    echo "        " ${MISSING}
fi
##  End of shell archive.
exit 0
-- 
Mail submissions (sources or binaries) to <amiga@cs.odu.edu>.
Mail comments to the moderator at <amiga-request@cs.odu.edu>.
Post requests for sources, and general discussion to comp.sys.amiga.