[comp.sys.tandy] Uuencode/decode utilities for the Model 4!

7gmadiso@pomona.bitnet.UUCP (04/06/87)

Greetings, fellow Tandy users!! I have discovered the C source code
for the UUCODE system of converting binary files to text files!!
Unlike HEX/CMD, which produces an output file 200% the size of the
original, UUCODE produces an output file only 130% the size of the
original binary file -- quite a savings!!  This post contains both the
C source and a HEXified binary of both UUDECODE and UUENCODE.  Note
that the HEXified files are for the MODEL 4 ONLY!!!!!


********** UUDECODE **********

/* Only one of the following should be set to TRUE (1); others to 0 */
#define UNIX  0
#define VMS   0
#define TRS80 1

#if TRS80
#define perror(X)  fprintf(stderr,"Unable to open file: %s\n", X);
/* perror: "Prints a short message to stderr describing the last error
   encountered during a call to the operating system." */
#endif

#ifndef lint
static char sccsid | = "@(#)uudecode.c    5.1 (Berkeley) 7/2/83";
#endif

/*
 * uudecode  input|
 *
 * create the specified file, decoding as you go.
 * used with uuencode.
 */
#include <stdio.h>

#if UNIX | VMS
#include <pwd.h>   /* UNIX password stuff */
#include <types.h> /* under VMS, only used for time buffer */
#include <stat.h>  /* file i/o stats */
#endif
#line 29

/* single character decode */
#define DEC(c)    (((c) - ' ') & 077)

main(argc, argv)
char **argv;
{
    FILE *in, *out;
#if UNIX | VMS
    struct stat sbuf;    /* not used in this program!? */
#endif
    int mode;
    char dest 128|;
    char buf 80|;

    /* optional input arg */
    if (argc > 1) {
        if ((in = fopen(argv 1|, "r")) == NULL) {
            perror(argv 1|);
            exit(1);
        }
        argv++; argc--;
    } else
        in = stdin;

    if (argc != 1) {
        printf("Usage: uudecode  infile|\n");
        exit(2);
    }

    /* search for header line */
    for (;;) {
        if (fgets(buf, sizeof buf, in) == NULL) {
            fprintf(stderr, "No begin line\n");
            exit(3);
        }
        if (strncmp(buf, "begin ", 6) == 0)
            break;
    }
    sscanf(buf, "begin %o %s", &mode, dest);

#if UNIX
    /* handle ~user/file format */
      if (dest 0| == '~') {
        char *sl;
        struct passwd *getpwnam();
        char *index();
        struct passwd *user;
        char dnbuf 100|;

        sl = index(dest, '/');
        if (sl == NULL) {
            fprintf(stderr, "Illegal ~user\n");
            exit(3);
        }
        *sl++ = 0;
        user = getpwnam(dest+1);
        if (user == NULL) {
            fprintf(stderr, "No such user as %s\n", dest);
            exit(4);
        }
        strcpy(dnbuf, user->pw_dir);
        strcat(dnbuf, "/");
        strcat(dnbuf, sl);
        strcpy(dest, dnbuf);
    }
#endif

    /* create output file */
    out = fopen(dest, "w");
    if (out == NULL) {
        perror(dest);
        exit(4);
    }
#if UNIX
    chmod(dest, mode);  /* changes file protection mode */
#endif
    decode(in, out);

    if (fgets(buf, sizeof buf, in) == NULL || strcmp(buf, "end\n")) {
        fprintf(stderr, "No end line\n");
        exit(5);
    }
    exit(0);
}

/*
 * copy from in to out, decoding as you go along.
 */
decode(in, out)
FILE *in;
FILE *out;
{
    char buf 80|;
    char *bp;
    int n;

    for (;;) {
        /* for each input line */
        if (fgets(buf, sizeof buf, in) == NULL) {
            printf("Short file\n");
            exit(10);
        }
        n = DEC(buf 0|);
        if (n <= 0)
            break;

        bp = &buf 1|;
        while (n > 0) {
            outdec(bp, out, n);
            bp += 4;
            n -= 3;
        }
    }
}

/*
 * output a group of 3 bytes (4 input characters).
 * the input chars are pointed to by p, they are to
 * be output to file f.  n is used to tell us not to
 * output all of them at the end of the file.
 */
outdec(p, f, n)
char *p;
FILE *f;
{
    int c1, c2, c3;

    c1 = DEC(*p) << 2 | DEC(p 1|) >> 4;
    c2 = DEC(p 1|) << 4 | DEC(p 2|) >> 2;
    c3 = DEC(p 2|) << 6 | DEC(p 3|);
    if (n >= 1)
        putc(c1, f);
    if (n >= 2)
        putc(c2, f);
    if (n >= 3)
        putc(c3, f);
}


/* fr: like read but stdio */
int
fr(fd, buf, cnt)
FILE *fd;
char *buf;
int cnt;
{
    int c, i;

    for (i=0; i<cnt; i++) {
        c = getc(fd);
        if (c == EOF)
            return(i);
        buf i| = c;
    }
    return (cnt);
}

/*
 * Return the ptr in sp at which the character c appears;
 * NULL if not found
 */

char *
index(sp,c)
char *sp, c;
{
    do {
        if (*sp == c)
            return(sp);
    } while (*sp++);
    return NULL;
}
/* if your library does not have strncmp(), let me know and
   I'll send you some source code. */


