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