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