UUDECODE/CMD
---------- Cut Here ----------
01BD0030C352364028232975756465636F64652E6320202020352E312028
4265726B656C65792920372F322F38330053686F72742066696C650D004E
6F20656E64206C696E650D00656E640D00556E61626C6520746F206F7065
6E2066696C653A2025730D007700626567696E20256F2025730062656769
6E20004E6F20626567696E206C696E650D0055736167653A207575646563
6F6465205B696E66696C655D0D00556E61626C6520746F206F70656E2066
696C653A2025730D0072000132BF30000000000000E155E730EB30EB3000
000000000000000000000000000000000000000000000000002A4B49002A
444F000102F530C35236112AFFCDCA5521D80039CDBB55E5210100D1CD2B
557CB5CA9A3121D40039E521B930E521DE0039CDBB55E5210100110200CD
6D55D119CDBB55E5CD9747F1F1D1CDC055E5210000D1CD19557CB5CA7531
21DA0039CDBB55E5210100110200CD6D55D119CDBB55E521A030E521CB30
E5CD5138F1F1F1210100E5CDB746F121DA0039E5CDBB5511020019D1CDC0
5511FEFF1921D80039E5CDBB552BD1CDC05523C3A63121D40039E521C730
D1CDC05521D80039CDBB55E5210100D1CD1F557CB5CACA31218630E5CDF0
37F1210200E5CDB746F1C3CD3121D40039CDBB55E5215000E521040039E5
CD7D49F1F1F1E5210000D1CD19557CB5CA0632217730E50102F53121CB30
E5CD5138F1F1210300E5CDB746F1210600E5217030E521040039E5CD824F
F1F1F1E5210000D1CD19557CB5CA2932C32C32C3CD3121500039E521D200
39E5216430E521060039E5CD1C41F1F1F1F121D20039E5216230E5215400
39E5CD9747F1F1D1CDC05521D20039CDBB55E5210000D1CD19557CB5CA8C
3221500039E5214930E521CB30E5CD5138F1F1F1210400E5CDB746F121D2
0039CDBB55E521D60039CDBB55E5CDFC32F1F121D40039CDBB55E5215000
E521040039E5CD7D49F1F1F1E5210000D1CD19557CB5C2D332214430E521
020039E5CD5A4FF1F17CB5CAED32213730E521CB30E5CD5138F1F1210500
E5CDB746F1210000E5CDB746F10102F53211D600CDCA55C911ACFFCDCA55
C3053321560039CDBB55E5215000E521080039E5CD7D49F1F1F1E5210000
D1CD19557CB5CA3933212B30E5CDF037F1210A00E5CDB746F121000039E5
21060039E5210000D1196E2600E5212000D1CD8155E5213F00D1CD8655D1
CDC05521000039CDBB55E5210000D1CD32557CB5CA7633C3E73321020039
E521060039E5210100D119D1CDC05521000039CDBB55E5210000D1CD2B55
7CB5CAE43321000039CDBB55E5215A0039CDBB55E521060039CDBB55E5CD
EE33F1F1F121020039E5CDBB55E5210400D119D1CDC05521000039E5CDBB
55E5210300D1CD8155D1CDC055C38933C30533115400CDCA55C9F5F5F521
0400390102F533E5210A0039CDBB556E2600E5212000D1CD8155E5213F00
D1CD8655E5210200D1CD9455E5210C0039CDBB55E5210100D1196E2600E5
212000D1CD8155E5213F00D1CD8655E5210400D1CD9C55D1CD8D55D1CDC0
5521020039E5210A0039CDBB55E5210100D1196E2600E5212000D1CD8155
E5213F00D1CD8655E5210400D1CD9455E5210C0039CDBB55E5210200D119
6E2600E5212000D1CD8155E5213F00D1CD8655E5210200D1CD9C55D1CD8D
55D1CDC05521000039E5210A0039CDBB55E5210200D1196E2600E5212000
D1CD8155E5213F00D1CD8655E5210600D1CD9455E5210C0039CDBB55E521
0300D1196E2600E5212000D1CD8155E5213F00D1CD86550102F534D1CD8D
55D1CDC055210C0039CDBB55E5210100D1CD25557CB5CA2635210A0039CD
BB55E521060039CDBB55E5CDBA4AF1F1210C0039CDBB55E5210200D1CD25
557CB5CA4F35210A0039CDBB55E521040039CDBB55E5CDBA4AF1F1210C00
39CDBB55E5210300D1CD25557CB5CA7835210A0039CDBB55E521020039CD
BB55E5CDBA4AF1F1F1F1F1C9F5F521000039E5210000D1CDC055C39B3521
000039E5CDBB5523D1CDC0552B21000039CDBB55E5210C0039CDBB55D1CD
39557CB5CA053621020039E521080039CDBB55E5CD314AF1D1CDC0552102
0039CDBB55E521FFFFD1CD19557CB5CAE63521000039CDBB55F1F1C92108
0039CDBB55E521020039CDBB550102F535D119E521040039CDBB55D17D12
C38D35210A0039CDBB55F1F1C921020039CDBB556E2600E5210600396E26
00D1CD19557CB5CA323621020039CDBB55C921020039E5CDBB5511010019
D1CDC05511FFFF196E26007CB5C20F36210000C9ED73F130ED43EF303E64
21000045EF22F330EB21FFF3ED52EB300D3E65EFFD7E1BFE60200321FFF3
F9CD8B36CD2337CDF830210000E5CDB7462AC53022BB3022BD302AEF3001
0000ED5BBB30CDE5372810CDD836280B30F4D50C0600CDA33720EB0600C5
DDE1CB21EB0922BB3022BD30CB3941D12B722B7310F9C1E5DDE5C5C9C373
50C3AA4FDD21A2377EFE3C2010DDCB0046DDCB00C6207DED53C7301826FE
3E20100102F536DDCB004EDDCB00CE2069ED53C9301812FE2337C0DDCB00
56DDCB00D62055ED53CB3023CDE5370600CDA337C83FC921C730119C37CD
3B3721C930119E37CD3B3721CB30119E37AF4E772346770AFE3E200B219C
377DBB28040311A03721C330CBC6E5D5C5CD9747C1C17CB5E1CB86C02175
37FD2189373E0AEF21FFFFE5CDBA465374642066696C65206F70656E2065
72726F720D416D626967756F75732072656469726563740D520057004100
00C50E007EFE222804FE272002234F78B7060028037912137EFE203822FE
2130040C0D281A0C0D281004050600200AB9280CFE5C2003471802121323
18DA23AF1213C13E20BED83E0DBEC82318F5F5DDE5FDE501D4F537210400
39E5210A0039D1CDC05521040039E5CDBB552323D1CDC055E521FFFF29D1
19CDBB55E5DDE121C93022C73821BA4A22C93821040039E5DDE5E1E5CD51
39F1F1E5FDE1FDE5E1E521040039CDD15521020039CDD955E1F1F1F1C9F5
DDE5FDE521040039E5210A0039D1CDC05521040039E5CDBB552323D1CDC0
55E521FFFF29D119CDBB5522C73821BA4A22C93821040039E5CDBB552323
D1CDC055E521FFFF29D119CDBB55E5DDE121040039E5DDE5E1E5CD5139F1
F1E5FDE1FDE5E1E521040039CDD15521020039CDD955E1F1F1F1C901021C
393042003062003058003078003031323334353637383961626364656600
303132333435363738394142434445460020002B002D0000F1E1E5F522CD
3821000022CB382ACD386E26007CB5CA99402ACD386E2600112500CD1F55
7CB5CA9F392AC938E52AC738E3E52ACD382322CD382B6E2600E3E5CDC655
F1F12ACB382322CB38C3964021000022E43822E23822E03822DE3822DC38
2ACD382322CD386E2600E5D1212B00CD6255C2CF3921010022DC38C3B139
212D00CD6255C2E13921010022DE38C3B139212000CD6255C2F339210100
22E038C3B139212300CD6255C2053A21010022E238C3B139213000CD6255
C2173A21010022E438C3B1392ACD386E2601021C3A00112A00CD19557CB5
CA6D3AF1C1E1E5C5F5E5CDBB552323D1CDC055E521FFFF29D119CDBB5522
D3382AD338110000EBCD39557CB5CA633A2AD338CDA75522D33821010022
DE382ACD382322CD38C3A53A21000022D3382ACD386E2600E5CD9C52F17C
B5CAA53A2AD338110A00CD6D55E52ACD382322CD382B6E2600E5CD0041F1
D11922D338C3733A2ACD386E2600112E00CD19557CB5CA2D3B2ACD382322
CD386E2600112A00CD19557CB5CAF23AF1C1E1E5C5F5E5CDBB552323D1CD
C055E521FFFF29D119CDBB5522D5382ACD382322CD38C32A3B21000022D5
382ACD386E2600E5CD9C52F17CB5CA2A3B2AD538110A00CD6D55E52ACD38
2322CD382B6E2601021C3B00E5CD0041F1D11922D538C3F83AC3333B21FF
FF22D53821000022DA382ACD386E2600E5D1216C00CD6255C2533B210100
22DA38C35C3B216800CD6255C2633B2ACD382322CD3821000022D8382150
3922E6382ACD382322CD382B6E26007D32D738E5D1216400CD6255C28C3B
C3953B217500CD6255C29E3B210500221839C3E93B216F00CD6255C2B03B
210400221839C3E93B215800CD6255C2BC3BC3C53B217800CD6255C2CE3B
210800221839C3E93B214200CD6255C2DA3BC3E33B216200CD6255C29C3E
2101002218392AD538110000EBCD39557CB5CAFE3B21010022D5382ADA38
7CB5CA2C3CF1C1E1E5C5F5E5CDBB5511040019D1CDC055E521FFFF01021C
3C2929D119CD0455211039CD0C55C3863C3AD7386F2600116400CD19557C
B5CA633CF1C1E1E5C5F5E5CDBB552323D1CDC055E521FFFF29D119CDBB55
CDEE54211039CD0C55C3863CF1C1E1E5C5F5E5CDBB552323D1CDC055E521
FFFF29D119CDBB55CDF654211039CD0C553AD7386F2600116400CD19557C
B5CAFA3C211039CD0455C5D5010000110000CD56537CB5CADB3C214E3922
E638211039CD0455C5D5010080110000CD4C537CB5CAD83C211039CD0455
CDD054211039CD0C55C3FA3C2ADC387CB5CAEC3C214C3922E638C3FA3C2A
E0387CB5CAFA3C214A3922E6382AE4387CB5CA313DF521000039E52AD338
E52AE638E5CD744FF1D1CD8155D1CDC05501021C3DE1E5E52AD538D1CD2B
557CB5CA303DE1E522D538F13AD7386F2600115800CD19557CB5CA483D21
3939C34E3D212839C34E3D22143921E8381128001922CF3822D138211039
CD0455CDD7537CB5CAFC3D211039CD0455C5D5010000110100CD8553EB22
1A39211039CD0455C5D5010000110100CD9A53C5D5010080110000CDB953
CD8553211039CD0C552ACF382B22CF38E52A1439E5211039CD0455C5D52A
1839CDEE54CDE052C5D5010000110200CD1253C5D52A1A39CDEE54CD4353
EBD1196E2600D17D12211039CD0455C5D52A1839CDEE54CDFA52211039CD
0C55C35E3D2ACF38E52AD138D1CD8155E52AD538D11922D8382AE2387CB5
CA233E2ACF38E501021C3E2AD138D1CD1F557CB5CA993E3AD7386F2600E5
D1216F00CD6255C2513E2AD838110100EBCD39557CB5CA4E3E21010022D8
38C3993E217800CD6255C2633E21253922E638C3993E215800CD6255C275
3E21223922E638C3993E216200CD6255C2873E211F3922E638C3993E2142
00CD6255C2993E211C3922E638C3993EC3863F216300CD6255C2D73E21E8
38E521060039CDBB55E5CDBB552323D1CDC055E521FFFF29D119CDBB55D1
7D1221E83822CF382ACF382322D138C3863F217300CD6255C2603FF1C1E1
E5C5F5E5CDBB552323D1CDC055E521FFFF29D119CDBB5522CF382AD53811
0000EBCD39557CB5CA123F21FF7F22D538210000221639C3223F2A01021C
3F1639232216392ACF382322CF382B6E26007CB5CA3D3F2A1639E52AD538
D1CD39557CB5CA453FC31B3F2ACF382B22CF3822D1382ACF38E52A1639D1
CD815522CF38C3863F210000CD6255C2733F2ACD382B22CD38C3863F21D7
3822CF3822D1382AD1382322D138C3863F3AD7386F26007CB5CA9640F521
000039E52AD338E52AD138E52ACF38D1CD8155D1CD8155E52AD838110000
EBCD39557CB5CAC03F210000C3C63F2AD838C3C63FD1CD8155E52AE638E5
CD744FF1D1CD8155D1CDC0552ADE38CDB3557CB5CA0A4021000039E5CDBB
552BD1CDC055110000EBCD25557CB5CA0A40212000E5CDBB40F1C3E63F2A
E6386E26007CB5CA28402AE6382322E63801FD1C402B6E2600E5CDBB40F1
C30A402AD8382B22D838110000EBCD25557CB5CA4640213000E5CDBB40F1
C328402ACF38E52AD138D1CD5C557CB5CA69402ACF382322CF382B6E2600
E5CDBB40F1C346402ADE387CB5CA954021000039E5CDBB552BD1CDC05511
0000EBCD25557CB5CA9540212000E5CDBB40F1C37140F1C35E392AC7387C
B5CAA9402AC738E5CD5A49F17CB5CAB44021FFFFC3BA402ACB38C3BA40C9
2AC938E52AC738E3E5210600396E2600E3E5CDC655F1F12ACB382322CB38
C9F1E1E5F5E521060039CDBB55D1CD39557CB5CAF640F1E1E5F5C3FF40F1
C1E1E5C5F5C3FF40C9210200396E2600113000B7ED52C9F1E1E5F5113000
19C901AE1C41AF676F321B41221941F1E1E5F522174121040039E5E52168
41E5214241E5CDE441C1C1C1C1C92A19417CB5C03A1B41B728066FAF321B
41C92A17417E232217416F2600B7C0210D00221941C9F1E1E5F57D321B41
C90000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000102
D841000000000000000000000000DD22E041FD22E24121080039E5CDBB55
2323D1CDC0552B2BCDBB55E5DDE121000022DC41FD210000DD23DD6EFF26
007D32C2417CB5CA2446E5CDBC52C1CDB3557CB5CA0C423AC2416F2600FE
25C2FE452100007D32C641DD7E00FE2AC255423AC6416F26007CB5C22446
2C7D32C641DD232100007D32C74122DE417D32C541DD6E002600E5CD9C52
C17CB5CA92422ADE41110A00CD6D55E5DD23DD6EFF2600D119EB213000CD
815522DE41C36342DD6E002600E5CD7052C17DFE6C20082E017D32C54118
04FE682002DD2321714122C341DD23DD6EFF2600E5CD7052C17D32C241FE
6ECA8444FE63C2DE422ADE417CB5C23643230102D84222DE41C336431150
004FFE64282DFE752829FE68CA2446FE6CCA2446FE6F281BFE782817FE62
2813FE65280FFE66280B11FF7FFE732804FE5B20232ADE417CB52804ED52
3804EB22DE4179FE5B280FCD3046E5CDBC52C17CB520F4CD62463AC2416F
2600FE62C27C432ADE417CB5CA7643CD3046CD5A46C276432ADA417DF601
FE31C221462AC3412322C3412BE52ADA41D17D122ADE412B22DE41C34143
01A346C38C44FE64CA8643FE75C2E4432ADE417CB5CADE43CD3046CD5A46
C2DE432ADA417DFE2B2804FE2D200E3AC7416F26007CB5CABE43C320442A
DA41E5CD9C52C17CB5CA20442AC3412322C3412BE52ADA41D17D12210100
7D32C7412ADE412B0102D84322DE41C3864301A746C38C44FE6FC22D442A
DE417CB5CA2744CD3046CD5A46C227442ADA41E5CD124FC17CB5CA20442A
C3412322C3412BE52ADA41D17D122ADE412B22DE41C3E943CD62462ADC41
C901AB46C38C44FE78C2F1442ADE417CB5CA8944CD3046E5CD705222DA41
CDBC52C17CB5CA5344CD6246C389442ADA41E5CD3052C17CB5CA20442AC3
412322C3412BE52ADA41D17D122ADE412B22DE413AC7416F2600237D32C7
41C3324401B346180301AF463AC6416F2600CDB3557CB5CA0C422AC34136
0021080039E5CDBB552323D1CDC0552B2BCDBB5522D841E5217141E53AC5
416F26007CB5280203030A6F030A67E5CDC655E53AC5416F26007CB50102
D844E12807E1E1CD0C551805C1D1CDC0552ADC412322DC41C30C42FE63C2
1F452ADE417CB5CA0745CD3046CD3B45C3F64421080039E5CDBB552323D1
CDC0552ADC412322DC41C30C42FE73C27C452ADE417CB5CA5D45CD3046CD
5A46C25D45CD3B45C32445210A0039CDBB55E5CDBB5523D1CDC0552BEB2A
DA417D122ADE412B22DE41C9CD624621080039E5CDBB552323D1CDC0552B
2BCDBB5536002ADC412322DC41C30C42FE5BC2F04511C600DD7E00DD23FE
5E20081186FFDD7E00DD2321C8410620722310FCCD7F46DD7E00DD23FE2D
2020DD7E00FE5D2817DDBEFE3812DD7EFE3CF5CD7F46F1DDBE0020F5DD23
18D93E2DFE5D20D02ADE417CB5CA5D45CD300102D84546CD5A46C25D452A
DA411E46CD8046CA5A45CD3B45C3CE45FE65CAFA45FE66C2FA452ADC41C9
CD3046E5CDBC52C1CDB3557CB5CAFE452ADA41E53AC2416F2600D1CD1F55
7CB5CA0C42CD62462ADC41DD2AE041FD2AE241C9FD2321080039CDBB55E5
21060039CDBB55E5CDC655C122DA4111FFFFCD19557CB52ADA41C8E121FF
FFC9E5CDBC52C17CB5C8FD2B21080039CDBB55E52ADA41E5210A0039CDBB
55E5CDC655C1C1B0C96FAF67CB3D1FCB3D1FCB3D1F1F1F01C84109B33296
46CB46C9FDE5E1C9FDE5D1010000C9674CC74DE64B3B4D834CE84D9F4C09
4E98469C46CDC346F1E1E5F5ED7BF130C921C730011000415E2356237BB2
280AC5E5EBCB5ECC0109D8460247E1C110ECC9016BE14621FFFF22DF46F1
E1E5F5DDE5E5DDE1CDD64B284DCB5E2043AFDD7700DD77011802DDE5E5DD
E12B2BE52323010000ED43DF467E7123CB7E281EEBDD6E04DD6605E5CB6F
200E3E3CEF2809CD924B21FFFF22DF46CDD236C1CDD236E12ADF46DDE1C9
21100022634B18F201025247F1E1C1C5E5F5CDCF48CD2E49204DED535047
CD514B7CB52846224E47CDBB557CB5283C3A50475FA628397EE6FCB377DD
2A4E4723CB7ECA3848EB210300197E23666FC37148CDEC48CDCF48281AE5
DDE1F1E1C1C5E5F5CD2E492818214300DD211000DD212500DD2144002263
4B210000C3C6483AD236FEC9201FE5D5DDE5E13AE730FE2A11C730280311
CD30ED5211EF3019CDBB55C1D11815E5D5DDE5212400E5CDD536C1DDE1C1
D17CB5CAE448360023368023CDDF4B7123EBCD01491B1A13B7FA54482100
0045CB6F3E3B28013DEF280EFE2A280A626B2B3435C4924B1863D5E1CB7E
201CE5FDE12B2B360701080009CDBB55014B49ED42204BCDD64BCBE60102
52481844212100193AD236FEC92812210001DDE5D5E5CDD536C1D1DDE17C
B52867D5FDE1FD7503FD7404E5FDCB01FEFDCBFF5628123E41EF280DFE1C
2809CD924BCDD236C11841C1CDD64B7E5FE61F77FDCB007E281DE603FE03
2004FDCB01F67EAB2BB677E640280AAFFD770CFD770DFD7708DDE5E1DD2A
4A47FD2A4C47C9DD224A47FD224C47C9DDE51B1B1BD5CDD236C1DDE12100
00CDDF4B18DA0110004121C7307E23B628052310F8AFC9042B70C90600E5
D57EFE21381EFE613806FE7B3002EE200405200BFE2F2806FE2E20033E2F
0412231318DD3E0312D1E1C90A03FE3F2823114949D5F6201E01FE72C81E
62FE77C81E26FE61C9C00AB7C8F620FE2BC001295249CBC3CBCBC90A5FC9
DDE5CDCC4BDDE128137EE620280E112100CB5E28021E03196E2600C9ED62
C901027D49F1D1C1E1E5C5D5F5CDBB55CB662835FDE5E5FDE10405412802
06FFEBAFB02801050E003E09EFF5E548060009233600E1F12008FDCBFF66
280830066068FDCB00F6FDE1C921020039CDBB55227B4921040039E5CDBB
552BD1CDC0557CB5CA034A21060039CDBB55E5CD314AC1227949237CB528
122A7B4923227B492BEB2A79497D12FE0D20C82A7B4936002A794911FFFF
CD19557CB5280F21020039CDBB55E52A7B49D1CD19557CB5210000C02102
0039C3BB55DDE5CDCC4BDDE12839CB462835CB76202DCB7E2060545DCB5E
23C4BB55CB7EEB28283E03EF284ACDAE4A77EBFE1C2003AF1805CD924B3E
20F640B6E67F7721FFFFC921100022634B18F43E0301E87D4AEF2805B728
F818D32BCB46232808D664FE1C28C7C6644F3AC330AEE610792005F53E02
EFF16F2600C9CBBECDAE4A7E18F4112100CB5E28021E03EB19C9F1C1E1E5
C5F5DDE5E5DDE1CDD64B2852CB4E284ECB76204A545DE5DDE13AE730FE2A
2802CB5E23C4BB55EBC579FE092007DD7EFFE60F202F3E04EFF5DD34FEF1
EBE1200B7DD60D2003DD77FEDDE1C9EBCBF6CBEE112100CB5E28021E0319
77CD924B21FFFF18E50E203E04EF20D2CD2F4B20F418CBDD34FED5DD5EFE
DD7EFFE60F3C4F0608AFCB2317B93802911C10F6B7D1C9F1E1E5F57DB411
1000BB30062911C73019C9210000C90102654B0004020404040604080402
040404040F100404100404040418191A1B041D1E18262722232325262719
19434343E56F2600E5CDB44BF122634B7D21C3304ECB41E1C8CB712802F6
40F6804F3E1AEFC9F1E1E5F57DFE2D2E402600D021654B856F8C95676E26
00C9F1E1D1DDE1DDE5D5E5F5DD6E00DD66017CB5C9DD7500DD7401C9F5F5
21060039E521080039CDBB55E5CD344FF1D1CDC05521000039E521080039
CDBB556E2600112D00CD1955D1CDC0557CB5CA284C21060039E5CDBB5523
D1CDC05521020039E521B94EE5219C52E5210A00E5210E0039CDBB55E5CD
BB4CF1F1F1F1D1CDC055E1E57CB5CA5D4CF1E1E5F5CDA755C3644CF1E1E5
F5C3644CF10102654CF1C921B94EE521FE4EE5210200E521080039CDBB55
E5CDBB4CF1F1F1F1C921B94EE521124FE5210800E521080039CDBB55E5CD
BB4CF1F1F1F1C921C74EE5213052E5211000E521080039CDBB55E5CDBB4C
F1F1F1F1C9F521000039110000EBCDC05521040039E521060039CDBB55E5
CD344FF1D1CDC05521080039CDBB55E521060039CDBB556E2600E3E5CDC6
55F17CB5CA374D21000039E5F1E1E5F5E5210A0039CDBB55D1CD6D55E521
0E0039CDBB55E5210A0039E5CDBB5523D1CDC0552B6E2600E3E5CDC655F1
D119D1CDC055C3DC4CE1E5F1C9F5F5F521080039E5210A0039CDBB55E5CD
344FF1D1CDC05521000039E5210A0039CDBB556E2600112D000102654DCD
1955D1CDC0557CB5CA7E4D21080039E5CDBB5523D1CDC05521020039E521
B94EE5219C52E5010000110A00C5D521120039CDBB55E5CD2A4EF1F1F1F1
F1E1CD0C55E1E57CB5CABA4DF1D1C1C5D5F5CDD054C3C34DF1D1C1C5D5F5
C3C34DF1F1F1C921B94EE521FE4EE5010000110200C5D5210A0039CDBB55
E5CD2A4EF1F1F1F1F1C921B94EE521124FE5010000110800C5D5210A0039
CDBB55E5CD2A4EF1F1F1F1F1C921C74EE5213052E5010000111000C5D521
0A0039CDBB55E5CD2A4EF1F1F1F1F1C9F5F521000039E5010000110000E1
CD0C5521060039E521080039CDBB55E5CD344FF1D1CDC055210C0039CDBB
55E521080039CDBB556E2600E3E5CD0102654EC655F17CB5CAB24E210000
39E5F1D1C1C5D5F5C5D5210E0039CD0455CD1253C5D521140039CDBB55E5
210E0039E5CDBB5523D1CDC0552B6E2600E3E5CDC655F1CDEE54CD4353E1
CD0C55C3504ED1C1C5D5F1F1C9210200396E2600113000B7ED52C9210200
396E2600E5CD9C52F17CB5CAE84E210200396E2600113000B7ED52C3FD4E
210200396E2600E5CD8652F1113700B7ED52C3FD4EC9210200396E260011
FE00CD8655113000CD1955C9210200396E2600113000EBCD4F557CB5CA33
4F210200396E2600113700EBCD5555C9F1E1E5F56E2600E5CDBC52F17CB5
CA554F21020039E5CDBB5523D1CDC055C3344FF1E1E5F5C9F1E1D1D5E5F5
1ABE2007B70143654F2804231318F55F16006E62AFED52C9F1D1D5F52100
001AB7C8231318F9F1E1D1C1C5D5E5F578B128151ABE2008B7280E23130B
18F05F16006E62AFED52C9676FC901C9AA4FF1D1D5F5DDE5FDE521040019
22A64FFD21BF302ABF30180EFD22A84FDDE5FDE1DD6E00DD6601E5DDE17C
B52837DD6E02DD6603ED5BA64FB7ED5238DC010400ED42300EDD6E00DD66
01FD7500FD7401181109DD7502DD7403444DDD09DD7302DD7203181E2AA6
4FE5CD3E50C17CA53C200821230022634B1814E5DDE1DD7102DD7003DDE5
CDD351E11104001911676FFDE1DDE1C9F1D1D5F57AB32827210000390100
04ED42ED4BBB30ED42380CED523808C5EB0922BB30E1C921230022634B21
FFFFC92ABB30C901027350F1D1D5F5DDE5FDE5CD8350FDE1DDE1C9215C51
CD6151DD21FCFFDD19CD0852FD21BF30180DFD227150FD6E00FD6601E5FD
E1FD5E00FD56017AB32807DDE5E1ED5230E2CD4151DDE5C1FD7100FD7001
FDE521BF30D1B7ED522827FD6E02FD660319B7ED42201BCD4E51FD7502FD
7403DD6E00DD6601FD7500FD7401FDE5DDE11804FD227150DD4E00DD4601
C5FDE178B1281BDDE5E1DD5E02DD560319B7ED42200CCD4E51DD7502DD74
03CD4151FD2A7150DDE5E1DD5E02DD560319ED4BBB30AFED42C0FD7700FD
7701DD22BB30C9FD6E00FD6601DD7500DD7401C9FD6E02FD6603DD5E02DD
560319C94652454503DDE5C5D5E5EB2B462B4E2B2BCD7651E1D1C1010273
51DDE1C9EBDD21C130DD6E00DD66017CB52808E5DDE1ED52C838EEF121C0
513E63EF595021CD513E63EF0E0D3E02EFE13E0AEF21B2513E0AEF21FFFF
E5CDBA463A2042414420424C4F434B20582778787878272C204C454E2058
2778787878270DFDE5E5D5FD21C1301803D5FDE1FD5E00FD56017AB32809
DDE5E1ED52281230EADD7300DD7201DDE5E1FD7500FD7401B4D1E1FDE1C9
FDE5E5D5FD21C1301803D5FDE1FD5E00FD56017AB328E4DDE5E1ED5238DD
20EADD6E00DD660118CC210200396E2600E5CD9C52F17CB5C26F52210200
39E5210400396E2600E5CD8652F1D17D12114100EBCD4F557CB5CA6F5221
0200396E2600114600EBCD5555C9F1D1D501027352F5D5D5CDD052C1D1EB
7AB3C87DF62026006FC9F1D1D5F5D5D5CDAC52C1D1EB7AB3C87DEE202600
6FC9F1E1E5F57D210000FE30D8FE3AD023C9F1E1E5F57D210000FE61D8FE
7BD023C9F1E1E5F57D210100FE20C82DFE09D8FE0ED02CC9F1E1E5F57D21
0000FE41D8FE5BD023C9CD1455CD9654CAFB54CDC854F5CD9B54CDE053F1
FCD054C3FB54CD1455CD9654CAFB54CD9B54F5CDE053F1E1D1C1FCD054E9
CD1455C5D5E5210200390100005058E57E23B623B623B6E1CA3D53AFCD87
54E3DC6754AFCD7954E3C32153F1F1F1C3FB54CD1455CD6754C3FB54CD60
53C2FF542BC3FF54CD6053DAFF542BC3FF542104003923232378EE80477E
EE80B8C281532B010273537EB9C281532B7EBAC281532B7EBB210100C9CD
14557BA65F237AA6572379A64F2378A647C3FB54CD1455CD965428132323
23CB1E2BCB1E2BCB1E2BCB1ECDC65318E8E1D1C1E97B2F5F7A2F57792F4F
782F47C97BD6015F7ADE005779DE004F78DE0047C9CD9654210100C02BC9
DDE5F5F5DD210000DD393BE57EDD77003600237EDD77013600237EDD7702
3600237EDD770336002E0178E680C21B54CB13CB12CB11CB102CC30954DD
75FFDDE5E1CDB654E5CD4F54E1CA2F54D23654CD6154CDD05437E3CD7954
DD35FFCA4854E3AFCD8754C32454F133F1F1DDE1C92323237EB8C02B7EB9
C02B7EBAC02B7EBBC9CDD054C36754E57E835F237E8A57237E894F010273
54237E8847E1C9E5CB1623CB1623CB1623CB16E1C9232323CB1E2BCB1E2B
CB1E2BCB1EC978B1B2B3C978B7F5FCD054CDC854F2B454CDB654CDD054CD
B654F1EE80C9F1C9E57E735F237E7257237E714F237E7047E1C9E5232323
7EB7E1C97BB7200AB22007B1200478FE80C8E5AF6F9B5F7D9A577D994F7D
9847E1C9CDF6547AB7F00BC9EB010000C9E1F1F1E9F1D1C1F5C95E235623
4E2346C973237223712370C921040039C9CD3F55C82BC9CD3F55C02BC9CD
3F55D02BC9EBCD3F55D82BC9CD3F55C8D82BC9CD3F55D82BC97CEE80677A
EE80BC20027BBD210100C9CD6255D02BC9CD6255C8D82BC9CD6255D82BC9
7ABCC269557BBD210100C9444DAF6F673E0170735510CB23CB123001093D
C829C37455EBAFED52C97DA36F7CA267C97DB36F7CB267C9EB7BB2C8291B
18F9EB7AB3C8CB3CCB1D1B18F6CDAC5523C97C2F677D2F6FC97CB5210000
C023C97E23666FC97D12137C12C9F1E1F5E9C1EB39F9EBC5C97E23666FE5
DDE1C97E23666FE5FDE1C902025236


