$ od -c -N 50000 [Indigo]<AltoSource>BCPLSOURCES.DM!1
0000000  377  \0  \0   B   C   P   L   X  \0 373 226   W 347   j  \0  \0
0000020  376 001  \0 341 266   /   /       B   C   P   L   X       -    
0000040    D   e   c   l   a   r   a   t   i   o   n   s       f   o   r
0000060        t   h   e       B   C   P   L       C   o   m   p   i   l
0000100    e   r   ,       u   s   e   d       t   h   r   o   u   g   h
0000120    o   u   t       t   h   e       C   o   m   p   i   l   e   r
0000140    .  \r   /   /       C   o   p   y   r   i   g   h   t       X
0000160    e   r   o   x       C   o   r   p   o   r   a   t   i   o   n
0000200        1   9   8   0  \r   /   /       S   w   i   n   e   h   a
0000220    r   t   ,       5   -   9   -   7   7       -   -       /   S
0000240        s   w   i   t   c   h  \r   /   /       p   a   r   a   m
0000260    e   t   e   r   i   z   e       F   i   l   e   L   e   n   g
0000300    t   h   ,       e   t   c   .       v   i   a       s   t   a
0000320    t   i   c   s       -   -       S   w   i   n   e   h   a   r
0000340    t   ,       6       M   a   y       7   7  \r   /   /       i
0000360    n   c   r   e   a   s   e       F   i   l   e   N   a   m   e
0000400    L   e   n   g   t   h       t   o       4   0       -       E
0000420    d   i   t       b 376 001  \0 343 315   y       B   o   g   g
0000440    s       2       A   p   r       7   7  \r   /   /       p   u
0000460    l   l       S   W   A   l   t   o   c   .   .   i   m   e    
0000500    <   S   W   I   N   E   H   A   R   T   >   B   C   P   L   X
0000520    .   ;   2                   2   8   -   M   A   R   -   7   5
0000540        1   3   :   1   5   :   3   4                   E   D   I
0000560    T       B   Y       S   W   I   N   E   H   A   R   T  \r  \r
0000600    /   /       l   a   s   t       m   o   d   i   f   i   e   d
0000620        b   y       B   u   t   t   e   r   f   i   e   l   d   ,
0000640        J   a   n   u   a   r   y       8   ,       1   9   8   0
0000660            1   1   :   1   2       A   M  \r   /   /       -    
0000700    a   d   d       C   o   u   n   t   e   r   J   u   n   t   a
0000720        e   x   t   e   r   n   a   l       -       1   /   8   /
0000740    8   0  \r   /   /       -       S   W   U   n   s   i   g   n
0000760    e   d   C   o   m   p   a   r   e   s   ,       i   f       t
0001000    r   u   e   ,       e   n   a   b   l   e       u   l   s   ,
0001020        u   l   e   ,       u   g   e   , 376 001  \0   P   ~    
0001040    a   n   d       u   g   t       -       5   /   8  \r   /   /
0001060        -       S   W   S   t   a   c   k   S   t   r   i   n   g
0001100    s   ,       i   f       t   r   u   e   ,       p   u   t    
0001120    s   t   r   i   n   g   s       a   n   d       t   a   b   l
0001140    e   s       o   n       s   t   a   c   k       -       5   /
0001160    5  \r   /   /       -       a   d   d       U   s   c   ,    
0001200    M   y   F   r   a   m   e   ,       G   o   t   o   L   a   b
0001220    e   l   ,       C   l   o   s   e   C   O   M   C   M   ,    
0001240    R   e   s   t   a   r   t   B   C   P   L   ,  \r   /   /    
0001260            a   n   d       C   a   l   l   S   u   b   s   y   s
0001300        e   x   t   e   r   n   a   l   s       -       5   /   5
0001320   \r   /   /       -       S   W   N   o   E   x   t   E   x   t
0001340    s   ,       -   E       g   l   o   b   a   l       s   w   i
0001360    t   c   h   ,       a   l   l   o   w       E   X   T   E   R
0001400    N   A   L       &       E   X   T   E   R   N   A   L       -
0001420        2   /   1   2  \r   /   /       -       S   W   G   e 376
0001440  001  \0 374 027   t   L   I   N   E   s   ,       -   G       g
0001460    l   o   b   a   l       s   w   i   t   c   h   ,       d   o
0001500    n   '   T       "   L   I   N   E   "       g   e   t       f
0001520    i   l   e   s       -       2   /   2   /   7   9  \r  \r   m
0001540    a   n   i   f   e   s   t  \r       [           H   1   =   0
0001560    ;       H   2   =   1   ;       H   3   =   2   ;       H   4
0001600    =   3   ;       H   5   =   4   ;       H   6   =   5   ;    
0001620    H   7   =   6               /   /           S   e   l   e   c
0001640    t   o   r   s       f   o   r       t   r   e   e       n   o
0001660    d   e   s   .  \r                   N   A   M   E   L   E   N
0001700    G   T   H       =       2   4  \r   /   /   /   *   D   C   S
0001720    *       r   e   m   o   v   e       F   i   l   e   N   a   m
0001740    e   L   e   n   g   t   h   ,       e   t   c   .       -   -
0001760        S   e   e       E   x   t   e   r   n   a   l   s   ,    
0002000    b   e   l   o   w  \r                   G   e   t   n   a   m
0002020    e   N       =       2  \t   /   /           S   i   z   e    
0002040    o   f       a 376 001  \0   + 025       G   e   t   n   a   m
0002060    e   V       e   n   t   r   y  \r                   G   e   t
0002100    l   i   n   e   N       =       3  \t   /   /           S   i
0002120    z   e       o   f       a       G   e   t   l   i   n   e   V
0002140        e   n   t   r   y  \r                   M   a   x   E   r
0002160    r   o   r   s       =       6   4  \r           ]  \r  \r   e
0002200    x   t   e   r   n   a   l  \r       [  \r   /   /  \t   M   A
0002220    I   N   1  \r                   M   a   i   n   ;       O   v
0002240    e   r   l   a   y   ;       B   C   P   L   r   e   p   o   r
0002260    t   ;       W   r   i   t   e   L   i   n   e   ;       W   r
0002300    i   t   e   L   i   n   e   s   ;       H   e   l   p  \r    
0002320                A   b   o   r   t  \r                   V   e   r
0002340    s   i   o   n  \r                   S   o   u   r   c   e   N
0002360    a   m   e   ;       B   i   n   N   a   m   e   ;       O   u
0002400    t   p   u   t   N   a   m   e   ;       D   e   v   i   c   e
0002420    ;       S   o   u   r   c   e   D   e   v   i   c   e  \r   /
0002440    /   /   *   D   C   S   *       C 376 001  \0   7   @   o   m
0002460    p   i   l   e   d       D   e   c   l   a   r   a   t   i   o
0002500    n   s  \r                   D   I   C   T   N   a   m   e    
0002520    /   /   /   *       N   a   m   e       o   f       F   i   l
0002540    e       c   o   n   t   a   i   n   i   n   g       c   o   m
0002560    p   i   l   e   d       d   i   c   t   i   o   n   a   r   y
0002600   \r                   D   E   C   L   N   a   m   e       /   /
0002620    /   *       N   a   m   e       o   f       f   i   l   e    
0002640    c   o   n   t   a   i   n   i   n   g       c   o   m   p   i
0002660    l   e   d       d   e   c   l   .       l   e   x   e   m   e
0002700    s  \r  \r   /   /  \t   s   w   i   t   c   h   e   s       i
0002720    n       M   A   I   N   1  \r                   S   W   H   e
0002740    l   p   ;       S   W   D   e   b   u   g   ;       S   W   L
0002760    i   s   t   ;       S   W   L   e   x   T   r   a   c   e   ;
0003000        S   W   C   a   e   T   r   a   c   e   ;       S   W   S
0003020    a   e   T   r   a   c   e   ;       S   W   O   c   o   d   e
0003040    ;       S   W   C   o   d   e  \r                   S 376 001
0003060   \0 207 311   W   L   e   x   L   i   s   t   ;       S   W   C
0003100    a   e   L   i   s   t   ;       S   W   S   a   e   L   i   s
0003120    t   ;       S   W   T   r   n   L   i   s   t   ;       S   W
0003140    P   a   s   s   O   n   e   L   i   s   t   ;       S   W   P
0003160    a   s   s   T   w   o   L   i   s   t  \r                   S
0003200    W   L   i   s   t   C   o   d   e   ;       S   W   P   a   s
0003220    s   O   n   e   C   o   d   e   ;       S   W   P   a   s   s
0003240    T   w   o   C   o   d   e   ;       S   W   F   a   s   t   F
0003260    r   a   m   e  \r                   S   W   T   T   O   f   i
0003300    l   e   ;       S   W   T   T   O   t   y   p   e   ;       S
0003320    W   O   u   t   p   u   t   ;       S   W   W   a   i   t   ;
0003340        S   W   U   p   p   e   r   C   a   s   e   ;       S   W
0003360    L   o   w   e   r   C   a   s   e   ;       S   W   O   n   e
0003400    C   a   s   e  \r   /   /   /   *   D   C   S   *       F   i
0003420    l   e       N   a   m   e   ,       #       G   e   t       F
0003440    i   l   e       p   a   r   a   m   e   t   e   r   s  \r    
0003460              376 001  \0 264   m   F   i   l   e   N   a   m   e
0003500    L   e   n   g   t   h   ;       G   e   t   F   i   l   e   M
0003520    a   x   ;       G   e   t   n   a   m   e   T   ;       G   e
0003540    t   l   i   n   e   T   ;       D   v   e   c  \r            
0003560        S   W   G   e   t   L   I   N   E   s           /   /    
0003600    "   L   I   N   E   "       g   e   t       f   i   l   e   s
0003620        -       G   l   o   b   a   l       /   -   G       S   w
0003640    i   t   c   h       s   e   t   s       t   h   i   s       f
0003660    a   l   s   e  \r                   S   W   N   o   E   x   t
0003700    E   x   t   s           /   /       n   o       E   X   T   E
0003720    R   N   A   L       &       E   X   T   E   R   N   A   L    
0003740    -       G   l   o   b   a   l       /   -   E       S   w   i
0003760    t   c   h       s   e   t   s       t   h   i   s       f   a
0004000    l   s   e  \r                   S   W   S   t   a   c   k   S
0004020    t   r   i   n   g   s           /   /       i   f       t   r
0004040    u   e   ,       p   u   t       s   t   r   i   n   g   s    
0004060    a   n   d       t   a   b   l 376 001  \0   <   v   e   s    
0004100    o   n       s   t   a   c   k  \r                   S   W   U
0004120    n   s   i   g   n   e   d   C   o   m   p   a   r   e   s    
0004140        /   /       i   f       t   r   u   e   ,       e   n   a
0004160    b   l   e       u   l   t   ,       u   l   e   ,       u   g
0004200    e   ,       a   n   d       u   g   t  \r   /   /   /   *   D
0004220    C   S   *       C   o   m   p   i   l   e   d       D   e   c
0004240    l   a   r   a   t   i   o   n   s  \r                   S   W
0004260    P   r   e   p   a   r   e       /   /   /   *       G   l   o
0004300    b   a   l       /   G       S   w   i   t   c   h       -   -
0004320        c   o   m   p   i   l   e       D   e   c   l   a   r   a
0004340    t   i   o   n   s       t   h   i   s       r   u   n  \r    
0004360                S   W   U   s   e   D   e   c   l       /   /   /
0004400    *       L   o   c   a   l   /   G       -   -       t   h   e
0004420    s   e       f   i   l   e   s       c   o   n   t   a   i   n
0004440        c   o   m   p   i   l   e   d       d   e   c   l   s   .
0004460   \r                   S   W   A   l   t   o  \r     376 001  \0
0004500    b 037               S   W   N   o   x   i   o   s  \r   /   /
0004520    /   *   D   C   S   *       C   o   m   m   a   n   d       l
0004540    i   n   e       m   a   n   i   f   e   s   t   s  \r        
0004560            S   W   P   a   r   a   m   s   e   t  \r   /   /   /
0004600    *   D   C   S   *       S   y   m   b   o   l       T   a   b
0004620    l   e       C   o   m   p   a   c   t   i   o   n       N   C
0004640    G       P   a   s   s  \r                   R   e   a   l   S
0004660    y   m   C   o   u   n   t   ;       R   e   a   l   S   y   m
0004700    S   i   z   e  \r  \r   /   /  \t   f   u   n   c   t   i   o
0004720    n   s       a   n   d       r   o   u   t   i   n   e   s    
0004740    i   n       M   A   I   N   2  \r                   N   e   x
0004760    t   p   a   r   a   m   ;       N   e   x   t   s   t   a   t
0005000    i   c   ;       N   e   x   t   e   n   t   r   y  \r        
0005020            N   e   w   v   e   c   ;       Z   e   r   o   v   e
0005040    c   ;       I   n   i   t   F   r   e   e  \r                
0005060    L   i   s   t   1   ;       L   i   s   t   2   ;       L   i
0005100    s   t 376 001  \0   L   n   3   ;       L   i   s   t   4   ;
0005120        L   i   s   t   5   ;       L   i   s   t   6   ;       L
0005140    i   s   t   7  \r                   I   s   F   i   l   e  \r
0005160                    O   p   e   n   I   n   p   u   t   ;       O
0005200    p   e   n   T   e   m   p   ;       O   p   e   n   O   u   t
0005220    p   u   t  \r                   R   e   s   e   t   S   t   r
0005240    e   a   m   ;       R   e   n   a   m   e   T   e   m   p  \r
0005260                    C   l   o   s   e   I   n   p   u   t   ;    
0005300    C   l   o   s   e   T   e   m   p   ;       C   l   o   s   e
0005320    O   u   t   p   u   t  \r                   R   e   a   d   w
0005340    o   r   d   ;       R   e   a   d   a   d   d   r   ;       W
0005360    r   i   t   e   w   o   r   d   ;       W   r   i   t   e   a
0005400    d   d   r  \r                   W   W   ;       W   a   i   t
0005420    ;       W   r   i   t   e   S   ;       W   r   i   t   e   O
0005440    ;       W   r   i   t   e   N  \r                   I   n   i
0005460    t   B   C   P   L   ;   c   l   o   s   e   c   h   a   n   n
0005500    e   l   ;   s   y   s   c 376 001  \0   z 026   a   l   l   e
0005520    r   r   o   r  \r   /   /   /   *   D   C   S   *       p   r
0005540    e   c   o   m   p   i   l   e   d       d   e   c   l   a   r
0005560    a   t   i   o   n   s       s   t   u   f   f  \r            
0005600        R   e   a   d   S   e   q   u   e   n   t   i   a   l   ;
0005620        W   r   i   t   e   S   e   q   u   e   n   t   i   a   l
0005640    ;       R   e   a   d   W   o   r   d   ;       W   r   i   t
0005660    e   W   o   r   d   ;  \r                   L   e   n   g   t
0005700    h   ;       C   h   a   r  \r                   P   o   s   i
0005720    t   i   o   n   ;       R   e   p   o   s   i   t   i   o   n
0005740   \r                   R   e   a   d   c   h   ;       W   r   i
0005760    t   e   c   h  \r                   P   a   c   k   s   t   r
0006000    i   n   g   ;       U   n   p   a   c   k   s   t   r   i   n
0006020    g   ;       M   o   v   e   s   t   r   i   n   g  \r        
0006040            I   n   i   t   C   O   M   C   M   ;       R   e   a
0006060    d   C   O   M   C   M   ;       B   a   d   S   w   i   t   c
0006100    h   ;       E   r   r   o   r   ;       F   i 376 001  \0 307
0006120   \b   x   F   i   l   e   N   a   m   e   ;       f   i   l   e
0006140    n   a   m   e   ;       s   w  \r                   U   s   c
0006160    ;       M   y   F   r   a   m   e   ;       G   o   t   o   L
0006200    a   b   e   l   ;       C   l   o   s   e   C   O   M   C   M
0006220    ;       R   e   s   t   a   r   t   B   C   P   L   ;       C
0006240    a   l   l   S   u   b   s   y   s   ;       C   o   u   n   t
0006260    e   r   J   u   n   t   a  \r                   D   e   c   V
0006300    a   l   u   e   ;       O   c   t   V   a   l   u   e  \r    
0006320                F   r   e   e   M   a   x   ;       D   i   c   t
0006340    F   r   e   e   M   a   x   ;       T   r   e   e   F   r   e
0006360    e   M   a   x   ;       C   o   d   e   F   r   e   e   M   a
0006400    x   ;       F   r   e   e   l   i   s   t   P  \r            
0006420        R   e   p   o   r   t   c   o   u   n   t  \r            
0006440        I   s   t   r   e   a   m   ;       O   s   t   r   e   a
0006460    m  \r                   T   T   I   s   t   r   e   a   m   ;
0006500        T   T   O   s   t   r   e   a   m   ;       O   u   t   p
0006520    u 376 001  \0 250 330   t   S   t   r   e   a   m   ;       E
0006540    r   r   o   r   S   t   r   e   a   m  \r                   S
0006560    o   u   r   c   e   S   t   r   e   a   m   ;       S   o   u
0006600    r   c   e   L   e   n   g   t   h  \r                   L   e
0006620    x   S   t   r   e   a   m  \r                   D   i   c   t
0006640    i   o   n   a   r   y   ;       D   i   c   t   S   t   r   e
0006660    a   m   ;       D   i   c   t   L   e   n   g   t   h  \r    
0006700                T   r   e   e   ;       T   r   e   e   O   f   f
0006720    s   e   t  \r                   O   c   o   d   e   S   t   r
0006740    e   a   m  \r                   C   o   d   e   S   t   r   e
0006760    a   m  \r                   C   o   d   e   ;       P   C  \r
0007000                    G   e   t   n   a   m   e   V   ;       G   e
0007020    t   n   a   m   e   P  \r                   G   e   t   l   i
0007040    n   e   V   ;       G   e   t   l   i   n   e   P  \r        
0007060            C   u   r   f   i   l   e   ;       C   u   r   l   i
0007100    n   e  \r  \r   /   /       O   v   e   r   l   a   y       l
0007120    i   m   i   t       v 376 001  \0  \f 210   a   l   u   e   s
0007140   \r                   F   r   e   e   m   a   x   ;       D   i
0007160    c   t   F   r   e   e   L   i   m   i   t   ;       T   r   e
0007200    e   F   r   e   e   L   i   m   i   t   ;       C   o   d   e
0007220    F   r   e   e   L   i   m   i   t  \r  \r   /   /  \t   t   h
0007240    e       r   o   u   t   i   n   e   s       t   h   a   t    
0007260    d   o       t   h   e       w   o   r   k  \r                
0007300    R   e   a   d   S   o   u   r   c   e  \t  \t   /   /        
0007320    i   n       L   E   X  \r                   C   o   n   s   t
0007340    r   u   c   t   T   r   e   e  \t   /   /           i   n    
0007360    C   A   E  \r                   D   e   c   l   a   r   e   N
0007400    a   m   e   s  \t   /   /           i   n       S   A   E  \r
0007420                    T   r   a   n   s   l   a   t   e   T   r   e
0007440    e  \t   /   /           i   n       T   R   N 016  \r        
0007460            G   e   n   e   r   a   t   e   C   o   d   e  \t   /
0007500    /           i   n       C   G 016  \r           ]  \r  \r   m
0007520    a   n   i   f   e   s   t               / 376 001  \0   q 022
0007540    /           S   p   e   c   i   f   i   c   a   t   i   o   n
0007560        o   f       T   X   -   2       -   -       m   a   c   h
0007600    i   n   e       o   n       w   h   i   c   h       t   h   e
0007620        c   o   m   p   i   l   e   r       r   u   n   s   .  \r
0007640        [           B   i   t   s   p   e   r   b   y   t   e    
0007660            =               8  \r                   B   y   t   e
0007700    s   p   e   r   w   o   r   d           =               2  \r
0007720                    B   y   t   e   s   p   e   r   a   d   d   r
0007740            =               2  \r                   B   i   t   s
0007760    p   e   r   a   d   d   r       =       1   6  \r            
0010000        B   i   t   s   p   e   r   w   o   r   d               =
0010020            1   6  \r                   B   y   t   e   m   a   s
0010040    k       =       #   3   7   7  \r                   S   t   r
0010060    i   n   g   L   e   n   g   t   h           =       2   5   0
0010100   \r                   S   t   r   i   n   g   M   a   x   O   b
0010120   \t   =       2   5   0  \r                   W   o   r   d   S
0010140  376  \0   > 200   i   i   z   e   O   b  \t   =           1   6
0010160   \r                   B   y   t   e   S   i   z   e   O   b  \t
0010200    =               8  \r                   S   a   v   e   s   p
0010220    a   c   e   s   i   z   e       =       4  \r           ]  \r
0010240   \r  \r  \r 377  \0  \0   B   C   P   L   0   .   b   c   p   l
0010260   \0 373 226   W 351  \f  \0  \0 376 001  \0   ( 327   /   /    
0010300    B   C   P   L   0   .   b   c   p   l       -       B   C   P
0010320    L       M   a   i   n       p   r   o   g   r   a   m  \r   /
0010340    /       C   o   p   y   r   i   g   h   t       X   e   r   o
0010360    x       C   o   r   p   o   r   a   t   i   o   n       1   9
0010400    8   0  \r   /   /       S   w   i   n   e   h   a   r   t   ,
0010420        9       M   a   y       7   7   ,       a   l   w   a   y
0010440    s       t   y   p   e       d   e   s   t       f   i   l   e
0010460        r   e   p   o   r   t       l   i   n   e  \r   /   /    
0010500    S   w   i   n   e   h   a   r   t   ,       6       M   a   y
0010520        7   7   ,       f   i   l   e       l   e   n   g   t   h
0010540    s       -   >       s   t   a   t   i   c   s  \r   /   /    
0010560    C   a   l   l   e   d       f   r   o   m       I   n   .   .
0010600    C   P   L   <   S   W   I   N   E   H   A   R   T   >   B   C
0010620    P   L   0   .   ;   3                       4   -   A   P   R
0010640    -   7   5       0   7   :   2   9   :   4   9                
0010660    E   D   I   T       B   Y       S   W   I   N   E 376 001  \0
0010700  271   3   H   A   R   T  \r   /   /       p   u   l   l       S
0010720    W   A   l   t   o   c   .   .   .   i   m   e       <   S   W
0010740    I   N   E   H   A   R   T   >   B   C   P   L   0   .   ;   2
0010760                    2   8   -   M   A   R   -   7   5       1   3
0011000    :   1   8   :   1   5                   E   D   I   T       B
0011020    Y       S   W   I   N   E   H   A   R   T  \r  \r   /   /    
0011040    l   a   s   t       m   o   d   i   f   i   e   d       b   y
0011060        B   u   t   t   e   r   f   i   e   l   d   ,       M   a
0011100    y       9   ,       1   9   7   9           2   :   1   8    
0011120    P   M  \r   /   /       -       S   W   U   n   s   i   g   n
0011140    e   d   C   o   m   p   a   r   e   s   ,       O       (   O
0011160    z   )       g   l   o   b   a   l       s   w   i   t   c   h
0011200    ,       u   n   s   i   g   n   e   d       c   o   m   p   a
0011220    r   e   s       -       5   /   8  \r   /   /       -       S
0011240    W   S   t   a   c   k   S   t   r   i   n   g   s   ,       I
0011260        (   I   F   S   )       g   l   o   b   a   l       s   w
0011300    i   t 376 001  \0   6 205   c   h   ,       s   t   r   i   n
0011320    g   s       a   n   d       t   a   b   l   e   s       o   n
0011340        s   t   a   c   k       -       5   /   4  \r   /   /    
0011360    -       M   a   i   n   ,       a   l   l   o   w       m   u
0011400    l   t   i   p   l   e       s   o   u   r   c   e       f   i
0011420    l   e   s       -       5   /   3  \r   /   /       -       S
0011440    W   N   o   E   x   t   E   x   t   s   ,       M   a   i   n
0011460    ,       -   E       g   l   o   b   a   l       s   w   i   t
0011500    c   h   ,       a   l   l   o   w       E   X   T   E   R   N
0011520    A   L       &       E   X   T   E   R   N   A   L       -    
0011540    2   /   1   2  \r   /   /       -       S   W   G   e   t   L
0011560    I   N   E   s   ,       M   a   i   n   ,       a   d   d    
0011600    -   G       g   l   o   b   a   l       s   w   i   t   c   h
0011620    ,       d   o   n   '   T       "   L   I   N   E   "       g
0011640    e   t       f   i   l   e   s       -       2   /   2  \r   /
0011660    /       -       W   r   i   t   e   L   i   n   e   s   ,    
0011700    u   s   e       U   s   c 376 001  \0 005   W       t   o    
0011720    e   x   t   e   n   d       i   t   s       r   a   n   g   e
0011740        -       2   /   2   /   7   9  \r  \r   g   e   t       "
0011760    b   c   p   l   x   "  \r   g   e   t       "   b   c   p   l
0012000    i   o   x   "  \r  \r   /   /   e   x   t   e   r   n   a   l
0012020        s   t   r   e   a   m   v   e   c  \r  \r   s   t   a   t
0012040    i   c       [  \r   /   /   s   t   r   e   a   m   v   e   c
0012060        =       0  \r   V   e   r   s   i   o   n  \t  \t   =   n
0012100    i   l  \r   f   i   l   e   n   a   m   e  \t  \t   =   n   i
0012120    l  \r   s   w  \t  \t   =   n   i   l  \r   S   o   u   r   c
0012140    e   N   a   m   e  \t  \t   =   n   i   l  \r   B   i   n   N
0012160    a   m   e  \t  \t   =   n   i   l  \r   O   u   t   p   u   t
0012200    N   a   m   e  \t  \t   =   n   i   l  \r   S   o   u   r   c
0012220    e   D   e   v   i   c   e  \t  \t   =   n   i   l  \r   D   e
0012240    v   i   c   e  \t  \t   =   n   i   l  \r   /   /   /   *   D
0012260    C   S   *       P   r   e   c   o   m   p   i   l   e   d    
0012300    D   e   c   l   a   r   a   t   i   o   n   s 376 001  \0 376
0012320  371  \r   D   E   C   L   N   a   m   e       =       n   i   l
0012340        /   /   /   *       C   o   m   p   i   l   e   d       d
0012360    e   c   l   .       l   e   x   e   m   e   s       f   i   l
0012400    e  \r   D   I   C   T   N   a   m   e       =       n   i   l
0012420        /   /   /   *       C   o   m   p   i   l   e   d       d
0012440    i   c   t   i   o   n   a   r   y       f   i   l   e  \r   B
0012460    C   P   L   n   a   m   e  \t   =   n   i   l  \r   L   E   X
0012500    n   a   m   e  \t  \t   =   n   i   l  \r   C   A   E   n   a
0012520    m   e  \t  \t   =   n   i   l  \r   S   A   E   n   a   m   e
0012540   \t  \t   =   n   i   l  \r   T   R   N   n   a   m   e  \t  \t
0012560    =   n   i   l  \r   N   C   G   n   a   m   e  \t  \t   =   n
0012600    i   l  \r   F   r   e   e   M   a   x  \t  \t   =   n   i   l
0012620   \r   D   i   c   t   F   r   e   e   L   i   m   i   t  \t   =
0012640    n   i   l  \r   T   r   e   e   F   r   e   e   L   i   m   i
0012660    t  \t   =   n   i   l  \r   C   o   d   e   F   r   e   e   L
0012700    i   m   i   t  \t   =   n   i   l  \r   F   r   e   e   l   i
0012720    s 376 001  \0   R 202   t   P  \t  \t   =   n   i   l  \r   R
0012740    e   p   o   r   t   c   o   u   n   t  \t  \t   =   n   i   l
0012760   \r   I   s   t   r   e   a   m  \t  \t   =   n   i   l  \r   O
0013000    s   t   r   e   a   m  \t  \t   =   n   i   l  \r   T   T   I
0013020    s   t   r   e   a   m  \t  \t   =   n   i   l  \r   T   T   O
0013040    s   t   r   e   a   m  \t  \t   =   n   i   l  \r   O   u   t
0013060    p   u   t   S   t   r   e   a   m  \t  \t   =   n   i   l  \r
0013100    E   r   r   o   r   S   t   r   e   a   m  \t  \t   =   n   i
0013120    l  \r   S   o   u   r   c   e   S   t   r   e   a   m  \t  \t
0013140    =   n   i   l  \r   S   o   u   r   c   e   L   e   n   g   t
0013160    h  \t  \t   =   n   i   l  \r   L   e   x   S   t   r   e   a
0013200    m  \t  \t   =   n   i   l  \r   D   i   c   t   i   o   n   a
0013220    r   y  \t  \t   =   n   i   l  \r   D   i   c   t   S   t   r
0013240    e   a   m  \t  \t   =   n   i   l  \r   D   i   c   t   L   e
0013260    n   g   t   h  \t  \t   =   n   i   l  \r   /   /   /   *   D
0013300    C   S   *   2       S   y   m   b   o   l       T   a   b   l
0013320    e       C   o   m   p 376 001  \0 272   4   a   c   t   i   o
0013340    n       N   C   G       P   a   s   s  \r   R   e   a   l   S
0013360    y   m   C   o   u   n   t  \t  \t   =   0  \r   R   e   a   l
0013400    S   y   m   S   i   z   e  \t  \t   =   0  \r   T   r   e   e
0013420   \t  \t   =   n   i   l  \r   T   r   e   e   O   f   f   s   e
0013440    t  \t  \t   =   n   i   l  \r   O   c   o   d   e   S   t   r
0013460    e   a   m  \t  \t   =   n   i   l  \r   C   o   d   e   S   t
0013500    r   e   a   m  \t  \t   =   n   i   l  \r   C   o   d   e  \t
0013520   \t   =   n   i   l  \r   /   /   /   *   D   C   S   *       n
0013540    e   x   t       4       u   s   e   d       t   o       b   e
0013560        m   a   n   i   f   e   s   t  \r   F   i   l   e   N   a
0013600    m   e   L   e   n   g   t   h   =   n   i   l  \r   G   e   t
0013620    F   i   l   e   M   a   x  \t   =   n   i   l  \r   G   e   t
0013640    n   a   m   e   T  \t  \t   =   n   i   l  \r   G   e   t   l
0013660    i   n   e   T  \t  \t   =   n   i   l  \r   G   e   t   n   a
0013700    m   e   V  \t  \t   =   n   i   l  \r   G   e   t   n   a   m
0013720    e   P  \t  \t   =   n   i   l  \r   G   e 376 001  \0 230   $
0013740    t   l   i   n   e   V  \t  \t   =   n   i   l  \r   G   e   t
0013760    l   i   n   e   P  \t  \t   =   n   i   l  \r   C   u   r   f
0014000    i   l   e  \t  \t   =   n   i   l  \r   C   u   r   l   i   n
0014020    e  \t  \t   =   n   i   l  \r   m   y   F   r   a   m   e  \t
0014040   \t   =   n   i   l  \r   ]  \r  \r   s   t   a   t   i   c    
0014060    [  \r   S   W   H   e   l   p  \t  \t   =   f   a   l   s   e
0014100   \r   S   W   D   e   b   u   g  \t  \t   =   f   a   l   s   e
0014120   \r   S   W   L   i   s   t  \t  \t   =   f   a   l   s   e  \r
0014140    S   W   L   e   x   T   r   a   c   e  \t  \t   =   f   a   l
0014160    s   e  \r   S   W   C   a   e   T   r   a   c   e  \t  \t   =
0014200    f   a   l   s   e  \r   S   W   S   a   e   T   r   a   c   e
0014220   \t  \t   =   f   a   l   s   e  \r   S   W   O   c   o   d   e
0014240   \t  \t   =   f   a   l   s   e  \r   S   W   C   o   d   e  \t
0014260   \t   =   f   a   l   s   e  \r   S   W   L   e   x   L   i   s
0014300    t  \t  \t   =   f   a   l   s   e  \r   S   W   C   a   e   L
0014320    i   s   t  \t  \t   =   f   a   l   s   e  \r   S   W   S   a
0014340  376 001  \0   { 223   e   L   i   s   t  \t  \t   =   f   a   l
0014360    s   e  \r   S   W   T   r   n   L   i   s   t  \t  \t   =   f
0014400    a   l   s   e  \r   S   W   P   a   s   s   O   n   e   L   i
0014420    s   t  \t  \t   =   f   a   l   s   e  \r   S   W   P   a   s
0014440    s   T   w   o   L   i   s   t  \t  \t   =   f   a   l   s   e
0014460   \r   S   W   P   a   s   s   O   n   e   C   o   d   e  \t  \t
0014500    =   f   a   l   s   e  \r   S   W   P   a   s   s   T   w   o
0014520    C   o   d   e  \t  \t   =   f   a   l   s   e  \r   S   W   L
0014540    i   s   t   C   o   d   e  \t  \t   =   f   a   l   s   e  \r
0014560    S   W   W   a   i   t  \t  \t  \t   =   t   r   u   e  \r   S
0014600    W   U   p   p   e   r   C   a   s   e  \t  \t   =   f   a   l
0014620    s   e  \r   S   W   L   o   w   e   r   C   a   s   e  \t  \t
0014640    =   f   a   l   s   e  \r   S   W   O   n   e   C   a   s   e
0014660   \t  \t   =   f   a   l   s   e  \r   S   W   T   T   O   f   i
0014700    l   e  \t  \t   =   f   a   l   s   e  \r   S   W   T   T   O
0014720    t   y   p   e  \t  \t   =   f   a   l   s   e  \r   S   W   O
0014740    u   t   p   u   t 376 001  \0 345 016  \t  \t   =   f   a   l
0014760    s   e  \r   S   W   A   l   t   o  \t  \t  \t   =       n   i
0015000    l       /   /       i   n   i   t   t   e   d       i   n    
0015020    I   N   I   T   B   C   P   L  \r   S   W   N   o   x   i   o
0015040    s  \t  \t   =   f   a   l   s   e  \r   /   /   /   *   D   C
0015060    S   *       P   r   e   c   o   m   p   i   l   e   d       D
0015100    e   c   l   a   r   a   t   i   o   n   s  \r   S   W   P   r
0015120    e   p   a   r   e       =       f   a   l   s   e           /
0015140    /   /   *       G   l   o   b   a   l       /   G       -   -
0015160        c   o   m   p   i   l   e       d   e   c   l   a   r   a
0015200    t   i   o   n   s  \r   S   W   U   s   e   D   e   c   l    
0015220    =       f   a   l   s   e           /   /   /   *       L   o
0015240    c   a   l       /   G       -   -       u   s   e       p   r
0015260    e   c   o   m   p   i   l   e   d       d   e   c   l   a   r
0015300    a   t   i   o   n   s  \r   /   /   /   *   D   C   S   *    
0015320    P   r   e   c   o   m   p   i   l   e   d       D   e   c   l
0015340    a   r   a   t   i   o   n   s  \r   S 376 001  \0 340 245   W
0015360    P   a   r   a   m   s   e   t       =       f   a   l   s   e
0015400        /   /   /   *       L   o   c   a   l       /   V       o
0015420    r       /   M       -   -       c   o   m   m   a   n   d    
0015440    l   i   n   e       m   a   n   i   f   e   s   t   s  \r   /
0015460    /       /   S       (   g   l   o   b   a   l   )       o   r
0015500        n   /   S       (   l   o   c   a   l   )   :       I   s
0015520    s   u   e       c   a   l   l       o   n       f   a   s   t
0015540        g   e   t   f   r   a   m   e   ,       r   e   t   u   r
0015560    n  \r   S   W   F   a   s   t   F   r   a   m   e  \t  \t   =
0015600        f   a   l   s   e  \r   S   W   G   e   t   L   I   N   E
0015620    s       =       t   r   u   e           /   /       G   l   o
0015640    b   a   l       /   -   G   ,       d   o   n   '   t       "
0015660    L   I   N   E   "       g   e   t       f   i   l   e   s   ,
0015700        s   e   t   s       t   h   i   s       f   a   l   s   e
0015720   \r   S   W   N   o   E   x   t   E   x   t   s       =       t
0015740    r   u   e           /   /       G   l   o   b   a   l     376
0015760  001  \0 351   z   /   -   E   ,       a   l   l   o   w       E
0016000    X   T   E   R   N   A   L       &       E   X   T   E   R   N
0016020    A   L   ,       s   e   t   s       t   h   i   s       f   a
0016040    l   s   e  \r   S   W   S   t   a   c   k   S   t   r   i   n
0016060    g   s       =       f   a   l   s   e           /   /   i   f
0016100        t   r   u   e   ,       p   u   t       s   t   r   i   n
0016120    g       a   n   d       t   a   b   l   e   s       o   n    
0016140    s   t   a   c   k  \r   S   W   U   n   s   i   g   n   e   d
0016160    C   o   m   p   a   r   e   s       =       f   a   l   s   e
0016200            /   /   i   f       t   r   u   e   ,       e   n   a
0016220    b   l   e       u   l   s   ,       u   l   e   ,       u   g
0016240    e   ,       a   n   d       u   g   t  \r   ]  \r  \r  \r   /
0016260    /   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0016300    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0016360    -   -   -   - 376 001  \0 215   A   -   -   -   -   -   -   -
0016400    -   -  \r   l   e   t       M   a   i   n   (   p   a   r   a
0016420    m   v   e   c   )       b   e  \r   /   /   -   -   -   -   -
0016440    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0016540    -   -   -   -   -   -   -  \r   [      \r   /   /       C   a
0016560    l   l   e   d       f   r   o   m       I   n   i   t   B   C
0016600    P   L       i   n       s   y   s   t   e   m   -   d   e   p
0016620    e   n   d   e   n   t  \r   /   /       f   i   l   e       (
0016640    B   C   P   L   D   O   S   ,       B   C   P   L   A   L   T
0016660    O   ,       B   C   P   L   R   D   O   S   .   .   .   )  \r
0016700    l   e   t       f   N   L       =       F   i   l   e   N   a
0016720    m   e   L   e   n   g   t   h   /   B   y   t   e   s   p   e
0016740    r   w   o   r   d   +   1  \r   G   e   t   n   a   m   e   T
0016760        =       G   e   t   F   i   l 376 001  \0   7   V   e   M
0017000    a   x   *   G   e   t   n   a   m   e   N   -   1  \r   G   e
0017020    t   l   i   n   e   T       =       2   *   G   e   t   F   i
0017040    l   e   M   a   x   *   G   e   t   l   i   n   e   N   -   1
0017060            /   /       g   e   t   s       u   s       c   o   m
0017100    i   n   g       a   n   d       g   o   i   n   g  \r   l   e
0017120    t       v   e   c   L   e   n   ,       V   e   c       =    
0017140    (   1   5   +   G   e   t   F   i   l   e   M   a   x   )   *
0017160    f   N   L   +   G   e   t   n   a   m   e   T   +   G   e   t
0017200    l   i   n   e   T   +   4   0   ,       v   e   c   L   e   n
0017220   \r   D   v   e   c   (   M   a   i   n   ,   l   v       V   e
0017240    c   )   ;       f   o   r       i       =       0       t   o
0017260        v   e   c   L   e   n       d   o       V   e   c   !   i
0017300        =       0  \r   I   n   i   t   F   r   e   e   (   F   r
0017320    e   e   M   a   x   )  \r  \r   B   C   P   L   n   a   m   e
0017340        =       V   e   c  \r   L   E   X   n   a   m   e       =
0017360        B   C   P   L   n   a   m   e       +       f   N 376 001
0017400   \0 300 212   L  \r   C   A   E   n   a   m   e       =       L
0017420    E   X   n   a   m   e       +       f   N   L  \r   S   A   E
0017440    n   a   m   e       =       C   A   E   n   a   m   e       +
0017460        f   N   L  \r   T   R   N   n   a   m   e       =       S
0017500    A   E   n   a   m   e       +       f   N   L  \r   N   C   G
0017520    n   a   m   e       =       T   R   N   n   a   m   e       +
0017540        f   N   L  \r  \r   f   i   l   e   n   a   m   e       =
0017560        N   C   G   n   a   m   e       +       f   N   L       /
0017600    /       n   e   e   d   s       F   i   l   e   N   a   m   e
0017620    L   e   n   g   t   h   +   1   1  \r   s   w       =       f
0017640    i   l   e   n   a   m   e   +   F   i   l   e   N   a   m   e
0017660    L   e   n   g   t   h   +   1   1       /   /       n   e   e
0017700    d   s       2   7  \r  \r   R   e   a   d   C   O   M   C   M
0017720    (   )  \r   F   i   x   F   i   l   e   N   a   m   e   (   B
0017740    C   P   L   n   a   m   e   ,       "   "   ,       0   )  \r
0017760    F   i   x   F   i   l   e   N   a   m   e   (   L   E   X   n
0020000    a   m   e 376 001  \0   I   s   ,       "   .   Y   L   "   ,
0020020        0   )  \r   F   i   x   F   i   l   e   N   a   m   e   (
0020040    C   A   E   n   a   m   e   ,       "   .   Y   C   "   ,    
0020060    0   )  \r   F   i   x   F   i   l   e   N   a   m   e   (   S
0020100    A   E   n   a   m   e   ,       "   .   Y   S   "   ,       0
0020120    )  \r   F   i   x   F   i   l   e   N   a   m   e   (   T   R
0020140    N   n   a   m   e   ,       "   .   Y   T   "   ,       0   )
0020160   \r   F   i   x   F   i   l   e   N   a   m   e   (   N   C   G
0020200    n   a   m   e   ,       "   .   Y   G   "   ,       0   )  \r
0020220   \r   f   o   r       i       =       1       t   o       s   w
0020240    !   0       s   w   i   t   c   h   o   n       s   w   !   i
0020260        i   n   t   o  \r               [  \r               c   a
0020300    s   e       $   D   :       S   W   D   e   b   u   g       =
0020320        t   r   u   e   ;       l   o   o   p  \r               c
0020340    a   s   e       $   H   :       S   W   H   e   l   p   ,    
0020360    S   W   D   e   b   u   g       =       t   r   u   e   ,    
0020400    t   r   u   e   ;       l   o 376 001  \0 212 005   o   p  \r
0020420                c   a   s   e       $   F   :       i   f       S
0020440    W   T   T   O   t   y   p   e       d   o       B   a   d   S
0020460    w   i   t   c   h   (   i   )   ;       S   W   T   T   O   f
0020500    i   l   e       =       t   r   u   e   ;       l   o   o   p
0020520   \r               c   a   s   e       $   T   :       i   f    
0020540    S   W   T   T   O   f   i   l   e       d   o       B   a   d
0020560    S   w   i   t   c   h   (   i   )   ;       S   W   T   T   O
0020600    t   y   p   e       =       t   r   u   e   ;       l   o   o
0020620    p  \r               c   a   s   e       $   A   :       S   W
0020640    O   u   t   p   u   t   ,       S   W   L   i   s   t   C   o
0020660    d   e       =       t   r   u   e   ,       t   r   u   e   ;
0020700        l   o   o   p  \r               c   a   s   e       $   W
0020720    :       S   W   W   a   i   t       =       t   r   u   e   ;
0020740        l   o   o   p  \r               c   a   s   e       $   P
0020760    :       S   W   W   a   i   t       =       f   a   l   s   e
0021000    ;       l   o   o   p  \r               c   a   s 376 001  \0
0021020    @   p   e       $   S   :       i   f       S   W   A   l   t
0021040    o       t   h   e   n       S   W   F   a   s   t   F   r   a
0021060    m   e       =       #   7   4   4   0   0   ;       l   o   o
0021100    p  \r               c   a   s   e       $   U   :       S   W
0021120    U   p   p   e   r   C   a   s   e   ,       S   W   O   n   e
0021140    C   a   s   e       =       t   r   u   e   ,       t   r   u
0021160    e   ;       l   o   o   p  \r               /   /       c   a
0021200    s   e       $   X   :       S   W   A   l   t   o       =    
0021220    t   r   u   e   ;       l   o   o   p  \r               /   /
0021240        c   a   s   e       $   N   :       S   W   N   o   x   i
0021260    o   s       =       t   r   u   e   ;       l   o   o   p  \r
0021300                c   a   s   e       $   G   :       S   W   P   r
0021320    e   p   a   r   e       =       t   r   u   e   ;       l   o
0021340    o   p  \r               c   a   s   e       -   $   G   :    
0021360    S   W   G   e   t   L   I   N   E   s       =       f   a   l
0021400    s   e   ;       l   o   o   p  \r               c   a   s   e
0021420        - 376 001  \0 322 024   $   E   :       S   W   N   o   E
0021440    x   t   E   x   t   s       =       f   a   l   s   e   ;    
0021460    l   o   o   p  \r               c   a   s   e       $   I   :
0021500        S   W   S   t   a   c   k   S   t   r   i   n   g   s    
0021520    =       t   r   u   e   ;       l   o   o   p  \r            
0021540    c   a   s   e       $   O   :       S   W   U   n   s   i   g
0021560    n   e   d   C   o   m   p   a   r   e   s       =       t   r
0021600    u   e   ;       l   o   o   p  \r               d   e   f   a
0021620    u   l   t   :       B   a   d   S   w   i   t   c   h   (   i
0021640    )  \r               ]  \r  \r   S   o   u   r   c   e   N   a
0021660    m   e       =       s   w   +   2   7  \r   B   i   n   N   a
0021700    m   e       =       S   o   u   r   c   e   N   a   m   e   +
0021720    f   N   L  \r   O   u   t   p   u   t   N   a   m   e       =
0021740        B   i   n   N   a   m   e   +   f   N   L  \r   S   o   u
0021760    r   c   e   D   e   v   i   c   e       =       O   u   t   p
0022000    u   t   N   a   m   e   +   f   N   L  \r   D   e   v   i   c
0022020    e       =       S   o   u 376 001  \0 237 177   r   c   e   D
0022040    e   v   i   c   e   +   f   N   L  \r   D   E   C   L   N   a
0022060    m   e       =       D   e   v   i   c   e   +   f   N   L  \r
0022100    D   I   C   T   N   a   m   e       =       D   E   C   L   N
0022120    a   m   e   +   f   N   L       /   /       D   I   C   T   N
0022140    a   m   e       n   e   e   d   s       f   N   L  \r  \r   m
0022160    y   F   r   a   m   e       =       M   y   F   r   a   m   e
0022200    (   )  \r   l   e   t       m   o   r   e   S   o   u   r   c
0022220    e   s       =       R   e   a   d   C   O   M   C   M   (   )
0022240        l   s   h   i   f   t       8   ;  \r   l   e   t       r
0022260    e   a   d   s       =       0  \r               [  \r        
0022300        i   f       f   i   l   e   n   a   m   e   !   0       e
0022320    q       -   1       t   h   e   n       [       m   o   r   e
0022340    S   o   u   r   c   e   s       =       0   ;       b   r   e
0022360    a   k       ]  \r               t   e   s   t       s   w   !
0022400    0       e   q       0  \r                           i   f   s
0022420    o  \r                                       [ 376 001  \0 216
0022440  226  \r                                       t   e   s   t    
0022460    S   o   u   r   c   e   N   a   m   e   !   0       e   q    
0022500    0  \r                                                   i   f
0022520    s   o       F   i   x   F   i   l   e   N   a   m   e   (   S
0022540    o   u   r   c   e   N   a   m   e   ,       "   "   ,       D
0022560    e   v   i   c   e   )  \r                                    
0022600                i   f   n   o   t  \r                            
0022620                                    [  \r                        
0022640                                        i   f       r   e   a   d
0022660    s       n   e       1       %       n   o   t       S   W   A
0022700    l   t   o       t   h   e   n  \r                            
0022720                                        E   r   r   o   r   (   "
0022740    T   w   o       s   o   u   r   c   e       f   i   l   e    
0022760    n   a   m   e   s   "   )  \r                                
0023000                                C   l   o   s   e   C   O   M   C
0023020    M   (   )   ;       b   r   e   a   k   ;  \r                
0023040      376 001  \0 214 376                                        
0023060    ]  \r                                       i   f       B   i
0023100    n   N   a   m   e   !   0       e   q       0       t   h   e
0023120    n       F   i   x   F   i   l   e   N   a   m   e   (   B   i
0023140    n   N   a   m   e   ,       "   .   B   R   "   ,       D   e
0023160    v   i   c   e   )  \r                                       i
0023200    f       O   u   t   p   u   t   N   a   m   e   !   0       e
0023220    q       0       t   h   e   n       F   i   x   F   i   l   e
0023240    N   a   m   e   (   O   u   t   p   u   t   N   a   m   e   ,
0023260        "   .   B   T   "   ,       D   e   v   i   c   e   )  \r
0023300                                        i   f       S   W   P   r
0023320    e   p   a   r   e       t   h   e   n  \r                    
0023340                                [  \r                            
0023360                        F   i   x   F   i   l   e   N   a   m   e
0023400    (   D   E   C   L   N   a   m   e   ,       "   .   B   L   "
0023420    ,       D   e   v   i   c   e   )  \r                        
0023440                          376 001  \0 363 317   F   i   x   F   i
0023460    l   e   N   a   m   e   (   D   I   C   T   N   a   m   e   ,
0023500        "   .   B   D   "   ,       D   e   v   i   c   e   )  \r
0023520                                                    ]  \r        
0023540                                ]  \r                           i
0023560    f   n   o   t       f   o   r       i       =       1       t
0023600    o       s   w   !   0       s   w   i   t   c   h   o   n    
0023620    s   w   !   i       i   n   t   o  \r                        
0023640                [  \r                                       c   a
0023660    s   e       $   A   :       S   W   O   u   t   p   u   t   ,
0023700        S   W   L   i   s   t   C   o   d   e       =       t   r
0023720    u   e   ,       t   r   u   e  \r                            
0023740            c   a   s   e       $   F   :       i   f       S   W
0023760    T   T   O   t   y   p   e       d   o       B   a   d   S   w
0024000    i   t   c   h   (   i   )  \r                                
0024020                                            i   f       s   w   !
0024040    i       e   q       $   F       d   o     376 001  \0 277 261
0024060    S   W   T   T   O   f   i   l   e       =       t   r   u   e
0024100   \r                                                            
0024120                F   i   x   F   i   l   e   N   a   m   e   (   O
0024140    u   t   p   u   t   N   a   m   e   ,       "   .   B   T   "
0024160    ,       D   e   v   i   c   e   )  \r                        
0024200                                                    l   o   o   p
0024220   \r  \r                                       c   a   s   e    
0024240    $   R   :       F   i   x   F   i   l   e   N   a   m   e   (
0024260    B   i   n   N   a   m   e   ,       "   .   B   R   "   ,    
0024300    D   e   v   i   c   e   )  \r                                
0024320                                            l   o   o   p  \r  \r
0024340                                        c   a   s   e       $   C
0024360    :       t   e   s   t       S   o   u   r   c   e   N   a   m
0024400    e   !   0       e   q       0  \r                            
0024420                                                t   h   e   n    
0024440    F   i   x   F   i   l   e   N   a   m   e   (   S   o   u   r
0024460  376 001  \0   @  \b   c   e   N   a   m   e   ,       "   "   ,
0024500        D   e   v   i   c   e   )  \r                            
0024520                                                o   r            
0024540    E   r   r   o   r   (   "   T   W   O       S   O   U   R   C
0024560    E       F   I   L   E       N   A   M   E   S   "   )  \r    
0024600                                                                 
0024620        l   o   o   p  \r  \r                                    
0024640    c   a   s   e       $   G   :  \r                            
0024660                                                i   f       S   W
0024700    P   r   e   p   a   r   e       t   h   e   n       E   r   r
0024720    o   r   (   "   /   G       B   o   t   h       G   l   o   b
0024740    a   l       a   n   d       L   o   c   a   l   "   )  \r    
0024760                                                                 
0025000        S   W   U   s   e   D   e   c   l       =       t   r   u
0025020    e   ;  \r                                                    
0025040                        F   i   x   F   i   l   e   N   a   m   e
0025060    (   D   E   C   L 376 001  \0   l 346   N   a   m   e   ,    
0025100    "   .   B   L   "   ,       D   e   v   i   c   e   )  \r    
0025120                                                                 
0025140        F   i   x   F   i   l   e   N   a   m   e   (   D   I   C
0025160    T   N   a   m   e   ,       "   .   B   D   "   ,       D   e
0025200    v   i   c   e   )  \r                                        
0025220                                    l   o   o   p  \r  \r        
0025240                                /   /   /   *   D   C   S   *    
0025260    c   o   m   m   a   n   d       l   i   n   e       m   a   n
0025300    i   f   e   s   t   s       -   -       s   e   e       e   n
0025320    t   e   r   p   a   r   a   m   s   (   )       i   n       L
0025340    E   X  \r                                       /   /   /   *
0025360            n   u   m   b   e   r   /   V       s   e   t   s    
0025400    m   a   n   i   f   e   s   t       v   a   l   u   e       -
0025420    -       d   e   f   a   u   l   t       i   s       0  \r    
0025440                                    /   /   /   *           n   a
0025460    m   e   /   M       d   o   e   s     376 001  \0 341 276   "
0025500    m   a   n   i   f   e   s   t       n   a   m   e       =    
0025520    c   u   r   r   e   n   t   -   n   u   m   b   e   r   "  \r
0025540                                        /   /   /   *   5   -   9
0025560    -   7   7       n   u   m   b   e   r   /   S       s   e   t
0025600    s       g   e   t   f   r   a   m   e       c   a   l   l    
0025620    v   a   l   u   e       t   o       n   u   m   b   e   r    
0025640    (   o   c   t   a   l   )      \r                            
0025660            /   /   /   *           e   n   t   r   y       o   f
0025700        n   a   m   e   s       m   u   s   t       b   e       d
0025720    e   l   a   y   e   d       u   n   t   i   l       e   n   t
0025740    e   r   p   a   r   a   m   s       i   n       L   E   X  \r
0025760                                        c   a   s   e       $   V
0026000    :  \r                                       c   a   s   e    
0026020    $   M   :  \r                                       c   a   s
0026040    e       $   S   :  \r                                        
0026060            S   W   P   a   r   a   m   s   e   t       =     376
0026100  001  \0   A   i   t   r   u   e           /   /   /   *       W
0026120    i   l   l       r   e   r   e   a   d       C   O   M   .   C
0026140    M       i   n       L   E   X  \r                            
0026160                        l   o   o   p  \r                        
0026200                c   a   s   e       $   L   :  \r                
0026220                        c   a   s   e       $   T   :  \r        
0026240                                            [  \r                
0026260                                    S   W   O   u   t   p   u   t
0026300        =       t   r   u   e  \r                                
0026320                    u   n   l   e   s   s       i       e   q    
0026340    1       &       s   w   !   0       l   e       2       d   o
0026360        B   a   d   S   w   i   t   c   h   (   i   )  \r        
0026400                                            l   e   t       L   ,
0026420        T       =       s   w   !   1       e   q       $   L   ,
0026440        s   w   !   (   s   w   !   0   )       e   q       $   T
0026460   \r                                                   f   o   r
0026500        j       = 376 001  \0   p 340       1       t   o       f
0026520    i   l   e   n   a   m   e   !   0       d   o       s   w   i
0026540    t   c   h   o   n       f   i   l   e   n   a   m   e   !   j
0026560        i   n   t   o  \r                                        
0026600                        [  \r                                    
0026620                            c   a   s   e       $   L   :       S
0026640    W   L   e   x   L   i   s   t   ,       S   W   L   e   x   T
0026660    r   a   c   e       =       L   ,       T   ;       l   o   o
0026700    p  \r                                                        
0026720        c   a   s   e       $   C   :       S   W   C   a   e   L
0026740    i   s   t   ,       S   W   C   a   e   T   r   a   c   e    
0026760    =       L   ,       T   ;       l   o   o   p  \r            
0027000                                                    c   a   s   e
0027020        $   S   :       S   W   S   a   e   L   i   s   t   ,    
0027040    S   W   S   a   e   T   r   a   c   e       =       L   ,    
0027060    T   ;       l   o   o   p  \r                                
0027100                                c   a 376 001  \0   9   ]   s   e
0027120        $   T   :       S   W   T   r   n   L   i   s   t   ,    
0027140    S   W   O   c   o   d   e       =       L   ,       T   ;    
0027160    l   o   o   p  \r                                            
0027200                    c   a   s   e       $   1   :       S   W   P
0027220    a   s   s   O   n   e   L   i   s   t   ,       S   W   P   a
0027240    s   s   O   n   e   C   o   d   e       =       L   ,       T
0027260    ;       l   o   o   p  \r                                    
0027300                            c   a   s   e       $   2   :       S
0027320    W   P   a   s   s   T   w   o   L   i   s   t   ,       S   W
0027340    P   a   s   s   T   w   o   C   o   d   e       =       L   ,
0027360        T   ;       l   o   o   p  \r                            
0027400                                    d   e   f   a   u   l   t   :
0027420        B   a   d   S   w   i   t   c   h   (   i   )  \r        
0027440                                                        ]  \r    
0027460                                                i       =       s
0027500    w   !   0  \r                                         376 001
0027520   \0   W   z           l   o   o   p  \r                        
0027540                            ]  \r  \r                            
0027560            d   e   f   a   u   l   t   :       B   a   d   S   w
0027600    i   t   c   h   (   i   )  \r                                
0027620        ]  \r               m   o   r   e   S   o   u   r   c   e
0027640    s       =       (   m   o   r   e   S   o   u   r   c   e   s
0027660        &       #   1   7   7   4   0   0   )       +       R   e
0027700    a   d   C   O   M   C   M   (   )   ;       r   e   a   d   s
0027720        =       r   e   a   d   s       +       1   ;  \r        
0027740        ]       r   e   p   e   a   t  \r  \r  \r   i   f       S
0027760    o   u   r   c   e   N   a   m   e   !   0       e   q       0
0030000        d   o       E   r   r   o   r   (   "   N   o       s   o
0030020    u   r   c   e       f   i   l   e       n   a   m   e   "   )
0030040   \r   i   f       S   o   u   r   c   e   D   e   v   i   c   e
0030060    !   0       e   q       0       d   o       M   o   v   e   s
0030100    t   r   i   n   g   (   S   o   u   r   c   e   N   a   m   e
0030120    ,       S 376 001  \0   _   G   o   u   r   c   e   D   e   v
0030140    i   c   e   )  \r   i   f       B   i   n   N   a   m   e   !
0030160    0       e   q       0       d   o       E   r   r   o   r   (
0030200    "   N   o       b   i   n   a   r   y       f   i   l   e    
0030220    n   a   m   e   "   )  \r  \r   t   e   s   t       S   W   T
0030240    T   O   f   i   l   e       %       (   S   W   O   u   t   p
0030260    u   t       &       n   o   t       S   W   T   T   O   t   y
0030300    p   e   )  \r               i   f   s   o  \r                
0030320            [  \r                           i   f       O   u   t
0030340    p   u   t   N   a   m   e   !   0       e   q       0       t
0030360    h   e   n       E   r   r   o   r   (   "   N   o       o   u
0030400    t   p   u   t       f   i   l   e       n   a   m   e   "   )
0030420   \r                           O   u   t   p   u   t   S   t   r
0030440    e   a   m       =       O   p   e   n   O   u   t   p   u   t
0030460    (   O   u   t   p   u   t   N   a   m   e   )  \r            
0030500                ]  \r               i   f   n   o   t       [    
0030520    O   u   t   p   u   t   S   t 376 001  \0 234 246   r   e   a
0030540    m       =       T   T   O   s   t   r   e   a   m   ;       O
0030560    u   t   p   u   t   N   a   m   e   !   0       =       0    
0030600    ]  \r  \r   t   e   s   t       S   W   T   T   O   f   i   l
0030620    e  \r               i   f   s   o       E   r   r   o   r   S
0030640    t   r   e   a   m       =       O   u   t   p   u   t   S   t
0030660    r   e   a   m  \r               i   f   n   o   t       E   r
0030700    r   o   r   S   t   r   e   a   m       =       T   T   O   s
0030720    t   r   e   a   m  \r  \r   O   s   t   r   e   a   m       =
0030740        T   T   O   s   t   r   e   a   m  \r  \r   /   /   /   *
0030760    D   C   S   *       M   o   d   i   f   i   c   a   t   i   o
0031000    n   s       t   o       c   l   e   a   n       u   p   ,    
0031020    a   d   d       p   r   i   n   t   i   n   g       f   o   r
0031040        S   W   P   r   e   p   a   r   e  \r   f   o   r       i
0031060    =   0       t   o       (   O   u   t   p   u   t   S   t   r
0031100    e   a   m       e   q       T   T   O   s   t   r   e   a   m
0031120    ?       0   ,       1   )       d   o  \r         376 001  \0
0031140  036 354       [  \r               W   r   i   t   e   S   (   B
0031160    C   P   L   n   a   m   e   )   ;       W   W   (   $   *   s
0031200    )  \r               W   r   i   t   e   N   (   V   e   r   s
0031220    i   o   n       r   s   h   i   f   t       8   )   ;       W
0031240    W   (   $   .   )   ;       W   r   i   t   e   N   (   V   e
0031260    r   s   i   o   n       &       #   3   7   7   )   ;  \r    
0031300            W   r   i   t   e   S   (   "       -   -       "   )
0031320   \r               t   e   s   t       S   W   P   r   e   p   a
0031340    r   e  \r                           i   f   s   o       [    
0031360    W   r   i   t   e   S   (   D   E   C   L   N   a   m   e   )
0031400    ;       W   r   i   t   e   S   (   "       ,       "   )   ;
0031420        W   r   i   t   e   S   (   D   I   C   T   N   a   m   e
0031440    )       ]  \r                           i   f   n   o   t  \r
0031460                                        [  \r                    
0031500                    i   f       O   u   t   p   u   t   N   a   m
0031520    e   !   0       n   e       0       d   o       [       W   r
0031540    i   t 376 001  \0   j   '   e   S   (   O   u   t   p   u   t
0031560    N   a   m   e   )   ;       W   r   i   t   e   S   (   "    
0031600    ,       "   )       ]  \r                                    
0031620    W   r   i   t   e   S   (   B   i   n   N   a   m   e   )   ;
0031640   \r                                       ]  \r               W
0031660    r   i   t   e   S   (   "       =       "   )   ;       W   r
0031700    i   t   e   S   (   S   o   u   r   c   e   N   a   m   e   )
0031720    ;       W   W   (   $   *   n   )      \r               O   s
0031740    t   r   e   a   m       =       O   u   t   p   u   t   S   t
0031760    r   e   a   m  \r               ]  \r  \r   G   e   t   n   a
0032000    m   e   V       =       D   I   C   T   N   a   m   e   +   f
0032020    N   L   ;       G   e   t   n   a   m   e   P       =       0
0032040   \r   l   e   t       n   v       =       G   e   t   n   a   m
0032060    e   V   +   G   e   t   n   a   m   e   T   +   1  \r   f   o
0032100    r       i       =       0       t   o       G   e   t   n   a
0032120    m   e   T       b   y       G   e   t   n   a   m   e   N    
0032140    d   o       [       G   e 376 001  \0   k 212   t   n   a   m
0032160    e   V   !   i       =       n   v   ;       n   v       =    
0032200    n   v       +       f   N   L       ]  \r   G   e   t   l   i
0032220    n   e   V       =       n   v   ;       G   e   t   l   i   n
0032240    e   P       =       0  \r  \r   /   /           T   h   i   s
0032260        H   e   r   e   '   s       T   h   e       C   o   m   p
0032300    i   l   e   r  \r  \r   I   n   i   t   F   r   e   e   (   D
0032320    i   c   t   F   r   e   e   L   i   m   i   t   )  \r   O   v
0032340    e   r   l   a   y   (   L   E   X   n   a   m   e   ,       D
0032360    i   c   t   F   r   e   e   L   i   m   i   t   +   1   )  \r
0032400    i   f       S   W   H   e   l   p       d   o       H   e   l
0032420    p   (   "   L   E   X       S   T   A   R   T   "   )  \r   S
0032440    W   L   i   s   t       =       S   W   L   e   x   L   i   s
0032460    t  \r   R   e   a   d   S   o   u   r   c   e   (   )  \r   i
0032500    f       S   W   H   e   l   p       d   o       H   e   l   p
0032520    (   "   L   E   X       E   N   D   "   )  \r  \r   /   /   /
0032540    *   D   C   S   *       P   r   e   c   o   m 376 001  \0 025
0032560    W   p   i   l   e   d       D   e   c   l   a   r   a   t   i
0032600    o   n   s  \r   i   f       S   W   P   r   e   p   a   r   e
0032620        t   h   e   n       g   o   t   o       A   b   o   r   t
0032640   \r  \r   I   n   i   t   F   r   e   e   (   T   r   e   e   F
0032660    r   e   e   L   i   m   i   t   )  \r   O   v   e   r   l   a
0032700    y   (   C   A   E   n   a   m   e   ,       T   r   e   e   F
0032720    r   e   e   L   i   m   i   t   +   1   )  \r   i   f       S
0032740    W   H   e   l   p       d   o       H   e   l   p   (   "   C
0032760    A   E       S   T   A   R   T   "   )  \r   S   W   L   i   s
0033000    t       =       S   W   C   a   e   L   i   s   t  \r   C   o
0033020    n   s   t   r   u   c   t   T   r   e   e   (   )  \r   i   f
0033040        S   W   H   e   l   p       d   o       H   e   l   p   (
0033060    "   C   A   E       E   N   D   "   )  \r   u   n   l   e   s
0033100    s       R   e   p   o   r   t   c   o   u   n   t       e   q
0033120        0       g   o   t   o       A   b   o   r   t  \r   O   v
0033140    e   r   l   a   y   (   S   A   E   n   a   m   e   ,       T
0033160    r 376 001  \0 350       e   e   F   r   e   e   L   i   m   i
0033200    t   +   1   )  \r   i   f       S   W   H   e   l   p       d
0033220    o       H   e   l   p   (   "   S   A   E       S   T   A   R
0033240    T   "   )  \r   S   W   L   i   s   t       =       S   W   S
0033260    a   e   L   i   s   t  \r   D   e   c   l   a   r   e   N   a
0033300    m   e   s   (   )  \r   i   f       S   W   H   e   l   p    
0033320    d   o       H   e   l   p   (   "   S   A   E       E   N   D
0033340    "   )  \r   O   v   e   r   l   a   y   (   T   R   N   n   a
0033360    m   e   ,       T   r   e   e   F   r   e   e   L   i   m   i
0033400    t   +   1   )  \r   i   f       S   W   H   e   l   p       d
0033420    o       H   e   l   p   (   "   T   R   N       S   T   A   R
0033440    T   "   )  \r   S   W   L   i   s   t       =       S   W   T
0033460    r   n   L   i   s   t  \r   T   r   a   n   s   l   a   t   e
0033500    T   r   e   e   (   )  \r   i   f       S   W   H   e   l   p
0033520        d   o       H   e   l   p   (   "   T   R   N       E   N
0033540    D   "   )  \r  \r   u   n   l   e   s   s       R   e   p   o
0033560    r   t   c   o   u   n 376 001  \0 217   y   t       e   q    
0033600    0       g   o   t   o       A   b   o   r   t  \r  \r   I   n
0033620    i   t   F   r   e   e   (   C   o   d   e   F   r   e   e   L
0033640    i   m   i   t   )  \r   C   o   d   e   S   t   r   e   a   m
0033660        =       O   p   e   n   O   u   t   p   u   t   (   B   i
0033700    n   N   a   m   e   )  \r   O   v   e   r   l   a   y   (   N
0033720    C   G   n   a   m   e   ,       C   o   d   e   F   r   e   e
0033740    L   i   m   i   t   +   1   )  \r   i   f       S   W   H   e
0033760    l   p       d   o       H   e   l   p   (   "   N   C   G    
0034000    S   T   A   R   T   "   )  \r   i   f       S   W   L   i   s
0034020    t   C   o   d   e       d   o       S   W   P   a   s   s   T
0034040    w   o   L   i   s   t   ,       S   W   P   a   s   s   T   w
0034060    o   C   o   d   e       =       t   r   u   e   ,       t   r
0034100    u   e  \r   G   e   n   e   r   a   t   e   C   o   d   e   (
0034120    )  \r   i   f       S   W   H   e   l   p       d   o       H
0034140    e   l   p   (   "   N   C   G       E   N   D   "   )  \r  \r
0034160            A   b   o   r   t   :  \r   G   o 376 001  \0 263   ^
0034200    t   o   L   a   b   e   l   (   m   y   F   r   a   m   e   ,
0034220        l   o   c   a   l   A   b   o   r   t   )  \r           l
0034240    o   c   a   l   A   b   o   r   t   :  \r  \r   t   e   s   t
0034260        R   e   p   o   r   t   c   o   u   n   t       e   q    
0034300    0  \r           i   f   n   o   t  \r                       [
0034320   \r                       O   s   t   r   e   a   m       =    
0034340    T   T   O   s   t   r   e   a   m  \r                       W
0034360    r   i   t   e   N   (   R   e   p   o   r   t   c   o   u   n
0034400    t   )  \r                       W   r   i   t   e   S   (   "
0034420        E   R   R   O   R   "   )   ;       u   n   l   e   s   s
0034440        R   e   p   o   r   t   c   o   u   n   t       e   q    
0034460    1       d   o       W   W   (   $   S   )  \r                
0034500        W   r   i   t   e   S   (   "       I   N       "   )   ;
0034520        W   r   i   t   e   S   (   S   o   u   r   c   e   N   a
0034540    m   e   )  \r                       W   W   (   $   *   n   )
0034560   \r                       u   n   l   e   s   s       O   u   t
0034600  376 001  \0   ?   D   p   u   t   N   a   m   e   !   0       e
0034620    q       0       d   o       C   l   o   s   e   O   u   t   p
0034640    u   t   (   O   u   t   p   u   t   S   t   r   e   a   m   ,
0034660        O   u   t   p   u   t   N   a   m   e   )  \r            
0034700            ]  \r           i   f   s   o  \r                    
0034720    [  \r                       u   n   l   e   s   s       S   W
0034740    P   r   e   p   a   r   e       d   o       C   l   o   s   e
0034760    O   u   t   p   u   t   (   C   o   d   e   S   t   r   e   a
0035000    m   ,       B   i   n   N   a   m   e   )  \r                
0035020        O   s   t   r   e   a   m       =       E   r   r   o   r
0035040    S   t   r   e   a   m  \r                       f   o   r    
0035060    i   =   0       t   o       (   O   u   t   p   u   t   S   t
0035100    r   e   a   m       e   q       E   r   r   o   r   S   t   r
0035120    e   a   m   ?       0   ,       1   )       d   o       t   e
0035140    s   t       S   W   P   r   e   p   a   r   e  \r            
0035160                        i   f   s   o       [       W   r   i   t
0035200    e   S   (   "     376 001  \0 024 266   f   i   n   i   s   h
0035220    e   d   *   n   "   )       ]  \r                            
0035240        i   f   n   o   t  \r                                    
0035260            [  \r                                               W
0035300    W   (   $   *   n   )   ;       W   r   i   t   e   S   (   B
0035320    i   n   N   a   m   e   )   ;       W   r   i   t   e   S   (
0035340    "       -   -       "   )   ;       W   r   i   t   e   O   (
0035360    P   C   )   ;       W   W   (   $   *   s   )   ;  \r        
0035400                                        W   W   (   $   (   )   ;
0035420        W   r   i   t   e   N   (   P   C   )   ;       W   W   (
0035440    $   )   )   ;       W   r   i   t   e   S   (   "       W   O
0035460    R   D   S   *   n   "   )  \r                                
0035500                O   s   t   r   e   a   m       =       O   u   t
0035520    p   u   t   S   t   r   e   a   m  \r                        
0035540                        ]  \r                       u   n   l   e
0035560    s   s       O   u   t   p   u   t   N   a   m   e   !   0    
0035600    e   q       0       d   o  \r         376 001  \0 311 271    
0035620            C   l   o   s   e   O   u   t   p   u   t   (   O   u
0035640    t   p   u   t   S   t   r   e   a   m   ,       O   u   t   p
0035660    u   t   N   a   m   e   )  \r                       ]  \r   i
0035700    f       m   o   r   e   S   o   u   r   c   e   s       e   q
0035720        0       t   h   e   n       f   i   n   i   s   h   ;  \r
0035740    C   l   o   s   e   I   n   p   u   t   (   S   o   u   r   c
0035760    e   S   t   r   e   a   m   )   ;  \r   R   e   s   t   a   r
0036000    t   B   C   P   L   (   m   o   r   e   S   o   u   r   c   e
0036020    s       r   s   h   i   f   t       8   ,       m   o   r   e
0036040    S   o   u   r   c   e   s       &       #   3   7   7   )   ;
0036060   \r   ]  \r  \r   /   /   -   -   -   -   -   -   -   -   -   -
0036100    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0036200    -   -  \r   a   n   d       B   C   P   L   r   e   p   o 376
0036220  001  \0 024 311   r   t   (   n   ,       M   e   s   s   a   g
0036240    e   )       b   e  \r   /   /   -   -   -   -   -   -   -   -
0036260    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0036360    -   -   -   -  \r   [      \r           O   s   t   r   e   a
0036400    m       =       n       g   e       0       ?       E   r   r
0036420    o   r   S   t   r   e   a   m   ,       T   T   O   s   t   r
0036440    e   a   m  \r           i   f       n       l   s       0    
0036460    d   o       [       S   W   D   e   b   u   g       =       t
0036500    r   u   e       ]  \r           W   r   i   t   e   S   (   "
0036520    E   R   R   O   R       "   )  \r  \r           R   e   p   o
0036540    r   t   c   o   u   n   t       =       R   e   p   o   r   t
0036560    c   o   u   n   t       +       1  \r  \r           l   e   t
0036600        f       =       l   v       n       -       6  \r        
0036620    i   f       S 376 001  \0  \0 247   W   D   e   b   u   g    
0036640    %       M   e   s   s   a   g   e       e   q       0       d
0036660    o  \r                   [  \t   W   r   i   t   e   N   (   n
0036700    )  \r                       ]  \r           t   e   s   t    
0036720    S   W   D   e   b   u   g  \r           i   f   n   o   t    
0036740    W   r   i   t   e   S   (   "   :       "   )  \r           i
0036760    f   s   o  \r                   [  \t   W   r   i   t   e   S
0037000    (   "       F   R   O   M       "   )  \r  \t   l   e   t    
0037020    p       =       f   !   0       -       (   S   W   N   o   x
0037040    i   o   s   ?       0   ,       #   2   0   0   )  \r  \t   W
0037060    r   i   t   e   O   (   p   !   1   )  \r  \t   W   r   i   t
0037100    e   S   (   "       I   N       "   )  \r  \t   l   e   t    
0037120    q       =       p   !   0       -       (   S   W   N   o   x
0037140    i   o   s   ?       0   ,       #   2   0   0   )  \r  \t   W
0037160    r   i   t   e   O   (   q   !   2       -       2   )  \r  \t
0037200    W   r   i   t   e   S   (   "       ,       F   R   A   M   E
0037220        A   T       "   )  \r  \t   W 376 001  \0 027 352   r   i
0037240    t   e   O   (   q   )  \r  \t   W   W   (   $   *   n   )  \r
0037260                        ]  \r  \r           i   f       M   e   s
0037300    s   a   g   e       n   e       0       d   o       W   r   i
0037320    t   e   S   (   M   e   s   s   a   g   e   )  \r           W
0037340    W   (   $   *   n   )  \r  \r           i   f       R   e   p
0037360    o   r   t   c   o   u   n   t       g   r       M   a   x   E
0037400    r   r   o   r   s       d   o  \r                   [  \t   O
0037420    s   t   r   e   a   m       =       T   T   O   s   t   r   e
0037440    a   m  \r  \t   W   r   i   t   e   S   (   "   T   O   O    
0037460    M   A   N   Y       E   R   R   O   R   S   *   n   "   )  \r
0037500   \t   g   o   t   o       A   b   o   r   t  \r                
0037520        ]  \r  \r   ]  \r  \r   a   n   d       W   r   i   t   e
0037540    L   i   n   e   (   l   i   n   e   )       =       W   r   i
0037560    t   e   L   i   n   e   s   (   l   i   n   e   ,       0   ,
0037600        1   )  \r  \r   a   n   d       W   r   i   t   e   L   i
0037620    n   e   s   (   l   i   n   e   ,       l   i   n   e 376 001
0037640   \0 206 023   o   f   f   s   e   t   ,       l   i   n   e   c
0037660    o   u   n   t   )       =       v   a   l   o   f  \r   [  \r
0037700            s   t   a   t   i   c       [       P   r   e   v   f
0037720    i   l   e       =       -   1   ;       P   r   e   v   l   i
0037740    n   e       =       -   1       ]  \r  \r           l   e   t
0037760        c   h       =       n   i   l  \r  \r           l   e   t
0040000        i       =       0  \r           w   h   i   l   e       U
0040020    s   c   (   l   i   n   e   ,       G   e   t   l   i   n   e
0040040    V   !   i   )       g   r       0       d   o  \r            
0040060        [  \t   i   f       i       e   q       G   e   t   l   i
0040100    n   e   P       d   o       [       l   i   n   e       =    
0040120    G   e   t   l   i   n   e   V   !   i   ;       b   r   e   a
0040140    k       ]  \r  \t   i       =       i       +       G   e   t
0040160    l   i   n   e   N  \r                       ]  \r           l
0040200    e   t       f   i   l   e       =       G   e   t   l   i   n
0040220    e   V   !   (   i   +   1   )  \r           u   n   l   e   s
0040240    s       f 376 001  \0 002 017   i   l   e       e   q       C
0040260    u   r   f   i   l   e       d   o  \r                   [  \t
0040300    C   l   o   s   e   I   n   p   u   t   (   S   o   u   r   c
0040320    e   S   t   r   e   a   m   ,       G   e   t   n   a   m   e
0040340    V   !   C   u   r   f   i   l   e   )  \r  \t   C   u   r   f
0040360    i   l   e       =       f   i   l   e  \r  \t   S   o   u   r
0040400    c   e   S   t   r   e   a   m       =       O   p   e   n   I
0040420    n   p   u   t   (   G   e   t   n   a   m   e   V   !   C   u
0040440    r   f   i   l   e   )  \r                       ]  \r        
0040460    l   i   n   e       =       l   i   n   e       -       (   G
0040500    e   t   l   i   n   e   V   !   i       -       G   e   t   l
0040520    i   n   e   V   !   (   i   +   2   )   )  \r           i   f
0040540        l   i   n   e       l   e       0       d   o       l   i
0040560    n   e       =       0  \r  \r           R   e   p   o   s   i
0040600    t   i   o   n   (   S   o   u   r   c   e   S   t   r   e   a
0040620    m   ,       l   i   n   e   )  \r           u   n   l   e   s
0040640    s       l   i   n   e   o   f 376 001  \0 322   o   f   s   e
0040660    t       e   q       0       d   o  \r           t   e   s   t
0040700        l   i   n   e   o   f   f   s   e   t       l   s       0
0040720   \r           t   h   e   n       [       l   i   n   e       =
0040740        B   a   c   k   1   (   l   i   n   e   )  \r  \t       l
0040760    i   n   e   o   f   f   s   e   t       =       l   i   n   e
0041000    o   f   f   s   e   t   +   1  \r                            
0041020    ]       r   e   p   e   a   t   u   n   t   i   l       l   i
0041040    n   e   o   f   f   s   e   t       e   q       0  \r        
0041060    o   r       i   f       l   i   n   e   o   f   f   s   e   t
0041100        g   r       0       d   o  \r                            
0041120    [       l   i   n   e       =       F   o   r   w   a   r   d
0041140    1   (   l   i   n   e   )  \r  \t       l   i   n   e   o   f
0041160    f   s   e   t       =       l   i   n   e   o   f   f   s   e
0041200    t   -   1  \r                               ]       r   e   p
0041220    e   a   t   u   n   t   i   l       l   i   n   e   o   f   f
0041240    s   e   t       e   q       0  \r  \r           i 376 001  \0
0041260  276 320   f       P   r   e   v   l   i   n   e       e   q    
0041300    l   i   n   e       &       P   r   e   v   f   i   l   e    
0041320    e   q       f   i   l   e       r   e   s   u   l   t   i   s
0041340        f   a   l   s   e  \r           P   r   e   v   l   i   n
0041360    e   ,       P   r   e   v   f   i   l   e       =       l   i
0041400    n   e   ,       f   i   l   e  \r  \r           R   e   p   o
0041420    s   i   t   i   o   n   (   S   o   u   r   c   e   S   t   r
0041440    e   a   m   ,       l   i   n   e   )  \r           f   o   r
0041460        i       =       1       t   o       l   i   n   e   c   o
0041500    u   n   t       d   o  \r           [       [       R   e   a
0041520    d   c   h   (   S   o   u   r   c   e   S   t   r   e   a   m
0041540    ,       l   v       c   h   )  \r                   ]       r
0041560    e   p   e   a   t   w   h   i   l   e       c   h       e   q
0041600        $   *   n  \r                           W   W   (   c   h
0041620    )  \r                   [       R   e   a   d   c   h   (   S
0041640    o   u   r   c   e   S   t   r   e   a   m   ,       l   v    
0041660    c   h 376 001  \0 254 022   )  \r                           i
0041700    f       c   h       e   q       #   7   7   7       b   r   e
0041720    a   k  \r                           W   W   (   c   h   )  \r
0041740                    ]       r   e   p   e   a   t   u   n   t   i
0041760    l       c   h       e   q       $   *   n  \r           ]  \r
0042000   \r           r   e   s   u   l   t   i   s       t   r   u   e
0042020   \r  \r   ]  \r  \r   a   n   d       B   a   c   k   1   (   l
0042040    i   n   e   )       =       v   a   l   o   f  \r   [  \r    
0042060        l   e   t       c   h       =       n   i   l  \r  \r    
0042100        [       l   i   n   e       =       l   i   n   e       -
0042120        1  \r                   i   f       l   i   n   e       l
0042140    e       0       r   e   s   u   l   t   i   s       0  \r    
0042160                R   e   p   o   s   i   t   i   o   n   (   S   o
0042200    u   r   c   e   S   t   r   e   a   m   ,       l   i   n   e
0042220    )  \r                   R   e   a   d   c   h   (   S   o   u
0042240    r   c   e   S   t   r   e   a   m   ,       l   v       c   h
0042260    )  \r           ]       r 376 001  \0 342 255   e   p   e   a
0042300    t   w   h   i   l   e       c   h       e   q       $   *   n
0042320   \r           [       l   i   n   e       =       l   i   n   e
0042340        -       1  \r                   i   f       l   i   n   e
0042360        l   e       0       r   e   s   u   l   t   i   s       0
0042400   \r                   R   e   p   o   s   i   t   i   o   n   (
0042420    S   o   u   r   c   e   S   t   r   e   a   m   ,       l   i
0042440    n   e   )  \r                   R   e   a   d   c   h   (   S
0042460    o   u   r   c   e   S   t   r   e   a   m   ,       l   v    
0042500    c   h   )  \r           ]       r   e   p   e   a   t   u   n
0042520    t   i   l       c   h       e   q       $   *   n  \r  \r    
0042540        r   e   s   u   l   t   i   s       l   i   n   e       +
0042560        1  \r   ]  \r  \r   a   n   d       F   o   r   w   a   r
0042600    d   1   (   l   i   n   e   )       =       v   a   l   o   f
0042620   \r   [  \r           l   e   t       c   h       =       n   i
0042640    l  \r  \r           R   e   p   o   s   i   t   i   o   n   (
0042660    S   o   u   r   c   e   S   t   r   e   a   m 376 001  \0 307
0042700  375   ,       l   i   n   e   )  \r           [       R   e   a
0042720    d   c   h   (   S   o   u   r   c   e   S   t   r   e   a   m
0042740    ,       l   v       c   h   )  \r                   l   i   n
0042760    e       =       l   i   n   e       +       1  \r           ]
0043000        r   e   p   e   a   t   w   h   i   l   e       c   h    
0043020    e   q       $   *   n  \r           [       R   e   a   d   c
0043040    h   (   S   o   u   r   c   e   S   t   r   e   a   m   ,    
0043060    l   v       c   h   )  \r                   l   i   n   e    
0043100    =       l   i   n   e       +       1  \r           ]       r
0043120    e   p   e   a   t   u   n   t   i   l       c   h       e   q
0043140        $   *   n       %       c   h       e   q       #   7   7
0043160    7  \r           [       R   e   a   d   c   h   (   S   o   u
0043200    r   c   e   S   t   r   e   a   m   ,       l   v       c   h
0043220    )  \r                   l   i   n   e       =       l   i   n
0043240    e       +       1  \r           ]       r   e   p   e   a   t
0043260    w   h   i   l   e       c   h       e   q       $   *   n  \r
0043300   \r 376  \0 022   ' 347           r   e   s   u   l   t   i   s
0043320        l   i   n   e  \r   ]  \r 377  \0  \0   B   C   P   L   1
0043340    .   b   c   p   l  \0 373 226   W 350 020  \0  \0 376 001  \0
0043360    { 206   /   /       B   C   P   L   1   .   b   c   p   l    
0043400    -       B   C   P   L       C   o   m   p   i   l   e   r    
0043420    -   -       I   O       r   o   u   t   i   n   e   s  \r   /
0043440    /       C   o   p   y   r   i   g   h   t       X   e   r   o
0043460    x       C   o   r   p   o   r   a   t   i   o   n       1   9
0043500    8   0  \r   /   /       U   s   e       D   v   e   c       t
0043520    o       a   l   l   o   c   a   t   e       F   i   l   e   N
0043540    a   m   e   L   e   n   g   t   h       -   -       S   w   i
0043560    n   e   h   a   r   t   ,       6       M   a   y       7   7
0043600   \r  \r   g   e   t       "   b   c   p   l   x   "  \r   g   e
0043620    t       "   b   c   p   l   i   o   x   "  \r  \r   s   t   r
0043640    u   c   t   u   r   e       [       b   l   a   n   k       b
0043660    i   t       1   5   ;       O   D   D   B   I   T       b   i
0043700    t       1       ]  \r  \r   l   e   t       P   a   c   k   s
0043720    t   r   i   n   g   (   u   ,       p   )       b   e  \r    
0043740    [  \r           l   e   t       n       =       u   !   0  \r
0043760          376 001  \0 354 205   l   e   t       i   ,       j    
0044000    =       0   ,       0  \r           [       p   !   j       =
0044020        u   !   i       l   s   h   i   f   t       8  \r        
0044040            i       =       i       +       1   ;       i   f    
0044060    i       g   r       n       r   e   t   u   r   n  \r        
0044100            p   !   j       =       p   !   j       +       (   u
0044120    !   i       &       #   3   7   7   )  \r                   i
0044140        =       i       +       1   ;       i   f       i       g
0044160    r       n       r   e   t   u   r   n  \r                   j
0044200        =       j       +       1  \r           ]       r   e   p
0044220    e   a   t  \r       ]  \r  \r   a   n   d       U   n   p   a
0044240    c   k   s   t   r   i   n   g   (   p   ,       u   )       b
0044260    e  \r   [  \r           l   e   t       n       =       p   !
0044300    0       r   s   h   i   f   t       8  \r           l   e   t
0044320        i   ,       j       =       0   ,       0  \r           [
0044340        u   !   i       =       p   !   j       r   s   h   i   f
0044360    t       8  \r             376 001  \0 247   %       i       =
0044400        i       +       1   ;       i   f       i       g   r    
0044420    n       r   e   t   u   r   n  \r                   u   !   i
0044440        =       p   !   j       &       #   3   7   7  \r        
0044460            i       =       i       +       1   ;       i   f    
0044500    i       g   r       n       r   e   t   u   r   n  \r        
0044520            j       =       j       +       1  \r           ]    
0044540    r   e   p   e   a   t  \r       ]  \r  \r   a   n   d       M
0044560    o   v   e   s   t   r   i   n   g   (   p   1   ,       p   2
0044600    )       b   e  \r   [  \r           l   e   t       n       =
0044620        p   1   !   0       r   s   h   i   f   t       8  \r    
0044640        t   e   s   t       n       e   q       0  \r           t
0044660    h   e   n       n       =       p   1   !   0  \r           o
0044700    r               n       =       n   /   2  \r           f   o
0044720    r       i       =       0       t   o       n       d   o    
0044740    p   2   !   i       =       p   1   !   i  \r       ]  \r  \r
0044760    a   n   d       L   e   n   g   t   h   (   p 376 001  \0 256
0045000  367   )       =       p   !   0       r   s   h   i   f   t    
0045020    8  \r  \r   a   n   d       C   h   a   r   (   p   ,       n
0045040    )       =       v   a   l   o   f  \r   [  \r           l   e
0045060    t       i       =       n       r   s   h   i   f   t       1
0045100   \r           t   e   s   t       (   n       &       1   )    
0045120    e   q       0  \r           t   h   e   n       r   e   s   u
0045140    l   t   i   s       p   !   i       r   s   h   i   f   t    
0045160    8  \r           o   r               r   e   s   u   l   t   i
0045200    s       p   !   i       &       #   3   7   7  \r       ]  \r
0045220   \r   a   n   d       W   r   i   t   e   S   (   s   )       b
0045240    e  \r   [       l   e   t       u       =       v   e   c    
0045260    2   5   6  \r           U   n   p   a   c   k   s   t   r   i
0045300    n   g   (   s   ,       u   )  \r           f   o   r       i
0045320        =       1       t   o       u   !   0       d   o       W
0045340    W   (   u   !   i   )  \r       ]  \r  \r   a   n   d       W
0045360    r   i   t   e   N   (   n   )       b   e  \r   [       i   f
0045400      376 001  \0 277 353   n       l   s       0       d   o    
0045420    [       n       =       -   n   ;       W   W   (   $   -   )
0045440        ]  \r           l   e   t       z   s   w       =       f
0045460    a   l   s   e  \r           l   e   t       k       =       1
0045500    0   0   0   0  \r           f   o   r       i       =       1
0045520        t   o       4       d   o  \r                   [       l
0045540    e   t       d       =       n   /   k  \r                    
0045560    i   f       z   s   w       %       (   d       n   e       0
0045600    )       d   o  \r                                   [       W
0045620    W   (   d   +   $   0   )   ;       z   s   w       =       t
0045640    r   u   e       ]  \r                       n       =       n
0045660        r   e   m       k  \r                       k       =    
0045700    k   /   1   0  \r                   ]  \r           W   W   (
0045720    n   +   $   0   )  \r       ]  \r  \r   a   n   d       W   r
0045740    i   t   e   O   (   n   )       b   e  \r   [       l   e   t
0045760        z   s   w       =       t   r   u   e  \r           f   o
0046000    r       i       =     376 001  \0   g 034   1   5       t   o
0046020        3       b   y       -   3       d   o  \r                
0046040    [       l   e   t       d       =       (   n       r   s   h
0046060    i   f   t       i   )       &       #   7  \r                
0046100        t   e   s   t       z   s   w       &       (   d       e
0046120    q       0   )  \r                       t   h   e   n       [
0046140        W   W   (   $   *   s   )       ]  \r                    
0046160    o   r               [       W   W   (   d   +   $   0   )   ;
0046200        z   s   w       =       f   a   l   s   e       ]  \r    
0046220                ]  \r           W   W   (   (   n       &       #
0046240    7   )       +       $   0   )  \r       ]  \r  \r   a   n   d
0046260        C   l   o   s   e   I   n   p   u   t   (   c   h   a   n
0046300    n   e   l   )       b   e       c   l   o   s   e   c   h   a
0046320    n   n   e   l   (   c   h   a   n   n   e   l   )          \r
0046340   \r   a   n   d       C   l   o   s   e   O   u   t   p   u   t
0046360    (   c   h   a   n   n   e   l   )       b   e       c   l   o
0046400    s   e   c   h   a   n   n   e   l   (   c 376 001  \0 255   o
0046420    h   a   n   n   e   l   )       /   /       w   i   l   l    
0046440    f   l   u   s   h       b   u   f   f   e   r       i   n    
0046460    c   l   o   s   e   c   h   a   n   n   e   l  \r  \r   a   n
0046500    d       C   l   o   s   e   T   e   m   p   (   c   h   a   n
0046520    n   e   l   ,       c   h   )       b   e       c   l   o   s
0046540    e   c   h   a   n   n   e   l   (   c   h   a   n   n   e   l
0046560    )       /   /       w   i   l   l       f   l   u   s   h    
0046600    b   u   f   f   e   r       i   n       c   l   o   s   e   c
0046620    h   a   n   n   e   l  \r  \r   a   n   d       s   y   s   c
0046640    a   l   l   e   r   r   o   r   (   c   a   l   l   ,       a
0046660    c   ,       s   t   r   e   a   m   ;       n   u   m   a   r
0046700    g   s       n   a   r   g   s   )       b   e  \r   [       l
0046720    e   t       c   a   l   l   a   c       =       v   e   c    
0046740    3   ;       f   o   r       i       =       0       t   o    
0046760    3       d   o       c   a   l   l   a   c   !   i       =    
0047000    a   c   !   i  \r  \r           O   s   t   r   e   a   m    
0047020  376 001  \0 202   s   =       T   T   O   s   t   r   e   a   m
0047040   \r           W   r   i   t   e   S   (   "   U   N   E   X   P
0047060    E   C   T   E   D       S   Y   S   T   E   M       C   A   L
0047100    L       E   R   R   O   R       "   )  \r           W   r   i
0047120    t   e   O   (   c   a   l   l   a   c   !   2   )  \r  \r    
0047140        [       W   r   i   t   e   S   (   "       O   N       C
0047160    A   L   L       "   )   ;       W   r   i   t   e   O   (   c
0047200    a   l   l   )   ;       W   W   (   $   *   n   )       ]  \r
0047220            i   f       S   W   H   e   l   p       d   o       H
0047240    e   l   p   (   "   S   Y   S   T   E   M       C   A   L   L
0047260        E   R   R   O   R   "   )  \r           f   i   n   i   s
0047300    h  \r       ]  \r  \r   a   n   d       B   a   d   S   w   i
0047320    t   c   h   (   i   )       b   e  \r   [  \t   /   /   i   l
0047340    l   e   g   a   l       s   w   i   t   c   h       d   e   t
0047360    e   c   t   e   d       -   -       a   b   o   r   t  \r    
0047400        O   s   t   r   e   a   m       =       T   T   O   s   t
0047420    r   e   a   m  \r 376 001  \0 033 251           l   e   t    
0047440    n       =       F   i   l   e   N   a   m   e   L   e   n   g
0047460    t   h   /   2   ;       D   v   e   c   (   B   a   d   S   w
0047500    i   t   c   h   ,   l   v       n   )   ;       P   a   c   k
0047520    s   t   r   i   n   g   (   f   i   l   e   n   a   m   e   ,
0047540        n   )  \r           W   r   i   t   e   S   (   n   )  \r
0047560            f   o   r       i       =       1       t   o       s
0047600    w   !   0       d   o       [       W   W   (   $   /   )   ;
0047620        W   W   (   s   w   !   i   )       ]  \r           W   r
0047640    i   t   e   S   (   "       -   -       B   A   D       S   W
0047660    I   T   C   H       "   )   ;       W   W   (   s   w   !   i
0047700    )   ;       W   W   (   $   *   n   )  \r           i   f    
0047720    S   W   H   e   l   p       d   o       H   e   l   p   (   "
0047740    H   E   L   P   "   )  \r           f   i   n   i   s   h  \r
0047760        ]  \r  \r   a   n   d       E   r   r   o   r   (   m   e
0050000    s   s   a   g   e   )       b   e  \r   [  \t   /   /   f   a
0050020    t   a   l       e   r   r   o   r     376 001  \0  \f 243   d
0050040    e   t   e   c   t   e   d       -   -       a   b   o   r   t
0050060   \r           O   s   t   r   e   a   m       =       T   T   O
0050100    s   t   r   e   a   m  \r           W   W   (   $   *   n   )
0050120    ;       W   r   i   t   e   S   (   m   e   s   s   a   g   e
0050140    )   ;       W   W   (   $   *   n   )  \r           i   f    
0050160    S   W   H   e   l   p       d   o       H   e   l   p   (   "
0050200    H   E   L   P   "   )  \r           f   i   n   i   s   h  \r
0050220        ]  \r  \r   a   n   d       F   i   x   F   i   l   e   N
0050240    a   m   e   (   N   e   w   n   a   m   e   ,       e   x   t
0050260    ,       d   e   v   )       b   e  \r   [  \t  \r           l
0050300    e   t       u   d   e   v       =       F   i   l   e   N   a
0050320    m   e   L   e   n   g   t   h   ;       D   v   e   c   (   F
0050340    i   x   F   i   l   e   N   a   m   e   ,       l   v       u
0050360    d   e   v   )  \r           l   e   t       d   e   v   s   w
0050400        =       f   a   l   s   e  \r           l   e   t       n
0050420        =       0  \r           [       n       =       n     376
0050440  001  \0 344 001   +       1  \r                   i   f       n
0050460        g   r       f   i   l   e   n   a   m   e   !   0       d
0050500    o  \r                           [  \t   l   e   t       v    
0050520    =       v   e   c       3  \r  \t   U   n   p   a   c   k   s
0050540    t   r   i   n   g   (   e   x   t   ,       v   )  \r  \t   f
0050560    o   r       i       =       1       t   o       v   !   0    
0050600    d   o       f   i   l   e   n   a   m   e   !   (   n   +   i
0050620    -   1   )       =       v   !   i  \r  \t   f   i   l   e   n
0050640    a   m   e   !   0       =       f   i   l   e   n   a   m   e
0050660    !   0       +       v   !   0  \r  \t   b   r   e   a   k  \r
0050700                                ]  \r                   i   f    
0050720    f   i   l   e   n   a   m   e   !   n       e   q       $   .
0050740        b   r   e   a   k  \r                   i   f       f   i
0050760    l   e   n   a   m   e   !   n       e   q       $   :       d
0051000    o       d   e   v   s   w       =       t   r   u   e  \r    
0051020        ]       r   e   p   e   a   t  \r           l   e   t    
0051040    u   n   a   m 376 001  \0 334   c   e       =       f   i   l
0051060    e   n   a   m   e  \r           t   e   s   t       d   e   v
0051100        n   e       0       &       d   e   v   !   0       n   e
0051120        0       &       n   o   t       d   e   v   s   w       t
0051140    h   e   n       U   n   p   a   c   k   s   t   r   i   n   g
0051160    (   d   e   v   ,       u   d   e   v   )  \r  \t  \t  \t  \t
0051200   \t       o   r       u   d   e   v   !   0       =       0  \r
0051220            i   f       u   d   e   v   !   0       g   e       4
0051240        &       u   d   e   v   !   4       e   q       $   :    
0051260    d   o  \r                   [  \t  \r  \t   u   n   a   m   e
0051300        =       f   i   l   e   n   a   m   e       -       4  \r
0051320   \t   u   n   a   m   e   !   0       =       f   i   l   e   n
0051340    a   m   e   !   0       +       4  \r  \t   f   o   r       i
0051360        =       1       t   o       4       d   o       u   n   a
0051400    m   e   !   i       =       u   d   e   v   !   i  \r        
0051420                ]  \r           i   f       u   n   a   m   e   !
0051440    (   u   n   a   m   e   !   0   ) 376 001  \0  \n   w       e
0051460    q       $   .       d   o       u   n   a   m   e   !   0    
0051500    =       u   n   a   m   e   !   0       -       1  \r        
0051520    P   a   c   k   s   t   r   i   n   g   (   u   n   a   m   e
0051540    ,       N   e   w   n   a   m   e   )  \r           f   i   l
0051560    e   n   a   m   e   !   0       =       n       -       1  \r
0051600        ]  \r  \r   a   n   d       D   e   c   V   a   l   u   e
0051620    (   n   a   m   e   )       =       v   a   l   o   f  \r   [
0051640   \t   /   /   g   e   t       d   e   c   i   m   a   l       n
0051660    u   m   b   e   r       f   r   o   m       u   n   p   a   c
0051700    k   e   d       s   t   r   i   n   g  \r           l   e   t
0051720        n       =       0  \r           f   o   r       i       =
0051740        1       t   o       n   a   m   e   !   0       d   o  \r
0051760                    [  \t   u   n   l   e   s   s       $   0    
0052000    l   e       n   a   m   e   !   i       &       n   a   m   e
0052020    !   i       l   e       $   9       d   o  \r  \t  \t   E   r
0052040    r   o   r   (   "   B   A   D       D   E   C   I   M 376 001
0052060   \0 243 343   A   L       N   U   M   B   E   R   "   )  \r  \t
0052100    n       =       n   *   1   0       +       (   n   a   m   e
0052120    !   i   -   $   0   )  \r                       ]  \r        
0052140    r   e   s   u   l   t   i   s       n  \r       ]  \r  \r   a
0052160    n   d       O   c   t   V   a   l   u   e   (   n   a   m   e
0052200    )       =       v   a   l   o   f  \r   [  \t   /   /   g   e
0052220    t       o   c   t   a   l       n   u   m   b   e   r       f
0052240    r   o   m       u   n   p   a   c   k   e   d       s   t   r
0052260    i   n   g  \r           l   e   t       n       =       0  \r
0052300            f   o   r       i       =       1       t   o       n
0052320    a   m   e   !   0       d   o  \r                   [  \t   u
0052340    n   l   e   s   s       $   0       l   e       n   a   m   e
0052360    !   i       &       n   a   m   e   !   i       l   e       $
0052400    7       d   o  \r  \t  \t   E   r   r   o   r   (   "   B   A
0052420    D       O   C   T   A   L       N   U   M   B   E   R   "   )
0052440   \r  \t   n       =       n   *   8       +       (   n   a   m
0052460    e   !   i 376 001  \0 363   K   -   $   0   )  \r            
0052500            ]  \r           r   e   s   u   l   t   i   s       n
0052520   \r       ]  \r  \r   a   n   d       Z   e   r   o   v   e   c
0052540    (   n   )       =       v   a   l   o   f  \r   [       l   e
0052560    t       v       =       N   e   w   v   e   c   (   n   )  \r
0052600            f   o   r       i       =       0       t   o       n
0052620        d   o       v   !   i       =       0  \r           r   e
0052640    s   u   l   t   i   s       v  \r   ]  \r   a   n   d       L
0052660    i   s   t   1   (   a   )       =       v   a   l   o   f  \r
0052700    [       l   e   t       v       =       N   e   w   v   e   c
0052720    (   1   -   1   )  \r           v   !   0       =       a  \r
0052740            r   e   s   u   l   t   i   s       v  \r   ]  \r   a
0052760    n   d       L   i   s   t   2   (   a   ,   b   )       =    
0053000    v   a   l   o   f  \r   [       l   e   t       v       =    
0053020    N   e   w   v   e   c   (   2   -   1   )  \r           v   !
0053040    0   ,       v   !   1       =       a   ,       b  \r        
0053060    r   e   s   u   l   t   i   s 376 001  \0 001   a       v  \r
0053100    ]  \r   a   n   d       L   i   s   t   3   (   a   ,   b   ,
0053120    c   )       =       v   a   l   o   f  \r   [       l   e   t
0053140        v       =       N   e   w   v   e   c   (   3   -   1   )
0053160   \r           v   !   0   ,       v   !   1   ,       v   !   2
0053200        =       a   ,       b   ,       c  \r           r   e   s
0053220    u   l   t   i   s       v  \r   ]  \r   a   n   d       L   i
0053240    s   t   4   (   a   ,   b   ,   c   ,   d   )       =       v
0053260    a   l   o   f  \r   [       l   e   t       v       =       N
0053300    e   w   v   e   c   (   4   -   1   )  \r           v   !   0
0053320    ,       v   !   1   ,       v   !   2   ,       v   !   3    
0053340    =       a   ,       b   ,       c   ,       d  \r           r
0053360    e   s   u   l   t   i   s       v  \r   ]  \r   a   n   d    
0053400    L   i   s   t   5   (   a   ,   b   ,   c   ,   d   ,   e   )
0053420        =       v   a   l   o   f  \r   [       l   e   t       v
0053440        =       N   e   w   v   e   c   (   5   -   1   )  \r    
0053460        v   !   0   ,       v   !   1   ,       v   ! 376 001  \0
0053500    /   t   2   ,       v   !   3   ,       v   !   4       =    
0053520    a   ,       b   ,       c   ,       d   ,       e  \r        
0053540    r   e   s   u   l   t   i   s       v  \r   ]  \r   a   n   d
0053560        L   i   s   t   6   (   a   ,   b   ,   c   ,   d   ,   e
0053600    ,   f   )       =       v   a   l   o   f  \r   [       l   e
0053620    t       v       =       N   e   w   v   e   c   (   6   -   1
0053640    )  \r           v   !   0   ,       v   !   1   ,       v   !
0053660    2   ,       v   !   3   ,       v   !   4   ,       v   !   5
0053700        =       a   ,       b   ,       c   ,       d   ,       e
0053720    ,       f  \r           r   e   s   u   l   t   i   s       v
0053740   \r   ]  \r   a   n   d       L   i   s   t   7   (   a   ,   b
0053760    ,   c   ,   d   ,   e   ,   f   ,   g   )       =       v   a
0054000    l   o   f  \r   [       l   e   t       v       =       N   e
0054020    w   v   e   c   (   7   -   1   )  \r           v   !   0   ,
0054040        v   !   1   ,       v   !   2   ,       v   !   3   ,    
0054060    v   !   4   ,       v   !   5   ,       v   !   6       =    
0054100    a   , 376 001  \0 023 005       b   ,       c   ,       d   ,
0054120        e   ,       f   ,       g  \r           r   e   s   u   l
0054140    t   i   s       v  \r   ]  \r  \r   a   n   d       N   e   x
0054160    t   p   a   r   a   m   (   )       =       v   a   l   o   f
0054200   \r   [       s   t   a   t   i   c       [       n   e   x   t
0054220    p       =       0       ]  \r           n   e   x   t   p    
0054240    =       n   e   x   t   p       +       1   ;       r   e   s
0054260    u   l   t   i   s       n   e   x   t   p  \r   ]  \r   a   n
0054300    d       N   e   x   t   e   n   t   r   y   (   )       =    
0054320    v   a   l   o   f  \r   [       s   t   a   t   i   c       [
0054340        n   e   x   t   e       =       0       ]  \r           n
0054360    e   x   t   e       =       n   e   x   t   e       +       1
0054400    ;       r   e   s   u   l   t   i   s       n   e   x   t   e
0054420   \r   ]  \r   a   n   d       N   e   x   t   s   t   a   t   i
0054440    c   (   )       =       v   a   l   o   f  \r   [       s   t
0054460    a   t   i   c       [       n   e   x   t   s       =       0
0054500        ]  \r           n   e 376  \0   #   x 370   x   t   s    
0054520    =       n   e   x   t   s       +       1   ;       r   e   s
0054540    u   l   t   i   s       n   e   x   t   s  \r   ]  \r  \r 377
0054560   \0  \0   B   C   P   L   A   L   T   O   .   b   c   p   l  \0
0054600  373 226   X 001   R  \0  \0 376 001  \0   z   p   /   /       B
0054620    C   P   L   A   L   T   O   .   b   c   p   l       -       B
0054640    C   P   L       A   l   t   o   -   s   p   e   c   i   f   i
0054660    c       f   u   n   c   t   i   o   n   s  \r   /   /       C
0054700    o   p   y   r   i   g   h   t       X   e   r   o   x       C
0054720    o   r   p   o   r   a   t   i   o   n       1   9   8   0  \r
0054740    /   /       S   w   i   n   e   h   a   r   t   ,       6    
0054760    M   a   y       7   7   ,       F   i   l   e       l   e   n
0055000    g   t   h   s       -   >       s   t   a   t   i   c   s  \r
0055020    /   /       E   d   i   t       b   y       B   o   g   g   s
0055040        t   o       i   n   c   r   e   a   s   e       s   i   z
0055060    e       o   f       s   o   u   r   c   e       f   i   l   e
0055100        n   a   m   e       1       A   p   r       7   7  \r   /
0055120    /       E   d   i   t   s       b   y       S   p   r   o   u
0055140    l   l       t   o       c   o   n   v   e   r   t       t   o
0055160        n   e   w       O   S       S   e   p   t   e   m   b   e
0055200    r       7   ,       1   9   7   6  \r   /   / 376 001  \0 033
0055220    %       I   n   i   t   B   C   P   L       c   a   l   l   s
0055240        M   a   i   n   <   S   W   I   N   E   H   A   R   T   >
0055260    B   C   P   L   A   L   T   O   .   ;   9                    
0055300    4   -   A   P   R   -   7   5       0   7   :   5   4   :   2
0055320    9                   E   D   I   T       B   Y       S   W   I
0055340    N   E   H   A   R   T  \r   /   /       p   u   l   l       S
0055360    W   A   l   t   o   c   .   .   .   i   m   e       <   S   W
0055400    I   N   E   H   A   R   T   >   B   C   P   L   A   L   T   O
0055420    .   ;   8                   2   8   -   M   A   R   -   7   5
0055440        1   3   :   2   4   :   1   1                   E   D   I
0055460    T       B   Y       S   W   I   N   E   H   A   R   T  \r   /
0055500    /       <   S   W   I   N   E   H   A   R   T   >   B   C   P
0055520    L   A   L   T   O   .   ;   5                   2   1   -   M
0055540    A   R   -   7   5       1   1   :   4   4   :   3   3        
0055560            E   D   I   T       B   Y       S   W   I   N   E   H
0055600    A   R   T  \r  \r   /   /       l   a   s   t       m   o   d
0055620    i 376 001  \0 303 275   f   i   e   d       b   y       B   u
0055640    t   t   e   r   f   i   e   l   d   ,       M   a   r   c   h
0055660        1   0   ,       1   9   8   0           4   :   3   9    
0055700    P   M  \r   /   /       -       I   n   i   t   B   C   P   L
0055720    ,       p   r   i   n   t       d   a   t   e       o   f    
0055740    M   a   r   c   h       1   0   ,       1   9   8   0       -
0055760        3   /   1   0  \r   /   /       -       R   e   s   t   a
0056000    r   t   B   C   P   L   ,       a   d   d       C   o   u   n
0056020    t   e   r   J   u   n   t   a       a   n   d       a   d   d
0056040        R   e   s   t   a   r   t   A   f   t   e   r   C   o   u
0056060    n   t   e   r   J   u   n   t   a       -       1   /   8  \r
0056100    /   /       -       c   o   n   v   e   r   t       t   o    
0056120    O   S       1   7   :       g   e   t       b   c   p   l   f
0056140    i   l   e   s   .   d       a   n   d       r   e   m   o   v
0056160    e       n   o   L   o   g       -       1   /   7   /   8   0
0056200   \r   /   /       -       i   n   c   o   r   p   o   r   a   t
0056220    e       P   a   x   t 376 001  \0   s  \n   o   n   '   s    
0056240    G   e   t   F   i   l   e   M   a   x       i   n   c   r   e
0056260    a   s   e       f   r   o   m       2   5       t   o       5
0056300    0       -       5   /   8  \r   /   /       -       a   d   d
0056320        R   e   s   t   a   r   t   B   C   P   L       -       5
0056340    /   5  \r   /   /       -       I   n   i   t   B   C   P   L
0056360    ,       c   h   a   n   g   e       d   a   t   e       -    
0056400    5   /   4  \r   /   /       -       R   e   a   d   C   O   M
0056420    C   M   ,       a   d   d       a   r   g   u   m   e   n   t
0056440        a   n   d       r   e   s   u   l   t   ;       a   n   d
0056460        a   d   d       C   l   o   s   e   C   O   M   C   M    
0056500    -       5   /   4  \r   /   /       -       R   e   a   d   C
0056520    O   M   C   M   ,       a   d   d       m   i   n   u   s    
0056540    s   w   i   t   c   h   e   s       -       2   /   2   /   7
0056560    9  \r  \r   g   e   t       "   b   c   p   l   x   "  \r   g
0056600    e   t       "   b   c   p   l   i   o   x   "  \r   g   e   t
0056620        "   s   t   r   e   a   m   s   .   d 376 001  \0 003 274
0056640    "  \r   g   e   t       "   a   l   t   o   f   i   l   e   s
0056660    y   s   .   d   "  \r   g   e   t       "   s   y   s   d   e
0056700    f   s   .   d   "  \r   g   e   t       "   b   c   p   l   f
0056720    i   l   e   s   .   d   "  \r  \r   /   /   O   u   t   g   o
0056740    i   n   g       p   r   o   c   e   d   u   r   e   s  \r   e
0056760    x   t   e   r   n   a   l  \r           [  \r           o   p
0057000    e   n   f   i   l   e  \r           I   n   i   t   T   o   R
0057020    e   a   d  \r           ]  \r  \r  \r   /   /       I   n   c
0057040    o   m   i   n   g       O   S       p   r   o   c   e   d   u
0057060    r   e   s  \r   e   x   t   e   r   n   a   l       [  \r  \t
0057100    O   p   e   n   F   i   l   e  \r  \t   C   l   o   s   e   s
0057120   \r  \t   G   e   t   s  \r  \t   P   u   t   s  \r  \t   F   i
0057140    l   e   P   o   s  \r  \t   S   e   t   F   i   l   e   P   o
0057160    s  \r  \t   R   e   s   e   t   s  \r  \t   E   n   d   o   f
0057200    s  \r  \t   T   r   u   n   c   a   t   e   D   i   s   k   S
0057220    t   r   e   a   m  \r  \t   W   r   i   t   e   B   l   o   c
0057240  376 001  \0   Y   1   k  \r  \t   R   e   a   d   B   l   o   c
0057260    k  \r  \t   W   s  \r  \t   C   a   l   l   S   w   a   t  \r
0057300   \t   G   e   t   C   u   r   r   e   n   t   F   a  \r  \t   J
0057320    u   m   p   T   o   F   a  \r  \t   M   o   v   e   B   l   o
0057340    c   k  \r  \r  \t   k   e   y   s  \r  \t   d   s   p  \r  \t
0057360    f   p   C   o   m   C   m  \r  \t   ]  \r  \r   m   a   n   i
0057400    f   e   s   t       [  \r  \t   z   f   r   a   m   e   m   a
0057420    x       =       #   3   3   5  \r  \t   z   f   r   a   m   e
0057440    n   e   x   t       =       #   3   3   6  \r  \t   z   f   r
0057460    a   m   e   f   i   r   s   t       =       #   3   3   7  \r
0057500   \r  \t   w   a   i   t   d   e   f   a   u   l   t   =   5  \r
0057520   \t                   ]  \r  \r   s   t   a   t   i   c       [
0057540        c   s   t   r   e   a   m       =       0       ]        
0057560    /   /       u   s   e   d       b   y       R   e   a   d   C
0057600    O   M   C   M       a   n   d       C   l   o   s   e   C   O
0057620    M   C   M  \r   s   t   a   t   i   c       [       B   c   p
0057640    l   R   u   n   C 376 001  \0 344 326   f   a   ;       B   c
0057660    p   l   O   v   e   r   l   a   y   C   n   t   ;       B   c
0057700    p   l   P   a   r   a   m   V   e   c       ]  \r  \r   /   /
0057720        T   h   e       f   i   r   s   t       4       w   o   r
0057740    d   s       o   f       p   a   r   a   m   e   t   e   r    
0057760    v   e   c   t   o   r       a   r   e       u   s   e   d    
0060000    f   o   r       P   C   '   s  \r   /   /       n   a   m   e
0060020    d       A   ,   B   ,   C   ,   D       -   -       s   e   e
0060040        l   o   a   d   b   c   p   l   .   c   m   .           T
0060060    h   e       n   e   x   t       l   F   P   *   3       a   r
0060100    e  \r   /   /       u   s   e   d       f   o   r       F   P
0060120    '   s       f   o   r       t   h   e       t   h   r   e   e
0060140        t   e   m   p   o   r   a   r   y       f   i   l   e   s
0060160        (   B   c   p   l   .   S   c   r   a   t   c   h   *   )
0060200   \r           m   a   n   i   f   e   s   t       F   P   P   a
0060220    r   a   m   O   f   f   s   e   t   =   4  \r  \r   l   e   t
0060240        I   n   i   t   B   C   P   L   ( 376 001  \0   3 261   p
0060260    a   r   a   m   v   e   c   ,   n   i   l   ,   c   f   a   )
0060300        b   e  \r           [  \r           T   T   O   s   t   r
0060320    e   a   m       =       -   1  \r           T   T   I   s   t
0060340    r   e   a   m       =       -   1  \r           O   s   t   r
0060360    e   a   m       =       -   1   ;       I   s   t   r   e   a
0060400    m       =       -   1   ;  \r           V   e   r   s   i   o
0060420    n       =       (   2       l   s   h   i   f   t       8   )
0060440        +       2  \r           S   W   A   l   t   o       =    
0060460    t   r   u   e       /   /       d   e   f   a   u   l   t    
0060500    -   -       c   o   m   p   i   l   e       A   L   T   O    
0060520    c   o   d   e  \r           W   r   i   t   e   S   (   "   A
0060540    l   t   o       B   C   P   L       o   f       M   a   r   c
0060560    h       1   0   ,       1   9   8   0   *   N   "   )  \r    
0060600        D   i   c   t   F   r   e   e   L   i   m   i   t       =
0060620        p   a   r   a   m   v   e   c   !   1   -   1  \r        
0060640    T   r   e   e   F   r   e   e   L   i   m   i   t       = 376
0060660  001  \0 363 344       p   a   r   a   m   v   e   c   !   2   -
0060700    1  \r           C   o   d   e   F   r   e   e   L   i   m   i
0060720    t       =       p   a   r   a   m   v   e   c   !   3   -   1
0060740   \r           F   r   e   e   M   a   x       =       D   i   c
0060760    t   F   r   e   e   L   i   m   i   t  \r           F   i   l
0061000    e   N   a   m   e   L   e   n   g   t   h       =       4   0
0061020        /   /       *   D   C   S   .   .   .  \r           G   e
0061040    t   F   i   l   e   M   a   x       =       5   0  \r   /   /
0061060        S   a   v   e       C   F   A   ,       a   n   d       r
0061100    e   m   e   m   b   e   r       t   h   a   t       i   t    
0061120    d   e   n   o   t   e   s       o   v   e   r   l   a   y    
0061140    0  \r           B   c   p   l   O   v   e   r   l   a   y   C
0061160    n   t   =   0  \r           B   c   p   l   R   u   n   C   f
0061200    a   =   c   f   a  \r           B   c   p   l   P   a   r   a
0061220    m   V   e   c   =   p   a   r   a   m   v   e   c  \r  \r   /
0061240    /       C   A   L   L       T   H   E       C   O   M   P   I
0061260    L   E   R  \r 376 001  \0 220 302           M   a   i   n   (
0061300    p   a   r   a   m   v   e   c   )  \r  \r           ]  \r  \r
0061320    a   n   d       R   e   s   t   a   r   t   B   C   P   L   (
0061340    d   e   l   e   t   e   P   o   s   ,       c   o   p   y   P
0061360    o   s   )       b   e  \r               [  \r               l
0061400    e   t       s       =       o   p   e   n   N   l   o   g   (
0061420    "   C   O   M   .   C   M   "   ,       k   s   T   y   p   e
0061440    R   e   a   d   W   r   i   t   e   ,       f   p   C   o   m
0061460    C   m   )   ;  \r               l   e   t       d   e   l   e
0061500    t   e       =       c   o   p   y   P   o   s       -       d
0061520    e   l   e   t   e   P   o   s   ;  \r               l   e   t
0061540        p       =       c   o   p   y   P   o   s   ;  \r        
0061560                    [  \r                           S   e   t   F
0061600    i   l   e   P   o   s   (   s   ,       0   ,       p   )   ;
0061620        i   f       E   n   d   o   f   s   (   s   )       t   h
0061640    e   n       b   r   e   a   k   ;       l   e   t       c    
0061660    =       G   e   t   s   (   s   ) 376 001  \0   = 367   ;  \r
0061700                            S   e   t   F   i   l   e   P   o   s
0061720    (   s   ,       0   ,       p       -       d   e   l   e   t
0061740    e   )   ;       P   u   t   s   (   s   ,       c   )   ;  \r
0061760                            p       =       p       +       1   ;
0062000   \r                           ]       r   e   p   e   a   t  \r
0062020                S   e   t   F   i   l   e   P   o   s   (   s   ,
0062040        0   ,       p       -       d   e   l   e   t   e   )   ;
0062060        T   r   u   n   c   a   t   e   D   i   s   k   S   t   r
0062100    e   a   m   (   s   )   ;       C   l   o   s   e   s   (   s
0062120    )   ;  \r               C   o   u   n   t   e   r   J   u   n
0062140    t   a   (   R   e   s   t   a   r   t   A   f   t   e   r   C
0062160    o   u   n   t   e   r   J   u   n   t   a   )  \r           ]
0062200   \r  \r   a   n   d       R   e   s   t   a   r   t   A   f   t
0062220    e   r   C   o   u   n   t   e   r   J   u   n   t   a   (   )
0062240        b   e  \r               [  \r               l   e   t    
0062260    s       =       o   p   e   n   N   l   o   g   (   0 376 001
0062300   \0 333 207   ,       k   s   T   y   p   e   R   e   a   d   O
0062320    n   l   y   ,       l   v       B   c   p   l   R   u   n   C
0062340    f   a   >   >   C   F   A   .   f   p   )   ;  \r            
0062360    C   a   l   l   S   u   b   s   y   s   (   s   ,       0   ,
0062400        0   ,       B   c   p   l   P   a   r   a   m   V   e   c
0062420    )   ;  \r               ]  \r  \r   a   n   d       I   n   i
0062440    t   T   o   R   e   a   d   (   x   )       b   e  \r        
0062460    [  \r           r   e   t   u   r   n  \r           ]  \r  \r
0062500    a   n   d       s   y   s   c   a   l   l   (   c   a   l   l
0062520    ,       a   c   )       =       v   a   l   o   f  \r   [  \r
0062540            C   a   l   l   S   w   a   t   (   "   U   n   e   x
0062560    p   e   c   t   e   d       S   Y   S   C   A   L   L   "   )
0062600   \r   ]  \r  \r   a   n   d       R   e   a   d   c   h   (   s
0062620    t   r   e   a   m   ,       l   v   c   )       b   e  \r   [
0062640   \r   r   v       l   v   c       =       s   t   r   e   a   m
0062660        e   q       -   1   ?  \r  \t   G   e   t   s   (   k   e
0062700    y   s   ) 376 001  \0 372 026   ,  \r  \t   (   E   n   d   o
0062720    f   s   (   s   t   r   e   a   m   )       ?       #   7   7
0062740    7   ,       G   e   t   s   (   s   t   r   e   a   m   )    
0062760    )  \r   ]  \r  \r   a   n   d       W   r   i   t   e   c   h
0063000    (   s   t   r   e   a   m   ,       c   )       b   e  \r   [
0063020   \r   i   f       s   t   r   e   a   m       e   q       -   1
0063040        t   h   e   n       s   t   r   e   a   m   =   d   s   p
0063060   \r   P   u   t   s   (   s   t   r   e   a   m   ,       c   )
0063100   \r       ]  \r  \r   a   n   d       W   W   (   c   h   )    
0063120    b   e  \r   [  \r           s   t   a   t   i   c       [    
0063140    n   e   w   l   i   n   e   c   o   u   n   t       =       0
0063160        ]  \r           l   e   t       n   e   w   l   i   n   e
0063200        =       c   h       e   q       $   *   n  \r           t
0063220    e   s   t       n   e   w   l   i   n   e  \r           i   f
0063240    n   o   t       n   e   w   l   i   n   e   c   o   u   n   t
0063260        =       0  \r           i   f   s   o           [       i
0063300    f       n   e   w   l   i   n 376 001  \0 020   ~   e   c   o
0063320    u   n   t       g   e       2       r   e   t   u   r   n  \r
0063340   \t           n   e   w   l   i   n   e   c   o   u   n   t    
0063360    =       n   e   w   l   i   n   e   c   o   u   n   t       +
0063400        1  \r  \t       ]  \r  \r           i   f       S   W   O
0063420    n   e   C   a   s   e       d   o  \r                   i   f
0063440        $   a       l   e       c   h       &       c   h       l
0063460    e       $   z       d   o       c   h       =       c   h    
0063500    +       (   $   A   -   $   a   )  \r  \r           t   e   s
0063520    t       O   s   t   r   e   a   m       e   q       -   1  \r
0063540            t   h   e   n  \r  \t   [  \t   P   u   t   s   (   d
0063560    s   p   ,       c   h   )  \r  \t   i   f       n   e   w   l
0063600    i   n   e       &       S   W   W   a   i   t       d   o    
0063620    W   a   i   t   (   )  \r                       ]  \r        
0063640    o   r  \r  \t   [  \t   P   u   t   s   (   O   s   t   r   e
0063660    a   m   ,       c   h       )  \r  \t   i   f       n   e   w
0063700    l   i   n   e       d   o  \r  \t           [     376 001  \0
0063720  356 263   s   t   a   t   i   c       [       l   a   s   t   f
0063740    o   r   m   f   e   e   d       =       0       ]  \r  \t    
0063760                i   f       P   o   s   i   t   i   o   n   (   O
0064000    s   t   r   e   a   m   )       g   r       l   a   s   t   f
0064020    o   r   m   f   e   e   d   +   #   2   0   0   0   0       d
0064040    o  \r  \t  \t   [       l   a   s   t   f   o   r   m   f   e
0064060    e   d       =       P   o   s   i   t   i   o   n   (   O   s
0064100    t   r   e   a   m   )   ;       W   W   (   #   1   4   )    
0064120    ]  \r  \t               ]  \r                       ]  \r    
0064140    ]  \r  \r   a   n   d       W   a   i   t   (   )       b   e
0064160   \r   [  \r           s   t   a   t   i   c       [       w   a
0064200    i   t   c   o   u   n   t       =       w   a   i   t   d   e
0064220    f   a   u   l   t       ]  \r           w   a   i   t   c   o
0064240    u   n   t       =       w   a   i   t   c   o   u   n   t    
0064260    -       1  \r           i   f       w   a   i   t   c   o   u
0064300    n   t       n   e       0       r   e   t   u   r   n  \r    
0064320        w 376 001  \0 246   L   a   i   t   c   o   u   n   t   =
0064340    w   a   i   t   d   e   f   a   u   l   t  \r           W   s
0064360    (   "   T   y   p   e       a   n   y       c   h   a   r   a
0064400    c   t   e   r       t   o       p   r   o   c   e   e   d   :
0064420    "   )  \r           G   e   t   s   (   k   e   y   s   )  \r
0064440        ]  \r  \r   a   n   d       R   e   a   d   w   o   r   d
0064460    (   s   t   r   e   a   m   ,       l   v   w   )       b   e
0064500   \r   [  \r   r   v       l   v   w       =       (       G   e
0064520    t   s   (   s   t   r   e   a   m   )       l   s   h   i   f
0064540    t       8       )       +       G   e   t   s   (   s   t   r
0064560    e   a   m   )  \r       ]  \r  \r   /   /       d   i   f   f
0064600    e   r   e   n   t       f   r   o   m       R   e   a   d   w
0064620    o   r   d       i   n       D   O   S  \r   a   n   d       R
0064640    e   a   d   W   o   r   d   (   s   t   r   e   a   m   )    
0064660    =       v   a   l   o   f  \r           [  \r           l   e
0064700    t       w       =       n   i   l  \r           R   e   a   d
0064720    w   o   r   d   (   s   t 376 001  \0 265 324   r   e   a   m
0064740    ,       l   v       w   )  \r           r   e   s   u   l   t
0064760    i   s       w  \r           ]  \r  \r   a   n   d       R   e
0065000    a   d   a   d   d   r   (   s   t   r   e   a   m   ,       l
0065020    v   a   )       b   e  \r   [       R   e   a   d   a   d   d
0065040    r       =       R   e   a   d   w   o   r   d  \r           R
0065060    e   a   d   w   o   r   d   (   s   t   r   e   a   m   ,    
0065100    l   v   a   )  \r       ]  \r  \r   a   n   d       W   r   i
0065120    t   e   w   o   r   d   (   s   t   r   e   a   m   ,       w
0065140    )       b   e  \r   [  \r   P   u   t   s   (   s   t   r   e
0065160    a   m   ,       w       r   s   h   i   f   t       8   )  \r
0065200    P   u   t   s   (   s   t   r   e   a   m   ,       w        
0065220    )  \t   /   /       O   S       w   i   l   l       m   a   s
0065240    k       l   o   w       8       b   i   t   s  \r   ]  \r    
0065260   \r   /   /       d   i   f   f   e   r   e   n   t       f   r
0065300    o   m       W   r   i   t   e   w   o   r   d       i   n    
0065320    D   O   S  \r   a   n   d       W   r   i   t 376 001  \0 204
0065340  372   e   W   o   r   d   (   s   t   r   e   a   m   ,       w
0065360    )       b   e       W   r   i   t   e   w   o   r   d   (   s
0065400    t   r   e   a   m   ,   w   )  \r  \r   a   n   d       W   r
0065420    i   t   e   a   d   d   r   (   s   t   r   e   a   m   ,    
0065440    a   )       b   e  \r   [       W   r   i   t   e   a   d   d
0065460    r       =       W   r   i   t   e   w   o   r   d  \r        
0065500    W   r   i   t   e   w   o   r   d   (   s   t   r   e   a   m
0065520    ,       a   )  \r       ]  \r  \r   a   n   d       d   o   s
0065540    p   o   i   n   t   e   r   (   b   c   p   l   n   a   m   e
0065560    ,       d   o   s   n   a   m   e   )       b   e  \r        
0065600    C   a   l   l   S   w   a   t   (   "   d   o   s   p   o   i
0065620    n   t   e   r       u   n   e   x   p   e   c   t   e   d   l
0065640    y       c   a   l   l   e   d   "   )  \r  \r   a   n   d    
0065660    R   e   a   d   S   e   q   u   e   n   t   i   a   l   (   s
0065700    t   r   e   a   m   ,   w   d   ,   c   t   )       b   e  \r
0065720                [  \r               /   /       m   u   s   t    
0065740    s 376 001  \0   `   V   t   a   r   t       o   n       c   o
0065760    r   e   ,       m   e   m   o   r   y       w   o   r   d    
0066000    b   o   u   n   d   a   r   i   e   s  \r               /   /
0066020        c   t       m   u   s   t       b   e       e   v   e   n
0066040        i   f       s   u   b   s   e   q   u   e   n   t       c
0066060    a   l   l   s       a   r   e       t   o       w   o   r   k
0066100   \r               R   e   a   d   B   l   o   c   k   (   s   t
0066120    r   e   a   m   ,       w   d   ,       c   t   )  \r        
0066140        ]  \r  \r   a   n   d       W   r   i   t   e   S   e   q
0066160    u   e   n   t   i   a   l   (   s   t   r   e   a   m   ,   w
0066200    d   ,   c   t   )       b   e  \r               [  \r        
0066220        /   /       m   u   s   t       s   t   a   r   t       o
0066240    n       c   o   r   e   ,       m   e   m   o   r   y       w
0066260    o   r   d       b   o   u   n   d   a   r   i   e   s  \r    
0066300            /   /       c   t       m   u   s   t       b   e    
0066320    e   v   e   n       i   f       s   u   b   s   e   q   u   e
0066340    n   t       c   a   l 376 001  \0   X 342   l   s       a   r
0066360    e       t   o       w   o   r   k  \r               W   r   i
0066400    t   e   B   l   o   c   k   (   s   t   r   e   a   m   ,    
0066420    w   d   ,       c   t   )  \r               ]  \r  \r   a   n
0066440    d       o   p   e   n   f   i   l   e   (   n   a   m   e   ,
0066460        t   y   p   ;       n   u   m   a   r   g   s       n   )
0066500        =       v   a   l   o   f  \r   [       i   f       n   a
0066520    m   e       e   q       0       r   e   s   u   l   t   i   s
0066540        -   1  \r           i   f       n   a   m   e   !   0    
0066560    e   q       0       r   e   s   u   l   t   i   s       -   1
0066600   \r  \r   i   f       n       e   q       1       t   h   e   n
0066620        t   y   p   =   k   s   T   y   p   e   R   e   a   d   W
0066640    r   i   t   e  \r   l   e   t       r       =       O   p   e
0066660    n   F   i   l   e   (   n   a   m   e   ,       t   y   p   ,
0066700        1   ,       (   (   t   y   p       e   q       k   s   T
0066720    y   p   e   R   e   a   d   O   n   l   y   )   ?       v   e
0066740    r   L   a   t   e   s   t   ,       v   e 376 001  \0 336   v
0066760    r   L   a   t   e   s   t   C   r   e   a   t   e   )   )  \r
0067000    i   f       r       e   q       0       t   h   e   n       [
0067020        W   s   (   "   C   a   n   '   t       o   p   e   n    
0067040    f   i   l   e   :   "   )   ;       E   r   r   o   r   (   n
0067060    a   m   e   )       ]  \r   r   e   s   u   l   t   i   s    
0067100    r  \r   ]  \r  \r   a   n   d       O   p   e   n   I   n   p
0067120    u   t   (   n   a   m   e   )       =       o   p   e   n   f
0067140    i   l   e   (   n   a   m   e   ,       k   s   T   y   p   e
0067160    R   e   a   d   O   n   l   y   )  \r  \r   a   n   d       O
0067200    p   e   n   O   u   t   p   u   t   (   n   a   m   e   )    
0067220    =       o   p   e   n   f   i   l   e   (   n   a   m   e   ,
0067240        k   s   T   y   p   e   W   r   i   t   e   O   n   l   y
0067260    )  \r  \r   a   n   d       c   l   o   s   e   c   h   a   n
0067300    n   e   l   (   c   h   n   l   )       b   e       C   l   o
0067320    s   e   s   (   c   h   n   l   )  \r  \r   a   n   d       P
0067340    o   s   i   t   i   o   n   (   c   h   n   l   )       =    
0067360  376 001  \0 253   J   F   i   l   e   P   o   s   (   c   h   n
0067400    l   )  \r  \r   a   n   d       R   e   p   o   s   i   t   i
0067420    o   n   (   c   h   a   n   n   e   l   ,       p   o   s   )
0067440        b   e       S   e   t   F   i   l   e   P   o   s   (   c
0067460    h   a   n   n   e   l   ,       0   ,       p   o   s   )  \r
0067500   \r   a   n   d       R   e   s   e   t   S   t   r   e   a   m
0067520    (   c   h   a   n   n   e   l   )       b   e       R   e   s
0067540    e   t   s   (   c   h   a   n   n   e   l   )  \r  \r   a   n
0067560    d       I   s   F   i   l   e   (   n   a   m   e   )       =
0067600        v   a   l   o   f  \r   [  \r   l   e   t       s       =
0067620        O   p   e   n   F   i   l   e   (   n   a   m   e   ,    
0067640    k   s   T   y   p   e   R   e   a   d   O   n   l   y   )   ;
0067660        i   f       s       e   q       0       t   h   e   n    
0067700    r   e   s   u   l   t   i   s       f   a   l   s   e  \r   C
0067720    l   o   s   e   s   (   s   )   ;       r   e   s   u   l   t
0067740    i   s       t   r   u   e  \r   ]  \r  \r   /   /   O   p   e
0067760    n       a       f 376 001  \0 253 034   i   l   e       p   o
0070000    s   s   i   b   l   e       f   r   o   m       F   P   ,    
0070020    a   n   d       n   o       l   o   g   g   i   n   g   .   .
0070040    .   .  \r   a   n   d       o   p   e   n   N   l   o   g   (
0070060    n   m   ,       t   y   p   ,       f   p   )       =       v
0070100    a   l   o   f  \r   [  \r           l   e   t       s   =   O
0070120    p   e   n   F   i   l   e   (   n   m   ,       t   y   p   ,
0070140        1   ,       0   ,       f   p   )  \r           i   f    
0070160    s       e   q       0       t   h   e   n       C   a   l   l
0070200    S   w   a   t   (   "   C   a   n   n   o   t       o   p   e
0070220    n       v   i   t   a   l       f   i   l   e   "   ,       n
0070240    m   )  \r           r   e   s   u   l   t   i   s       s  \r
0070260    ]  \r  \r   a   n   d       O   p   e   n   T   e   m   p   (
0070300    c   h   )       =       v   a   l   o   f  \r   [  \r        
0070320    l   e   t       n   a   m   e       =       F   i   l   e   N
0070340    a   m   e   L   e   n   g   t   h   /   2   ;       D   v   e
0070360    c   (   O   p   e   n   T   e   m   p 376 001  \0   ?   C   ,
0070400    l   v       n   a   m   e   )  \r           U   n   p   a   c
0070420    k   s   t   r   i   n   g   (   "   B   c   p   l   .   S   c
0070440    r   a   t   c   h   0   "   ,       f   i   l   e   n   a   m
0070460    e   )  \r           f   i   l   e   n   a   m   e   !   (   f
0070500    i   l   e   n   a   m   e   !   0   )       =       c   h  \r
0070520            F   i   x   F   i   l   e   N   a   m   e   (   n   a
0070540    m   e   ,       "   "   ,       "   "   )  \r   /   /       S
0070560    p   e   e   d       u   p       o   p   e   n   i   n   g    
0070600    t   h   e   s   e       f   i   l   e   s   :  \r           c
0070620    o   m   p   i   l   e   i   f       l   F   P   *   3   +   F
0070640    P   P   a   r   a   m   O   f   f   s   e   t       g   r    
0070660    2   5       t   h   e   n       [       f   o   o   =   n   i
0070700    l       ]  \r           l   e   t       f   r   o   m   F   p
0070720    =   B   c   p   l   P   a   r   a   m   V   e   c   +       (
0070740    s   e   l   e   c   t   o   n       c   h       i   n   t   o
0070760   \r  \t   [  \r  \t   c   a   s   e       $   l   :       F 376
0071000  001  \0 235 271   P   P   a   r   a   m   O   f   f   s   e   t
0071020   \r  \t   c   a   s   e       $   d   :       F   P   P   a   r
0071040    a   m   O   f   f   s   e   t   +   l   F   P  \r  \t   c   a
0071060    s   e       $   c   :       F   P   P   a   r   a   m   O   f
0071100    f   s   e   t   +   l   F   P   *   2  \r  \t   d   e   f   a
0071120    u   l   t   :       C   a   l   l   S   w   a   t   (   "   t
0071140    e   m   p   "   )  \r  \t   ]       )  \r           l   e   t
0071160        f   p   =   v   e   c       l   F   P  \r           M   o
0071200    v   e   B   l   o   c   k   (   f   p   ,       f   r   o   m
0071220    F   p   ,       l   F   P   )  \r           l   e   t       s
0071240    =   o   p   e   n   N   l   o   g   (   n   a   m   e   ,   k
0071260    s   T   y   p   e   R   e   a   d   W   r   i   t   e   ,   f
0071300    p   )  \r           f   o   r       i   =   0       t   o    
0071320    l   F   P   -   1       d   o       i   f       f   p   !   i
0071340        n   e       f   r   o   m   F   p   !   i       t   h   e
0071360    n  \r  \t   [  \r  \t   M   o   v   e   B   l   o   c   k   (
0071400    f   r   o   m 376 001  \0 327   (   F   p   ,       f   p   ,
0071420        l   F   P   )  \r  \t   l   e   t       t   =   o   p   e
0071440    n   N   l   o   g   (   0   ,       k   s   T   y   p   e   R
0071460    e   a   d   W   r   i   t   e   ,       l   v       B   c   p
0071500    l   R   u   n   C   f   a   >   >   C   F   A   .   f   p   )
0071520   \r  \t   S   e   t   F   i   l   e   P   o   s   (   t   ,    
0071540    0   ,       (   o   f   f   s   e   t       S   V   .   B   L
0071560    V   /   1   6   )   *   2   )  \r  \t   W   r   i   t   e   B
0071600    l   o   c   k   (   t   ,       B   c   p   l   P   a   r   a
0071620    m   V   e   c   ,       (   s   i   z   e       B   L   V   .
0071640    o   v   e   r   l   a   y   A   d   d   r   e   s   s   /   1
0071660    6   )   )  \r  \t   C   l   o   s   e   s   (   t   )  \r  \t
0071700    b   r   e   a   k  \r  \t   ]  \r           r   e   s   u   l
0071720    t   i   s       s  \r   ]  \r  \r   a   n   d       O   v   e
0071740    r   l   a   y   (   n   a   m   e   )       b   e  \r   [  \r
0071760            l   e   t       h       =       v   e   c       1   6
0072000   \r           U   n   p   a   c   k 376 001  \0 230 236   s   t
0072020    r   i   n   g   (   n   a   m   e   ,       h   )  \t  \t   /
0072040    /   F   i   n   d       o   u   t       w   h   i   c   h    
0072060    o   n   e  \r           l   e   t       c   =   h   !   (   h
0072100    !   0   )  \r           l   e   t       o   v   N   u   m   =
0072120    s   e   l   e   c   t   o   n       c       i   n   t   o  \r
0072140   \t   [  \r  \t   c   a   s   e       $   L   :       1  \r  \t
0072160    c   a   s   e       $   C   :       2  \r  \t   c   a   s   e
0072200        $   S   :       3  \r  \t   c   a   s   e       $   T   :
0072220        4  \r  \t   c   a   s   e       $   G   :       5  \r  \t
0072240    d   e   f   a   u   l   t   :       C   a   l   l   S   w   a
0072260    t   (   "   B   a   d       o   v   e   r   l   a   y       n
0072300    a   m   e   "   )  \r  \t   ]  \r           l   e   t       s
0072320        =       o   p   e   n   N   l   o   g   (   0   ,       k
0072340    s   T   y   p   e   R   e   a   d   O   n   l   y   ,       l
0072360    v       B   c   p   l   R   u   n   C   f   a   >   >   C   F
0072400    A   .   f   p   )  \r           J   u   m   p   T   o 376 001
0072420   \0 234   ]   F   a   (   s   ,       l   v       B   c   p   l
0072440    R   u   n   C   f   a   >   >   C   F   A   .   f   a   )  \r
0072460   \t   [  \r  \t   R   e   a   d   B   l   o   c   k   (   s   ,
0072500        h   ,       1   6   )  \r  \t   R   e   a   d   B   l   o
0072520    c   k   (   s   ,       h   !   0   ,       h   !   1   )  \r
0072540   \t   l   e   t       e   x   t   r   a   =   (   h   !   4   )
0072560    &   #   3   7   7  \t  \t   /   /   M   o   r   e       t   o
0072600        r   e   a   d       t   o       f   i   n   i   s   h    
0072620    p   a   g   e  \r  \t   i   f       e   x   t   r   a       t
0072640    h   e   n  \r  \t           f   o   r       i   =   e   x   t
0072660    r   a   *   2       t   o       5   1   1       d   o       u
0072700    n   l   e   s   s       E   n   d   o   f   s   (   s   )    
0072720    t   h   e   n       G   e   t   s   (   s   )  \r  \t   G   e
0072740    t   C   u   r   r   e   n   t   F   a   (   s   ,       l   v
0072760        B   c   p   l   R   u   n   C   f   a   >   >   C   F   A
0073000    .   f   a   )  \r  \t   B   c   p   l   O   v   e   r   l   a
0073020    y   C   n 376 001  \0   +       t   =   B   c   p   l   O   v
0073040    e   r   l   a   y   C   n   t   +   1  \r  \t   ]       r   e
0073060    p   e   a   t   u   n   t   i   l       B   c   p   l   O   v
0073100    e   r   l   a   y   C   n   t       e   q       o   v   N   u
0073120    m  \r           C   l   o   s   e   s   (   s   )  \r       ]
0073140   \r  \r   a   n   d       H   e   l   p   (   M   e   s   s   a
0073160    g   e   )       b   e  \r   [  \r   W   r   i   t   e   S   (
0073200    M   e   s   s   a   g   e   )  \r   C   a   l   l   S   w   a
0073220    t   (   "   H   e   l   p       c   a   l   l   e   d   "   ,
0073240    M   e   s   s   a   g   e   )  \r   ]  \r  \r   a   n   d    
0073260    C   l   o   s   e   C   O   M   C   M   (   )       b   e    
0073300    [       C   l   o   s   e   I   n   p   u   t   (   c   s   t
0073320    r   e   a   m   )   ;       c   s   t   r   e   a   m       =
0073340        0   ;       ]  \r  \r   a   n   d       R   e   a   d   C
0073360    O   M   C   M   (   f   i   l   e   p   o   s   ;       n   u
0073400    m   a   r   g   s       n   a   )           =       v   a   l
0073420    o   f  \r   [  \t   /   /   r 376 001  \0 033 305   e   a   d
0073440        t   h   e       n   e   x   t       n   a   m   e       a
0073460    n   d       s   w   i   t   c   h       l   i   s   t       f
0073500    r   o   m       C   O   M   .   C   M  \r           i   f    
0073520    c   s   t   r   e   a   m       e   q       0       d   o    
0073540    c   s   t   r   e   a   m   =   o   p   e   n   N   l   o   g
0073560    (   "   C   O   M   .   C   M   "   ,       k   s   T   y   p
0073600    e   R   e   a   d   O   n   l   y   ,       f   p   C   o   m
0073620    C   m   )  \r           i   f       n   a       g   e       1
0073640        t   h   e   n       S   e   t   F   i   l   e   P   o   s
0073660    (   c   s   t   r   e   a   m   ,       0   ,       f   i   l
0073700    e   p   o   s   )  \r           f   i   l   e   p   o   s    
0073720    =       F   i   l   e   P   o   s   (   c   s   t   r   e   a
0073740    m   )  \r  \r   f   i   l   e   n   a   m   e   !   0   ,    
0073760    s   w   !   0       =       0   ,   0  \r   l   e   t       n
0074000    o   s   w   i   t   c   h   e   s   ,       n   o   t   o   k
0074020    e   n   ,       i       =       t   r   u   e   , 376 001  \0
0074040  210 305   t   r   u   e   ,   1  \r  \t   [   t   o   k   e  \r
0074060   \t   R   e   a   d   c   h   (   c   s   t   r   e   a   m   ,
0074100        l   v       f   i   l   e   n   a   m   e   !   i   )  \r
0074120   \t   s   w   i   t   c   h   o   n       f   i   l   e   n   a
0074140    m   e   !   i       i   n   t   o  \r      \r  \t   [  \r  \t
0074160    c   a   s   e       $   *   S   :           i   f       n   o
0074200    t   o   k   e   n       t   h   e   n       l   o   o   p   ;
0074220        b   r   e   a   k       /   /   m   a   y       b   e   g
0074240    i   n       w   i   t   h       b   l   a   n   k   s  \r    
0074260   \r  \t   c   a   s   e       $   *   N   :               u   n
0074300    l   e   s   s       n   o   t   o   k   e   n       d   o    
0074320    b   r   e   a   k  \t   /   /   o   t   h   e   r   w   i   s
0074340    e       f   a   l   l       t   h   r   u       a   n   d  \r
0074360   \t   i       =       1  \t  \t   /   /   f   o   r   c   e    
0074400    i   t       t   o       l   o   o   k       l   i   k   e    
0074420    t   h   e       b   e   g   i   n   n   i   n   g  \r  \t   c
0074440    a   s 376 001  \0 261 321   e       #   7   7   7   :  \r  \t
0074460    i   f       i       e   q       1       t   h   e   n       [
0074500   \t   /   /   e   n   d   o   f       c   o   m   .   c   m   ;
0074520        b   e   g   i   n   n   i   n   g       o   f       l   i
0074540    n   e  \r  \t  \t   C   l   o   s   e   I   n   p   u   t   (
0074560    c   s   t   r   e   a   m   )  \r  \t  \t   c   s   t   r   e
0074600    a   m       =       0  \r  \t  \t   f   i   l   e   n   a   m
0074620    e   !   0       =       -   1  \r  \t  \t   r   e   s   u   l
0074640    t   i   s       f   i   l   e   p   o   s       ]  \r  \t   b
0074660    r   e   a   k  \r      \r  \t   c   a   s   e       $   /   :
0074700            n   o   s   w   i   t   c   h   e   s       =       f
0074720    a   l   s   e   ;       b   r   e   a   k  \r      \r  \t   d
0074740    e   f   a   u   l   t   :  \r  \t   i   f       i       g   r
0074760        F   i   l   e   N   a   m   e   L   e   n   g   t   h    
0075000    d   o       E   r   r   o   r   (   "   f   i   l   e       n
0075020    a   m   e       t   o   o       l   o   n   g   "   )  \r  \t
0075040    i       =       i       + 376 001  \0   h   a       1   ;    
0075060    n   o   t   o   k   e   n       =       f   a   l   s   e  \r
0075100   \t   ]  \r  \t   ]   t   o   k   e           r   e   p   e   a
0075120    t  \r      \r   f   i   l   e   n   a   m   e   !   0       =
0075140        i       -       1  \r   i   f       n   o   s   w   i   t
0075160    c   h   e   s       t   h   e   n       r   e   s   u   l   t
0075200    i   s       f   i   l   e   p   o   s  \r      \r   l   e   t
0075220        j   ,       c       =       1   ,       n   i   l   ;    
0075240    n   o   t   o   k   e   n       =       t   r   u   e   ;    
0075260    l   e   t       m   i   n   u   s       =       f   a   l   s
0075300    e   ;  \r   [   s   w   l   o   o   p  \r   R   e   a   d   c
0075320    h   (   c   s   t   r   e   a   m   ,       l   v       c   )
0075340   \r   i   f       c       g   e       $   a       &       c    
0075360    l   e       $   z       t   h   e   n       c   =   c   -   $
0075400    a   +   $   A  \r   s   w   i   t   c   h   o   n       c    
0075420    i   n   t   o  \r  \t   [   s   w   c   a   s   e   s  \r  \t
0075440    c   a   s   e       $   *   S   :       i   f 376 001  \0   8
0075460    6       n   o   t   o   k   e   n       t   h   e   n       l
0075500    o   o   p           /   /       o   r       f   a   l   l    
0075520    t   h   r   o   u   g   h       t   o       b   r   e   a   k
0075540   \r  \t   c   a   s   e       $   *   N   :       c   a   s   e
0075560        #   3   7   7   :           b   r   e   a   k  \r  \t   c
0075600    a   s   e       $   /   :       l   o   o   p  \r  \t   c   a
0075620    s   e       $   -   :       m   i   n   u   s       =       t
0075640    r   u   e   ;       l   o   o   p  \r  \t   c   a   s   e    
0075660    $   A       t   o       $   Z   :       n   o   t   o   k   e
0075700    n       =       f   a   l   s   e  \r  \t       s   w   !   j
0075720        =       (   m   i   n   u   s   ?       -   c   ,       c
0075740    )   ;       j       =       j       +       1   ;       m   i
0075760    n   u   s       =       f   a   l   s   e   ;  \r  \t   ]   s
0076000    w   c   a   s   e   s  \r   ]   s   w   l   o   o   p        
0076020    r   e   p   e   a   t  \r   s   w   !   0       =       j    
0076040    -       1  \r   r   e   s   u   l   t   i   s       f   i   l
0076060    e 376 001  \0 364   y   p   o   s  \r       ]  \r  \r  \r   a
0076100    n   d       I   n   i   t   F   r   e   e   (   c   o   d   e
0076120    t   o   p   )       b   e  \r   [       /   /   e   x   t   e
0076140    r   n   a   l   [       F   r   e   e   B   o   t   t   o   m
0076160    ]       /   /       R   e   s   e   t       f   r   e   e    
0076200    s   p   a   c   e       b   o   t   t   o   m       a   n   d
0076220        z   f   r   a   m   e   m   a   x  \r           F   r   e
0076240    e   l   i   s   t   P       =       c   o   d   e   t   o   p
0076260        +       1  \r           r   v       z   f   r   a   m   e
0076300    m   a   x       =       c   o   d   e   t   o   p       +    
0076320    1           ]  \r  \r   a   n   d       N   e   w   v   e   c
0076340    (   n   )       =       v   a   l   o   f  \r   [   n   v  \r
0076360    /   /   e   x   t   e   r   n   a   l   [       M   a   x   T
0076400    o   p       ]  \r   m   a   n   i   f   e   s   t   [       s
0076420    t   a   c   k   o   f   f   s   e   t       =       4       ]
0076440   \r   l   e   t       o   l   d   v   ,       n   e   w   v    
0076460    =       F   r   e   e 376 001  \0 255   R   l   i   s   t   P
0076500    ,       F   r   e   e   l   i   s   t   P       +   n       +
0076520        1  \r  \r   i   f       (       n   e   w   v       <    
0076540    0       ?       t   r   u   e   ,       /   /       i   f    
0076560    n   e   w   v       i   n       u   p   p   e   r       m   e
0076600    m   o   r   y   ,       a   l   l       i   s       l   o   s
0076620    t  \r                       (   (   l   v       n   )   -   s
0076640    t   a   c   k   o   f   f   s   e   t       <       0       ?
0076660        f   a   l   s   e   ,       /   /       i   f       s   t
0076700    a   c   k       s   t   i   l   l       i   n       u   p   p
0076720    e   r  \r                                      \t  \t  \t  \t
0076740                        /   /       m   e   m   o   r   y   ,    
0076760    a   l   l       i   s       w   e   l   l  \r                
0077000        (   n   e   w   v       g   r       (       l   v       n
0077020        -       s   t   a   c   k   o   f   f   s   e   t       )
0077040        )   )   )       /   /       e   l   s   e   ,       n   o
0077060    r   m   a   l       t   e   s   t  \r     376  \0 246   B 351
0077100    t   h   e   n       [  \r  \t   r   v       z   f   r   a   m
0077120    e   m   a   x       =       r   v       z   f   r   a   m   e
0077140    m   a   x       -       #   1   0   0   0  \r  \t   E   r   r
0077160    o   r   (   "   O   u   t       o   f       F   r   e   e    
0077200    S   t   o   r   a   g   e   :       P   r   o   g   r   a   m
0077220        t   o   o       B   i   g   "   )  \r                    
0077240        ]  \r  \r   F   r   e   e   l   i   s   t   P       =    
0077260    n   e   w   v   ;       r   v       z   f   r   a   m   e   m
0077300    a   x       =       F   r   e   e   l   i   s   t   P  \r    
0077320   \r      \r   r   e   s   u   l   t   i   s       o   l   d   v
0077340   \r   ]   n   v  \r  \r 377  \0  \0   B   C   P   L   D   O   S
0077360    .   b   c   p   l  \0 373 226   W 352   *  \0  \0 376 001  \0
0077400  036 356   /   /       B   C   P   L   D   O   S   .   b   c   p
0077420    l       -       B   C   P   L       D   O   S   -   s   p   e
0077440    c   i   f   i   c       f   u   n   c   t   i   o   n   s  \r
0077460    /   /       C   o   p   y   r   i   g   h   t       X   e   r
0077500    o   x       C   o   r   p   o   r   a   t   i   o   n       1
0077520    9   8   0  \r   /   /       S   w   i   n   e   h   a   r   t
0077540    ,       6       M   a   y       7   7   ,       f   i   l   e
0077560        l   e   n   g   t   h   s       -   >       s   t   a   t
0077600    i   c   s  \r   /   /       I   n   i   t   B   C   P   L    
0077620    c   a   l   l   s       M   a   i   n   <   S   W   I   N   E
0077640    H   A   R   T   >   B   C   P   L   D   O   S   .   ;   5    
0077660                    4   -   A   P   R   -   7   5       0   7   :
0077700    5   6   :   1   9                   E   D   I   T       B   Y
0077720        S   W   I   N   E   H   A   R   T  \r   /   /       p   u
0077740    l   l       S   W   A   l   t   o   c   .   .   .   i   m   e
0077760        <   S   W   I   N   E   H   A   R   T   >   B   C   P   L
0100000    D   O 376 001  \0 367   >   S   .   ;   3                   2
0100020    8   -   M   A   R   -   7   5       1   3   :   2   2   :   2
0100040    9                   E   D   I   T       B   Y       S   W   I
0100060    N   E   H   A   R   T  \r  \r  \r   g   e   t       "   b   c
0100100    p   l   x   "  \r   g   e   t       "   b   c   p   l   i   o
0100120    x   "  \r  \r   e   x   t   e   r   n   a   l   [      \r   b
0100140    u   f   f   e   r   i   o  \r   d   i   s   p   l   a   y   s
0100160    t   r   e   a   m  \r   R   e   a   d   c   h   K   L   U   D
0100200    G   E  \r   s   t   r   e   a   m   v   e   c  \r   s   y   s
0100220    c   a   l   l  \r   W   r   i   t   e   c   h   K   L   U   D
0100240    G   E  \r   I   n   i   t   T   o   R   e   a   d  \r   o   p
0100260    e   n   f   i   l   e  \r   ]  \r  \r   m   a   n   i   f   e
0100300    s   t       [  \r  \t   z   f   r   a   m   e   m   a   x    
0100320    =       #   3   3   5  \r  \t   z   f   r   a   m   e   n   e
0100340    x   t       =       #   3   3   6  \r  \t   z   f   r   a   m
0100360    e   f   i   r   s   t       =       #   3   3   7  \r  \t   z
0100400    r   e   t   u   r   n     376 001  \0 237   5   =       #   3
0100420    6   6  \r  \t                   ]  \r  \r   /   /       s   y
0100440    s   t   e   m   -   d   e   p   e   n   d   e   n   t       m
0100460    a   n   i   f   e   s   t   s   ,       u   s   e   d       b
0100500    y       I   n   i   t   B   C   P   L  \r  \r   m   a   n   i
0100520    f   e   s   t  \r               [  \r               S   T   R
0100540    E   A   M   s   i   z   e       =       (   (   s   i   z   e
0100560        S   T   R   E   A   M       +       1   5   )   /   1   6
0100600    )  \r               s   t   r   e   a   m   v   e   c   s   i
0100620    z   e       =       7  \r               ]  \r   s   t   r   u
0100640    c   t   u   r   e       [       b   l   a   n   k       b   i
0100660    t       1   5   ;       O   D   D   B   I   T       b   i   t
0100700        1       ]  \r  \r   l   e   t       I   n   i   t   B   C
0100720    P   L   (   p   a   r   a   m   v   e   c   )       b   e  \r
0100740            [  \r           V   e   r   s   i   o   n       =    
0100760    (   2       l   s   h   i   f   t       8   )       +       0
0101000   \r           S   W   A   l   t   o       =     376 001  \0 310
0101020  224   f   a   l   s   e       /   /       d   e   f   a   u   l
0101040    t       -   -       c   o   m   p   i   l   e       N   O   V
0101060    A       c   o   d   e  \r  \r           T   T   O   s   t   r
0101100    e   a   m       =       O   p   e   n   O   u   t   p   u   t
0101120    (   0   )  \r           T   T   I   s   t   r   e   a   m    
0101140    =       O   p   e   n   I   n   p   u   t   (   0   )  \r    
0101160        O   s   t   r   e   a   m       =       T   T   O   s   t
0101200    r   e   a   m   ;       I   s   t   r   e   a   m       =    
0101220    T   T   I   s   t   r   e   a   m   ;  \r  \r           l   e
0101240    t       v       =       v   e   c       s   t   r   e   a   m
0101260    v   e   c   s   i   z   e  \r           s   t   r   e   a   m
0101300    v   e   c       =       v  \r           l   e   t       s   t
0101320    r   e   a   m   t   a   b   l   e   s       =       v   e   c
0101340        (   s   t   r   e   a   m   v   e   c   s   i   z   e   +
0101360    1   )   *   S   T   R   E   A   M   s   i   z   e  \r  \r    
0101400        F   r   e   e   M   a   x       =       p   a   r   a   m
0101420    v 376 001  \0 240 270   e   c   !   #   3   7   -   1  \r    
0101440    /   /       L   i   m   i   t   s       a   r   e       M   a
0101460    x   '   s      \r           D   i   c   t   F   r   e   e   L
0101500    i   m   i   t       =       F   r   e   e   M   a   x       -
0101520        (   p   a   r   a   m   v   e   c   !   1   +   1   )  \r
0101540            T   r   e   e   F   r   e   e   L   i   m   i   t    
0101560    =       F   r   e   e   M   a   x       -       (   p   a   r
0101600    a   m   v   e   c   !   2   +   1   )  \r           C   o   d
0101620    e   F   r   e   e   L   i   m   i   t       =       F   r   e
0101640    e   M   a   x       -       (   p   a   r   a   m   v   e   c
0101660    !   3   +   1   )  \r           F   i   l   e   N   a   m   e
0101700    L   e   n   g   t   h       =       2   0  \r           G   e
0101720    t   F   i   l   e   M   a   x       =       1   2  \r        
0101740    f   o   r       i       =       0       t   o       7       d
0101760    o  \r                       [  \r                       s   t
0102000    r   e   a   m   v   e   c   !   i       =       s   t   r   e
0102020    a   m   t   a   b   l 376 001  \0   x 352   e   s  \r        
0102040                s   t   r   e   a   m   t   a   b   l   e   s    
0102060    =       s   t   r   e   a   m   t   a   b   l   e   s       +
0102100        S   T   R   E   A   M   s   i   z   e       +       1  \r
0102120                        ]  \r  \r  \r   /   /       C   A   L   L
0102140        T   H   E       C   O   M   P   I   L   E   R  \r        
0102160    M   a   i   n   (   p   a   r   a   m   v   e   c   )  \r  \r
0102200            ]  \r  \r   a   n   d       s   y   s   c   a   l   l
0102220    (   c   a   l   l   ,       a   c   )       =       v   a   l
0102240    o   f  \r   [       l   e   t       e   r   r       =       s
0102260    y   s   c   a   l   l   p   r   o   c   (   c   a   l   l   ,
0102300        a   c   )  \r           i   f       e   r   r       e   q
0102320        -   1       r   e   s   u   l   t   i   s       0  \r    
0102340        i   f       e   r   r       e   q       0           d   o
0102360        e   r   r       =       #   1   5  \r           r   e   s
0102400    u   l   t   i   s       e   r   r  \r       ]  \r  \r   a   n
0102420    d       P   o   s   i   t   i   o   n   ( 376 001  \0 202 277
0102440    s   t   r   e   a   m   )       =       v   a   l   o   f  \r
0102460    [  \r           i   f       s   t   r   e   a   m       l   s
0102500        0       t   h   e   n       r   e   s   u   l   t   i   s
0102520        -   1  \r           l   e   t       c   h   a   n   n   e
0102540    l       =       s   t   r   e   a   m   >   >   S   T   R   E
0102560    A   M   .   c   h   a   n   n   e   l  \r           u   n   l
0102600    e   s   s       0       l   e       c   h   a   n   n   e   l
0102620        &       c   h   a   n   n   e   l       l   e       7    
0102640    r   e   s   u   l   t   i   s       -   1  \r           l   e
0102660    t       v       =       #   4   3   0           /   /   D   O
0102700    S       c   h   a   n   n   e   l       t   a   b   l   e    
0102720    i   n       p   a   g   e       o   n   e  \r           l   e
0102740    t       t       =       v   !   c   h   a   n   n   e   l    
0102760    /   /   D   O   S       d   e   s   c   r   i   p   t   o   r
0103000        f   o   r       t   h   e       c   h   a   n   n   e   l
0103020   \r           l   e   t       b   y   t   e   n   u   m       =
0103040  376 001  \0   A 035       t   !   #   2   5       /   /   w   o
0103060    r   d       2   5       i   s       b   y   t   e       n   u
0103100    m   b   e   r       i   n       c   u   r   r   e   n   t    
0103120    b   l   o   c   k  \r           l   e   t       b   l   o   k
0103140    n   u   m       =       t   !   #   2   4       /   /   w   o
0103160    r   d       2   4       i   s       c   u   r   r   e   n   t
0103200        b   l   o   c   k       n   u   m   b   e   r  \r        
0103220    l   e   t       d   o   s   p   o   s       =       (   (   b
0103240    l   o   k   n   u   m       *       2   5   5   )       l   s
0103260    h   i   f   t       1   )       +       b   y   t   e   n   u
0103300    m  \r           i   f       s   t   r   e   a   m   >   >   S
0103320    T   R   E   A   M   .   a   c   t   i   o   n       e   q    
0103340    w   r   i   t   e   a   c   t       t   h   e   n      \r    
0103360                        r   e   s   u   l   t   i   s       d   o
0103400    s   p   o   s       +       s   t   r   e   a   m   >   >   S
0103420    T   R   E   A   M   .   c   o   u   n   t  \r           i   f
0103440        d   o   s   p 376 001  \0 020 206   o   s       e   q    
0103460    0       t   h   e   n       r   e   s   u   l   t   i   s    
0103500    0  \r               r   e   s   u   l   t   i   s       d   o
0103520    s   p   o   s       -       (   s   t   r   e   a   m   >   >
0103540    S   T   R   E   A   M   .   m   a   x       -       s   t   r
0103560    e   a   m   >   >   S   T   R   E   A   M   .   c   o   u   n
0103600    t   )       -   1  \r   ]  \r  \r   a   n   d       b   u   f
0103620    f   e   r   i   o   (   s   t   r   e   a   m   ,       o   p
0103640    r   ,       c   o   u   n   t   )       =       v   a   l   o
0103660    f  \r   [  \r           s   y   s   a   c   !   0       =    
0103700    (   l   v       s   t   r   e   a   m   >   >   S   T   R   E
0103720    A   M   .   b   y   t   e   b   u   f   f   e   r   )       l
0103740    s   h   i   f   t       1  \r           s   y   s   a   c   !
0103760    1           =       c   o   u   n   t  \r           s   y   s
0104000    a   c   !   2       =       s   t   r   e   a   m   >   >   S
0104020    T   R   E   A   M   .   c   h   a   n   n   e   l  \r        
0104040    r   e   s   u   l   t   i   s       s 376 001  \0  \0 017   y
0104060    s   c   a   l   l   (   o   p   r   ,       s   y   s   a   c
0104100    )  \r   ]  \r  \r   a   n   d       H   e   l   p   (   M   e
0104120    s   s   a   g   e   )       b   e  \r   [  \r           l   e
0104140    t       v       =       v   e   c       3  \r           l   e
0104160    t       m       =       v   e   c       6   4  \r           U
0104200    n   p   a   c   k   s   t   r   i   n   g   (   M   e   s   s
0104220    a   g   e   ,       m   )  \r           f   o   r       i    
0104240    =       1       t   o       m   !   0       d   o       [    
0104260    v   !   0       =       m   !   i   ;       s   y   s   c   a
0104300    l   l   (   s   y   s   p   c   h   a   r   ,       v   )    
0104320    ]  \r           U   n   p   a   c   k   s   t   r   i   n   g
0104340    (   "       -   -       H   E   L   P   *   n   "   ,       m
0104360    )  \r           f   o   r       i       =       1       t   o
0104400        m   !   0       d   o       [       v   !   0       =    
0104420    m   !   i   ;       s   y   s   c   a   l   l   (   s   y   s
0104440    p   c   h   a   r   ,       v   )       ]  \r  \r         376
0104460  001  \0   i   ~   s   y   s   d   e   b   u   g   p   r   o   c
0104500    (   )  \r  \r           r   e   t   u   r   n  \r   ]  \r  \r
0104520    a   n   d       R   e   a   d   c   h   (   s   t   r   e   a
0104540    m   ,       l   v   c   )       b   e      \r   [   R   c   h
0104560   \r           l   e   t       n   u   m   b   y   t   e   s    
0104600    =       1  \r   R   e   a   d   c   h   K   L   U   D   G   E
0104620    :           /   /       T   H   I   S       I   S       T   H
0104640    E       E   N   T   R   Y       P   O   I   N   T       F   R
0104660    O   M       R   E   A   D   W   O   R   D       !   !   U   G
0104700    H   !   !   !   !  \r           l   e   t       v       =    
0104720    v   e   c       2  \r           t   e   s   t       s   t   r
0104740    e   a   m       e   q       -   1  \r                   i   f
0104760    s   o       /   /       t   t   y       s   i   m   u   l   t
0105000    a   t   i   o   n  \r                           f   o   r    
0105020    i       =       1       t   o       n   u   m   b   y   t   e
0105040    s       d   o   [       s   y   s   c   a   l   l   (   s   y
0105060    s   g   c   h 376 001  \0 207 226   a   r   ,       s   y   s
0105100    a   c   )  \r                           v   !   i       =    
0105120    s   y   s   a   c   !   0       &       #   3   7   7        
0105140            ]  \r           i   f   n   o   t       [   f   i   l
0105160    e   i   o           /   /               t   a   l   k   i   n
0105200    g       t   o       a       r   e   a   l       f   i   l   e
0105220    !  \r               f   o   r       i       =       1       t
0105240    o       n   u   m   b   y   t   e   s       d   o  \r        
0105260        [   m   a   i   n   l   o   o   p  \r                    
0105300    l   e   t       c   o   u   n   t       =       s   t   r   e
0105320    a   m   >   >   S   T   R   E   A   M   .   c   o   u   n   t
0105340   \r                       i   f       c   o   u   n   t       g
0105360    r           s   t   r   e   a   m   >   >   S   T   R   E   A
0105400    M   .   m   a   x       t   h   e   n  \r                    
0105420            [      \r                               l   e   t    
0105440    e   r   r       =       b   u   f   f   e   r   i   o   (   s
0105460    t   r   e   a   m   ,       s   y 376 001  \0   g 362   s   r
0105500    d   s   ,       m   a   x   s   t   r   e   a   m   b   y   t
0105520    e   s   )  \r                               l   e   t       n
0105540    u   m       =       s   y   s   a   c   !   1  \r            
0105560                    s   t   r   e   a   m   >   >   S   T   R   E
0105600    A   M   .   m   a   x       =           n   u   m       -   1
0105620   \r                   /   /   d   i   s   p   l   a   y   s   t
0105640    r   e   a   m   (   s   t   r   e   a   m   )   ;       W   r
0105660    i   t   e   S   (   "   e   r   r   =   "   )   ;   W   r   i
0105700    t   e   O   (   e   r   r   )   ;   W   W   (   $   *   N   )
0105720   \r                               i   f       e   r   r       t
0105740    h   e   n       u   n   l   e   s   s       e   r   r       e
0105760    q       6       d   o       s   y   s   c   a   l   l   e   r
0106000    r   o   r   (   s   y   s   r   d   s   ,       s   y   s   a
0106020    c   ,  \r                               s   t   r   e   a   m
0106040    )  \r                               i   f       n   u   m    
0106060    e   q       0       t   h   e   n       [  \r         376 001
0106100   \0 347   U                                       v   !   1   ,
0106120        v   !   2       =       #   7   7   7   ,       #   7   7
0106140    7  \r                                               b   r   e
0106160    a   k       ]  \r                               c   o   u   n
0106200    t       =       0  \r                               ]  \r    
0106220                    v   !   i       =       s   t   r   e   a   m
0106240    >   >   S   T   R   E   A   M   .   b   y   t   e   b   u   f
0106260    f   e   r   ^   c   o   u   n   t  \r                       s
0106300    t   r   e   a   m   >   >   S   T   R   E   A   M   .   c   o
0106320    u   n   t       =       c   o   u   n   t       +       1  \r
0106340                        l   o   o   p  \r                   ]   m
0106360    a   i   n   l   o   o   p  \r           ]   f   i   l   e   i
0106400    o           /   /               t   a   l   k   i   n   g    
0106420    t   o       a       r   e   a   l       f   i   l   e   !  \r
0106440    /   /   f   o   r       i       =       1       t   o       n
0106460    u   m   b   y   t   e   s       d   o       [       W   W   (
0106500    v   !   i 376 001  \0 341   X   )   ;       W   r   i   t   e
0106520    O   (   v   !   i   )   ;       W   W   (   $   *   N   )    
0106540    ]  \r           i   f       n   u   m   b   y   t   e   s    
0106560    e   q       1       t   h   e   n  \r                        
0106600    [           @   l   v   c       =       v   !   1   ;       r
0106620    e   t   u   r   n       ]  \r           v   !   2       <   <
0106640    L   E   F   T   H   A   L   F       =       v   !   1  \r    
0106660        @   l   v   c       =       v   !   2  \r   ]   R   c   h
0106700   \r  \r   a   n   d       W   r   i   t   e   c   h   (   s   t
0106720    r   e   a   m   ,       c   h   )       b   e  \r   [   W   c
0106740    h  \r           l   e   t       n   u   m   b   y   t   e   s
0106760        =       1  \r   W   r   i   t   e   c   h   K   L   U   D
0107000    G   E   :               /   /       <   <   <   <       E   N
0107020    T   R   Y       P   O   I   N   T       f   o   r           W
0107040    r   i   t   e   w   o   r   d       !   !   !   !       (   U
0107060    G   H   !   !   )  \r   i   f       s   t   r   e   a   m   >
0107100    >   S   T   R   E   A   M   . 376 001  \0 250   e   a   c   t
0107120    i   o   n       n   e       w   r   i   t   e   a   c   t    
0107140    t   h   e   n       [       W   r   i   t   e   O   (   s   t
0107160    r   e   a   m   )   ;  \r   H   e   l   p   (   "   w   r   i
0107200    t   i   n   g       a       r   e   a   d       s   t   r   e
0107220    a   m   "   )   ]  \r           l   e   t       v       =    
0107240    v   e   c       2  \r           t   e   s   t       n   u   m
0107260    b   y   t   e   s       e   q       1  \r           i   f   s
0107300    o       v   !   1       =       c   h  \r           i   f   n
0107320    o   t       [           v   !   1       =       c   h       <
0107340    <       L   E   F   T   H   A   L   F   ;       v   !   2    
0107360    =       c   h   <   <   R   I   G   H   T   H   A   L   F    
0107400    ]  \r       t   e   s   t       s   t   r   e   a   m       e
0107420    q       -   1      \r               i   f   s   o       f   o
0107440    r       i       =       1       t   o       n   u   m   b   y
0107460    t   e   s       d   o       [       s   y   s   a   c   !   0
0107500        =       v   !   i  \r                       s 376 001  \0
0107520    d   T   y   s   c   a   l   l   (   s   y   s   p   c   h   a
0107540    r   ,       s   y   s   a   c   )  \r                       ]
0107560   \r   i   f   n   o   t       [   f   i   l   e   i   o      \r
0107600        f   o   r       i       =       1       t   o       n   u
0107620    m   b   y   t   e   s       d   o  \r       [   m   a   i   n
0107640    l   o   o   p  \r  \r           l   e   t       c   o   u   n
0107660    t       =       s   t   r   e   a   m       >   >   S   T   R
0107700    E   A   M   .   c   o   u   n   t  \r           i   f       c
0107720    o   u   n   t       g   r       m   a   x   b   y   t   e   i
0107740    n   d   e   x       t   h   e   n  \r                   [  \r
0107760                    i   f       b   u   f   f   e   r   i   o   (
0110000    s   t   r   e   a   m   ,       s   y   s   w   r   s   ,    
0110020    m   a   x   s   t   r   e   a   m   b   y   t   e   s   )    
0110040    t   h   e   n  \r                           s   y   s   c   a
0110060    l   l   e   r   r   o   r   (   s   y   s   w   r   s   ,    
0110100    s   y   s   a   c   ,       s   t   r   e   a   m   )  \r    
0110120          376 001  \0 361 033       c   o   u   n   t       =    
0110140    0  \r                   ]  \r               s   t   r   e   a
0110160    m   >   >   S   T   R   E   A   M   .   b   y   t   e   b   u
0110200    f   f   e   r   ^   c   o   u   n   t       =       v   !   i
0110220   \r               s   t   r   e   a   m   >   >   S   T   R   E
0110240    A   M   .   c   o   u   n   t       =       c   o   u   n   t
0110260        +       1  \r               l   o   o   p  \r           ]
0110300    m   a   i   n   l   o   o   p  \r       ]   f   i   l   e   i
0110320    o  \r   ]   W   c   h  \r  \r   /   /       n   o   t   e    
0110340    t   h   i   s       c   o   d   e       a   s   s   u   m   e
0110360    s       t   h   e       b   u   f   f   e   r       b   e   g
0110400    i   n   s       a   n   d       e   n   d   s       o   n  \r
0110420    /   /       e   v   e   n       w   o   r   d       b   o   u
0110440    n   d   r   i   e   s   .  \r   a   n   d       R   e   a   d
0110460    w   o   r   d   (   s   t   r   e   a   m   ,       l   v   w
0110500    )       b   e  \r   [  \r   i   f       s   t   r   e   a   m
0110520    >   >   S   T   R   E   A 376 001  \0 212 202   M   .   a   c
0110540    t   i   o   n       n   e       r   e   a   d   a   c   t    
0110560    t   h   e   n       [       W   r   i   t   e   O   (   s   t
0110600    r   e   a   m   )   ;  \r   H   e   l   p   (   "   r   e   a
0110620    d   i   n   g       a       w   r   i   t   e   -   s   t   r
0110640    e   a   m   "   )   ]  \r           l   e   t       n   u   m
0110660    b   y   t   e   s       =       2  \r           l   e   t    
0110700    c       =       s   t   r   e   a   m   >   >   S   T   R   E
0110720    A   M   .   c   o   u   n   t  \r           i   f       c   <
0110740    <   O   D   D   B   I   T       %       (   c       +       1
0110760        g   r       s   t   r   e   a   m   >   >   S   T   R   E
0111000    A   M   .   m   a   x   )       t   h   e   n       g   o   t
0111020    o       R   e   a   d   c   h   K   L   U   D   G   E  \r    
0111040        @   l   v   w       =       s   t   r   e   a   m   >   >
0111060    S   T   R   E   A   M   .   w   o   r   d   b   u   f   f   e
0111100    r   ^   (   c       r   s   h   i   f   t       1   )  \r    
0111120        s   t   r   e   a   m   >   >   S   T   R 376 001  \0 326
0111140    n   E   A   M   .   c   o   u   n   t       =       c       +
0111160            2  \r           r   e   t   u   r   n  \r           l
0111200    e   t       v       =       v   e   c       2   5       /   /
0111220        A   L   L   O   C   A   T   E       E   N   O   U   G   H
0111240        S   T   A   C   K       S   P   A   C   E       U   G   H
0111260    ,   U   G   H   !   !   !      \r   ]  \r  \r   a   n   d    
0111300    R   e   a   d   a   d   d   r   (   s   t   r   e   a   m   ,
0111320        l   v   a   )       b   e  \r   [       R   e   a   d   a
0111340    d   d   r       =       R   e   a   d   w   o   r   d  \r    
0111360        R   e   a   d   w   o   r   d   (   s   t   r   e   a   m
0111400    ,       l   v   a   )  \r   ]  \r  \r   a   n   d       W   r
0111420    i   t   e   w   o   r   d   (   s   t   r   e   a   m   ,    
0111440    w   )       b   e  \r   [  \r   i   f       s   t   r   e   a
0111460    m   >   >   S   T   R   E   A   M   .   a   c   t   i   o   n
0111500        n   e       w   r   i   t   e   a   c   t       t   h   e
0111520    n       [       W   r   i   t   e   O   (   s   t   r   e   a
0111540    m 376 001  \0 256   ~   )   ;  \r   H   e   l   p   (   "   w
0111560    r   i   t   i   n   g       a       r   e   a   d       s   t
0111600    r   e   a   m   "   )   ]  \r           l   e   t       n   u
0111620    m   b   y   t   e   s       =       2  \r           l   e   t
0111640        c       =       s   t   r   e   a   m   >   >   S   T   R
0111660    E   A   M   .   c   o   u   n   t  \r   i   f       c   <   <
0111700    O   D   D   B   I   T       %       (   c       +       1    
0111720    g   r       s   t   r   e   a   m   >   >   S   T   R   E   A
0111740    M   .   m   a   x   )       t   h   e   n       g   o   t   o
0111760        W   r   i   t   e   c   h   K   L   U   D   G   E       /
0112000    /       g   o   t   o           i   s       f   a   s   t   !
0112020            U   G   H   !   !   !   !   !  \r           s   t   r
0112040    e   a   m   >   >   S   T   R   E   A   M   .   w   o   r   d
0112060    b   u   f   f   e   r   ^   (   c       r   s   h   i   f   t
0112100        1   )       =       w      \r           s   t   r   e   a
0112120    m   >   >   S   T   R   E   A   M   .   c   o   u   n   t    
0112140    =       c       +     376 001  \0 374 032       2  \r        
0112160    r   e   t   u   r   n  \r           l   e   t       v       =
0112200        v   e   c       2   5       /   /       A   L   L   O   C
0112220    A   T   E       E   N   O   U   G   H       S   T   A   C   K
0112240        S   P   A   C   E       U   G   H   ,   U   G   H   !   !
0112260    !      \r   ]  \r  \r   a   n   d       W   r   i   t   e   a
0112300    d   d   r   (   s   t   r   e   a   m   ,       a   )       b
0112320    e  \r   [       W   r   i   t   e   a   d   d   r       =    
0112340    W   r   i   t   e   w   o   r   d  \r           W   r   i   t
0112360    e   w   o   r   d   (   s   t   r   e   a   m   ,       a   )
0112400   \r   ]  \r   a   n   d       W   W   (   c   h   )       b   e
0112420   \r   [  \r           s   t   a   t   i   c       [       n   e
0112440    w   l   i   n   e   c   o   u   n   t       =       0       ]
0112460   \r           l   e   t       n   e   w   l   i   n   e       =
0112500        c   h       e   q       $   *   n  \r           t   e   s
0112520    t       n   e   w   l   i   n   e  \r           i   f   n   o
0112540    t       n   e   w   l   i   n   e   c   o 376 001  \0 213   G
0112560    u   n   t       =       0  \r           i   f   s   o        
0112600    [       i   f       n   e   w   l   i   n   e   c   o   u   n
0112620    t       g   e       2       r   e   t   u   r   n  \r        
0112640            n   e   w   l   i   n   e   c   o   u   n   t       =
0112660        n   e   w   l   i   n   e   c   o   u   n   t       +    
0112700    1  \r                   ]  \r  \r           i   f       S   W
0112720    O   n   e   C   a   s   e       d   o  \r                   i
0112740    f       $   a       l   e       c   h       &       c   h    
0112760    l   e       $   z       d   o       c   h       =       c   h
0113000        +       (   $   A   -   $   a   )  \r  \r           t   e
0113020    s   t       O   s   t   r   e   a   m       e   q       -   1
0113040   \r           t   h   e   n  \r                   [       s   y
0113060    s   a   c   !   0       =       c   h   ;       s   y   s   c
0113100    a   l   l   (   s   y   s   p   c   h   a   r   ,       s   y
0113120    s   a   c   )  \r                   i   f       n   e   w   l
0113140    i   n   e       d   o  \r                           [       s
0113160  376 001  \0   1  \n   y   s   a   c   !   0       =       #   1
0113200    2   ;       s   y   s   c   a   l   l   (   s   y   s   p   c
0113220    h   a   r   ,       s   y   s   a   c   )  \r                
0113240            i   f       S   W   W   a   i   t       d   o       W
0113260    a   i   t   (   )           ]  \r                   ]  \r    
0113300        o   r  \r                   [       W   r   i   t   e   c
0113320    h   (   O   s   t   r   e   a   m   ,       c   h   )  \r    
0113340                i   f       n   e   w   l   i   n   e       d   o
0113360   \r                               [       s   t   a   t   i   c
0113400        [       l   a   s   t   f   o   r   m   f   e   e   d    
0113420    =       0       ]  \r                               i   f    
0113440    P   o   s   i   t   i   o   n   (   O   s   t   r   e   a   m
0113460    )       g   r       l   a   s   t   f   o   r   m   f   e   e
0113500    d   +   #   2   0   0   0   0       d   o  \r                
0113520                        [       l   a   s   t   f   o   r   m   f
0113540    e   e   d       =       P   o   s   i   t   i   o   n   (   O
0113560    s   t   r   e   a 376 001  \0 035 267   m   )   ;       W   W
0113600    (   #   1   4   )       ]  \r                               ]
0113620   \r                   ]  \r       ]  \r  \r   a   n   d       W
0113640    a   i   t   (   )       b   e  \r   [  \r           s   t   a
0113660    t   i   c       [       w   a   i   t   c   o   u   n   t    
0113700    =       2   0   ;       w   a   i   t   d   e   f   a   u   l
0113720    t       =       2   0       ]  \r           w   a   i   t   c
0113740    o   u   n   t       =       w   a   i   t   c   o   u   n   t
0113760        -       1  \r           i   f       w   a   i   t   c   o
0114000    u   n   t       n   e       0       r   e   t   u   r   n  \r
0114020   \r   l   :   l   e   t       v       =       v   e   c       3
0114040   \r           v   !   0       =       #   7   ;       s   y   s
0114060    c   a   l   l   (   s   y   s   p   c   h   a   r   ,       v
0114100    )  \r           v   !   0       =       $   :   ;       s   y
0114120    s   c   a   l   l   (   s   y   s   p   c   h   a   r   ,    
0114140    v   )  \r           l   e   t       n       =       -   1  \r
0114160            s   y   s   c   a   l   l   ( 376 001  \0   W 336   s
0114200    y   s   g   c   h   a   r   ,       v   )  \r           l   e
0114220    t       c   h       =       v   !   0       &       #   1   7
0114240    7  \r  \r   m   :   s   w   i   t   c   h   o   n       c   h
0114260        i   n   t   o  \r                   [       c   a   s   e
0114300        #   1   5   :       u   n   l   e   s   s       n       e
0114320    q       -   1       d   o       w   a   i   t   d   e   f   a
0114340    u   l   t       =       n  \r                               w
0114360    a   i   t   c   o   u   n   t       =       w   a   i   t   d
0114400    e   f   a   u   l   t  \r                               v   !
0114420    0       =       #   1   5   ;       s   y   s   c   a   l   l
0114440    (   s   y   s   p   c   h   a   r   ,       v   )  \r        
0114460                        r   e   t   u   r   n  \r                
0114500    c   a   s   e       #   1   2   :       u   n   l   e   s   s
0114520        n       n   e       -   1       d   o       n       =    
0114540    1  \r                               w   a   i   t   c   o   u
0114560    n   t       =       n  \r                               v 376
0114600  001  \0 315 305   !   0       =       #   1   5   ;       s   y
0114620    s   c   a   l   l   (   s   y   s   p   c   h   a   r   ,    
0114640    v   )  \r                               r   e   t   u   r   n
0114660   \r                   c   a   s   e       #   3   3   :       H
0114700    e   l   p   (   "   P   A   U   S   E   "   )  \r            
0114720                    g   o   t   o       l  \r                   c
0114740    a   s   e       $   0       t   o       $   9   :       s   y
0114760    s   c   a   l   l   (   s   y   s   p   c   h   a   r   ,    
0115000    v   )  \r                               n       =       c   h
0115020        -       $   0  \r                               [       s
0115040    y   s   c   a   l   l   (   s   y   s   g   c   h   a   r   ,
0115060        v   )   ;       c   h       =       v   !   0       &    
0115100    #   1   7   7  \r                                       u   n
0115120    l   e   s   s       $   0       l   e       c   h       &    
0115140    c   h       l   e       $   9       b   r   e   a   k  \r    
0115160                                    s   y   s   c   a   l   l   (
0115200    s   y   s   p 376 001  \0   | 022   c   h   a   r   ,       v
0115220    )  \r                                       n       =       n
0115240    *   1   0       +       (   c   h       -       $   0   )  \r
0115260                                ]       r   e   p   e   a   t  \r
0115300                                g   o   t   o       m  \r        
0115320            d   e   f   a   u   l   t   :       v   !   0       =
0115340        $   ?   ;       s   y   s   c   a   l   l   (   s   y   s
0115360    p   c   h   a   r   ,       v   )  \r                        
0115400        g   o   t   o       l  \r               ]  \r       ]  \r
0115420   \r   a   n   d       R   e   a   d   S   e   q   u   e   n   t
0115440    i   a   l   (   s   t   r   e   a   m   ,   w   d   ,   c   t
0115460    )       b   e  \r               [  \r               s   y   s
0115500    a   c   !   0       =       w   d       l   s   h   i   f   t
0115520        1  \r       s   y   s   a   c   !   1       =       c   t
0115540        l   s   h   i   f   t       1  \r           s   y   s   a
0115560    c   !   2       =       s   t   r   e   a   m   >   >   S   T
0115600    R   E   A   M   .   c   h   a   n 376 001  \0 314   x   n   e
0115620    l  \r               l   e   t       e   r   r       =       s
0115640    y   s   c   a   l   l   (   s   y   s   r   d   s   ,   s   y
0115660    s   a   c   )  \r               u   n   l   e   s   s       e
0115700    r   r       r   e   t   u   r   n  \r               s   y   s
0115720    c   a   l   l   e   r   r   o   r   (   s   y   s   r   d   s
0115740    ,   s   y   s   a   c   )  \r               ]  \r  \r   a   n
0115760    d       W   r   i   t   e   S   e   q   u   e   n   t   i   a
0116000    l   (   s   t   r   e   a   m   ,   w   d   ,   c   t   )    
0116020    b   e  \r               [  \r               s   y   s   a   c
0116040    !   0       =       w   d       l   s   h   i   f   t       1
0116060   \r               s   y   s   a   c   !   1       =       c   t
0116100        l   s   h   i   f   t       1  \r               s   y   s
0116120    a   c   !   2       =       s   t   r   e   a   m   >   >   S
0116140    T   R   E   A   M   .   c   h   a   n   n   e   l  \r        
0116160        l   e   t       e   r   r       =       s   y   s   c   a
0116200    l   l   (   s   y   s   w   r   s   ,   s   y   s   a 376 001
0116220   \0   ] 215   c   )  \r               u   n   l   e   s   s    
0116240    e   r   r       r   e   t   u   r   n  \r               s   y
0116260    s   c   a   l   l   e   r   r   o   r   (   s   y   s   w   r
0116300    s   ,   s   y   s   a   c   )  \r               ]  \r  \r   a
0116320    n   d       R   e   a   d   W   o   r   d   (   s   t   r   e
0116340    a   m   )       =       v   a   l   o   f  \r               [
0116360   \r               l   e   t       w       =       n   i   l  \r
0116400                R   e   a   d   S   e   q   u   e   n   t   i   a
0116420    l   (   s   t   r   e   a   m   ,   (   l   v       w   )   ,
0116440    1   )  \r               r   e   s   u   l   t   i   s       w
0116460   \r               ]  \r              \r   a   n   d       W   r
0116500    i   t   e   W   o   r   d   (   s   t   r   e   a   m   ,   w
0116520    )       b   e  \r               W   r   i   t   e   S   e   q
0116540    u   e   n   t   i   a   l   (   s   t   r   e   a   m   ,   (
0116560    l   v       w   )   ,       1   )  \r  \r   a   n   d       d
0116600    o   s   p   o   i   n   t   e   r   (   b   c   p   l   n   a
0116620    m   e   , 376 001  \0 275   6       d   o   s   n   a   m   e
0116640    )       =       v   a   l   o   f  \r   [  \r           M   o
0116660    v   e   s   t   r   i   n   g   (   b   c   p   l   n   a   m
0116700    e   ,       d   o   s   n   a   m   e   )  \r           l   e
0116720    t       n       =       d   o   s   n   a   m   e   !   0    
0116740    r   s   h   i   f   t       8  \r           i   f       (   n
0116760        &       1   )       e   q       1       d   o       d   o
0117000    s   n   a   m   e   !   (   n   /   2   +   1   )       =    
0117020    0  \r           r   e   s   u   l   t   i   s       (   d   o
0117040    s   n   a   m   e       l   s   h   i   f   t       1   )   +
0117060    1  \r   ]  \r  \r   a   n   d       O   p   e   n   I   n   p
0117100    u   t   (   n   a   m   e   )       =       v   a   l   o   f
0117120   \r   [  \r           i   f       n   a   m   e       e   q    
0117140    0       r   e   s   u   l   t   i   s       -   1  \r        
0117160    i   f       n   a   m   e   !   0       e   q       0       r
0117200    e   s   u   l   t   i   s       -   1  \r           r   e   s
0117220    u   l   t   i   s       n   e 376 001  \0 261   e   w   s   t
0117240    r   e   a   m   (   n   a   m   e   ,       r   e   a   d   a
0117260    c   t   )  \r       ]  \r  \r   a   n   d       O   p   e   n
0117300    O   u   t   p   u   t   (   n   a   m   e   )       =       v
0117320    a   l   o   f  \r   [  \r           i   f       n   a   m   e
0117340        e   q       0       r   e   s   u   l   t   i   s       -
0117360    1  \r           i   f       n   a   m   e   !   0       e   q
0117400        0       r   e   s   u   l   t   i   s       -   1  \r  \r
0117420            l   e   t       d   o   s   n   a   m   e       =    
0117440    F   i   l   e   N   a   m   e   L   e   n   g   t   h   ;    
0117460    D   v   e   c   (   O   p   e   n   O   u   t   p   u   t   ,
0117500        l   v       d   o   s   n   a   m   e   )  \r           s
0117520    y   s   a   c   !   0       =       d   o   s   p   o   i   n
0117540    t   e   r   (   n   a   m   e   ,       d   o   s   n   a   m
0117560    e   )  \r           l   e   t       d   e   l   e   t   e   e
0117600    r   r       =       s   y   s   c   a   l   l   (   s   y   s
0117620    d   e   l   e   t   e   ,       s   y   s   a   c 376 001  \0
0117640  311 323   )  \r           i   f       d   e   l   e   t   e   e
0117660    r   r       u   n   l   e   s   s       d   e   l   e   t   e
0117700    e   r   r       e   q       #   1   2       d   o  \r        
0117720    [           O   s   t   r   e   a   m       =       T   T   O
0117740    s   t   r   e   a   m  \r                   W   r   i   t   e
0117760    S   (   "   E   R   R   O   R       :       C   A   N   '   T
0120000        D   E   L   E   T   E       F   I   L   E       *   "   "
0120020    )   ;       W   r   i   t   e   S   (   n   a   m   e   )  \r
0120040                    W   r   i   t   e   S   (   "   *   "   *   n
0120060    "   )  \r                   f   i   n   i   s   h  \r        
0120100    ]  \r           l   e   t       c   r   e   a   t   e   e   r
0120120    r       =       s   y   s   c   a   l   l   (   s   y   s   c
0120140    r   e   a   t   e   ,       s   y   s   a   c   )  \r        
0120160    i   f       c   r   e   a   t   e   e   r   r       d   o  \r
0120200                    [           O   s   t   r   e   a   m       =
0120220        T   T   O   s   t   r   e   a   m  \r                    
0120240          376 001  \0   <   $   W   r   i   t   e   S   (   "   E
0120260    R   R   O   R       :       C   A   N   '   T       C   R   E
0120300    A   T   E       F   I   L   E       *   "   "   )   ;       W
0120320    r   i   t   e   S   (   n   a   m   e   )  \r                
0120340            W   r   i   t   e   S   (   "   *   "   *   n   "   )
0120360   \r                           f   i   n   i   s   h  \r        
0120400            ]  \r           r   e   s   u   l   t   i   s       n
0120420    e   w   s   t   r   e   a   m   (   n   a   m   e   ,       w
0120440    r   i   t   e   a   c   t   )  \r       ]  \r  \r   a   n   d
0120460        O   p   e   n   T   e   m   p   (   c   h   ,       i   n
0120500    p   u   t   f   l   a   g   ;       n   u   m   a   r   g   s
0120520        n   a   r   g   s   )       =       v   a   l   o   f  \r
0120540    [  \r           i   f       n   a   r   g   s       e   q    
0120560    1       t   h   e   n       i   n   p   u   t   f   l   a   g
0120600        =       f   a   l   s   e  \r           l   e   t       n
0120620    a   m   e       =       F   i   l   e   N   a   m   e   L   e
0120640    n   g   t   h   /   2   ; 376 001  \0 206   8       D   v   e
0120660    c   (   O   p   e   n   T   e   m   p   ,   l   v       n   a
0120700    m   e   )  \r           U   n   p   a   c   k   s   t   r   i
0120720    n   g   (   "   $   $   $   .   B   0   "   ,       f   i   l
0120740    e   n   a   m   e   )  \r           f   i   l   e   n   a   m
0120760    e   !   (   f   i   l   e   n   a   m   e   !   0   )       =
0121000        c   h  \r           F   i   x   F   i   l   e   N   a   m
0121020    e   (   n   a   m   e   ,       "   "   ,       "   "   )  \r
0121040            l   e   t       c   h   a   n   n   e   l       =    
0121060    i   n   p   u   t   f   l   a   g   ?       O   p   e   n   I
0121100    n   p   u   t   (   n   a   m   e   )   ,       O   p   e   n
0121120    O   u   t   p   u   t   (   n   a   m   e   )  \r           r
0121140    e   s   u   l   t   i   s       c   h   a   n   n   e   l  \r
0121160        ]  \r  \r   a   n   d       R   e   p   o   s   i   t   i
0121200    o   n   (   s   t   r   e   a   m   ,       p   o   s   )    
0121220    b   e  \r   [  \r           l   e   t       c   h   a   n   n
0121240    e   l       =       n   i   l  \r           i 376 001  \0 001
0121260  331   f       s   t   r   e   a   m       l   s       0       r
0121300    e   t   u   r   n  \r           f   l   u   s   h   b   u   f
0121320    f   e   r   (   s   t   r   e   a   m   )  \r           i   f
0121340        P   o   s   i   t   i   o   n   (   s   t   r   e   a   m
0121360    )       e   q       p   o   s       t   h   e   n       r   e
0121400    t   u   r   n  \r           c   h   a   n   n   e   l       =
0121420        s   t   r   e   a   m   >   >   S   T   R   E   A   M   .
0121440    c   h   a   n   n   e   l  \r           u   n   l   e   s   s
0121460        0       l   e       c   h   a   n   n   e   l       &    
0121500    c   h   a   n   n   e   l       l   e       7           t   h
0121520    e   n       r   e   t   u   r   n  \r           l   e   t    
0121540    b   l   o   k   n   u   m       =       (   p   o   s       r
0121560    s   h   i   f   t       1   )       /       2   5   5  \r    
0121600        l   e   t       b   y   t   e   n   u   m       =       p
0121620    o   s       -       (   (   b   l   o   k   n   u   m       *
0121640        2   5   5   )       l   s   h   i   f   t       1   )  \r
0121660      376 001  \0 342 223       l   e   t       v       =       #
0121700    4   3   0  \r           l   e   t       t       =       v   !
0121720    c   h   a   n   n   e   l  \r           t   !   #   2   5    
0121740    =       b   y   t   e   n   u   m  \r           t   !   #   2
0121760    4       =       b   l   o   k   n   u   m  \r           t   !
0122000    #   1   7       =       t   !   #   1   7       %       #   4
0122020        /   /   s   e   t       "   f   i   r   s   t       w   r
0122040    i   t   e   "       b   i   t       i   n       s   t   a   t
0122060    u   s       w   o   r   d  \r           t   e   s   t       s
0122100    t   r   e   a   m   >   >   S   T   R   E   A   M   .   a   c
0122120    t   i   o   n       e   q       w   r   i   t   e   a   c   t
0122140   \r                           t   h   e   n       s   t   r   e
0122160    a   m   >   >   S   T   R   E   A   M   .   m   a   x       =
0122200        m   a   x   b   y   t   e   i   n   d   e   x  \r        
0122220                    o   r           r   e   a   d   b   u   f   f
0122240    e   r   (   s   t   r   e   a   m   )  \r   ]  \r  \r   a   n
0122260    d       R   e   s   e 376 001  \0 260 213   t   S   t   r   e
0122300    a   m   (   c   h   a   n   n   e   l   )       b   e       R
0122320    e   p   o   s   i   t   i   o   n   (   c   h   a   n   n   e
0122340    l   ,       0   )  \r  \r   a   n   d       I   s   F   i   l
0122360    e   (   n   a   m   e   )       =       v   a   l   o   f  \r
0122400    [  \r           l   e   t       d   o   s   n   a   m   e    
0122420    =       F   i   l   e   N   a   m   e   L   e   n   g   t   h
0122440    ;       D   v   e   c   (   I   s   F   i   l   e   ,   l   v
0122460        d   o   s   n   a   m   e   )  \r           s   y   s   a
0122500    c   !   0       =       d   o   s   p   o   i   n   t   e   r
0122520    (   n   a   m   e   ,       d   o   s   n   a   m   e   )  \r
0122540            s   y   s   a   c   !   1       =       s   y   s   a
0122560    c   !   0  \r           l   e   t       e   r   r       =    
0122600    s   y   s   c   a   l   l   (   s   y   s   r   e   n   a   m
0122620    e   ,       s   y   s   a   c   )  \r           r   e   s   u
0122640    l   t   i   s       e   r   r       n   e       #   1   2  \r
0122660    ]  \r  \r   a   n   d       I   n   i   t 376 001  \0 373 356
0122700    T   o   R   e   a   d   (   s   t   r   e   a   m   )       b
0122720    e  \r   [  \r           i   f       s   t   r   e   a   m   >
0122740    >   S   T   R   E   A   M   .   a   c   t   i   o   n       e
0122760    q       r   e   a   d   a   c   t       t   h   e   n       r
0123000    e   t   u   r   n  \r           f   l   u   s   h   b   u   f
0123020    f   e   r   (   s   t   r   e   a   m   )  \r           r   e
0123040    a   d   b   u   f   f   e   r   (   s   t   r   e   a   m   )
0123060   \r   ]  \r  \r   a   n   d       o   p   e   n   f   i   l   e
0123100    (   b   c   p   l   n   a   m   e   )       =       v   a   l
0123120    o   f  \r   [      \r           l   e   t       d   o   s   n
0123140    a   m   e       =       F   i   l   e   N   a   m   e   L   e
0123160    n   g   t   h   ;       D   v   e   c   (   o   p   e   n   f
0123200    i   l   e   ,   l   v       d   o   s   n   a   m   e   )  \r
0123220            i   f       b   c   p   l   n   a   m   e       e   q
0123240        0       r   e   s   u   l   t   i   s       -   1  \r    
0123260        i   f       b   c   p   l   n   a   m   e   !   0       e
0123300  376 001  \0 311   S   q       0       r   e   s   u   l   t   i
0123320    s       -   1  \r  \r           l   e   t       c   h   a   n
0123340    n   e   l       =       7  \r           l   e   t       v    
0123360    =       #   4   3   0           /   /   D   O   S       c   h
0123400    a   n   n   e   l       t   a   b   l   e       i   n       p
0123420    a   g   e       o   n   e  \r           f   o   r       i    
0123440    =       0       t   o       7       d   o  \r                
0123460            i   f       (   v   !   i       &       #   1   0   0
0123500    0   0   0   )       n   e       0       d   o       [       c
0123520    h   a   n   n   e   l       =       i   ;       b   r   e   a
0123540    k       ]  \r  \r           s   y   s   a   c   !   0       =
0123560        d   o   s   p   o   i   n   t   e   r   (   b   c   p   l
0123600    n   a   m   e   ,       d   o   s   n   a   m   e   )  \r    
0123620        s   y   s   a   c   !   1       =       0  \r           s
0123640    y   s   a   c   !   2       =       c   h   a   n   n   e   l
0123660   \r           l   e   t       e   r   r       =       s   y   s
0123700    c   a   l   l   ( 376 001  \0 231   L   s   y   s   o   p   e
0123720    n   ,       s   y   s   a   c   )  \r           i   f       e
0123740    r   r       t   h   e   n       c   h   a   n   n   e   l    
0123760    =       s   y   s   a   c   !   2       +       #   1   0   0
0124000    0  \r           l   e   t       s       =       0  \r        
0124020    f   o   r       i       =       0       t   o       7       d
0124040    o       /   /       t   h   e   r   e       a   r   e       s
0124060    e   v   e   n       c   h   a   n   n   e   l   s       p   o
0124100    s   s   o   b   i   l   e  \r                   [  \r        
0124120            i   f       s   t   r   e   a   m   v   e   c   !   i
0124140        l   s       0       l   o   o   p  \r                   s
0124160        =       s   t   r   e   a   m   v   e   c   !   i  \r    
0124200                s   t   r   e   a   m   v   e   c   !   i       =
0124220        s       +       #   1   0   0   0   0   0  \r            
0124240        b   r   e   a   k  \r                   ]  \r           i
0124260    f       s       e   q       0       t   h   e   n       [    
0124300                W   r   i   t   e   S   ( 376 001  \0   .   S   "
0124320    c   a   n   '   t       o   p   e   n       "   )  \r        
0124340                    W   r   i   t   e   S   (   b   c   p   l   n
0124360    a   m   e   )  \r                           E   r   r   o   r
0124400    (   "   -   -   o   u   t       o   f       s   t   r   e   a
0124420    m   s   "   )  \r                           ]  \r           s
0124440    >   >   S   T   R   E   A   M   .   c   h   a   n   n   e   l
0124460        =       c   h   a   n   n   e   l  \r           s   >   >
0124500    S   T   R   E   A   M   .   m   a   x       =       m   a   x
0124520    b   y   t   e   i   n   d   e   x  \r  \r   r   e   s   u   l
0124540    t   i   s       s  \r   ]  \r  \r   a   n   d       c   l   o
0124560    s   e   c   h   a   n   n   e   l   (   s   t   r   e   a   m
0124600    )       b   e  \r   [  \r           i   f       s   t   r   e
0124620    a   m       e   q       -   1       r   e   t   u   r   n  \r
0124640            f   l   u   s   h   b   u   f   f   e   r   (   s   t
0124660    r   e   a   m   )  \r           s   y   s   a   c   !   2    
0124700    =       s   t   r   e   a   m   >   >   S   T   R   E   A 376
0124720  001  \0 254 276   M   .   c   h   a   n   n   e   l  \r        
0124740    l   e   t       e   r   r       =       s   y   s   c   a   l
0124760    l   (   s   y   s   c   l   o   s   e   ,       s   y   s   a
0125000    c   )  \r           i   f       e   r   r       d   o  \r    
0125020                s   y   s   c   a   l   l   e   r   r   o   r   (
0125040    s   y   s   c   l   o   s   e   ,       s   y   s   a   c   ,
0125060        s   t   r   e   a   m   )  \r           r   e   t   u   r
0125100    n   s   t   r   e   a   m   (   s   t   r   e   a   m   )  \r
0125120    ]  \r  \r   a   n   d       n   e   w   s   t   r   e   a   m
0125140    (   n   a   m   e   ,       a   c   t   i   o   n   )       =
0125160        v   a   l   o   f  \r   [  \r           l   e   t       s
0125200        =       o   p   e   n   f   i   l   e   (   n   a   m   e
0125220    )  \r           i   f       s   >   >   S   T   R   E   A   M
0125240    .   c   h   a   n   n   e   l       g   r       #   1   0   0
0125260    0       d   o  \r                   [  \r                   O
0125300    s   t   r   e   a   m       =       T   T   O   s   t   r   e
0125320    a   m  \r     376 001  \0 302 361               l   e   t    
0125340    m       =       s   >   >   S   T   R   E   A   M   .   c   h
0125360    a   n   n   e   l       e   q       #   1   0   1   2       ?
0125400   \r                           "   E   R   R   O   R       :    
0125420    N   O       F   I   L   E       N   A   M   E   D       *   "
0125440    "       ,  \r                                       s   >   >
0125460    S   T   R   E   A   M   .   c   h   a   n   n   e   l       e
0125500    q       #   1   0   2   1       ?  \r                        
0125520                    "   E   R   R   O   R       :       N   O    
0125540    F   R   E   E       C   H   A   N   N   E   L       F   O   R
0125560        *   "   "       ,  \r                                    
0125600                "   E   R   R   O   R       :       C   A   N   '
0125620    T       O   P   E   N       F   I   L   E       *   "   "  \r
0125640                    W   r   i   t   e   S   (   m   )   ;       W
0125660    r   i   t   e   S   (   n   a   m   e   )   ;       W   r   i
0125700    t   e   S   (   "   *   "   *   n   "   )  \r                
0125720    f   i   n   i   s   h  \r         376 001  \0  \f 025        
0125740    ]  \r           s   >   >   S   T   R   E   A   M   .   a   c
0125760    t   i   o   n       =       a   c   t   i   o   n  \r        
0126000    s   >   >   S   T   R   E   A   M   .   c   o   u   n   t    
0126020    =       0  \r           t   e   s   t       a   c   t   i   o
0126040    n       e   q       r   e   a   d   a   c   t  \r            
0126060        i   f   s   o       r   e   a   d   b   u   f   f   e   r
0126100    (   s   )  \r                   i   f   n   o   t       s   >
0126120    >   S   T   R   E   A   M   .   m   a   x       =       m   a
0126140    x   b   y   t   e   i   n   d   e   x  \r           r   e   s
0126160    u   l   t   i   s       s  \r   ]  \r  \r   a   n   d       r
0126200    e   t   u   r   n   s   t   r   e   a   m   (   s   t   r   e
0126220    a   m   )       b   e  \r   [  \r           f   o   r       i
0126240        =       0       t   o       7       d   o  \r            
0126260        [  \r                   i   f       (   s   t   r   e   a
0126300    m   v   e   c   !   i       &       #   7   7   7   7   7   )
0126320        e   q       s   t   r   e   a   m       t   h   e 376 001
0126340   \0 033   z   n  \r                           [  \r            
0126360                s   t   r   e   a   m   v   e   c   !   i       =
0126400        s   t   r   e   a   m  \r                           r   e
0126420    t   u   r   n  \r                           ]  \r            
0126440        ]  \r           E   r   r   o   r   (   "   c   a   n   '
0126460    t       r   e   t   u   r   n       s   t   r   e   a   m   "
0126500    )  \r   ]  \r  \r   a   n   d       f   l   u   s   h   b   u
0126520    f   f   e   r   (   s   t   r   e   a   m   )       b   e  \r
0126540    [  \r           i   f       s   t   r   e   a   m   >   >   S
0126560    T   R   E   A   M   .   a   c   t   i   o   n       e   q    
0126600    w   r   i   t   e   a   c   t       t   h   e   n      \r    
0126620                                [  \r                            
0126640        i   f       (   s   t   r   e   a   m   >   >   S   T   R
0126660    E   A   M   .   c   o   u   n   t       n   e       0   )    
0126700    t   h   e   n      \r                                   b   u
0126720    f   f   e   r   i   o   (   s   t   r   e   a   m   ,       s
0126740    y   s   w 376 001  \0   u 276   r   s   ,       s   t   r   e
0126760    a   m   >   >   S   T   R   E   A   M   .   c   o   u   n   t
0127000        )  \r                                   ]  \r           s
0127020    t   r   e   a   m   >   >   S   T   R   E   A   M   .   c   o
0127040    u   n   t       =       0  \r           s   t   r   e   a   m
0127060    >   >   S   T   R   E   A   M   .   m   a   x       =       m
0127100    a   x   b   y   t   e   i   n   d   e   x  \r   ]  \r   a   n
0127120    d       r   e   a   d   b   u   f   f   e   r   (   s   t   r
0127140    e   a   m   )       b   e  \r   [  \r           b   u   f   f
0127160    e   r   i   o   (   s   t   r   e   a   m   ,       s   y   s
0127200    r   d   s   ,       m   a   x   s   t   r   e   a   m   b   y
0127220    t   e   s   )  \r           s   t   r   e   a   m   >   >   S
0127240    T   R   E   A   M   .   m   a   x       =           s   y   s
0127260    a   c   !   1       -   1  \r           s   t   r   e   a   m
0127300    >   >   S   T   R   E   A   M   .   c   o   u   n   t       =
0127320            0  \r           s   t   r   e   a   m   >   >   S   T
0127340    R   E   A   M   .   a   c   t 376 001  \0 207   c   i   o   n
0127360        =       r   e   a   d   a   c   t  \r   ]  \r  \r   a   n
0127400    d       d   i   s   p   l   a   y   s   t   r   e   a   m   (
0127420    s   )       b   e  \r   [  \r           W   r   i   t   e   S
0127440    (   "   *   N   D   i   s   p   l   a   y       a       s   t
0127460    r   e   a   m   .   .   .   *   N   "   )  \r           f   o
0127500    r       i       =       0       t   o       (   o   f   f   s
0127520    e   t       S   T   R   E   A   M   .   b   y   t   e   b   u
0127540    f   f   e   r   +   1   5   )   /   1   6       d   o       W
0127560    r   i   t   e   O   (   s   !   i   )  \r           W   r   i
0127600    t   e   S   (   "   *   N   "   )  \r   ]  \r  \r   a   n   d
0127620        O   v   e   r   l   a   y   (   n   a   m   e   ,       l
0127640    o   c   )       b   e  \r   [  \r           l   e   t       s
0127660        =       o   p   e   n   f   i   l   e   (   n   a   m   e
0127700    )       /   /   c   i   r   c   u   m   v   e   n   t       "
0127720    O   p   e   n   I   n   p   u   t   "       b   e   c   a   u
0127740    s   e       w   e       d   o   n   '   t  \r   / 376 001  \0
0127760  215 326   /           w   a   n   t       i   o       b   u   f
0130000    f   e   r   e   d       f   o   r       u   s  \r           l
0130020    e   t       c   h       =       s   >   >   S   T   R   E   A
0130040    M   .   c   h   a   n   n   e   l  \r           l   e   t    
0130060    h       =       v   e   c       1   5  \r           s   y   s
0130100    a   c   !   0       =       h       l   s   h   i   f   t    
0130120    1  \r           s   y   s   a   c   !   1       =       3   2
0130140   \r           s   y   s   a   c   !   2       =       c   h  \r
0130160            s   y   s   c   a   l   l   (   s   y   s   r   d   s
0130200    ,       s   y   s   a   c   )  \r           s   y   s   a   c
0130220    !   0       =       l   o   c       l   s   h   i   f   t    
0130240    1  \r           s   y   s   a   c   !   1       =       h   !
0130260    1       l   s   h   i   f   t       1  \r           s   y   s
0130300    a   c   !   2       =       c   h  \r           s   y   s   c
0130320    a   l   l   (   s   y   s   r   d   s   ,       s   y   s   a
0130340    c   )  \r           l   e   t       n       =       n   i   l
0130360   \r     376 001  \0   3 020       s   y   s   a   c   !   0    
0130400    =       l   v       n       l   s   h   i   f   t       1  \r
0130420            s   y   s   a   c   !   1       =       2  \r        
0130440    s   y   s   a   c   !   2       =       c   h  \r           s
0130460    y   s   c   a   l   l   (   s   y   s   r   d   s   ,       s
0130500    y   s   a   c   )  \r           l   e   t       p       =   v
0130520    e   c       1  \r           f   o   r       i       =       1
0130540        t   o       n       d   o  \r           [       s   y   s
0130560    a   c   !   0       =       p       l   s   h   i   f   t    
0130600    1  \r                   s   y   s   a   c   !   1       =    
0130620    4  \r                   s   y   s   a   c   !   2       =    
0130640    c   h  \r                   s   y   s   c   a   l   l   (   s
0130660    y   s   r   d   s   ,       s   y   s   a   c   )  \r        
0130700            @   (   p   !   0   )       =       p   !   1       +
0130720        l   o   c  \r           ]  \r           c   l   o   s   e
0130740    c   h   a   n   n   e   l   (   s   )  \r   ]  \r  \r   a   n
0130760    d       R   e   a   d   C 376 001  \0   )   \   O   M   C   M
0131000    (   )       b   e  \r   [  \t   /   /   r   e   a   d       t
0131020    h   e       n   e   x   t       n   a   m   e       a   n   d
0131040        s   w   i   t   c   h       l   i   s   t       f   r   o
0131060    m       C   O   M   .   C   M  \r           s   t   a   t   i
0131100    c       [       c   s   t   r   e   a   m       =       #   1
0131120    0   0   0   0   0       ]  \r           i   f       c   s   t
0131140    r   e   a   m       e   q       #   1   0   0   0   0   0    
0131160    d   o       c   s   t   r   e   a   m       =       O   p   e
0131200    n   I   n   p   u   t   (   "   C   O   M   .   C   M   "   )
0131220   \r           l   e   t       i       =       1  \r           [
0131240   \t   R   e   a   d   c   h   (   c   s   t   r   e   a   m   ,
0131260        l   v       f   i   l   e   n   a   m   e   !   i   )  \r
0131300   \t   i   f       f   i   l   e   n   a   m   e   !   i       e
0131320    q       0       b   r   e   a   k  \r  \t   i   f       i    
0131340    g   r       F   i   l   e   N   a   m   e   L   e   n   g   t
0131360    h       d   o       E   r   r   o   r   (   " 376 001  \0 364
0131400    9   B   A   D       F   I   L   E       N   A   M   E   "   )
0131420   \r  \t   i   f       f   i   l   e   n   a   m   e   !   i    
0131440    e   q       #   3   7   7       d   o  \r  \t           [  \t
0131460    C   l   o   s   e   I   n   p   u   t   (   c   s   t   r   e
0131500    a   m   )  \r  \t  \t   f   i   l   e   n   a   m   e   !   0
0131520        =       -   1  \r  \t  \t   c   s   t   r   e   a   m    
0131540    =       #   1   0   0   0   0   0       /   /   /   *   D   C
0131560    S   *       s   o       c   a   n       r   e   -   r   e   a
0131600    d       i   n       L   E   X  \r  \t  \t   r   e   t   u   r
0131620    n  \r  \t                   ]  \r  \t   i       =       i    
0131640    +       1  \r           ]       r   e   p   e   a   t  \r    
0131660        f   i   l   e   n   a   m   e   !   0       =       i   -
0131700    1  \r  \r           l   e   t       s       =       n   i   l
0131720   \r           l   e   t       i   ,       j       =       0   ,
0131740        0  \r           f   o   r       k       =       1       t
0131760    o       4       d   o  \r                   [  \t   R   e   a
0132000    d 376 001  \0   U 213   c   h   (   c   s   t   r   e   a   m
0132020    ,       l   v       s   )  \r  \t   f   o   r       l       =
0132040        1       t   o       8       d   o  \r  \t           [  \t
0132060    i   f       (   s       &       #   2   0   0   )       n   e
0132100        0       d   o  \r  \t  \t           [  \t   j       =    
0132120    j       +       1  \r  \t  \t  \t   s   w   !   j       =    
0132140    i       +       $   A  \r  \t  \t                   ]  \r  \t
0132160   \t   i       =       i       +       1  \r  \t  \t   s       =
0132200        s       l   s   h   i   f   t       1  \r  \t            
0132220        ]  \r                           ]  \r           s   w   !
0132240    0       =       j  \r       ]  \r  \r   a   n   d       I   n
0132260    i   t   F   r   e   e   (   m   a   x   )       b   e  \r   [
0132300        F   r   e   e   l   i   s   t   P       =       m   a   x
0132320   \r           r   v       z   f   r   a   m   e   m   a   x    
0132340    =       m   a   x  \r   ]  \r  \r   a   n   d       N   e   w
0132360    v   e   c   (   n   )       =       v   a   l   o   f  \r   [
0132400        l   e   t       v 376 001  \0 331   3       =       F   r
0132420    e   e   l   i   s   t   P       -       n  \r           i   f
0132440        v       l   s       l   v       v       d   o  \r  \t   [
0132460        r   v       z   f   r   a   m   e   m   a   x       =    
0132500    r   v       z   f   r   a   m   e   m   a   x       +       1
0132520    0   0   0  \r  \t           E   r   r   o   r   (   "   O   U
0132540    T       O   F       F   R   E   E       S   T   O   R   A   G
0132560    E       -   -       P   R   O   G   R   A   M       I   S    
0132600    T   O   O       B   I   G   "   )  \r  \t   ]  \r           F
0132620    r   e   e   l   i   s   t   P       =       v       -       1
0132640   \r           r   v       z   f   r   a   m   e   m   a   x    
0132660    =       v  \r           r   e   s   u   l   t   i   s       v
0132700   \r   ]  \r  \r   a   n   d       D   v   e   c   (   r   o   u
0132720    t   ,   l   v   N   )       b   e  \r   [       l   e   t    
0132740    r   s   l   t       =       (   l   v       r   o   u   t   )
0132760    -   4  \r           l   e   t       F   S   O   (   )       b
0133000    e       [       l   e   t       v       = 376 001  \0   <   g
0133020        v   e   c       3   1   0   0   0   ;       v       =    
0133040    v       ]  \r           l   e   t       n   e   w   M   a   x
0133060        =       r   s   l   t       +       @   l   v   N       +
0133100        1  \r           i   f       n   e   w   M   a   x       >
0133120        @   z   f   r   a   m   e   m   a   x       t   h   e   n
0133140        F   S   O   (   )  \r           @   z   f   r   a   m   e
0133160    n   e   x   t       =       n   e   w   M   a   x  \r        
0133200    @   l   v   N       =       r   s   l   t  \r   /   /   *   *
0133220    *   !   !   !           T   h   i   s       w   i   l   l    
0133240    s   t   o   p       w   o   r   k   i   n   g       i   f    
0133260    R   E   T   U   R   N       c   o   d   e       i   s       c
0133300    h   a   n   g   e   d  \r           r   s   l   t       =    
0133320    (   @   z   r   e   t   u   r   n   )   +   1       /   /    
0133340    b   y   p   a   s   s       r   e   s   e   t   t   i   n   g
0133360        z   f   r   a   m   e   n   e   x   t  \r           r   s
0133400    l   t   (   )       /   /       r   e   t   u   r   n   s  \r
0133420  376  \0 002   ] 017   ]  \r 377  \0  \0   B   C   P   L   R   D
0133440    O   S   .   b   c   p   l  \0 373 226   W 347   P  \0  \0 376
0133460  001  \0 206   i  \r   /   /       B   C   P   L   R   D   O   S
0133500    .   b   c   p   l       -       B   C   P   L       R   D   O
0133520    S   -   s   p   e   c   i   f   i   c       f   u   n   c   t
0133540    i   o   n   s  \r   /   /       C   o   p   y   r   i   g   h
0133560    t       X   e   r   o   x       C   o   r   p   o   r   a   t
0133600    i   o   n       1   9   8   0  \r   /   /       S   w   i   n
0133620    e   h   a   r   t   ,       6       M   a   y       7   7   ,
0133640        f   i   l   e       l   e   n   g   t   h   s       -   >
0133660        s   t   a   t   i   c   s  \r   /   /       *   *       d
0133700    e   n   o   t   e   s       d   e   c   l   a   r   a   t   i
0133720    o   n   s       o   r       f   u   n   c   t   i   o   n   s
0133740        d   i   f   f   e   r   e   n   t       f   r   o   m    
0133760    D   O   S       B   C   P   L   .  \r  \r   g   e   t       "
0134000    b   c   p   l   x   "  \r  \r   e   x   t   e   r   n   a   l
0134020    [      \r   b   u   f   f   e   r   i   o  \r   d   i   s   p
0134040    l   a   y   s   t   r   e   a   m  \r   R   e   a   d   c   h
0134060    K   L   U   D 376 001  \0 215 374   G   E  \r   s   t   r   e
0134100    a   m   v   e   c  \r   s   y   s   c   a   l   l  \r   W   r
0134120    i   t   e   c   h   K   L   U   D   G   E  \r   I   n   i   t
0134140    T   o   R   e   a   d  \r   o   p   e   n   f   i   l   e  \r
0134160    ]  \r  \r   m   a   n   i   f   e   s   t       [  \r  \t   z
0134200    f   r   a   m   e   m   a   x       =       #   3   3   5  \r
0134220   \t   z   f   r   a   m   e   n   e   x   t       =       #   3
0134240    3   6  \r  \t   z   f   r   a   m   e   f   i   r   s   t    
0134260    =       #   3   3   7  \r  \t   z   r   e   t   u   r   n    
0134300    =       #   3   6   6  \r  \t                   ]  \r  \r   /
0134320    /       s   y   s   t   e   m   -   d   e   p   e   n   d   e
0134340    n   t       m   a   n   i   f   e   s   t   s   ,       u   s
0134360    e   d       t   h   r   o   u   g   h   o   u   t  \r  \r  \r
0134400    m   a   n   i   f   e   s   t       [  \r           m   a   x
0134420    w   o   r   d   i   n   d   e   x       =       5  \r        
0134440    m   a   x   b   y   t   e   i   n   d   e   x       =       m
0134460    a   x   w   o   r   d   i   n   d 376 001  \0  \b  \n   e   x
0134500    *   2       +       1  \r           m   a   x   s   t   r   e
0134520    a   m   b   y   t   e   s       =       m   a   x   b   y   t
0134540    e   i   n   d   e   x       +       1  \r           r   e   a
0134560    d   a   c   t       =       0  \r           w   r   i   t   e
0134600    a   c   t       =       1  \r           ]  \r  \r   s   t   r
0134620    u   c   t   u   r   e       S   T   R   E   A   M   [  \r    
0134640                c   h   a   n   n   e   l       w   o   r   d  \r
0134660                    a   c   t   i   o   n       w   o   r   d  \r
0134700                    c   o   u   n   t       w   o   r   d  \r    
0134720                m   a   x       w   o   r   d  \r                
0134740    [       b   y   t   e   b   u   f   f   e   r   ^   0   ,   m
0134760    a   x   b   y   t   e   i   n   d   e   x       b   y   t   e
0135000        1   ]       =  \r                   [       w   o   r   d
0135020    b   u   f   f   e   r   ^   0   ,   m   a   x   w   o   r   d
0135040    i   n   d   e   x       w   o   r   d       1   ]  \r   ]  \r
0135060    s   t   r   u   c   t   u   r   e       [       L   E 376 001
0135100   \0 034 270   F   T   H   A   L   F       b   y   t   e       1
0135120    ;       R   I   G   H   T   H   A   L   F       b   y   t   e
0135140        1       ]  \r  \r   /   /       *   *  \r   m   a   n   i
0135160    f   e   s   t  \r   [       s   y   s   g   c   h   a   r    
0135200    =       1   7   b   8  \r           s   y   s   p   c   h   a
0135220    r       =       2   0   b   8  \r           s   y   s   o   p
0135240    e   n           =       3   0   b   8   +   #   7   7  \r    
0135260        s   y   s   c   l   o   s   e       =       3   1   b   8
0135300    +   #   7   7  \r           s   y   s   c   r   e   a   t   e
0135320    =       1   6   b   8  \r           s   y   s   d   e   l   e
0135340    t   e   =       1   b   8  \r           s   y   s   r   d   s
0135360                =       3   2   b   8   +   #   7   7  \r        
0135400    s   y   s   w   r   s               =       3   5   b   8   +
0135420    #   7   7  \r           s   y   s   r   e   n   a   m   e    
0135440    =   2   b   8  \r           s   y   s   g   c   h   n        
0135460    =       4   2   b   8   +   #   7   7  \r           s   y   s
0135500    s   p   o 376 001  \0   6 232   s           =       4   7   b
0135520    8   +   #   7   7  \r           s   y   s   g   p   o   s    
0135540        =       5   0   b   8   +   #   7   7  \r   ]  \r  \r  \r
0135560    /   /       *   *  \r   m   a   n   i   f   e   s   t       [
0135600   \r       s   y   s   c   a   l   l   p   r   o   c       =    
0135620    #   1   0   0   4   3   6  \r       s   y   s   d   e   b   u
0135640    g   p   r   o   c       =       #   1   0   0   4   3   7  \r
0135660        s   y   s   a   c           =       #   4   4   0  \r    
0135700    s   y   s   t   e   m   p   1       =       #   4   4   4  \r
0135720        s   y   s   t   e   m   p   2       =       #   4   4   5
0135740   \r               ]  \r  \r   /   /       s   y   s   t   e   m
0135760    -   d   e   p   e   n   d   e   n   t       m   a   n   i   f
0136000    e   s   t   s   ,       u   s   e   d       b   y       I   n
0136020    i   t   B   C   P   L  \r  \r   m   a   n   i   f   e   s   t
0136040   \r               [  \r               S   T   R   E   A   M   s
0136060    i   z   e       =       (   (   s   i   z   e       S   T   R
0136100    E   A   M       +       1   5 376 001  \0   D 262   )   /   1
0136120    6   )  \r               s   t   r   e   a   m   v   e   c   s
0136140    i   z   e       =       7  \r               ]  \r   s   t   r
0136160    u   c   t   u   r   e       [       b   l   a   n   k       b
0136200    i   t       1   5   ;       O   D   D   B   I   T       b   i
0136220    t       1       ]  \r  \r   l   e   t       I   n   i   t   B
0136240    C   P   L   (   p   a   r   a   m   v   e   c   )       b   e
0136260   \r           [  \r           V   e   r   s   i   o   n       =
0136300        (   2       l   s   h   i   f   t       8   )       +    
0136320    0  \r           S   W   A   l   t   o       =       f   a   l
0136340    s   e       /   /       d   e   f   a   u   l   t       -   -
0136360        c   o   m   p   i   l   e       N   O   V   A       c   o
0136400    d   e  \r  \r           T   T   O   s   t   r   e   a   m    
0136420    =       O   p   e   n   O   u   t   p   u   t   (   0   )  \r
0136440            T   T   I   s   t   r   e   a   m       =       O   p
0136460    e   n   I   n   p   u   t   (   0   )  \r           O   s   t
0136500    r   e   a   m       =       T   T   O   s   t   r 376 001  \0
0136520    c   ~   e   a   m   ;       I   s   t   r   e   a   m       =
0136540        T   T   I   s   t   r   e   a   m   ;  \r  \r           l
0136560    e   t       v       =       v   e   c       s   t   r   e   a
0136600    m   v   e   c   s   i   z   e  \r           s   t   r   e   a
0136620    m   v   e   c       =       v  \r           l   e   t       s
0136640    t   r   e   a   m   t   a   b   l   e   s       =       v   e
0136660    c       (   s   t   r   e   a   m   v   e   c   s   i   z   e
0136700    +   1   )   *   S   T   R   E   A   M   s   i   z   e  \r  \r
0136720            F   r   e   e   M   a   x       =       p   a   r   a
0136740    m   v   e   c   !   #   3   7   -   1  \r       /   /       L
0136760    i   m   i   t   s       a   r   e       M   a   x   '   s    
0137000   \r           D   i   c   t   F   r   e   e   L   i   m   i   t
0137020        =       F   r   e   e   M   a   x       -       (   p   a
0137040    r   a   m   v   e   c   !   1   +   1   )  \r           T   r
0137060    e   e   F   r   e   e   L   i   m   i   t       =       F   r
0137100    e   e   M   a   x       -       (   p   a   r   a   m   v   e
0137120    c   ! 376 001  \0 004 267   2   +   1   )  \r           C   o
0137140    d   e   F   r   e   e   L   i   m   i   t       =       F   r
0137160    e   e   M   a   x       -       (   p   a   r   a   m   v   e
0137200    c   !   3   +   1   )  \r           F   i   l   e   N   a   m
0137220    e   L   e   n   g   t   h       =       2   0  \r           G
0137240    e   t   F   i   l   e   M   a   x       =       1   2  \r    
0137260        f   o   r       i       =       0       t   o       7    
0137300    d   o  \r                       [  \r                       s
0137320    t   r   e   a   m   v   e   c   !   i       =       s   t   r
0137340    e   a   m   t   a   b   l   e   s  \r                       s
0137360    t   r   e   a   m   t   a   b   l   e   s       =       s   t
0137400    r   e   a   m   t   a   b   l   e   s       +       S   T   R
0137420    E   A   M   s   i   z   e       +       1  \r                
0137440        ]  \r  \r  \r   /   /       C   A   L   L       T   H   E
0137460        C   O   M   P   I   L   E   R  \r           M   a   i   n
0137500    (   p   a   r   a   m   v   e   c   )  \r  \r           ]  \r
0137520   \r   a   n   d       s   y 376 001  \0 222   !   s   c   a   l
0137540    l   (   c   a   l   l   ,       a   c   )       =       v   a
0137560    l   o   f  \r   [       l   e   t       e   r   r       =    
0137600    s   y   s   c   a   l   l   p   r   o   c   (   c   a   l   l
0137620    ,       a   c   )  \r           i   f       e   r   r       e
0137640    q       -   1       r   e   s   u   l   t   i   s       0  \r
0137660            i   f       e   r   r       e   q       0           d
0137700    o       e   r   r       =       #   1   5  \r           r   e
0137720    s   u   l   t   i   s       e   r   r  \r       ]  \r  \r   a
0137740    n   d       P   o   s   i   t   i   o   n   (   s   t   r   e
0137760    a   m   )       =       v   a   l   o   f  \r   [  \r        
0140000    i   f       s   t   r   e   a   m       l   s       0       t
0140020    h   e   n       r   e   s   u   l   t   i   s       -   1  \r
0140040            l   e   t       c   h   a   n   n   e   l       =    
0140060    s   t   r   e   a   m   >   >   S   T   R   E   A   M   .   c
0140100    h   a   n   n   e   l  \r           u   n   l   e   s   s    
0140120    0       l   e       c   h   a   n   n   e   l 376 001  \0   p
0140140    c       &       c   h   a   n   n   e   l       l   e       7
0140160        r   e   s   u   l   t   i   s       -   1  \r   /   /    
0140200    *   *       D   O   S       h   a   s       n   o       s   y
0140220    s   c   a   l   l       f   o   r       p   o   s   i   t   i
0140240    o   n  \r               s   y   s   a   c   !   2       =    
0140260    c   h   a   n   n   e   l  \r               l   e   t       e
0140300    r   r       =       s   y   s   c   a   l   l   (   s   y   s
0140320    g   p   o   s   ,       s   y   s   a   c   )  \r            
0140340    i   f       e   r   r       d   o       s   y   s   c   a   l
0140360    l   e   r   r   o   r   (   s   y   s   g   p   o   s   ,    
0140400    s   y   s   a   c   )  \r               i   f       s   y   s
0140420    a   c   !   0       n   e       0       d   o  \r            
0140440    [       O   s   t   r   e   a   m       =       T   T   O   s
0140460    t   r   e   a   m  \r                       W   r   i   t   e
0140500    S   (   "   E   r   r   o   r   :       F   i   l   e       P
0140520    o   s   i   t   i   o   n       >       #   1   7   7   7   7
0140540    7 376 001  \0 271 237   *   N   "   )  \r                    
0140560    f   i   n   i   s   h  \r               ]  \r               l
0140600    e   t       d   o   s   p   o   s       =       s   y   s   a
0140620    c   !   1  \r   /   /       *   *       ^   ^  \r           i
0140640    f       s   t   r   e   a   m   >   >   S   T   R   E   A   M
0140660    .   a   c   t   i   o   n       e   q       w   r   i   t   e
0140700    a   c   t       t   h   e   n      \r                        
0140720    r   e   s   u   l   t   i   s       d   o   s   p   o   s    
0140740    +       s   t   r   e   a   m   >   >   S   T   R   E   A   M
0140760    .   c   o   u   n   t  \r           i   f       d   o   s   p
0141000    o   s       e   q       0       t   h   e   n       r   e   s
0141020    u   l   t   i   s       0  \r               r   e   s   u   l
0141040    t   i   s       d   o   s   p   o   s       -       (   s   t
0141060    r   e   a   m   >   >   S   T   R   E   A   M   .   m   a   x
0141100        -       s   t   r   e   a   m   >   >   S   T   R   E   A
0141120    M   .   c   o   u   n   t   )       -   1  \r   ]  \r  \r   a
0141140    n   d       b   u   f 376 001  \0 372   b   f   e   r   i   o
0141160    (   s   t   r   e   a   m   ,       o   p   r   ,       c   o
0141200    u   n   t   )       =       v   a   l   o   f  \r   [  \r    
0141220        s   y   s   a   c   !   0       =       (   l   v       s
0141240    t   r   e   a   m   >   >   S   T   R   E   A   M   .   b   y
0141260    t   e   b   u   f   f   e   r   )       l   s   h   i   f   t
0141300        1  \r           s   y   s   a   c   !   1           =    
0141320    c   o   u   n   t  \r           s   y   s   a   c   !   2    
0141340    =       s   t   r   e   a   m   >   >   S   T   R   E   A   M
0141360    .   c   h   a   n   n   e   l  \r           r   e   s   u   l
0141400    t   i   s       s   y   s   c   a   l   l   (   o   p   r   ,
0141420        s   y   s   a   c   )  \r   ]  \r  \r   a   n   d       H
0141440    e   l   p   (   M   e   s   s   a   g   e   )       b   e  \r
0141460    [  \r           l   e   t       v       =       v   e   c    
0141500    3  \r           l   e   t       m       =       v   e   c    
0141520