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