********** UUENCODE **********

/* Only one of the following should be set to TRUE (1); others to 0 */
#define UNIX  0
#define VMS   0
#define TRS80 1

#ifndef lint
static char sccsid | = "@(#)uuencode.c    5.1 (Berkeley) 7/2/83";
#endif

#if TRS80
#define perror(X)  fprintf(stderr,"Unable to open file: %s\n", X);
/* perror: "Prints a short message to stderr describing the last error
   encountered during a call to the operating system." */
#endif

/*
 * uuencode input output
 *
 * Encode a file so it can be mailed to a remote system.
 */
#include <stdio.h>
#if UNIX | VMS
#include <types.h>
#include <stat.h>
#endif

/* ENC is the basic 1 character encoding function to make a char printing */
#define ENC(c) (((c) & 077) + ' ')

main(argc, argv)
char **argv;
{
    FILE *in,*out;
#if UNIX | VMS
    struct stat sbuf;
#endif
    int mode;

    if (argc != 3) {
        fprintf(stderr,"Usage: uuencode infile outfile\n");
        exit(2);
    }

    /* set input file */
    if ((in = fopen(argv 1|, "r")) == NULL) {
        perror(argv 1|);
        exit(1);
    }

    /* set output file */
    if ((out = fopen(argv 2|, "w")) == NULL) {
        perror(argv 2|);
        exit(1);
    }

    /* figure out the input file mode */
#if UNIX | VMS
    fstat(fileno(in), &sbuf);
    mode = sbuf.st_mode & 0777;
#endif
#if TRS80
    mode = 0644 ; /* the standard value */
#endif
    fprintf(out,"begin %o %s\n", mode, argv 1|);

    encode(in, out);

    fprintf(out,"end\n");
    exit(0);
}

/*
 * copy from in to out, encoding as you go along.
 */
encode(in, out)
FILE *in;
FILE *out;
{
    char buf 80|;
    int i, n;

    for (;;) {
        /* 1 (up to) 45 character line */
        n = fr(in, buf, 45);
        putc(ENC(n), out);

        for (i=0; i<n; i += 3)
            outdec(&buf i|, out);

        putc('\n', out);
        if (n <= 0)
            break;
    }
}

/*
 * output one group of 3 bytes, pointed at by p, on file f.
 */
outdec(p, f)
char *p;
FILE *f;
{
    int c1, c2, c3, c4;

    c1 = *p >> 2;
    c2 = (*p << 4) & 060 | (p 1| >> 4) & 017;
    c3 = (p 1| << 2) & 074 | (p 2| >> 6) & 03;
    c4 = p 2| & 077;
    putc(ENC(c1), f);
    putc(ENC(c2), f);
    putc(ENC(c3), f);
    putc(ENC(c4), f);
}

/* fr: like read but stdio */
int
fr(fd, buf, cnt)
FILE *fd;
char *buf;
int cnt;
{
    int c, i;

    for (i=0; i<cnt; i++) {
        c = getc(fd);
        if (c == EOF)
            return(i);
        buf i| = c;
    }
    return (cnt);
}


UUENCODE/CMD
---------- Cut Here ----------
01950030C30235402823297575656E636F64652E6320202020352E312028
4265726B656C65792920372F322F383300656E640D00626567696E20256F
2025730D00556E61626C6520746F206F70656E2066696C653A2025730D00
7700556E61626C6520746F206F70656E2066696C653A2025730D00720055
736167653A207575656E636F646520696E66696C65206F757466696C650D
00013297300000000000007949BF30C330C3300000000000000000000000
0000000000000000000000000000002A4B49002A444F000102CD30C30235
F5F5F521080039CD5349E5210300D1CDC4487CB5CAFC30217330E521A330
E5CDA036F1F1210200E5CD663FF121040039E5217130E5210E0039CD5349
E5210100110200CD0549D119CD5349E5CD4640F1F1D1CD5849E5210000D1
CDBE487CB5CA5F31210A0039CD5349E5210100110200CD0549D119CD5349
E5215830E521A330E5CDA036F1F1F1210100E5CD663FF121020039E52156
30E5210E0039CD5349E5210200110200CD0549D119CD5349E5CD4640F1F1
D1CD5849E5210000D1CDBE487CB5CAC231210A0039CD5349E52102001102
00CD0549D119CD5349E5213D30E521A330E5CDA036F1F1F1210100E5CD66
3FF121000039E521A401D1CD580102CD3149210A0039CD5349E521010011
0200CD0549D119CD5349E521020039CD5349E5213030E521080039CD5349
E5CDA036F1F1F1F121020039CD5349E521060039CD5349E5CD3232F1F121
2B30E521040039CD5349E5CDA036F1F1210000E5CD663FF1F1F1F1C911AC
FFCD6249C33B3221000039E5212D00E521080039E5215C0039CD5349E5CD
6F34F1F1F1D1CD584921580039CD5349E521020039CD5349E5213F00D1CD
1E49E5212000D119E5CDB142F1F121020039E5210000D1CD5849C39F3221
020039E5CD5349E5210300D119D1CD584921020039CD5349E521020039CD
5349D1CDDE487CB5CAD63221580039CD5349E521060039E521060039CD53
49D1190102CD32E5CD0833F1F1C38D3221580039CD5349E5210D00E5CDB1
42F1F121000039CD5349E5210000D1CDD7487CB5CAFE32C30133C33B3211
5400CD6249C9F5F5F5F521060039E5210C0039CD53496E2600E5210200D1
CD3449D1CD584921040039E5210C0039CD53496E2600E5210400D1CD2C49
E5213000D1CD1E49E5210E0039CD5349E5210100D1196E2600E5210400D1
CD3449E5210F00D1CD1E49D1CD2549D1CD584921020039E5210C0039CD53
49E5210100D1196E2600E5210200D1CD2C49E5213C00D1CD1E49E5210E00
39CD5349E5210200D1196E2600E5210600D1CD3449E5210300D1CD1E49D1
CD2549D1CD584921000039E5210C0039CD5349E52102000102CD33D1196E
2600E5213F00D1CD1E49D1CD5849210C0039CD5349E521080039CD5349E5
213F00D1CD1E49E5212000D119E5CDB142F1F1210C0039CD5349E5210600
39CD5349E5213F00D1CD1E49E5212000D119E5CDB142F1F1210C0039CD53
49E521040039CD5349E5213F00D1CD1E49E5212000D119E5CDB142F1F121
0C0039CD5349E521020039CD5349E5213F00D1CD1E49E5212000D119E5CD
B142F1F1F1F1F1F1C9F5F521000039E5210000D1CD5849C38E3421000039
E5CD534923D1CD58492B21000039CD5349E5210C0039CD5349D1CDDE487C
B5CAF83421020039E521080039CD5349E5CD2842F1D1CD584921020039CD
5349E521FFFFD1CDBE487CB5CA0102CD34D93421000039CD5349F1F1C921
080039CD5349E521020039CD5349D119E521040039CD5349D17D12C38034
210A0039CD5349F1F1C9ED73C930ED43C7303E6421000045EF22CB30EB21
FFF3ED52EB300D3E65EFFD7E1BFE60200321FFF3F9CD3B35CDD335CDD030
210000E5CD663F2A9D302293302295302AC730010000ED5B9330CD953628
10CD8835280B30F4D50C0600CD533620EB0600C5DDE1CB21EB0922933022
9530CB3941D12B722B7310F9C1E5DDE5C5C9C3B844C3EF43DD2152367EFE
3C2010DDCB0046DDCB00C6207DED539F301826FE3E2010DDCB004EDDCB00
CE2069ED53A1301812FE2337C0DDCB0056DDCB00D62055ED53A33023CD95
3606000102CD35CD5336C83FC9219F30114C36CDEB3521A130114E36CDEB
3521A330114E36AF4E772346770AFE3E200B214C367DBB28040311503621
9B30CBC6E5D5C5CD4640C1C17CB5E1CB86C0212536FD2139363E0AEF21FF
FFE5CD693F5374642066696C65206F70656E206572726F720D416D626967
756F75732072656469726563740D52005700410000C50E007EFE222804FE
272002234F78B7060028037912137EFE203822FE2130040C0D281A0C0D28
1004050600200AB9280CFE5C200347180212132318DA23AF1213C13E20BE
D83E0DBEC82318F5F5DDE5FDE521040039E5210A0039D1CD584921040039
E5CD53492323D1CD5849E521FFFF29D119CD5349221637014BCD3621B142
22183721040039E5CD53492323D1CD5849E521FFFF29D119CD5349E5DDE1
21040039E5DDE5E1E5CDA037F1F1E5FDE1FDE5E1E521040039CD69492102
0039CD7149E1F1F1F1C901026B3730420030620030580030780030313233
343536373839616263646566003031323334353637383941424344454600
20002B002D0000F1E1E5F5221C37210000221A372A1C376E26007CB5CAE8
3E2A1C376E2600112500CDC4487CB5CAEE372A1837E52A1637E3E52A1C37
23221C372B6E2600E3E5CD5E49F1F12A1A3723221A37C3E53E2100002233
37223137222F37222D37222B372A1C3723221C376E2600E5D1212B00CDFA
48C21E38210100222B37C30038212D00CDFA48C23038210100222D37C300
38212000CDFA48C24238210100222F37C30038212300CDFA48C254382101
00223137C30038213000CDFA48C26638210100223337C300382A1C376E26
01026B3800112A00CDBE487CB5CABC38F1C1E1E5C5F5E5CD53492323D1CD
5849E521FFFF29D119CD53492222372A2237110000EBCDDE487CB5CAB238
2A2237CD3F49222237210100222D372A1C3723221C37C3F4382100002222
372A1C376E2600E5CD7546F17CB5CAF4382A2237110A00CD0549E52A1C37
23221C372B6E2600E5CD4F3FF1D119222237C3C2382A1C376E2600112E00
CDBE487CB5CA7C392A1C3723221C376E2600112A00CDBE487CB5CA4139F1
C1E1E5C5F5E5CD53492323D1CD5849E521FFFF29D119CD53492224372A1C
3723221C37C379392100002224372A1C376E2600E5CD7546F17CB5CA7939
2A2437110A00CD0549E52A1C3723221C372B6E2601026B3900E5CD4F3FF1
D119222437C34739C3823921FFFF2224372100002229372A1C376E2600E5
D1216C00CDFA48C2A239210100222937C3AB39216800CDFA48C2B2392A1C
3723221C37210000222737219F372235372A1C3723221C372B6E26007D32
2637E5D1216400CDFA48C2DB39C3E439217500CDFA48C2ED392105002267
37C3383A216F00CDFA48C2FF39210400226737C3383A215800CDFA48C20B
3AC3143A217800CDFA48C21D3A210800226737C3383A214200CDFA48C229
3AC3323A216200CDFA48C2EB3C2101002267372A2437110000EBCDDE487C
B5CA4D3A2101002224372A29377CB5CA7B3AF1C1E1E5C5F5E5CD53491104
0019D1CD5849E521FFFF01026B3A2929D119CDA948215F37CDB148C3D53A
3A26376F2600116400CDBE487CB5CAB23AF1C1E1E5C5F5E5CD53492323D1
CD5849E521FFFF29D119CD5349CD9348215F37CDB148C3D53AF1C1E1E5C5
F5E5CD53492323D1CD5849E521FFFF29D119CD5349CD9B48215F37CDB148
3A26376F2600116400CDBE487CB5CA493B215F37CDA948C5D50100001100
00CDFB467CB5CA2A3B219D37223537215F37CDA948C5D5010080110000CD
F1467CB5CA273B215F37CDA948CD7548215F37CDB148C3493B2A2B377CB5
CA3B3B219B37223537C3493B2A2F377CB5CA493B2199372235372A33377C
B5CA803BF521000039E52A2237E52A3537E5CDDD43F1D1CD1949D1CD5849
01026B3BE1E5E52A2437D1CDD0487CB5CA7F3BE1E5222437F13A26376F26
00115800CDBE487CB5CA973B218837C39D3B217737C39D3B226337213737
11280019221E37222037215F37CDA948CD7C477CB5CA4B3C215F37CDA948
C5D5010000110100CD2A47EB226937215F37CDA948C5D5010000110100CD
3F47C5D5010080110000CD5E47CD2A47215F37CDB1482A1E372B221E37E5
2A6337E5215F37CDA948C5D52A6737CD9348CD8546C5D5010000110200CD
B746C5D52A6937CD9348CDE846EBD1196E2600D17D12215F37CDA948C5D5
2A6737CD9348CD9F46215F37CDB148C3AD3B2A1E37E52A2037D1CD1949E5
2A2437D1192227372A31377CB5CA723C2A1E37E501026B3C2A2037D1CDC4
487CB5CAE83C3A26376F2600E5D1216F00CDFA48C2A03C2A2737110100EB
CDDE487CB5CA9D3C210100222737C3E83C217800CDFA48C2B23C21743722
3537C3E83C215800CDFA48C2C43C217137223537C3E83C216200CDFA48C2
D63C216E37223537C3E83C214200CDFA48C2E83C216B37223537C3E83CC3
D53D216300CDFA48C2263D213737E521060039CD5349E5CD53492323D1CD
5849E521FFFF29D119CD5349D17D12213737221E372A1E3723222037C3D5
3D217300CDFA48C2AF3DF1C1E1E5C5F5E5CD53492323D1CD5849E521FFFF
29D119CD5349221E372A2437110000EBCDDE487CB5CA613D21FF7F222437
210000226537C3713D2A01026B3D6537232265372A1E3723221E372B6E26
007CB5CA8C3D2A6537E52A2437D1CDDE487CB5CA943DC36A3D2A1E372B22
1E372220372A1E37E52A6537D1CD1949221E37C3D53D210000CDFA48C2C2
3D2A1C372B221C37C3D53D212637221E372220372A203723222037C3D53D
3A26376F26007CB5CAE53EF521000039E52A2237E52A2037E52A1E37D1CD
1949D1CD1949E52A2737110000EBCDDE487CB5CA0F3E210000C3153E2A27
37C3153ED1CD1949E52A3537E5CDDD43F1D1CD1949D1CD58492A2D37CD4B
497CB5CA593E21000039E5CD53492BD1CD5849110000EBCDCA487CB5CA59
3E212000E5CD0A3FF1C3353E2A35376E26007CB5CA773E2A353723223537
01026B3E2B6E2600E5CD0A3FF1C3593E2A27372B222737110000EBCDCA48
7CB5CA953E213000E5CD0A3FF1C3773E2A1E37E52A2037D1CDF4487CB5CA
B83E2A1E3723221E372B6E2600E5CD0A3FF1C3953E2A2D377CB5CAE43E21
000039E5CD53492BD1CD5849110000EBCDCA487CB5CAE43E212000E5CD0A
3FF1C3C03EF1C3AD372A16377CB5CAF83E2A1637E5CD0942F17CB5CA033F
21FFFFC3093F2A1A37C3093FC92A1837E52A1637E3E5210600396E2600E3
E5CD5E49F1F12A1A3723221A37C9F1E1E5F5E521060039CD5349D1CDDE48
7CB5CA453FF1E1E5F5C34E3FF1C1E1E5C5F5C34E3FC9210200396E260011
3000B7ED52C9F1E1E5F511300019C9CD723FF1E101256B3FE5F5ED7BC930
C9219F30011000415E2356237BB2280AC5E5EBCB5ECCB13FE1C110ECC901
6B903F21FFFF228E3FF1E1E5F5DDE5E5DDE1CDCD43284DCB5E2043AFDD77
00DD77011802DDE5E5DDE12B2BE52323010000ED438E3F7E7123CB7E281E
EBDD6E04DD6605E5CB6F200E3E3CEF2809CD894321FFFF228E3FCD8235C1
CD8235E12A8E3FDDE1C9211000225A4318F201020140F1E1C1C5E5F5CD7E
41CDDD41204DED53FF3FCD48437CB5284622FD3FCD53497CB5283C3AFF3F
5FA628397EE6FCB377DD2AFD3F23CB7ECAE740EB210300197E23666FC320
41CD9B41CD7E41281AE5DDE1F1E1C1C5E5F5CDDD412818214300DD211000
DD212500DD214400225A43210000C375413A8235FEC9201FE5D5DDE5E13A
BF30FE2A119F30280311A530ED5211C73019CD5349C1D11815E5D5DDE521
2400E5CD8535C1DDE1C1D17CB5CA9341360023368023CDD6437123EBCDB0
411B1A13B7FA034121000045CB6F3E3B28013DEF280EFE2A280A626B2B34
35C489431863D5E1CB7E201CE5FDE12B2B360701080009CD5349014B49ED
42204BCDCD43CBE6010201411844212100193A8235FEC92812210001DDE5
D5E5CD8535C1D1DDE17CB52867D5FDE1FD7503FD7404E5FDCB01FEFDCBFF
5628123E41EF280DFE1C2809CD8943CD8235C11841C1CDCD437E5FE61F77
FDCB007E281DE603FE032004FDCB01F67EAB2BB677E640280AAFFD770CFD
770DFD7708DDE5E1DD2AF93FFD2AFB3FC9DD22F93FFD22FB3FC9DDE51B1B
1BD5CD8235C1DDE1210000CDD64318DA01100041219F307E23B628052310
F8AFC9042B70C90600E5D57EFE21381EFE613806FE7B3002EE200405200B
FE2F2806FE2E20033E2F0412231318DD3E0312D1E1C90A03FE3F282311F8
41D5F6201E01FE72C81E62FE77C81E26FE61C9C00AB7C8F620FE2BC00102
0142CBC3CBCBC90A5FC9DDE5CDC343DDE128137EE620280E112100CB5E28
021E03196E2600C9ED62C9DDE5CDC343DDE12839CB462835CB76202DCB7E
2060545DCB5E23C45349CB7EEB28283E03EF284ACDA54277EBFE1C2003AF
1805CD89433E20F640B6E67F7721FFFFC9211000225A4318F43E03EF2805
B728F818D32BCB46232808D664FE1C28C7C6644F3A9B30AEE610792005F5
3E02EFF16F2600C9CBBECDA5427E18F4112100CB5E28021E03EB19C9F1C1
E1E5C5F5DDE5E5DDE1CDCD432852CB4E284ECB76204A545DE5DDE13ABF30
FE2A2802CB5E23C45349EBC579FE092007DD7EFFE60F202F3E04EFF5DD34
FEF1EBE1200B7DD60D2003DD77FEDDE1C9EB015B0143CBF6CBEE112100CB
5E28021E031977CD894321FFFF18E50E203E04EF20D2CD264320F418CBDD
34FED5DD5EFEDD7EFFE60F3C4F0608AFCB2317B93802911C10F6B7D1C9F1
E1E5F57DB4111000BB300629119F3019C9210000C901915C430004020404
040604080402040404040F100404100404040418191A1B041D1E18262722
23232526271919434343E56F2600E5CDAB43F1225A437D219B304ECB41E1
C8CB712802F640F6804F3E1AEFC9F1E1E5F57DFE2D2E402600D0215C4385
6F8C95676E2600C9F1E1D1DDE1DDE5D5E5F5DD6E00DD66017CB5C9DD7500
DD7401C9F1D1D5F52100001AB7C8231318F901C9EF43F1D1D5F5DDE5FDE5
2104001922EB43FD2197302A9730180EFD22ED43DDE5FDE1DD6E00DD6601
E5DDE17CB52837DD6E02DD6603ED5BEB43B7ED5238DC010400ED42300EDD
6E00DD6601FD7500FD7401181109DD7502DD7403444DDD09DD7302DD7203
181E2AEB43E5CD8344C17CA53C2008212300225A431814E5DDE1DD7102DD
7003DDE5CD1846E11104001911676FFDE1DDE1C9F1D1D5F57AB328272100
0039010004ED42ED4B9330ED42380CED523808C5EB09229330E1C9212300
225A4321FFFFC92A9330C90102B844F1D1D5F5DDE5FDE5CDC844FDE1DDE1
C921A145CDA645DD21FCFFDD19CD4D46FD219730180DFD22B644FD6E00FD
6601E5FDE1FD5E00FD56017AB32807DDE5E1ED5230E2CD8645DDE5C1FD71
00FD7001FDE5219730D1B7ED522827FD6E02FD660319B7ED42201BCD9345
FD7502FD7403DD6E00DD6601FD7500FD7401FDE5DDE11804FD22B644DD4E
00DD4601C5FDE178B1281BDDE5E1DD5E02DD560319B7ED42200CCD9345DD
7502DD7403CD8645FD2AB644DDE5E1DD5E02DD560319ED4B9330AFED42C0
FD7700FD7701DD229330C9FD6E00FD6601DD7500DD7401C9FD6E02FD6603
DD5E02DD560319C94652454503DDE5C5D5E5EB2B462B4E2B2BCDBB45E1D1
C10102B845DDE1C9EBDD219930DD6E00DD66017CB52808E5DDE1ED52C838
EEF12105463E63EF59502112463E63EF0E0D3E02EFE13E0AEF21F7453E0A
EF21FFFFE5CD693F3A2042414420424C4F434B20582778787878272C204C
454E20582778787878270DFDE5E5D5FD2199301803D5FDE1FD5E00FD5601
7AB32809DDE5E1ED52281230EADD7300DD7201DDE5E1FD7500FD7401B4D1
E1FDE1C9FDE5E5D5FD2199301803D5FDE1FD5E00FD56017AB328E4DDE5E1
ED5238DD20EADD6E00DD660118CCF1E1E5F57D210000FE30D8FE3AD023C9
CDB948CD3B48CAA048CD6D48F5CD4048CD8547F1FC7548C3A048CDB948CD
3B48CAA048CD4048F5CD8547F1E1D1C1FC7548E9CD0102B846B948C5D5E5
210200390100005058E57E23B623B623B6E1CAE246AFCD2C48E3DC0C48AF
CD1E48E3C3C646F1F1F1C3A048CDB948CD0C48C3A048CD0547C2A4482BC3
A448CD0547DAA4482BC3A4482104003923232378EE80477EEE80B8C22647
2B7EB9C226472B7EBAC226472B7EBB210100C9CDB9487BA65F237AA65723
79A64F2378A647C3A048CDB948CD3B482813232323CB1E2BCB1E2BCB1E2B
CB1ECD6B4718E8E1D1C1E97B2F5F7A2F57792F4F782F47C97BD6015F7ADE
005779DE004F78DE0047C9CD3B48210100C02BC9DDE5F5F5DD210000DD39
3BE57EDD77003600237EDD77013600237EDD77023600237EDD770336002E
0178E680C2C047CB13CB120102B847CB11CB102CC3AE47DD75FFDDE5E1CD
5B48E5CDF447E1CAD447D2DB47CD0648CD754837E3CD1E48DD35FFCAED47
E3AFCD2C48C3C947F133F1F1DDE1C92323237EB8C02B7EB9C02B7EBAC02B
7EBBC9CD7548C30C48E57E835F237E8A57237E894F237E8847E1C9E5CB16
23CB1623CB1623CB16E1C9232323CB1E2BCB1E2BCB1E2BCB1EC978B1B2B3
C978B7F5FC7548CD6D48F25948CD5B48CD7548CD5B48F1EE80C9F1C9E57E
735F237E7257237E714F237E7047E1C9E52323237EB7E1C97BB7200AB220
07B1200478FE80C8E5AF6F9B5F7D9A577D994F7D9847E1C9CD9B487AB7F0
0BC9EB010000C9E1F1F1E9F1D1C1F5C95E2356234E2346C9732372237123
7001C3B848C921040039C9CDE448C82BC9CDE448C02BC9CDE448D02BC9EB
CDE448D82BC9CDE448C8D82BC9CDE448D82BC97CEE80677AEE80BC20027B
BD210100C9CDFA48D82BC97ABCC201497BBD210100C9444DAF6F673E10CB
23CB123001093DC829C30C49EBAFED52C97DA36F7CA267C97DB36F7CB267
C9EB7BB2C8291B18F9EB7AB3C8CB3CCB1D1B18F6CD444923C97C2F677D2F
6FC97CB5210000C023C97E23666FC97D12137C12C9F1E1F5E9C1EB39F9EB
C5C97E23666FE5DDE1C97E23666FE5FDE1C902020235