$ od -c -N 50000 [Indigo]<Portola>Nova>GATEWAY.DM!1
0000000  377  \0  \0   G   a   t   e   w   a   y   .   b   c   p   l  \0
0000020  376 001  \0 264   =   /   /       G   a   t   e   w   a   y   .
0000040    b   c   p   l  \r  \r   /   /       L   a   s   t       m   o
0000060    d   i   f   i   e   d       M   a   r   c   h       1   0   ,
0000100        1   9   7   9           3   :   3   0       P   M       b
0000120    y       B   o   g   g   s  \r  \r   g   e   t       "   P   u
0000140    p   0   .   d   e   c   l   "  \r   g   e   t       "   P   u
0000160    p   1   .   d   e   c   l   "  \r  \r   e   x   t   e   r   n
0000200    a   l  \r   [  \r   /   /       o   u   t   g   o   i   n   g
0000220        p   r   o   c   e   d   u   r   e   s  \r   G   a   t   e
0000240    w   a   y   ;       G   a   t   e   w   a   y   F   i   n   i
0000260    s   h  \r  \r   /   /       i   n   c   o   m   i   n   g    
0000300    p   r   o   c   e   d   u   r   e   s  \r   G   a   t   e   w
0000320    a   y   I   n   i   t   ;       C   a   l   l   C   o   n   t
0000340    e   x   t   L   i   s   t   ;       E   n   q   u   e   u   e
0000360    ;       S   e   t   A   l   l   o   c   a   t   i   o   n  \r
0000400    A   d   d   T   o   Z   o   n   e   ;       A   l   l   o   c
0000420    a   t   e   ;     376 001  \0   f  \f   F   r   e   e   ;    
0000440    C   a   l   l   D   o   s   ;       R   e   s   e   t   T   i
0000460    m   e   S   e   r   v  \r   W   s   ;       E   n   d   o   f
0000500    s   ;       G   e   t   s   ;       H   a   l   t   G   a   t
0000520    e   w   a   y   ;       S   e   t   T   i   m   e   r   ;    
0000540    T   i   m   e   r   H   a   s   E   x   p   i   r   e   d  \r
0000560   \r   /   /       o   u   t   g   o   i   n   g       s   t   a
0000600    t   i   c   s  \r   v   e   r   s   i   o   n   T   e   x   t
0000620   \r  \r   /   /       i   n   c   o   m   i   n   g       s   t
0000640    a   t   i   c   s  \r   p   b   i   F   r   e   e   Q   ;    
0000660    l   e   n   P   B   I   ;       n   d   b   Q   ;       s   o
0000700    c   k   e   t   Q   ;       d   P   S   I   B   ;       n   u
0000720    m   N   e   t   s  \r   u   s   e   r   F   i   n   i   s   h
0000740    P   r   o   c   ;       s   y   s   Z   o   n   e   ;       c
0000760    t   x   Q   ;       k   e   y   s  \r   ]  \r  \r   s   t   a
0001000    t   i   c       v   e   r   s   i   o   n   T   e   x   t  \r
0001020   \r   m   a   n   i   f   e   s   t  \r 376 001  \0 343 243   [
0001040   \r   /   /       D   o   s       c   o   m   m   a   n   d   s
0001060   \r   r   e   s   e   t       =       6   5   0   0   0   b  \r
0001100    e   r   t   n       =       6   6   4   0   0   b  \r   ]  \r
0001120   \f  \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -
0001140    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0001240   \r   l   e   t       G   a   t   e   w   a   y   (   b   l   v
0001260    )       b   e  \r   /   /   -   -   -   -   -   -   -   -   -
0001300    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0001400    -   -   -  \r   [  \r   v   e   r   s   i   o   n   T   e   x
0001420    t       =       "   N   o   v   a       G   a   t   e   w 376
0001440  001  \0 036 206   a   y       o   f       M   a   r   c   h    
0001460    1   0   ,       1   9   7   9   "  \r  \r   G   a   t   e   w
0001500    a   y   I   n   i   t   (   b   l   v   )  \r  \r   /   /    
0001520    t   h   r   o   w       a   w   a   y       i   n   i   t   i
0001540    a   l   i   z   a   t   i   o   n       c   o   d   e   ,    
0001560    a   d   d       s   p   a   c   e       t   o       z   o   n
0001600    e   ,  \r   A   d   d   T   o   Z   o   n   e   (   s   y   s
0001620    Z   o   n   e   ,       G   a   t   e   w   a   y   I   n   i
0001640    t   ,       b   l   v   !   2   9   -   G   a   t   e   w   a
0001660    y   I   n   i   t   -   1   )  \r  \r   /   /       t   u   r
0001700    n       a   l   l       r   e   m   a   i   n   i   n   g    
0001720    s   t   o   r   a   g   e       i   n   t   o       p   b   i
0001740    s       e   x   c   e   p   t       f   o   r       a       s
0001760    m   a   l   l       c   h   u   n   k  \r   l   e   t       p
0002000    b   i   C   o   u   n   t       =       0  \r   l   e   t    
0002020    f   r   e   e   S   l   o   p       =       A   l   l   o   c
0002040    a   t   e   ( 376 001  \0   ~ 203   s   y   s   Z   o   n   e
0002060    ,       4   0   0   )  \r               [  \r               l
0002100    e   t       p   b   i       =       A   l   l   o   c   a   t
0002120    e   (   s   y   s   Z   o   n   e   ,       l   e   n   P   B
0002140    I   ,       t   r   u   e   )  \r               i   f       p
0002160    b   i       e   q       0       b   r   e   a   k  \r        
0002200        E   n   q   u   e   u   e   (   p   b   i   F   r   e   e
0002220    Q   ,       p   b   i   )  \r               p   b   i   C   o
0002240    u   n   t       =       p   b   i   C   o   u   n   t   +   1
0002260   \r               ]       r   e   p   e   a   t  \r   F   r   e
0002300    e   (   s   y   s   Z   o   n   e   ,       f   r   e   e   S
0002320    l   o   p   )  \r  \r   /   /       f   i   x       a   l   l
0002340    o   c   a   t   i   o   n   s       t   o       r   e   f   l
0002360    e   c   t       r   e   a   l       n   u   m   b   e   r    
0002400    o   f       p   b   i   s  \r   p   b   i   C   o   u   n   t
0002420        =       p   b   i   C   o   u   n   t   -   n   u   m   N
0002440    e   t   s  \r   l   e   t       f 376 001  \0   R 244   a   k
0002460    e   S   o   c       =       d   P   S   I   B       -       o
0002500    f   f   s   e   t       P   u   p   S   o   c   .   p   s   i
0002520    b   /   1   6  \r   S   e   t   A   l   l   o   c   a   t   i
0002540    o   n   (   f   a   k   e   S   o   c   ,       p   b   i   C
0002560    o   u   n   t   ,       p   b   i   C   o   u   n   t   -   1
0002600    ,       p   b   i   C   o   u   n   t   -   1   )  \r   l   e
0002620    t       s   o   c       =       s   o   c   k   e   t   Q   !
0002640    0  \r   w   h   i   l   e       s   o   c       n   e       0
0002660        d   o  \r               [           /   /   u   p   d   a
0002700    t   e       a   l   l   o   c   a   t   i   o   n   s       i
0002720    n       a   l   l       s   o   c   k   e   t   s  \r        
0002740        S   e   t   A   l   l   o   c   a   t   i   o   n   (   s
0002760    o   c   ,       p   b   i   C   o   u   n   t   ,       p   b
0003000    i   C   o   u   n   t   -   1   ,       p   b   i   C   o   u
0003020    n   t   -   1   )  \r               s   o   c       =       s
0003040    o   c   !   0  \r               ]  \r   l   e   t     376 001
0003060   \0 002 322   n   d   b       =       n   d   b   Q   !   0  \r
0003100    w   h   i   l   e       n   d   b       n   e       0       d
0003120    o  \r               [           /   /   u   p   d   a   t   e
0003140        g   a   t   e   w   a   y       a   l   l   o   c   a   t
0003160    i   o   n   s       i   n       n   d   b   s  \r            
0003200    n   d   b   >   >   N   D   B   .   n   u   m   G   P   B   I
0003220        =       p   b   i   C   o   u   n   t       r   s   h   i
0003240    f   t       1  \r               n   d   b       =       n   d
0003260    b   !   0  \r               ]  \r  \r   R   e   s   e   t   T
0003300    i   m   e   S   e   r   v   (   )  \r   W   s   (   "   *   *
0003320    *   *       G   a   t   e   w   a   y       i   n       o   p
0003340    e   r   a   t   i   o   n       *   *   *   *   *   N   *   L
0003360    "   )  \r  \r   l   e   t       q   u   i   t   T   i   m   e
0003400    r       =       0  \r               [  \r               i   f
0003420        q   u   i   t   T   i   m   e   r       n   e       0    
0003440    &       T   i   m   e   r   H   a   s   E   x   p   i   r   e
0003460    d   (   l 376 001  \0 250 310   v       q   u   i   t   T   i
0003500    m   e   r   )       t   h   e   n       q   u   i   t   T   i
0003520    m   e   r       =       0  \r               u   n   l   e   s
0003540    s       E   n   d   o   f   s   (   k   e   y   s   )       s
0003560    w   i   t   c   h   o   n       G   e   t   s   (   k   e   y
0003600    s   )       i   n   t   o  \r                           [  \r
0003620                            c   a   s   e       $   Q   :       c
0003640    a   s   e       $   q   :  \r                                
0003660        [  \r                                       W   s   (   "
0003700    *   N   Q   u   i   t       [   C   o   n   f   i   r   m   ]
0003720        "   )  \r                                       S   e   t
0003740    T   i   m   e   r   (   l   v       q   u   i   t   T   i   m
0003760    e   r   ,       1   0   0   0   )  \r                        
0004000                e   n   d   c   a   s   e  \r                    
0004020                    ]  \r                           c   a   s   e
0004040        $   *   1   7   7   :       c   a   s   e       $   N   :
0004060        c   a   s   e       $   n 376 001  \0   d   I   :  \r    
0004100                                    i   f       q   u   i   t   T
0004120    i   m   e   r       n   e       0       t   h   e   n  \r    
0004140                                                [       W   s   (
0004160    "   N   o   .   *   N   "   )   ;       q   u   i   t   T   i
0004200    m   e   r       =       0   ;       e   n   d   c   a   s   e
0004220        ]  \r                           c   a   s   e       $   *
0004240    N   :       c   a   s   e       $   Y   :       c   a   s   e
0004260        $   y   :  \r                                       i   f
0004300        q   u   i   t   T   i   m   e   r       n   e       0    
0004320    t   h   e   n  \r                                            
0004340        [       W   s   (   "   Y   e   s   .   *   N   "   )   ;
0004360        H   a   l   t   G   a   t   e   w   a   y   (   )   ;    
0004400    q   u   i   t   T   i   m   e   r       =       0   ;       e
0004420    n   d   c   a   s   e       ]  \r                           d
0004440    e   f   a   u   l   t   :  \r                                
0004460        [       W   s   (   "   *   N   ?       -     376 001  \0
0004500  020   z   T   h   e   r   e       i   s       o   n   l   y    
0004520    o   n   e       c   o   m   m   a   n   d   :       Q   U   I
0004540    T   "   )   ;       e   n   d   c   a   s   e       ]  \r    
0004560                        ]  \r               C   a   l   l   C   o
0004600    n   t   e   x   t   L   i   s   t   (   c   t   x   Q   !   0
0004620    )  \r               ]       r   e   p   e   a   t  \r   ]  \r
0004640   \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -   -
0004660    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0004740    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -  \r
0004760    a   n   d       G   a   t   e   w   a   y   F   i   n   i   s
0005000    h   (   c   o   d   e   )       b   e  \r   /   /   -   -   -
0005020    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0005100    -   - 376  \0 303 240 334   -   -   -   -   -   -   -   -   -
0005120    -   -   -   -   -   -   -   -   -   -   -   -   -   -  \r   [
0005140   \r   W   s   (   "   *   *   *   *       S   h   u   t   d   o
0005160    w   n       c   o   m   p   l   e   t   e       *   *   *   *
0005200    *   N   *   L   "   )           /   /       w   e   l   l   ,
0005220        n   o   t       q   u   i   t   e   ,       b   u   t    
0005240    c   l   o   s   e       e   n   o   u   g   h  \r   w   h   i
0005260    l   e       u   s   e   r   F   i   n   i   s   h   P   r   o
0005300    c       n   e       0       d   o       u   s   e   r   F   i
0005320    n   i   s   h   P   r   o   c   (   )  \r   C   a   l   l   D
0005340    o   s   (   r   e   s   e   t   )  \r   C   a   l   l   D   o
0005360    s   (   e   r   t   n   ,       n   i   l   ,       n   i   l
0005400    ,       c   o   d   e   )  \r   ]  \r 377  \0  \0   G   a   t
0005420    e   w   a   y   I   n   i   t   .   b   c   p   l  \0 376 001
0005440   \0 252   F   /   /       G   a   t   e   w   a   y   I   n   i
0005460    t   .   b   c   p   l       -   -       i   n   i   t   i   a
0005500    l   i   z   a   t   i   o   n       f   o   r       G   a   t
0005520    e   w   a   y   .   b   c   p   l  \r  \r   /   /       L   a
0005540    s   t       m   o   d   i   f   i   e   d       F   e   b   r
0005560    u   a   r   y       9   ,       1   9   7   9           4   :
0005600    0   4       P   M       b   y       B   o   g   g   s  \r  \r
0005620    g   e   t       "   S   t   r   e   a   m   s   .   d   "  \r
0005640   \r   e   x   t   e   r   n   a   l  \r   [  \r   /   /       o
0005660    u   t   g   o   i   n   g       p   r   o   c   e   d   u   r
0005700    e   s  \r   G   a   t   e   w   a   y   I   n   i   t  \r  \r
0005720    /   /       i   n   c   o   m   i   n   g       p   r   o   c
0005740    e   d   u   r   e   s  \r   C   r   e   a   t   e   M   i   s
0005760    c   S   e   r   v   ;       C   r   e   a   t   e   E   c   h
0006000    o   S   e   r   v   ;       I   n   i   t   P   u   p   L   e
0006020    v   e   l   1  \r   C   r   e   a   t   e   G   a   t   e   C
0006040    o   n   S 376 001  \0   $   o   e   r   v   ;       C   r   e
0006060    a   t   e   S   t   a   t   S   e   r   v   ;       R   e   a
0006100    d   G   a   t   e   P   a   r   a   m  \r   I   n   i   t   E
0006120    F   T   P   P   a   c   k   a   g   e   ;       I   n   i   t
0006140    N   o   v   a   A   l   t   o  \r   I   n   i   t   i   a   l
0006160    i   z   e   Z   o   n   e   ;       A   d   d   T   o   Z   o
0006200    n   e   ;       A   l   l   o   c   a   t   e   ;       Z   e
0006220    r   o  \r   I   n   i   t   i   a   l   i   z   e   C   o   n
0006240    t   e   x   t   ;       B   l   o   c   k   ;       M   y   F
0006260    r   a   m   e   ;       E   n   q   u   e   u   e  \r   E   n
0006300    t   e   r   D   e   b   u   g   g   e   r   ;       D   o   s
0006320    B   r   e   a   k   ;       B   r   e   a   k   L   o   c   ;
0006340        C   a   l   l   D   o   s   ;       M   a   k   e   D   o
0006360    s   S   t   r   i   n   g  \r   O   p   e   n   F   i   l   e
0006400    ;       G   e   t   s   ;       C   l   o   s   e   s   ;    
0006420    E   n   d   o   f   s   ;       C   a   l   l   S   w   a   t
0006440   \r   P   u   t   s   ;       W 376 001  \0 232 221   s   ;    
0006460    W   s   s   ;       W   n   s  \r  \r   /   /       o   u   t
0006500    g   o   i   n   g       s   t   a   t   i   c   s  \r   c   t
0006520    x   Q   ;       p   r   e   s   e   r   v   e   D   e   b   u
0006540    g   g   e   r  \r  \r   /   /       i   n   c   o   m   i   n
0006560    g       s   t   a   t   i   c   s  \r   s   y   s   Z   o   n
0006600    e   ;       d   o   s   A   c   ;       d   s   p  \r   ]  \r
0006620   \r   s   t   a   t   i   c  \r   [  \r   c   t   x   Q  \r   s
0006640    a   w   C   R       =       f   a   l   s   e  \r   p   r   e
0006660    s   e   r   v   e   D   e   b   u   g   g   e   r       =    
0006700    f   a   l   s   e  \r   ]  \r  \r   m   a   n   i   f   e   s
0006720    t  \r   [  \r   s   t   a   c   k   E   n   d       =       3
0006740    3   5   b  \r   e   x   e   c       =       6   3   4   0   0
0006760    b  \r   p   c   h   a   r       =       7   0   0   0   0   b
0007000   \r   g   a   t   e   w   a   y   Q   u   i   t   C   o   d   e
0007020        =       1   2   3   4   5           /   /   D   o   s    
0007040    "   .   e   r   t   n   "       c   o   d   e     376 001  \0
0007060  335 262   t   o       s   i   g   n   a   l       n   o   r   m
0007100    a   l       Q   u   i   t  \r   ]  \r  \f  \r   /   /   -   -
0007120    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0007220    -   -   -   -   -   -   -   -   -   -  \r   l   e   t       G
0007240    a   t   e   w   a   y   I   n   i   t   (   b   l   v   )    
0007260    b   e  \r   /   /   -   -   -   -   -   -   -   -   -   -   -
0007300    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0007400    -  \r   [  \r   d   s   p       =       l   v       D   o   s
0007420    D   s   p   P   u   t   s       -       o   f   f   s   e   t
0007440        S   T   .   p   u   t   s   /   1   6  \r   i   f       @
0007460    4   0 376 001  \0  \0   F   6   b       n   e       -   1    
0007500    &       @   B   r   e   a   k   L   o   c       e   q       4
0007520    0   1   b       t   h   e   n  \r               [  \r        
0007540        W   s   (   "   N   o       b   r   e   a   k   p   o   i
0007560    n   t   *   N   *   L   t   o       m   a   k   e       a    
0007600    b   r   e   a   k       f   i   l   e       t   y   p   e   :
0007620    *   N   *   L               "   )  \r               W   n   s
0007640    (   d   s   p   ,       B   r   e   a   k   L   o   c   ,    
0007660    1   ,       8   )   ;       W   s   (   "   $   B   *   N   *
0007700    L               "   )  \r               W   n   s   (   d   s
0007720    p   ,       D   o   s   B   r   e   a   k   ,       1   ,    
0007740    8   )   ;       W   s   (   "   $   R   *   N   *   L   "   )
0007760   \r               W   s   (   "   T   h   e   n       t   y   p
0010000    e   :       S   A   V   E       G   A   T   E   W   A   Y    
0010020    <   C   R   >   *   N   *   L   E   n   t   e   r   i   n   g
0010040        d   e   b   u   g   g   e   r   .   .   .   "   )  \r    
0010060            @   4   0   4   b 376 001  \0   r   '       =       b
0010100    l   v   !   2   9           /   /   r   e   s   e   t       N
0010120    M   A   X       t   o       t   o   p       o   f       c   o
0010140    d   e  \r               E   n   t   e   r   D   e   b   u   g
0010160    g   e   r   (   )  \r               ]  \r  \r   l   e   t    
0010200    c   o   d   e   E   n   d       =       b   l   v   !   2   9
0010220   \r   l   e   t       f   r   e   e   E   n   d       =       @
0010240    s   t   a   c   k   E   n   d  \r   l   e   t       f   r   e
0010260    e   B   e   g   i   n       =       M   y   F   r   a   m   e
0010300    (   )       +   2   0   0  \r   @   s   t   a   c   k   E   n
0010320    d       =       f   r   e   e   B   e   g   i   n  \r   s   y
0010340    s   Z   o   n   e       =       I   n   i   t   i   a   l   i
0010360    z   e   Z   o   n   e   (   f   r   e   e   B   e   g   i   n
0010400    ,       f   r   e   e   E   n   d   -   f   r   e   e   B   e
0010420    g   i   n   )  \r   c   t   x   Q       =       A   l   l   o
0010440    c   a   t   e   (   s   y   s   Z   o   n   e   ,       2   )
0010460    ;       c   t   x   Q   !   0       =       0 376 001  \0 275
0010500  302  \r  \r   /   /       I   f       /   I       g   l   o   b
0010520    a   l       s   w   i   t   c   h       i   s       p   r   e
0010540    s   e   n   t   ,       t   h   e   n       w   e       a   r
0010560    e       t   h   e       "   i   n   f   e   r   i   o   r   "
0010600   \r   /   /       g   a   t   e   w   a   y       p   r   o   g
0010620    r   a   m       a   n   d       w   e       s   h   o   u   l
0010640    d       g   o       a   h   e   a   d       a   n   d       r
0010660    u   n   .           I   f       /   I       i   s       n   o
0010700    t  \r   /   /       p   r   e   s   e   n   t   ,       t   h
0010720    e   n       w   e       s   h   o   u   l   d       w   r   i
0010740    t   e       a       C   O   M   .   C   M       w   i   t   h
0010760        /   I       s   e   t       a   n   d       o   v   e   r
0011000    l   a   y  \r   /   /       t   h   e       g   a   t   e   w
0011020    a   y       p   r   o   g   r   a   m       r   e   c   u   r
0011040    s   i   v   e   l   y   .  \r   /   /       I   f       /   D
0011060        g   l   o   b   a   l       s   w   i   t   c   h       i
0011100    s 376 001  \0  \a 243       p   r   e   s   e   n   t   ,    
0011120    s   e   t       t   h   e       p   r   e   s   e   r   v   e
0011140    D   e   b   u   g   g   e   r       f   l   a   g   .  \r   l
0011160    e   t       s   t   r       =       O   p   e   n   F   i   l
0011200    e   (   "   C   O   M   .   C   M   "   ,       k   s   T   y
0011220    p   e   R   e   a   d   O   n   l   y   ,       c   h   a   r
0011240    I   t   e   m   )  \r   u   n   t   i   l       G   e   t   s
0011260    (   s   t   r   )       e   q       0       l   o   o   p    
0011300        /   /   s   k   i   p       o   v   e   r       s   u   b
0011320    s   y   s   t   e   m       n   a   m   e  \r   i   f       (
0011340    G   e   t   s   (   s   t   r   )       &       #   2   0   )
0011360        n   e       0       t   h   e   n       p   r   e   s   e
0011400    r   v   e   D   e   b   u   g   g   e   r       =       t   r
0011420    u   e           /   /       t   e   s   t       /   D  \r   l
0011440    e   t       i   n   f   e   r   i   o   r   G   a   t   e   w
0011460    a   y       =       (   G   e   t   s   (   s   t   r   )    
0011500    &       #   2   0   0 376 001  \0 325   l   )       n   e    
0011520    0           /   /       t   e   s   t       /   I  \r   C   l
0011540    o   s   e   s   (   s   t   r   )  \r  \r   u   n   l   e   s
0011560    s       i   n   f   e   r   i   o   r   G   a   t   e   w   a
0011600    y       d   o  \r               [           /   /   w   e    
0011620    a   r   e       t   h   e       "   s   u   p   e   r   i   o
0011640    r   "   .           D   o       r   e   c   u   r   s   i   v
0011660    e       o   v   e   r   l   a   y  \r               W   s   (
0011700    "   *   n   *   l   *   *   *   *       G   a   t   e   w   a
0011720    y       r   e   s   t   a   r   t   i   n   g       *   *   *
0011740    *   *   n   *   l   "   )  \r               s   t   r       =
0011760        O   p   e   n   F   i   l   e   (   "   C   O   M   .   C
0012000    M   "   ,       k   s   T   y   p   e   W   r   i   t   e   O
0012020    n   l   y   ,       c   h   a   r   I   t   e   m   )  \r    
0012040            W   s   s   (   s   t   r   ,       "   G   A   T   E
0012060    W   A   Y   *   0   0   0   "   )  \r               P   u   t
0012100    s   (   s   t   r   ,       (   p   r   e 376 001  \0 230 276
0012120    s   e   r   v   e   D   e   b   u   g   g   e   r   ?       #
0012140    2   0   ,       0   )   )           /   /       s   e   t    
0012160    /   D       i   f       a   p   p   r   o   p   r   i   a   t
0012200    e  \r               W   s   s   (   s   t   r   ,       "   *
0012220    2   0   0   *   0   0   0   *   0   0   0   *   3   7   7   "
0012240    )           /   /       s   e   t       /   I   ,       t   e
0012260    r   m   i   n   a   t   e       C   O   M   .   C   M  \r    
0012300            C   l   o   s   e   s   (   s   t   r   )  \r        
0012320        l   e   t       s       =       v   e   c       5  \r    
0012340            s       =       M   a   k   e   D   o   s   S   t   r
0012360    i   n   g   (   "   G   A   T   E   W   A   Y   .   S   V   "
0012400    ,       s   )  \r               C   a   l   l   D   o   s   (
0012420    e   x   e   c   ,       s   ,       0   ,       -   1   )  \r
0012440                i   f       d   o   s   A   c   !   2       e   q
0012460        g   a   t   e   w   a   y   Q   u   i   t   C   o   d   e
0012500        f   i   n   i   s   h           /   /   n   o   r   m   a
0012520  376 001  \0 205   '   l       "   Q   u   i   t   "  \r        
0012540        ]       r   e   p   e   a   t           /   /   c   r   a
0012560    s   h       o   r       f   o   r   c   e   d       r   e   s
0012600    t   a   r   t  \r  \f  \r   /   /       G   a   t   e   w   a
0012620    y   I   n   i   t       (   c   o   n   t   '   d   )  \r  \r
0012640    I   n   i   t   N   o   v   a   A   l   t   o   (   s   y   s
0012660    Z   o   n   e   )  \r   I   n   i   t   P   u   p   L   e   v
0012700    e   l   1   (   s   y   s   Z   o   n   e   ,       c   t   x
0012720    Q   ,       0   )  \r   I   n   i   t   E   F   T   P   P   a
0012740    c   k   a   g   e   (   s   y   s   Z   o   n   e   )  \r   C
0012760    r   e   a   t   e   E   c   h   o   S   e   r   v   (   s   y
0013000    s   Z   o   n   e   ,       c   t   x   Q   )  \r   C   r   e
0013020    a   t   e   M   i   s   c   S   e   r   v   (   s   y   s   Z
0013040    o   n   e   ,       c   t   x   Q   )  \r   C   r   e   a   t
0013060    e   S   t   a   t   S   e   r   v   (   s   y   s   Z   o   n
0013100    e   ,       c   t   x   Q   )  \r   C   r   e   a   t   e   G
0013120    a   t   e   C   o 376 001  \0 355 210   n   S   e   r   v   (
0013140    )  \r   R   e   a   d   G   a   t   e   P   a   r   a   m   (
0013160    )  \t   /   /       m   u   s   t       F   O   L   L   O   W
0013200        s   e   r   v   e   r       i   n   i   t   i   a   l   i
0013220    z   a   t   i   o   n  \r  \r   u   n   l   e   s   s       p
0013240    r   e   s   e   r   v   e   D   e   b   u   g   g   e   r    
0013260    %       @   4   0   6   b       e   q       -   1       d   o
0013300   \r               [  \r               /   /   f   l   u   s   h
0013320        t   h   e       d   e   b   u   g   g   e   r   .  \r    
0013340            /   /   W   e       k   n   o   w       t   h   a   t
0013360        @   4   0   6   b       i   s       a       p   o   i   n
0013400    t   e   r       t   o       t   h   e       f   i   r   s   t
0013420        w   o   r   d       o   f  \r               /   /   t   h
0013440    e       d   e   b   u   g   g   e   r   ,       t   h   a   t
0013460        B   U   T   I   L       i   s       t   h   e       n   e
0013500    x   t       t   h   i   n   g       l   o   a   d   e   d    
0013520    a   f   t   e   r  \r               / 376 001  \0   d   ,   /
0013540    i   t   ,       a   n   d       t   h   a   t       t   h   e
0013560        l   o   a   d       v   e   c   t   o   r       i   s    
0013600    t   h   e       f   i   r   s   t       t   h   i   n   g    
0013620    i   n       B   U   T   I   L   .  \r               A   d   d
0013640    T   o   Z   o   n   e   (   s   y   s   Z   o   n   e   ,    
0013660    @   4   0   6   b   ,       b   l   v   -   @   4   0   6   b
0013700    )  \r               @   4   0   6   b       =       -   1  \r
0013720                ]  \r   ]  \r  \r  \r   /   /   -   -   -   -   -
0013740    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0014040    -   -   -   -   -   -   -  \r   a   n   d       D   o   s   D
0014060    s   p   P   u   t   s   (   n   i   l   ,       c   h   a   r
0014100    )       b   e  \r   /   /   -   -   -   -   -   -   -   -   -
0014120    -   -   -   -   -   -   -   -   -   -   -   -   -   -   - 376
0014140   \0 222 347 325   -   -   -   -   -   -   -   -   -   -   -   -
0014160    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0014220    -   -   -   -   -   -   -   -  \r   [  \r   i   f       s   a
0014240    w   C   R       &       c   h   a   r       n   e       $   *
0014260    L       t   h   e   n       C   a   l   l   D   o   s   (   p
0014300    c   h   a   r   ,       $   *   L   )  \r   C   a   l   l   D
0014320    o   s   (   p   c   h   a   r   ,       c   h   a   r   )  \r
0014340    s   a   w   C   R       =       c   h   a   r       e   q    
0014360    $   *   N  \r   ]  \r 377  \0  \0   G   a   t   e   F   o   r
0014400    w   a   r   d   .   d   e   c   l  \0 376 001  \0 203 200   /
0014420    /       G   a   t   e   F   o   r   w   a   r   d   .   d   e
0014440    c   l  \r  \r   /   /       L   a   s   t       m   o   d   i
0014460    f   i   e   d       J   a   n   u   a   r   y       2   6   ,
0014500        1   9   7   9           3   :   4   4       P   M       b
0014520    y       B   o   g   g   s  \r  \r   m   a   n   i   f   e   s
0014540    t  \r   [  \r   r   o   u   t   e   B   c   s   t   I   n   t
0014560    e   r   v   a   l       =       3   0   0   0           /   /
0014600    3   0       s   e   c   o   n   d   s  \r  \r   p   s   R   o
0014620    u   t   e   I   n   f   o       =       2  \t  \t   /   /    
0014640    w   e   l   l       k   n   o   w   n   ,       r   e   g   i
0014660    s   t   e   r   e   d       s   o   c   k   e   t  \r  \r   p
0014700    t   R   o   u   t   e   R   e   q   u   e   s   t       =    
0014720    2   0   0   b  \r   p   t   R   o   u   t   e   R   e   p   l
0014740    y       =       2   0   1   b  \r   p   t   R   o   u   t   e
0014760    E   r   r   o   r       =       2   0   2   b  \r   p   t   S
0015000    t   a   t   s   R   e   q   u   e   s   t       =       2 376
0015020  001  \0  \r   q   0   3   b  \r   p   t   S   t   a   t   s   R
0015040    e   p   l   y       =       2   0   4   b  \r  \r   g   f   S
0015060    t   a   t   s   V   e   r   s   i   o   n       =       1  \r
0015100    ]  \r  \r   /   /   -   -   -   -   -   -   -   -   -   -   -
0015120    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0015220    -  \r   s   t   r   u   c   t   u   r   e       Q   u   e   u
0015240    e   :  \t   /   /       S   i   n   g   l   y       l   i   n
0015260    k   e   d       l   i   s   t   ,       u   s   u   a   l   l
0015300    y       m   a   i   n   t   a   i   n   e   d       F   I   F
0015320    O  \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -
0015340    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0015420    -   -   -   - 376 001  \0 325 326   -   -   -   -   -   -   -
0015440    -   -   -   -   -  \r   [  \r   h   e   a   d       w   o   r
0015460    d  \t  \t   /   /       -   >       f   i   r   s   t       t
0015500    h   i   n   g   ;       0       i   f       q   u   e   u   e
0015520        i   s       e   m   p   t   y  \r   t   a   i   l       w
0015540    o   r   d  \t  \t   /   /       -   >       l   a   s   t    
0015560    t   h   i   n   g   ;       u   n   d   e   f   i   n   e   d
0015600        i   f       q   u   e   u   e       i   s       e   m   p
0015620    t   y  \r   ]  \r  \r   /   /   -   -   -   -   -   -   -   -
0015640    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0015740    -   -   -   -  \r   s   t   r   u   c   t   u   r   e       S
0015760    t   a   t   s   :  \r   /   /   -   -   -   -   -   -   -   -
0016000    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0016020    -   -   -   -   -   -   -   -   - 376 001  \0   n 020   -   -
0016040    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0016100    -   -   -   -   -   -   -   -   -  \r   [  \r   v   e   r   s
0016120    i   o   n       w   o   r   d  \t  \t   /   /       =       g
0016140    f   S   t   a   t   s   V   e   r   s   i   o   n  \r   r   o
0016160    u   t   e   R   e   q   s       w   o   r   d       2  \t   /
0016200    /       n   u   m   b   e   r       o   f       r   o   u   t
0016220    e       i   n   f   o       r   e   q   u   e   s   t   s  \r
0016240    n   u   m   N   e   t   s       w   o   r   d  \t  \t   /   /
0016260        n   u   m   b   e   r       o   f       n   e   t   w   o
0016300    r   k   s  \r   n   u   m   T   M   E   s       w   o   r   d
0016320   \t  \t   /   /       n   u   m   b   e   r       o   f       T
0016340    M   E   s       i   n       t   h   i   s       p   a   c   k
0016360    e   t  \r   /   /   n   u   m   N   e   t   s       n   e   t
0016400        n   u   m   b   e   r   s   ,       o   n   e       w   o
0016420    r   d       e   a   c   h  \r   /   /   n   u   m   T 376 001
0016440   \0 341   >   M   E   s       T   M   E   s   ,       3       w
0016460    o   r   d   s       e   a   c   h  \r   ]  \r   m   a   n   i
0016500    f   e   s   t       l   e   n   S   t   a   t   s       =    
0016520    s   i   z   e       S   t   a   t   s   /   1   6           /
0016540    /   s   i   z   e       o   f       f   i   x   e   d       p
0016560    a   r   t       o   n   l   y  \r  \r   /   /   -   -   -   -
0016600    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0016700    -   -   -   -   -   -   -   -  \r   s   t   r   u   c   t   u
0016720    r   e       G   F   :  \t  \t   /   /       '   g   l   o   b
0016740    a   l       f   r   a   m   e   '       f   o   r       G   a
0016760    t   e   w   a   y       F   o   r   w   a   r   d   e   r  \r
0017000    /   /   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0017020    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0017040    -   -   - 376 001  \0   E 240   -   -   -   -   -   -   -   -
0017060    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0017120    -   -   -  \r   [  \r   t   m       w   o   r   d  \t  \t  \t
0017140    /   /       -   >       T   r   a   n   s   i   t       M   a
0017160    t   r   i   x  \r   s   t   a   t   s       @   S   t   a   t
0017200    s  \r   r   o   u   t   e   B   c   s   t   T   i   m   e   r
0017220        w   o   r   d  \t   /   /       t   i   m   e   r       f
0017240    o   r       b   r   o   a   d   c   a   s   t   i   n   g    
0017260    r   o   u   t   i   n   g       i   n   f   o  \r   i   Q    
0017300    @   Q   u   e   u   e  \t  \t   /   /       f   o   r   w   a
0017320    r   d   e   r       i   n   p   u   t       q   u   e   u   e
0017340   \r   t   Q       @   Q   u   e   u   e  \t  \t   /   /       f
0017360    o   r   w   a   r   d   e   r       t   r   a   n   s   m   i
0017400    t   t   e   d       q   u   e   u   e  \r   ]  \r   m   a   n
0017420    i   f   e   s   t       l   e   n   G   F       =       s   i
0017440    z   e       G   F   /   1   6 376 001  \0 262 265  \r  \r   /
0017460    /   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0017500    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0017560    -   -   -   -   -   -   -   -   -   -   -   -   -  \r   s   t
0017600    r   u   c   t   u   r   e       T   M   E   :  \t  \t   /   /
0017620        T   r   a   n   s   i   t       M   a   t   r   i   x    
0017640    E   n   t   r   y  \r   /   /   -   -   -   -   -   -   -   -
0017660    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0017760    -   -   -   -  \r   [  \r   s   d   N   e   t       w   o   r
0020000    d       =       [       s   N   e   t       b   y   t   e   ;
0020020        d   N   e   t       b   y   t   e       ]  \r   c   o   u
0020040    n   t       w   o   r   d       2  \r   ]  \r   m 376  \0 377
0020060   \a 240   a   n   i   f   e   s   t       l   e   n   T   M   E
0020100        =       s   i   z   e       T   M   E   /   1   6  \r  \r
0020120    /   /   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0020140    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0020220    -   -   -   -   -   -   -   -   -   -   -   -   -   -  \r   s
0020240    t   r   u   c   t   u   r   e       T   M   :       [       @
0020260    H   T   P   ;       T   M   E   ^   0   ,   1   :   @   T   M
0020300    E       ]           /   /       T   r   a   n   s   i   t    
0020320    M   a   t   r   i   x       h   a   s   h       t   a   b   l
0020340    e  \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -
0020360    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0020460   \r 377  \0  \0   G   a   t   e   F   o   r   w   a   r   d   .
0020500    b   c   p   l  \0 376 001  \0 253 362   /   /       G   a   t
0020520    e   F   o   r   w   a   r   d   .   b   c   p   l       -   -
0020540        L   e   v   e   l       1       c   o   d   e       i   m
0020560    p   l   e   m   e   n   t   i   n   g       g   a   t   e   w
0020600    a   y       f   u   n   c   t   i   o   n   s  \r  \r   /   /
0020620        L   a   s   t       m   o   d   i   f   i   e   d       F
0020640    e   b   r   u   a   r   y       8   ,       1   9   7   9    
0020660        3   :   3   3       P   M       b   y       B   o   g   g
0020700    s  \r  \r   g   e   t       "   P   u   p   0   .   d   e   c
0020720    l   "  \r   g   e   t       "   P   u   p   1   .   d   e   c
0020740    l   "  \r   g   e   t       "   G   a   t   e   F   o   r   w
0020760    a   r   d   .   d   e   c   l   "  \r  \r   e   x   t   e   r
0021000    n   a   l  \r   [  \r   /   /       o   u   t   g   o   i   n
0021020    g       p   r   o   c   e   d   u   r   e   s  \r   F   o   r
0021040    w   a   r   d   e   r   ;       F   o   r   w   a   r   d   e
0021060    r   C   t   x   ;       T   M   L   o   o   k   u   p  \r  \r
0021100    /   /       i   n   c   o   m   i   n 376 001  \0 037 253   g
0021120        p   r   o   c   e   d   u   r   e   s  \r   G   e   t   P
0021140    B   I   ;       R   e   l   e   a   s   e   P   B   I   ;    
0021160    P   u   p   E   r   r   o   r   ;       E   x   c   h   a   n
0021200    g   e   P   o   r   t   s   ;       C   o   m   p   l   e   t
0021220    e   P   u   p   ;       R   o   u   t   e   P   u   p  \r   O
0021240    n   e   s   C   o   m   p   l   e   m   e   n   t   A   d   d
0021260    ;       O   n   e   s   C   o   m   p   l   e   m   e   n   t
0021300    S   u   b   t   r   a   c   t   ;       L   e   f   t   C   y
0021320    c   l   e  \r   S   e   t   T   i   m   e   r   ;       T   i
0021340    m   e   r   H   a   s   E   x   p   i   r   e   d   ;       D
0021360    o   u   b   l   e   I   n   c   r   e   m   e   n   t   ;    
0021400    M   o   v   e   B   l   o   c   k  \r   C   a   l   l   S   w
0021420    a   t   ;       B   l   o   c   k   ;       E   n   q   u   e
0021440    u   e   ;       D   e   q   u   e   u   e   ;       H   E   n
0021460    u   m   e   r   a   t   e   ;       H   H   a   s   h  \r  \r
0021500    /   /       o   u   t   g   o   i   n   g       s   t   a 376
0021520  001  \0 360 270   t   i   c   s  \r   @   g   f   ;       g   a
0021540    t   e   w   a   y   G   o   i   n   g   D   o   w   n  \r  \r
0021560    /   /       i   n   c   o   m   i   n   g       s   t   a   t
0021600    i   c   s  \r   p   u   p   R   T   ;       p   b   i   F   r
0021620    e   e   Q   ;       u   n   k   n   o   w   n   N   e   t  \r
0021640    n   d   b   Q   ;       g   a   t   e   w   a   y   L   i   s
0021660    t   e   n   e   r   S   o   c  \r   m   a   x   P   u   p   D
0021700    a   t   a   B   y   t   e   s   ;       p   u   p   R   T   C
0021720    h   a   n   g   e   d  \r   ]  \r  \r   s   t   a   t   i   c
0021740        [       @   g   f   ;       g   a   t   e   w   a   y   G
0021760    o   i   n   g   D   o   w   n       =       f   a   l   s   e
0022000        ]  \r  \f  \r   /   /   -   -   -   -   -   -   -   -   -
0022020    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0022120    -   -   -  \r 376 001  \0 360   ?   l   e   t       F   o   r
0022140    w   a   r   d   e   r   C   t   x   (   )       b   e  \r   /
0022160    /   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0022200    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0022260    -   -   -   -   -   -   -   -   -   -   -   -   -  \r   [  \r
0022300    B   l   o   c   k   (   )  \r  \r   w   h   i   l   e       g
0022320    f   >   >   G   F   .   t   Q   .   h   e   a   d       n   e
0022340        0       d   o  \r               [  \r               l   e
0022360    t       p   b   i       =       D   e   q   u   e   u   e   (
0022400    l   v       g   f   >   >   G   F   .   t   Q   )  \r        
0022420        p   b   i   >   >   P   B   I   .   n   d   b   >   >   N
0022440    D   B   .   n   u   m   G   P   B   I       =       p   b   i
0022460    >   >   P   B   I   .   n   d   b   >   >   N   D   B   .   n
0022500    u   m   G   P   B   I       +   1  \r               R   e   l
0022520    e   a   s   e   P   B   I   (   p 376 001  \0 343  \0   b   i
0022540    )  \r               ]  \r  \r   /   /       t   i   m   e    
0022560    t   o       b   r   o   a   d   c   a   s   t       r   o   u
0022600    t   i   n   g       i   n   f   o   r   m   a   t   i   o   n
0022620    ?  \r   i   f       T   i   m   e   r   H   a   s   E   x   p
0022640    i   r   e   d   (   l   v       g   f   >   >   G   F   .   r
0022660    o   u   t   e   B   c   s   t   T   i   m   e   r   )       %
0022700        p   u   p   R   T   C   h   a   n   g   e   d       t   h
0022720    e   n  \r               [  \r               l   e   t       p
0022740    b   i       =       G   e   t   P   B   I   (   g   a   t   e
0022760    w   a   y   L   i   s   t   e   n   e   r   S   o   c   ,    
0023000    t   r   u   e   )  \r               i   f       p   b   i    
0023020    n   e       0       t   h   e   n  \r                        
0023040    [  \r                           p   u   p   R   T   C   h   a
0023060    n   g   e   d       =       f   a   l   s   e  \r            
0023100                p   b   i   >   >   P   B   I   .   a   l   l   N
0023120    e   t   s       =       t   r   u   e  \r             376 001
0023140   \0 234 343               p   b   i   >   >   P   B   I   .   b
0023160    y   p   a   s   s   Z   e   r   o   N   e   t       =       t
0023200    r   u   e  \r                           S   e   n   d   R   o
0023220    u   t   e   I   n   f   o   (   p   b   i   )  \r            
0023240                S   e   t   T   i   m   e   r   (   l   v       g
0023260    f   >   >   G   F   .   r   o   u   t   e   B   c   s   t   T
0023300    i   m   e   r   ,       r   o   u   t   e   B   c   s   t   I
0023320    n   t   e   r   v   a   l   )  \r                           ]
0023340   \r               ]  \r  \r   /   /       a   r   e       t   h
0023360    e   r   e       a   n   y       p   a   c   k   e   t   s    
0023400    t   o       f   o   r   w   a   r   d   ?  \r   l   e   t    
0023420    p   b   i       =       D   e   q   u   e   u   e   (   l   v
0023440        g   f   >   >   G   F   .   i   Q   )   ;       i   f    
0023460    p   b   i       e   q       0       r   e   t   u   r   n  \r
0023500   \r   /   /       P   u   p       d   e   s   t   i   n   a   t
0023520    i   o   n       a   n   d       s   o   u   r   c   e       n
0023540    e   t   s 376 001  \0   ~ 023  \r   l   e   t       d   N   e
0023560    t   ,       s   N   e   t       =       p   b   i   >   >   P
0023600    B   I   .   p   u   p   .   d   P   o   r   t   .   n   e   t
0023620    ,       p   b   i   >   >   P   B   I   .   p   u   p   .   s
0023640    P   o   r   t   .   n   e   t  \r   l   e   t       p   s   n
0023660        =       p   b   i   >   >   P   B   I   .   n   d   b   >
0023700    >   N   D   B   .   l   o   c   a   l   N   e   t           /
0023720    /   P   h   y   s   i   c   a   l       s   o   u   r   c   e
0023740        n   e   t  \r  \r   /   /   W   e       a   r   e       e
0023760    x   p   e   r   i   m   e   n   t   a   l   l   y       a   l
0024000    l   o   w   i   n   g       '   d   i   r   e   c   t   e   d
0024020        b   r   o   a   d   c   a   s   t   s   '   :       b   r
0024040    o   a   d   c   a   s   t       p   a   c   k   e   t   s  \r
0024060    /   /       d   e   s   t   i   n   e   d       f   o   r    
0024100    a       n   e   t       O   T   H   E   R       T   H   A   N
0024120        T   H   E       O   N   E       O   N       W   H   I   C
0024140    H       T   H   E   Y       A 376 001  \0 204 024   R   R   I
0024160    V   E   .  \r   t   e   s   t       d   N   e   t       e   q
0024200        0       %       s   N   e   t       e   q       0       %
0024220            /   /   d   e   s   t       o   r       s   o   u   r
0024240    c   e       n   e   t       u   n   s   p   e   c   i   f   i
0024260    e   d   ?  \r       (   p   b   i   >   >   P   B   I   .   p
0024300    u   p   .   d   P   o   r   t   .   h   o   s   t       e   q
0024320        0       &       d   N   e   t       e   q       p   b   i
0024340    >   >   P   B   I   .   n   d   b   >   >   N   D   B   .   l
0024360    o   c   a   l   N   e   t   )  \r               i   f   s   o
0024400        R   e   l   e   a   s   e   P   B   I   (   p   b   i   )
0024420            /   /   d   o   n   '   t       f   o   r   w   a   r
0024440    d  \r               i   f   n   o   t  \r                    
0024460        [  \r                           l   e   t       v       =
0024500        p   b   i   !   (   o   f   f   s   e   t       P   B   I
0024520    .   p   u   p   .   t   r   a   n   s   p   o   r   t   /   1
0024540    6   )  \r                           p   b   i   > 376 001  \0
0024560  266 353   >   P   B   I   .   p   u   p   .   h   o   p   C   n
0024600    t       =       p   b   i   >   >   P   B   I   .   p   u   p
0024620    .   h   o   p   C   n   t   +   1  \r                        
0024640    t   e   s   t       p   b   i   >   >   P   B   I   .   p   u
0024660    p   .   h   o   p   C   n   t       e   q       0  \r        
0024700                                i   f   s   o       P   u   p   E
0024720    r   r   o   r   (   p   b   i   ,       1   0   0   4   b   ,
0024740        "   D   i   s   c   a   r   d   e   d       b   y       8
0024760    t   h       g   a   t   e   w   a   y   "   )  \r            
0025000                            i   f   n   o   t  \r                
0025020                                    [  \r                        
0025040                            U   p   d   a   t   e   P   u   p   C
0025060    h   e   c   k   s   u   m   (   l   v       p   b   i   >   >
0025100    P   B   I   .   p   u   p   ,       o   f   f   s   e   t    
0025120    P   u   p   .   t   r   a   n   s   p   o   r   t   /   1   6
0025140    ,       v   )  \r                                            
0025160        p 376 001  \0 317 272   b   i   >   >   P   B   I   .   q
0025200    u   e   u   e       =       l   v       g   f   >   >   G   F
0025220    .   t   Q           /   /   w   h   e   r   e       t   o    
0025240    q   u   e   u   e       w   h   e   n       d   o   n   e  \r
0025260                                                    l   e   t    
0025300    p   d   h       =       R   o   u   t   e   P   u   p   (   p
0025320    b   i   )           /   /   t   r   y       t   o       r   o
0025340    u   t   e       i   t  \r                                    
0025360                l   e   t       n   d   b       =       p   b   i
0025400    >   >   P   B   I   .   n   d   b  \r                        
0025420                            t   e   s   t       n   d   b       n
0025440    e       0           /   /   d   o       w   e       k   n   o
0025460    w       h   o   w       t   o       r   o   u   t   e       i
0025500    t   ?  \r                                                    
0025520            i   f   s   o       t   e   s   t       n   d   b   >
0025540    >   N   D   B   .   n   u   m   G   P   B   I       g   r    
0025560    0           /   /   i   s 376 001  \0   $ 344       t   h   e
0025600    r   e       r   o   o   m   ?  \r                            
0025620                                                i   f   n   o   t
0025640        P   u   p   E   r   r   o   r   (   p   b   i   ,       1
0025660    0   0   7   b   ,       "   G   a   t   e   w   a   y       O
0025700    Q       o   v   e   r   f   l   o   w   "   )  \r            
0025720                                                                i
0025740    f   s   o  \r                                                
0025760                                        [  \r                    
0026000                                                                 
0026020    n   d   b   >   >   N   D   B   .   n   u   m   G   P   B   I
0026040        =       n   d   b   >   >   N   D   B   .   n   u   m   G
0026060    P   B   I       -   1  \r                                    
0026100                                                    (   n   d   b
0026120    >   >   N   D   B   .   e   n   c   a   p   s   u   l   a   t
0026140    e   P   u   p   )   (   p   b   i   ,       p   d   h   )  \r
0026160                                                  376 001  \0 301
0026200    q                                       (   n   d   b   >   >
0026220    N   D   B   .   l   e   v   e   l   0   T   r   a   n   s   m
0026240    i   t   )   (   p   b   i   )  \r                            
0026260                                                            T   M
0026300    I   n   c   r   e   m   e   n   t   (   p   s   n   ,       n
0026320    d   b   >   >   N   D   B   .   l   o   c   a   l   N   e   t
0026340    )  \r                                                        
0026360                                l   o   o   p  \r                
0026400                                                                 
0026420        ]  \r                                                    
0026440            i   f   n   o   t  \r                                
0026460                                            [           /   /   d
0026500    o   n   '   t       k   n   o   w       h   o   w       t   o
0026520        r   o   u   t   e       t   o       d   N   e   t  \r    
0026540                                                                 
0026560        u   n   k   n   o   w   n   N   e   t       =       d   N
0026600    e 376 001  \0 271 342   t           /   /   i   n   i   t   i
0026620    a   t   e       a       p   r   o   b   e  \r                
0026640                                                            R   e
0026660    l   e   a   s   e   P   B   I   (   p   b   i   )           /
0026700    /   d   i   s   c   a   r   d  \r                            
0026720                                                ]  \r            
0026740                                        ]  \r                    
0026760        ]  \r   T   M   I   n   c   r   e   m   e   n   t   (   p
0027000    s   n   ,       0   )           /   /   i   n   c   r   e   m
0027020    e   n   t       d   i   s   c   a   r   d   e   d       c   o
0027040    u   n   t       f   o   r       p   s   n  \r   ]       r   e
0027060    p   e   a   t  \r  \f  \r   /   /   -   -   -   -   -   -   -
0027100    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0027200    -   -   -   -   -  \r 376 001  \0 340   0   a   n   d       F
0027220    o   r   w   a   r   d   e   r   (   p   b   i   )       b   e
0027240   \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -   -
0027260    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0027340    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -  \r
0027360    /   /       P   u   p   R   o   u   t   e       p   a   s   s
0027400    e   s       o   n       P   B   I   s       (   f   r   o   m
0027420        S   o   c   k   e   t       2   )       w   h   i   c   h
0027440        i   t       d   o   e   s   n   '   t       h   a   n   d
0027460    l   e   .  \r   [  \r   E   x   c   h   a   n   g   e   P   o
0027500    r   t   s   (   p   b   i   )           /   /       d   o    
0027520    t   h   i   s       h   e   r   e       r   a   t   h   e   r
0027540        t   h   a   n       i   n       e   a   c   h       c   a
0027560    s   e  \r   s   w   i   t   c   h   o   n       p   b   i   >
0027600    >   P   B   I   .   p   u   p   .   t   y 376 001  \0   i 243
0027620    p   e       i   n   t   o  \r               [  \r            
0027640    c   a   s   e       p   t   R   o   u   t   e   R   e   q   u
0027660    e   s   t   :  \r                           [  \r            
0027700                /   /   d   o   n   '   t       a   n   s   w   e
0027720    r       p   r   o   b   e   s       f   r   o   m       n   e
0027740    t   w   o   r   k   s       w   h   o   s   e       i   d   e
0027760    n   t   i   t   y       w   e       d   o   n   '   t       k
0030000    n   o   w  \r                           i   f       p   b   i
0030020    >   >   P   B   I   .   p   u   p   .   d   P   o   r   t   .
0030040    n   e   t       n   e       0       t   h   e   n  \r        
0030060                                [  \r                            
0030100            S   e   n   d   R   o   u   t   e   I   n   f   o   (
0030120    p   b   i   )  \r                                       D   o
0030140    u   b   l   e   I   n   c   r   e   m   e   n   t   (   l   v
0030160        g   f   >   >   G   F   .   s   t   a   t   s   .   r   o
0030200    u   t   e   R   e   q   s   )  \r                            
0030220  376 001  \0 217 360           r   e   t   u   r   n  \r        
0030240                                ]  \r                           e
0030260    n   d   c   a   s   e  \r                           ]  \r    
0030300            c   a   s   e       p   t   S   t   a   t   s   R   e
0030320    q   u   e   s   t   :  \r                           [  \r    
0030340                        l   e   t       s   t   a   t   s       =
0030360        l   v       p   b   i   >   >   P   B   I   .   p   u   p
0030400    .   w   o   r   d   s  \r                           M   o   v
0030420    e   B   l   o   c   k   (   l   v       p   b   i   >   >   P
0030440    B   I   .   p   u   p   .   w   o   r   d   s   ,       l   v
0030460        g   f   >   >   G   F   .   s   t   a   t   s   ,       l
0030500    e   n   S   t   a   t   s   )  \r                           l
0030520    e   t       p   t   r       =       l   e   n   S   t   a   t
0030540    s       +   1  \r  \r                           l   e   t    
0030560    n   d   b       =       n   d   b   Q   !   0   ;       w   h
0030600    i   l   e       n   d   b       n   e       0       d   o  \r
0030620                      376 001  \0 313   M                   [  \r
0030640                                        /   /   s   k   i   p    
0030660    n   e   t   s       w   h   o   s   e       i   d   e   n   t
0030700    i   t   y       w   e       d   o   n   '   t       k   n   o
0030720    w  \r                                       i   f       n   d
0030740    b   >   >   N   D   B   .   l   o   c   a   l   N   e   t    
0030760    n   e       0       t   h   e   n  \r                        
0031000                            [  \r                                
0031020                    s   t   a   t   s   >   >   S   t   a   t   s
0031040    .   n   u   m   N   e   t   s       =       s   t   a   t   s
0031060    >   >   S   t   a   t   s   .   n   u   m   N   e   t   s    
0031100    +   1  \r                                                   p
0031120    b   i   >   >   P   B   I   .   p   u   p   .   w   o   r   d
0031140    s   ^   p   t   r       =       n   d   b   >   >   N   D   B
0031160    .   l   o   c   a   l   N   e   t  \r                        
0031200                            p   t   r       =       p   t   r    
0031220    +   1  \r                             376 001  \0 322 372    
0031240                    ]  \r                                       n
0031260    d   b       =       n   d   b   >   >   N   D   B   .   l   i
0031300    n   k  \r                                       ]  \r  \r    
0031320                        /   /   i   f       a   n   y   b   o   d
0031340    y       e   l   s   e       n   e   e   d   s       T   M   E
0031360    n   u   m   e   r   a   t   e   ,       r   e   w   r   i   t
0031400    e       t   h   i   s       p   r   o   c   e   d   u   r   e
0031420   \r                           f   o   r       i       =       0
0031440        t   o       (   1       l   s   h   i   f   t       g   f
0031460    >   >   G   F   .   t   m   >   >   T   M   .   l   o   g   S
0031500    i   z   e   )   -   1       d   o  \r                        
0031520                i   f       g   f   >   >   G   F   .   t   m   >
0031540    >   T   M   .   T   M   E   ^   i   .   s   d   N   e   t    
0031560    n   e       -   1       t   h   e   n  \r                    
0031600                                [  \r                            
0031620                        i   f       (   p   t   r   +   l   e 376
0031640  001  \0 361   l   n   T   M   E   -   1   )       g   r       (
0031660    m   a   x   P   u   p   D   a   t   a   B   y   t   e   s    
0031700    r   s   h   i   f   t       1   )       b   r   e   a   k  \r
0031720                                                    s   t   a   t
0031740    s   >   >   S   t   a   t   s   .   n   u   m   T   M   E   s
0031760        =       s   t   a   t   s   >   >   S   t   a   t   s   .
0032000    n   u   m   T   M   E   s       +   1  \r                    
0032020                                M   o   v   e   B   l   o   c   k
0032040    (   l   v       p   b   i   >   >   P   B   I   .   p   u   p
0032060    .   w   o   r   d   s   ^   p   t   r   ,  \r                
0032100                                        l   v       g   f   >   >
0032120    G   F   .   t   m   >   >   T   M   .   T   M   E   ^   i   .
0032140    s   d   N   e   t   ,       l   e   n   T   M   E   )  \r    
0032160                                                p   t   r       =
0032200        p   t   r       +       l   e   n   T   M   E  \r        
0032220                                            ]  \r  \r            
0032240                C 376 001  \0 261 352   o   m   p   l   e   t   e
0032260    P   u   p   (   p   b   i   ,       p   t   S   t   a   t   s
0032300    R   e   p   l   y   ,       p   u   p   O   v   B   y   t   e
0032320    s       +       (   p   t   r   -   1   )       l   s   h   i
0032340    f   t       1   )  \r                           r   e   t   u
0032360    r   n  \r                           ]  \r               ]  \r
0032400    R   e   l   e   a   s   e   P   B   I   (   p   b   i   )  \r
0032420    ]  \r  \f  \r   /   /   -   -   -   -   -   -   -   -   -   -
0032440    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0032540    -   -  \r   a   n   d       U   p   d   a   t   e   P   u   p
0032560    C   h   e   c   k   s   u   m   (   p   u   p   ,       i   n
0032600    d   e   x   ,       o   l   d   V   a   l   u   e   )       b
0032620    e  \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -
0032640    -   -   -   -   -   -   -   -   - 376 001  \0  \f  \f   -   -
0032660    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0032740    -   -   -   -   -  \r   /   /       U   p   d   a   t   e    
0032760    P   u   p       c   h   e   c   k   s   u   m       t   o    
0033000    a   c   c   o   u   n   t       f   o   r       c   h   a   n
0033020    g   i   n   g       o   n   e       w   o   r   d       i   n
0033040        t   h   e       P   u   p  \r   /   /       T   y   p   i
0033060    c   a   l       c   a   l   l       (   c   h   a   n   g   i
0033100    n   g       T   r   a   n   s   p   o   r   t       b   y   t
0033120    e   )   :  \r   /   /  \t   l   e   t       o   l   d   W   o
0033140    r   d       =       p   u   p   !   (   o   f   f   s   e   t
0033160        P   u   p   .   t   r   a   n   s   p   o   r   t   /   1
0033200    6   )  \r   /   /  \t   p   u   p   >   >   P   u   p   .   t
0033220    r   a   n   s   p   o   r   t       =       n   e   w   V   a
0033240    l   u   e  \r   /   /  \t   U   p   d   a   t   e   P 376 001
0033260   \0 220 347   u   p   C   h   e   c   k   s   u   m   (   p   u
0033300    p   ,       o   f   f   s   e   t       P   u   p   .   t   r
0033320    a   n   s   p   o   r   t   /   1   6   ,       o   l   d   W
0033340    o   r   d   )  \r   [  \r   l   e   t       l   e   n       =
0033360        (   p   u   p   >   >   P   u   p   .   l   e   n   g   t
0033400    h   -   1   )       r   s   h   i   f   t       1  \r   i   f
0033420        p   u   p   !   l   e   n       n   e       -   1       t
0033440    h   e   n  \r               p   u   p   !   l   e   n       =
0033460        O   n   e   s   C   o   m   p   l   e   m   e   n   t   A
0033500    d   d   (   p   u   p   !   l   e   n   ,  \r                
0033520    L   e   f   t   C   y   c   l   e   (   O   n   e   s   C   o
0033540    m   p   l   e   m   e   n   t   S   u   b   t   r   a   c   t
0033560    (   p   u   p   !   i   n   d   e   x   ,       o   l   d   V
0033600    a   l   u   e   )   ,       l   e   n   -   i   n   d   e   x
0033620    )   )  \r   ]  \r  \r   /   /   -   -   -   -   -   -   -   -
0033640    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0033660    -   -   - 376 001  \0 224 365   -   -   -   -   -   -   -   -
0033700    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0033740    -   -   -   -   -   -   -   -   -  \r   a   n   d       S   e
0033760    n   d   R   o   u   t   e   I   n   f   o   (   p   b   i   )
0034000        b   e  \r   /   /   -   -   -   -   -   -   -   -   -   -
0034020    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0034120    -   -  \r   /   /       B   u   i   l   d       a   n   d    
0034140    s   e   n   d       a       r   o   u   t   i   n   g       i
0034160    n   f   o       p   a   c   k   e   t       i   n       p   b
0034200    i   .  \r   /   /       C   a   l   l   e   r       i   s    
0034220    a   s   s   u   m   e   d       t   o       h   a   v   e    
0034240    f   i   x   e   d       u   p       t   h   e       p   o   r
0034260    t   s       p   r   o   p   e 376 001  \0 323 307   r   l   y
0034300    .  \r   [  \r   p   b   i   >   >   P   B   I   .   p   u   p
0034320    .   l   e   n   g   t   h       =       0  \r   H   E   n   u
0034340    m   e   r   a   t   e   (   p   u   p   R   T   ,       P   e
0034360    r   R   T   E   ,       p   b   i   )  \r   C   o   m   p   l
0034400    e   t   e   P   u   p   (   p   b   i   ,       p   t   R   o
0034420    u   t   e   R   e   p   l   y   ,       p   b   i   >   >   P
0034440    B   I   .   p   u   p   .   l   e   n   g   t   h   +   p   u
0034460    p   O   v   B   y   t   e   s   )  \r   ]  \r  \r   /   /   -
0034500    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0034600    -   -   -   -   -   -   -   -   -   -   -  \r   a   n   d    
0034620    P   e   r   R   T   E   (   r   t   e   ,       p   b   i   )
0034640        b   e  \r   /   /   -   -   -   -   -   -   -   -   -   -
0034660    -   -   -   -   -   -   -   -   -   -   -   -   - 376 001  \0
0034700  236 230   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0034720    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0034760    -   -   -   -   -   -   -  \r   [  \r   i   f       r   t   e
0035000    >   >   R   T   E   .   n   e   t       n   e       0       t
0035020    h   e   n  \r               [  \r               l   e   t    
0035040    c       =       p   b   i   >   >   P   B   I   .   p   u   p
0035060    .   l   e   n   g   t   h  \r               p   b   i   >   >
0035100    P   B   I   .   p   u   p   .   b   y   t   e   s   ^   (   c
0035120    +   1   )       =       r   t   e   >   >   R   T   E   .   n
0035140    e   t  \r               p   b   i   >   >   P   B   I   .   p
0035160    u   p   .   b   y   t   e   s   ^   (   c   +   2   )       =
0035200        r   t   e   >   >   R   T   E   .   n   d   b   >   >   N
0035220    D   B   .   l   o   c   a   l   N   e   t  \r               p
0035240    b   i   >   >   P   B   I   .   p   u   p   .   b   y   t   e
0035260    s   ^   (   c   +   3   )       =       r   t   e   >   >   R
0035300    T   E 376 001  \0 321  \a   .   h   o   s   t  \r            
0035320    /   /       I   f       w   e       a   r   e       a   b   o
0035340    u   t       t   o       g   o       d   o   w   n   ,       s
0035360    a   y       t   h   a   t       w   e       a   r   e       a
0035400        t   e   r   r   i   b   l   e       r   o   u   t   e    
0035420    t   o       a   n   y   w   h   e   r   e  \r               p
0035440    b   i   >   >   P   B   I   .   p   u   p   .   b   y   t   e
0035460    s   ^   (   c   +   4   )       =       g   a   t   e   w   a
0035500    y   G   o   i   n   g   D   o   w   n   ?       m   a   x   H
0035520    o   p   s   +   1   ,       r   t   e   >   >   R   T   E   .
0035540    h   o   p   s  \r               p   b   i   >   >   P   B   I
0035560    .   p   u   p   .   l   e   n   g   t   h       =       c   +
0035600    4  \r               ]  \r   ]  \r  \r   /   /   -   -   -   -
0035620    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0035700    -   -   -   -   -   -   - 376 001  \0 273 323   -   -   -   -
0035720    -   -   -   -   -   -   -   -   -   -   -   -   -  \r   a   n
0035740    d       T   M   L   o   o   k   u   p   (   t   m   ,       s
0035760    N   e   t   ,       d   N   e   t   ,       f   i   n   d   F
0036000    r   e   e   ;       n   u   m   a   r   g   s       n   a   )
0036020        =       v   a   l   o   f  \r   /   /   -   -   -   -   -
0036040    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0036140    -   -   -   -   -   -   -  \r   [  \r   l   e   t       k   e
0036160    y       =       s   N   e   t       l   s   h   i   f   t    
0036200    8       +       d   N   e   t  \r   l   e   t       i   P   r
0036220    o   b   e       =       n   i   l  \r   l   e   t       i   n
0036240    c   r   e   m   e   n   t       =       H   H   a   s   h   (
0036260    t   m   >   >   T   M   .   l   o   g   S   i   z   e   ,    
0036300    k   e   y   ,       l   v       i   P   r   o 376 001  \0 270
0036320  374   b   e   )  \r   l   e   t       p   r   o   b   e       =
0036340        i   P   r   o   b   e  \r               [  \r            
0036360    l   e   t       t   m   e       =       l   v       t   m   >
0036400    >   T   M   .   T   M   E   ^   p   r   o   b   e  \r        
0036420        i   f       t   m   e   >   >   T   M   E   .   s   d   N
0036440    e   t       e   q       k   e   y       t   h   e   n       r
0036460    e   s   u   l   t   i   s       t   m   e  \r               i
0036500    f       t   m   e   >   >   T   M   E   .   s   d   N   e   t
0036520        e   q       -   1       t   h   e   n  \r                
0036540            r   e   s   u   l   t   i   s       n   a       g   e
0036560        4       &       f   i   n   d   F   r   e   e   ?       t
0036600    m   e   ,       0           /   /   f   a   i   l  \r        
0036620        p   r   o   b   e       =       (   p   r   o   b   e   +
0036640    i   n   c   r   e   m   e   n   t   )       &       (   (   1
0036660        l   s   h   i   f   t       t   m   >   >   T   M   .   l
0036700    o   g   S   i   z   e   )   -   1   )  \r               ]    
0036720    r 376 001  \0   +   3   e   p   e   a   t   u   n   t   i   l
0036740        p   r   o   b   e       e   q       i   P   r   o   b   e
0036760   \r   r   e   s   u   l   t   i   s       0           /   /   f
0037000    a   i   l   .           S   e   a   r   c   h   e   d       t
0037020    h   e       w   h   o   l   e       t   a   b   l   e  \r   ]
0037040   \r  \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -
0037060    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0037160   \r   a   n   d       T   M   I   n   c   r   e   m   e   n   t
0037200    (   s   N   e   t   ,       d   N   e   t   )       b   e  \r
0037220    /   /   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0037240    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0037320    -   -   -   -   -   - 376 001  \0   _ 376   -   -   -   -   -
0037340    -   -   -  \r   /   /       L   o   o   k   s       u   p    
0037360    s   N   e   t   ,   ,   d   N   e   t       i   n       t   h
0037400    e       t   r   a   n   s   i   t       m   a   t   r   i   x
0037420        h   a   s   h       t   a   b   l   e   .  \r   /   /    
0037440    C   r   e   a   t   e   s       a   n       e   n   t   r   y
0037460        i   f       n   o   t       f   o   u   n   d       t   h
0037500    e   n       i   n   c   r   e   m   e   n   t   s       t   h
0037520    e       c   o   u   n   t   .  \r   [  \r   l   e   t       t
0037540    m   e       =       T   M   L   o   o   k   u   p   (   g   f
0037560    >   >   G   F   .   t   m   ,       s   N   e   t   ,       d
0037600    N   e   t   ,       t   r   u   e   )  \r   i   f       t   m
0037620    e       e   q       0       t   h   e   n       r   e   t   u
0037640    r   n           /   /       t   a   b   l   e       f   u   l
0037660    l   !  \r   i   f       t   m   e   >   >   T   M   E   .   s
0037700    d   N   e   t       e   q       -   1       t   h   e   n    
0037720        /   /       e   m   p   t   y       t 376  \0   R 245 277
0037740    m   e  \r               t   m   e   >   >   T   M   E   .   s
0037760    d   N   e   t       =       s   N   e   t       l   s   h   i
0040000    f   t       8       +       d   N   e   t  \r   D   o   u   b
0040020    l   e   I   n   c   r   e   m   e   n   t   (   l   v       t
0040040    m   e   >   >   T   M   E   .   c   o   u   n   t   )  \r   ]
0040060   \r  \r 377  \0  \0   G   a   t   e   F   o   r   I   n   i   t
0040100    .   b   c   p   l  \0 376 001  \0   | 214   /   /       G   a
0040120    t   e   F   o   r   I   n   i   t   .   b   c   p   l       -
0040140    -       i   n   i   t   i   a   l   i   z   a   t   i   o   n
0040160        f   o   r       G   a   t   e   F   o   r   w   a   r   d
0040200    .   b   c   p   l  \r  \r   /   /       L   a   s   t       m
0040220    o   d   i   f   i   e   d       F   e   b   r   u   a   r   y
0040240        8   ,       1   9   7   9           3   :   3   0       P
0040260    M       b   y       B   o   g   g   s  \r  \r   g   e   t    
0040300    "   P   u   p   0   .   d   e   c   l   "  \r   g   e   t    
0040320    "   P   u   p   1   .   d   e   c   l   "  \r   g   e   t    
0040340    "   G   a   t   e   F   o   r   w   a   r   d   .   d   e   c
0040360    l   "  \r  \r   e   x   t   e   r   n   a   l  \r   [  \r   /
0040400    /       o   u   t   g   o   i   n   g       p   r   o   c   e
0040420    d   u   r   e   s  \r   I   n   i   t   F   o   r   w   a   r
0040440    d   e   r  \r  \r   /   /       i   n   c   o   m   i   n   g
0040460        p   r   o   c   e   d   u   r   e   s  \r   T   M   L   o
0040500    o   k   u   p  \r   A   l   l   o   c   a 376 001  \0   I 357
0040520    t   e   ;       Z   e   r   o   ;       S   y   s   E   r   r
0040540    ;       S   e   t   T   i   m   e   r  \r  \r   /   /       i
0040560    n   c   o   m   i   n   g       s   t   a   t   i   c   s  \r
0040600    @   g   f   ;       n   d   b   Q   ;       n   u   m   N   e
0040620    t   s   ;       g   a   t   e   w   a   y   I   Q   ;       s
0040640    y   s   Z   o   n   e  \r   ]  \r  \r  \r   /   /   -   -   -
0040660    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0040760    -   -   -   -   -   -   -   -   -  \r   l   e   t       I   n
0041000    i   t   F   o   r   w   a   r   d   e   r   (   n   u   m   P
0041020    B   I   )       b   e  \r   /   /   -   -   -   -   -   -   -
0041040    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0041120  376 001  \0 307   W   -   -   -   -   -   -   -   -   -   -   -
0041140    -   -   -   -   -   -   -   -   -   -  \r   /   /       n   u
0041160    m   P   B   I       i   s       t   h   e       n   u   m   b
0041200    e   r       o   f       P   B   I   s       i   n       t   h
0041220    e       s   y   s   t   e   m  \r   [  \r   g   f       =    
0041240    A   l   l   o   c   a   t   e   (   s   y   s   Z   o   n   e
0041260    ,       l   e   n   G   F   )   ;       Z   e   r   o   (   g
0041300    f   ,       l   e   n   G   F   )  \r  \r   /   /       P   u
0041320    p   1   I   n   i   t       i   n   i   t   i   a   l   i   z
0041340    e   s       g   a   t   e   w   a   y   I   Q       t   o    
0041360    -   >       p   b   i   F   r   e   e   Q  \r   g   a   t   e
0041400    w   a   y   I   Q       =       l   v       g   f   >   >   G
0041420    F   .   i   Q  \r  \r   /   /       g   a   t   e   w   a   y
0041440        s   t   a   t   i   s   t   i   c   s  \r   g   f   >   >
0041460    G   F   .   s   t   a   t   s   .   v   e   r   s   i   o   n
0041500        =       g   f   S   t   a   t   s   V   e   r   s   i   o
0041520    n  \r   l   e   t 376 001  \0   F 254       l   o   g   T   M
0041540    S   i   z   e       =       (   n   u   m   N   e   t   s   *
0041560    (   n   u   m   N   e   t   s   +   1   )   *   1   0   )   /
0041600    8  \r   f   o   r       i       =       1       t   o       1
0041620    6       d   o  \r               [           /   /   r   o   u
0041640    n   d       u   p       t   o       n   e   x   t       p   o
0041660    w   e   r       o   f       2       a   n   d       t   a   k
0041700    e       l   o   g  \r               l   o   g   T   M   S   i
0041720    z   e       =       l   o   g   T   M   S   i   z   e       r
0041740    s   h   i   f   t       1  \r               i   f       l   o
0041760    g   T   M   S   i   z   e       e   q       0       t   h   e
0042000    n       [       l   o   g   T   M   S   i   z   e       =    
0042020    i   ;       b   r   e   a   k       ]  \r               ]  \r
0042040    l   e   t       l   e   n   T   M       =       l   e   n   H
0042060    T   P   +   l   e   n   T   M   E   *   (   1       l   s   h
0042100    i   f   t       l   o   g   T   M   S   i   z   e   )  \r   l
0042120    e   t       t   m       =       A   l 376 001  \0   W   G   l
0042140    o   c   a   t   e   (   s   y   s   Z   o   n   e   ,       l
0042160    e   n   T   M   )   ;       Z   e   r   o   (   t   m   ,    
0042200    l   e   n   T   M   )  \r   t   m   >   >   H   T   P   .   e
0042220    n   u   m   e   r   a   t   e       =       S   y   s   E   r
0042240    r  \r   t   m   >   >   H   T   P   .   d   e   l   e   t   e
0042260        =       S   y   s   E   r   r  \r   t   m   >   >   H   T
0042300    P   .   l   o   o   k   u   p       =       T   M   L   o   o
0042320    k   u   p  \r   t   m   >   >   H   T   P   .   i   n   s   e
0042340    r   t       =       S   y   s   E   r   r  \r   t   m   >   >
0042360    H   T   P   .   l   o   g   S   i   z   e       =       l   o
0042400    g   T   M   S   i   z   e  \r   f   o   r       i       =    
0042420    0       t   o       (   1       l   s   h   i   f   t       l
0042440    o   g   T   M   S   i   z   e   )   -   1       d   o        
0042460    /   /   i   n   i   t       t   o       e   m   p   t   y  \r
0042500                t   m   >   >   T   M   .   T   M   E   ^   i   .
0042520    s   d   N   e   t       =       -   1  \r   g   f   >   > 376
0042540  001  \0   & 211   G   F   .   t   m       =       t   m  \r  \r
0042560    /   /       w   a   i   t       3   0       s   e   c       b
0042600    e   f   o   r   e       f   i   r   s   t       r   o   u   t
0042620    i   n   g       i   n   f   o       b   r   o   a   d   c   a
0042640    s   t  \r   S   e   t   T   i   m   e   r   (   l   v       g
0042660    f   >   >   G   F   .   r   o   u   t   e   B   c   s   t   T
0042700    i   m   e   r   ,       3   0   0   0   )  \r  \r   /   /    
0042720    N   o       n   e   t       m   a   y       h   a   v   e    
0042740    m   o   r   e       t   h   a   n       1   /   2       o   f
0042760        t   h   e       P   B   I   s       w   a   i   t   i   n
0043000    g       o   n       i   t   s       O   Q  \r   l   e   t    
0043020    n   d   b       =       n   d   b   Q   !   0   ;       w   h
0043040    i   l   e       n   d   b       n   e       0       d   o  \r
0043060                [  \r               n   d   b   >   >   N   D   B
0043100    .   n   u   m   G   P   B   I       =       n   u   m   P   B
0043120    I   /   2  \r               n   d   b       =       n   d   b
0043140    !   0  \r     376  \0  \a 332   A           ]  \r   ]  \r  \r
0043160  377  \0  \0   G   a   t   e   P   a   r   a   m   e   t   e   r
0043200    .   b   c   p   l  \0 376 001  \0 343 316   /   /       G   a
0043220    t   e   P   a   r   a   m   e   t   e   r   .   b   c   p   l
0043240   \r  \r   /   /       L   a   s   t       m   o   d   i   f   i
0043260    e   d       M   a   r   c   h       5   ,       1   9   7   9
0043300            3   :   5   0       P   M       b   y       B   o   g
0043320    g   s  \r  \r   g   e   t       "   P   u   p   0   .   d   e
0043340    c   l   "  \r   g   e   t       "   P   u   p   1   .   d   e
0043360    c   l   "  \r   g   e   t       "   S   t   r   e   a   m   s
0043400    .   d   "  \r  \r   e   x   t   e   r   n   a   l  \r   [  \r
0043420    /   /       o   u   t   g   o   i   n   g       p   r   o   c
0043440    e   d   u   r   e   s  \r   R   e   a   d   G   a   t   e   P
0043460    a   r   a   m  \r  \r   /   /       i   n   c   o   m   i   n
0043500    g       p   r   o   c   e   d   u   r   e   s  \r   M   y   F
0043520    r   a   m   e   ;       G   o   t   o   F   r   a   m   e   ;
0043540        G   a   t   e   w   a   y   F   i   n   i   s   h   ;    
0043560    H   I   n   s   e   r   t  \r   O   p   e   n   F   i   l   e
0043600    ;       C   l   o   s   e   s   ;       E 376 001  \0 002 226
0043620    n   d   o   f   s   ;       G   e   t   s   ;       P   u   t
0043640    s   ;       W   s  \r   A   d   d   N   a   m   e   T   o   B
0043660    F   Q   ;       S   e   t   N   a   m   e   B   c   s   t   I
0043700    n   t   e   r   v   a   l   ;       S   e   t   B   o   o   t
0043720    B   c   s   t   I   n   t   e   r   v   a   l  \r   S   e   t
0043740    T   i   m   e   C   o   r   r   e   c   t   i   o   n   ;    
0043760    S   e   t   T   i   m   e   Z   o   n   e   ;       S   e   t
0044000    T   i   m   e   D   S   T  \r  \r   /   /       i   n   c   o
0044020    m   i   n   g       s   t   a   t   i   c   s  \r   d   s   p
0044040    ;       p   u   p   R   T   ;       n   d   b   Q  \r   p   r
0044060    e   s   e   r   v   e   D   e   b   u   g   g   e   r  \r   ]
0044100   \r  \r   m   a   n   i   f   e   s   t  \r   [  \r   m   a   x
0044120    A   t   o   m   C   h   a   r   s       =       3   0  \r   n
0044140    u   m   A   t   o   m   W   o   r   d   s       =       m   a
0044160    x   A   t   o   m   C   h   a   r   s       r   s   h   i   f
0044200    t       1       +   1  \r   g   a   t   e   w   a   y   Q   u
0044220  376 001  \0 001 306   i   t   C   o   d   e       =       1   2
0044240    3   4   5           /   /   D   o   s       "   .   e   r   t
0044260    n   "       c   o   d   e       t   o       s   i   g   n   a
0044300    l       n   o   r   m   a   l       Q   u   i   t  \r   ]  \r
0044320   \r   s   t   a   t   i   c       [       p   a   r   a   m   F
0044340    i   l   e   ;       i   n   C   o   m   m   e   n   t   ;    
0044360    e   n   d   ;       b   u   f   f   e   r   ;       l   a   s
0044400    t   N   u   m   b   e   r   W   a   s   P   o   s   i   t   i
0044420    v   e       ]  \r  \r   /   /   -   -   -   -   -   -   -   -
0044440    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0044540    -   -   -   -  \r   l   e   t       R   e   a   d   G   a   t
0044560    e   P   a   r   a   m   (   )       b   e  \r   /   /   -   -
0044600    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0044620    -   -   -   -   - 376 001  \0  \v 263   -   -   -   -   -   -
0044640    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0044700    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -  \r
0044720    [  \r   p   a   r   a   m   F   i   l   e       =       O   p
0044740    e   n   F   i   l   e   (   "   G   A   T   E   P   A   R   A
0044760    M   E   T   E   R   .   T   X   T   "   ,       k   s   T   y
0045000    p   e   R   e   a   d   O   n   l   y   ,       c   h   a   r
0045020    I   t   e   m   )  \r   i   f       p   a   r   a   m   F   i
0045040    l   e       e   q       0       t   h   e   n       P   a   r
0045060    a   m   E   r   r   o   r   (   "   C   a   n   '   t       o
0045100    p   e   n       G   A   T   E   P   A   R   A   M   E   T   E
0045120    R   .   T   X   T   *   n   "   )  \r   l   e   t       v    
0045140    =       v   e   c       n   u   m   A   t   o   m   W   o   r
0045160    d   s   ;       b   u   f   f   e   r       =       v  \r   e
0045200    n   d       =       M   y   F   r   a   m   e   (   )  \r   i
0045220    n   C   o   m   m   e   n   t       = 376 001  \0   # 034    
0045240    f   a   l   s   e  \r   I   n   t   e   r   p   r   e   t   P
0045260    a   r   a   m   (   )  \r   C   l   o   s   e   s   (   p   a
0045300    r   a   m   F   i   l   e   )  \r   ]  \r  \f  \r   /   /   -
0045320    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0045420    -   -   -   -   -   -   -   -   -   -   -  \r   a   n   d    
0045440    I   n   t   e   r   p   r   e   t   P   a   r   a   m   (   )
0045460        b   e  \r   /   /   -   -   -   -   -   -   -   -   -   -
0045500    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0045600    -   -  \r   [  \r   l   e   t       a   t   o   m       =    
0045620    R   e   a   d   A   t   o   m   (   )  \r   s   w   i   t 376
0045640  001  \0 023   n   c   h   o   n       a   t   o   m   >   >   S
0045660    t   r   i   n   g   .   c   h   a   r   ^   1       i   n   t
0045700    o  \r               [  \r               c   a   s   e       $
0045720    B   :       c   a   s   e       $   b   :           /   /   B
0045740    o   o   t       <   c   o   d   e   >       <   f   i   l   e
0045760    n   a   m   e   >  \r                           [  \r        
0046000                    l   e   t       b   f   n       =       R   e
0046020    a   d   N   u   m   b   e   r   (   8   )  \r                
0046040            l   e   t       n   a   m   e       =       R   e   a
0046060    d   A   t   o   m   (   )  \r                           A   d
0046100    d   N   a   m   e   T   o   B   F   Q   (   b   f   n   ,    
0046120    n   a   m   e   )  \r                           e   n   d   c
0046140    a   s   e  \r                           ]  \r               c
0046160    a   s   e       $   C   :       c   a   s   e       $   c   :
0046200            /   /   C   o   r   r   e   c   t   i   o   n       <
0046220    s   i   g   n   >       <   c   o   r   r   e   c   t   i   o
0046240    n       i   n 376 001  \0 353 202       s   e   c   o   n   d
0046260    s       p   e   r       d   a   y   )   >  \r                
0046300            [  \r                           l   e   t       s   e
0046320    c   o   n   d   s       =       R   e   a   d   N   u   m   b
0046340    e   r   (   1   0   )  \r                           S   e   t
0046360    T   i   m   e   C   o   r   r   e   c   t   i   o   n   (   s
0046400    e   c   o   n   d   s   ,       l   a   s   t   N   u   m   b
0046420    e   r   W   a   s   P   o   s   i   t   i   v   e   )  \r    
0046440                        e   n   d   c   a   s   e  \r            
0046460                ]  \r               c   a   s   e       $   D   :
0046500        c   a   s   e       $   d   :  \r                        
0046520    [  \r                           s   w   i   t   c   h   o   n
0046540        a   t   o   m   >   >   S   t   r   i   n   g   .   c   h
0046560    a   r   ^   2       i   n   t   o  \r                        
0046600                [  \r                                       c   a
0046620    s   e       $   E   :       c   a   s   e       $   e   :    
0046640        /   /   D   e   b   u   g     376 001  \0   M 315   -   -
0046660        r   e   t   a   i   n       t   h   e       d   e   b   u
0046700    g   g   e   r  \r                                            
0046720        [  \r                                                   p
0046740    r   e   s   e   r   v   e   D   e   b   u   g   g   e   r    
0046760    =       t   r   u   e  \r                                    
0047000                e   n   d   c   a   s   e  \r                    
0047020                                ]  \r                            
0047040            c   a   s   e       $   S   :       c   a   s   e    
0047060    $   s   :           /   /   D   S   T       <   b   e   g   i
0047100    n       d   a   y   >       <   e   n   d       d   a   y   >
0047120   \r                                                   [  \r    
0047140                                                l   e   t       b
0047160    e   g   i   n   D   S   T       =       R   e   a   d   N   u
0047200    m   b   e   r   (   1   0   )  \r                            
0047220                        l   e   t       e   n   d   D   S   T    
0047240    =       R   e   a   d   N   u   m   b   e   r   (   1 376 001
0047260   \0   < 006   0   )  \r                                        
0047300            S   e   t   T   i   m   e   D   S   T   (   b   e   g
0047320    i   n   D   S   T   ,       e   n   d   D   S   T   )  \r    
0047340                                                e   n   d   c   a
0047360    s   e  \r                                                   ]
0047400   \r                                       ]  \r                
0047420            e   n   d   c   a   s   e  \r                        
0047440    ]  \r               c   a   s   e       $   H   :       c   a
0047460    s   e       $   h   :           /   /   H   o   s   t       <
0047500    n   e   t   T   y   p   e   >       <   d   e   v   i   c   e
0047520        c   o   d   e   >       <   n   e   t   >       <   h   o
0047540    s   t   >  \r                           [  \r                
0047560            l   e   t       n   e   t   T   y   p   e       =    
0047600    R   e   a   d   N   u   m   b   e   r   (   8   )  \r        
0047620                    l   e   t       d   e   v   i   c   e   N   u
0047640    m       =       R   e   a   d   N   u   m   b   e   r   (   8
0047660    )  \r     376 001  \0   p 022                       l   e   t
0047700        n   e   t       =       R   e   a   d   N   u   m   b   e
0047720    r   (   8   )  \r                           l   e   t       h
0047740    o   s   t       =       R   e   a   d   N   u   m   b   e   r
0047760    (   8   )  \r                           l   e   t       n   d
0050000    b       =       n   d   b   Q   !   0   ;       w   h   i   l
0050020    e       n   d   b       n   e       0       d   o  \r        
0050040                                [  \r                            
0050060            i   f       n   d   b   >   >   N   D   B   .   n   e
0050100    t   T   y   p   e       e   q       n   e   t   T   y   p   e
0050120        &       n   d   b   >   >   N   D   B   .   d   e   v   i
0050140    c   e   N   u   m       e   q       d   e   v   i   c   e   N
0050160    u   m       t   h   e   n  \r                                
0050200                    [  \r                                        
0050220            i   f       n   d   b   >   >   N   D   B   .   l   o
0050240    c   a   l   H   o   s   t       n   e       0       &       n
0050260    d   b   >   >   N   D   B   . 376 001  \0 314   v   l   o   c
0050300    a   l   H   o   s   t       n   e       h   o   s   t       t
0050320    h   e   n  \r                                                
0050340                P   a   r   a   m   E   r   r   o   r   (   "   W
0050360    r   o   n   g       G   A   T   E   P   A   R   A   M   E   T
0050400    E   R   .   T   X   T       f   o   r       t   h   i   s    
0050420    g   a   t   e   w   a   y   *   N   "   )  \r                
0050440                                    n   d   b   >   >   N   D   B
0050460    .   l   o   c   a   l   N   e   t       =       n   e   t  \r
0050500                                                    n   d   b   >
0050520    >   N   D   B   .   l   o   c   a   l   H   o   s   t       =
0050540        h   o   s   t  \r                                        
0050560            l   e   t       r   t   e       =       H   I   n   s
0050600    e   r   t   (   p   u   p   R   T   ,       n   e   t   )  \r
0050620                                                    r   t   e   >
0050640    >   R   T   E   .   n   d   b       =       n   d   b  \r    
0050660                                                r   t 376 001  \0
0050700  005 217   e   >   >   R   T   E   .   h   o   s   t       =    
0050720    h   o   s   t  \r                                            
0050740        b   r   e   a   k  \r                                    
0050760                ]  \r                                       n   d
0051000    b       =       n   d   b   >   >   N   D   B   .   l   i   n
0051020    k  \r                                       ]  \r            
0051040                i   f       n   d   b       e   q       0       t
0051060    h   e   n       W   s   (   "   N   o       i   n   t   e   r
0051100    f   a   c   e       f   o   r       a   b   o   v   e       n
0051120    e   t   *   N   "   )  \r                           e   n   d
0051140    c   a   s   e  \r                           ]  \r  \f  \r   /
0051160    /       I   n   t   e   r   p   r   e   t   P   a   r   a   m
0051200        (   C   o   n   t   '   d   )  \r  \r               c   a
0051220    s   e       $   P   :       c   a   s   e       $   p   :    
0051240        /   /   P   r   o   b   e       <   H   o   u   r   s   >
0051260   \r                           [  \r                           l
0051300    e   t 376 001  \0 016   )       h   o   u   r   s       =    
0051320    R   e   a   d   N   u   m   b   e   r   (   1   0   )  \r    
0051340                        S   e   t   N   a   m   e   B   c   s   t
0051360    I   n   t   e   r   v   a   l   (   h   o   u   r   s   )  \r
0051400                            S   e   t   B   o   o   t   B   c   s
0051420    t   I   n   t   e   r   v   a   l   (   h   o   u   r   s   )
0051440   \r                           e   n   d   c   a   s   e  \r    
0051460                        ]  \r               c   a   s   e       $
0051500    Z   :       c   a   s   e       $   z   :           /   /   Z
0051520    o   n   e       <   s   i   g   n   :       +       i   s    
0051540    W   e   s   t       o   f       G   r   e   e   n   w   i   c
0051560    h   >       <   H   o   u   r   s   >   :   <   M   i   n   u
0051600    t   e   s   >  \r                           [  \r            
0051620                l   e   t       z   o   n   e   H       =       R
0051640    e   a   d   N   u   m   b   e   r   (   1   0   )  \r        
0051660                    l   e   t       z   o   n   e   S       =    
0051700    n   o   t       l   a   s 376 001  \0 243 251   t   N   u   m
0051720    b   e   r   W   a   s   P   o   s   i   t   i   v   e  \r    
0051740                        l   e   t       z   o   n   e   M       =
0051760        R   e   a   d   N   u   m   b   e   r   (   1   0   )  \r
0052000                            S   e   t   T   i   m   e   Z   o   n
0052020    e   (   z   o   n   e   S   ,       z   o   n   e   H   ,    
0052040    z   o   n   e   M   )  \r                           e   n   d
0052060    c   a   s   e  \r                           ]  \r            
0052100    d   e   f   a   u   l   t   :  \r                           [
0052120   \r                           l   e   t       c   h   a   r    
0052140    =       R   e   a   d   C   h   a   r   (   )  \r            
0052160                i   f       c   h   a   r       e   q       -   1
0052200        %       c   h   a   r       e   q       $   *   N       e
0052220    n   d   c   a   s   e  \r                           ]       r
0052240    e   p   e   a   t  \r               ]  \r   ]       r   e   p
0052260    e   a   t  \r  \r   /   /   -   -   -   -   -   -   -   -   -
0052300    -   -   -   -   -   -   -   -   -   -   -   - 376 001  \0   =
0052320    U   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0052340    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0052400    -   -   -   -   -   -   -   -  \r   a   n   d       I   s   B
0052420    r   e   a   k   (   c   h   a   r   )       =  \r   /   /   -
0052440    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0052540    -   -   -   -   -   -   -   -   -   -   -  \r               c
0052560    h   a   r       e   q       $   *   N       %       c   h   a
0052600    r       e   q       $   *   S       %       c   h   a   r    
0052620    e   q       $   *   T       %  \r                   c   h   a
0052640    r       e   q       -   1       %       c   h   a   r       e
0052660    q       $   ;       %       c   h   a   r       e   q       $
0052700    :       %       c   h   a   r       e   q       $   ,  \r  \r
0052720    / 376 001  \0   X 002   /   -   -   -   -   -   -   -   -   -
0052740    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0053040    -   -   -  \r   a   n   d       P   a   r   a   m   E   r   r
0053060    o   r   (   s   t   r   i   n   g   )       b   e  \r   /   /
0053100    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0053200    -   -   -   -   -   -   -   -   -   -   -   -  \r   [  \r   W
0053220    s   (   s   t   r   i   n   g   )  \r   G   a   t   e   w   a
0053240    y   F   i   n   i   s   h   (   g   a   t   e   w   a   y   Q
0053260    u   i   t   C   o   d   e   )  \r   ]  \r  \f  \r   /   /   -
0053300    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0053320    -   -   -   -   -   - 376 001  \0 351 264   -   -   -   -   -
0053340    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0053420   \r   a   n   d       R   e   a   d   N   u   m   b   e   r   (
0053440    r   a   d   i   x   ;       n   u   m   a   r   g   s       n
0053460    a   )       =       v   a   l   o   f  \r   /   /   -   -   -
0053500    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0053600    -   -   -   -   -   -   -   -   -  \r   /   /       i   n   t
0053620    e   r   p   r   e   t   s       t   h   e       n   e   x   t
0053640        a   t   o   m       a   s       a       n   u   m   b   e
0053660    r       i   n       t   h   e       g   i   v   e   n       r
0053700    a   d   i   x  \r   [  \r   i   f       n   a       e   q    
0053720    0       t   h   e   n       r   a   d   i 376 001  \0   k 234
0053740    x       =       8  \r   l   e   t       a   t   o   m       =
0053760        R   e   a   d   A   t   o   m   (   )  \r   l   e   t    
0054000    n   u   m   b   e   r       =       0  \r   l   a   s   t   N
0054020    u   m   b   e   r   W   a   s   P   o   s   i   t   i   v   e
0054040        =       t   r   u   e  \r   f   o   r       i       =    
0054060    1       t   o       a   t   o   m   >   >   S   t   r   i   n
0054100    g   .   l   e   n   g   t   h       d   o  \r               [
0054120   \r               l   e   t       c   h   a   r       =       a
0054140    t   o   m   >   >   S   t   r   i   n   g   .   c   h   a   r
0054160    ^   i  \r               i   f       i       e   q       1    
0054200    &       (   c   h   a   r       e   q       $   -       %    
0054220    c   h   a   r       e   q       $   +   )       t   h   e   n
0054240   \r                           [       l   a   s   t   N   u   m
0054260    b   e   r   W   a   s   P   o   s   i   t   i   v   e       =
0054300        c   h   a   r       e   q       $   +   ;       l   o   o
0054320    p       ]  \r               c   h   a   r       =       c   h
0054340  376 001  \0   t 340   a   r   -   $   0  \r               u   n
0054360    l   e   s   s       c   h   a   r       g   e       0       &
0054400        c   h   a   r       l   e       r   a   d   i   x   -   1
0054420        d   o  \r                           P   a   r   a   m   E
0054440    r   r   o   r   (   "   *   N   [   R   e   a   d   N   u   m
0054460    b   e   r   ]       -       i   l   l   e   g   a   l       c
0054500    h   a   r   a   c   t   e   r       i   n       n   u   m   b
0054520    e   r   "   )  \r               n   u   m   b   e   r       =
0054540        n   u   m   b   e   r       *       r   a   d   i   x    
0054560    +       c   h   a   r  \r               ]  \r   r   e   s   u
0054600    l   t   i   s       n   u   m   b   e   r  \r   ]  \r  \r   /
0054620    /   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0054640    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0054720    -   -   -   -   -   -   -   -   -   -   -   -   -  \r   a   n
0054740    d       R   e   a 376 001  \0   l   }   d   A   t   o   m   (
0054760    )       =       v   a   l   o   f  \r   /   /   -   -   -   -
0055000    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0055100    -   -   -   -   -   -   -   -  \r   /   /       r   e   t   u
0055120    r   n   s       p   o   i   n   t   e   r       t   o       a
0055140        s   t   r   i   n   g  \r   /   /       g   o   e   s    
0055160    t   o       t   o   p       f   r   a   m   e       i   f    
0055200    e   n   d       o   f       f   i   l   e       b   e   f   o
0055220    r   e       r   e   a   d   i   n   g       a   n   y       c
0055240    h   a   r   s  \r   [  \r   l   e   t       c   h   a   r    
0055260    =       n   i   l  \r               [           /   /   i   g
0055300    n   o   r   e       l   e   a   d   i   n   g       j   u   n
0055320    k  \r               c   h   a   r       =       R   e   a   d
0055340    C   h   a   r   (   )  \r             376 001  \0 317 254   i
0055360    f       c   h   a   r       e   q       -   1       t   h   e
0055400    n       G   o   t   o   F   r   a   m   e   (   e   n   d   )
0055420   \r               u   n   l   e   s   s       I   s   B   r   e
0055440    a   k   (   c   h   a   r   )       b   r   e   a   k  \r    
0055460            ]       r   e   p   e   a   t  \r   l   e   t       c
0055500    o   u   n   t       =       0  \r               [           /
0055520    /   c   o   l   l   e   c   t       a   n       a   t   o   m
0055540   \r               c   o   u   n   t       =       c   o   u   n
0055560    t       +       1  \r               i   f       c   o   u   n
0055600    t       g   r       m   a   x   A   t   o   m   C   h   a   r
0055620    s       t   h   e   n  \r                           P   a   r
0055640    a   m   E   r   r   o   r   (   "   *   N   [   R   e   a   d
0055660    A   t   o   m   ]       -       a   t   o   m       t   o   o
0055700        l   o   n   g   "   )  \r               b   u   f   f   e
0055720    r   >   >   S   t   r   i   n   g   .   c   h   a   r   ^   c
0055740    o   u   n   t       =       c   h   a   r  \r             376
0055760  001  \0   @ 340   c   h   a   r       =       R   e   a   d   C
0056000    h   a   r   (   )  \r               i   f       I   s   B   r
0056020    e   a   k   (   c   h   a   r   )       b   r   e   a   k  \r
0056040                ]       r   e   p   e   a   t  \r   b   u   f   f
0056060    e   r   >   >   S   t   r   i   n   g   .   l   e   n   g   t
0056100    h       =       c   o   u   n   t  \r   r   e   s   u   l   t
0056120    i   s       b   u   f   f   e   r  \r   ]  \r  \r   /   /   -
0056140    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0056240    -   -   -   -   -   -   -   -   -   -   -  \r   a   n   d    
0056260    R   e   a   d   C   h   a   r   (   )       =       v   a   l
0056300    o   f  \r   /   /   -   -   -   -   -   -   -   -   -   -   -
0056320    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0056360    -   -   -   - 376 001  \0 272   $   -   -   -   -   -   -   -
0056400    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0056420    -   -   -   -   -   -  \r   /   /       r   e   t   u   r   n
0056440    s       t   h   e       n   e   x   t       c   h   a   r   a
0056460    c   t   e   r       i   n       t   h   e       s   t   r   e
0056500    a   m  \r   /   /       r   e   t   u   r   n   s       -   1
0056520        o   n       e   n   d       o   f       f   i   l   e  \r
0056540    [  \r   u   n   t   i   l       E   n   d   o   f   s   (   p
0056560    a   r   a   m   F   i   l   e   )       d   o  \r            
0056600    [           /   /   f   i   l   t   e   r       o   u   t    
0056620    c   o   m   m   e   n   t   s       h   e   r   e  \r        
0056640        l   e   t       c   h   a   r       =       G   e   t   s
0056660    (   p   a   r   a   m   F   i   l   e   )   ;       P   u   t
0056700    s   (   d   s   p   ,       c   h   a   r   )  \r            
0056720    i   f       c   h   a   r       e   q       $   *   N       t
0056740    h   e   n       i   n   C   o   m   m   e   n   t       =    
0056760    f   a   l   s   e  \r             376  \0   ] 245   _   i   f
0057000        i   n   C   o   m   m   e   n   t       l   o   o   p  \r
0057020                i   f       c   h   a   r       e   q       $   ;
0057040        t   h   e   n       i   n   C   o   m   m   e   n   t    
0057060    =       t   r   u   e  \r               r   e   s   u   l   t
0057100    i   s       c   h   a   r  \r               ]  \r   r   e   s
0057120    u   l   t   i   s       -   1  \r   ]  \r 377  \0  \0   G   a
0057140    t   e   C   o   n   S   e   r   v   .   d   e   c   l  \0 376
0057160  001  \0 002 022   /   /       G   a   t   e   C   o   n   S   e
0057200    r   v   .   d   e   c   l       -   -       G   a   t   e   C
0057220    o   n   t   r   o   l       p   r   o   t   o   c   o   l  \r
0057240   \r   /   /       L   a   s   t       m   o   d   i   f   i   e
0057260    d       M   a   r   c   h       7   ,       1   9   7   9    
0057300        4   :   2   5       P   M       b   y       B   o   g   g
0057320    s  \r  \r   m   a   n   i   f   e   s   t  \r   [  \r   g   c
0057340    S   o   c   k   e   t   1       =       3   1   4   1   5  \t
0057360    /   /       n   o   t       w   e   l   l       k   n   o   w
0057400    n       s   e   r   v   e   r       s   o   c   k   e   t  \r
0057420    g   c   S   o   c   k   e   t   2       =       9   2   6   5
0057440   \r   g   c   P   a   s   s   w   o   r   d       =       2   7
0057460    1   8   2  \t   /   /       h   i   g   h       w   o   r   d
0057500        o   f       P   u   p       I   D  \r  \r   /   /       p
0057520    u   p       t   y   p   e   s  \r   p   t   S   t   o   r   e
0057540        =       2   0   0   b  \t  \t   /   /       s   t   o   r
0057560    e       f   i 376 001  \0 256 202   l   e       o   n   t   o
0057600        g   a   t   e   w   a   y       d   i   s   k  \r   p   t
0057620    E   x   a   m   i   n   e       =       2   0   1   b  \t   /
0057640    /       e   x   a   m   i   n   e       m   e   m   o   r   y
0057660   \r   p   t   D   e   p   o   s   i   t       =       2   0   2
0057700    b  \t   /   /       d   e   p   o   s   i   t       m   e   m
0057720    o   r   y  \r   p   t   R   e   s   t   a   r   t       =    
0057740    2   0   3   b  \t   /   /       r   e   s   t   a   r   t    
0057760    g   a   t   e   w   a   y       p   r   o   g   r   a   m  \r
0060000    /   /       2   0   4   b  \t   u   s   e   d       t   o    
0060020    b   e       c   h   e   c   k       r   e   s   u   l   t    
0060040    o   f       l   a   s   t       s   t   o   r   e  \r   /   /
0060060        2   0   5   b       u   s   e   d       t   o       b   e
0060100        r   e   s   e   t       t   i   m   e       b   y       b
0060120    r   o   a   d   c   a   s   t   i   n   g  \r   /   /       2
0060140    0   6   b  \t   u   s   e   d       t   o       b   e       r
0060160    e   s   e   t       t   i   m   e 376 001  \0 332   )       f
0060200    r   o   m       a       s   p   e   c   i   f   i   c       p
0060220    o   r   t  \r   p   t   S   t   a   t   s       =       2   0
0060240    7   b  \t  \t   /   /       g   a   t   e   w   a   y       s
0060260    t   a   t   i   s   t   i   c   s  \r   p   t   A   c   k    
0060300    =       2   1   0   b  \t  \t   /   /       a   c   k   n   o
0060320    w   l   e   d   g   e       p   r   e   v   i   o   u   s    
0060340    c   o   m   m   a   n   d  \r   p   t   N   a   c   k       =
0060360        2   1   1   b  \t  \t   /   /       n   e   g   a   t   i
0060400    v   e       a   c   k   n   o   w   l   e   d   g   m   e   n
0060420    t       f   o   r       c   o   m   m   a   n   d  \r   p   t
0060440    H   a   l   t       =       2   1   2   b  \t  \t   /   /    
0060460    h   a   l   t       g   a   t   e   w   a   y       a   n   d
0060500        d   o   n   '   t       r   e   s   t   a   r   t  \r   p
0060520    t   R   e   t   r   i   e   v   e       =       2   1   3   b
0060540   \t   /   /       r   e   t   r   i   e   v   e       a       f
0060560    i   l   e       f   r   o   m       g   a   t   e   w 376 001
0060600   \0   $   o   a   y       d   i   s   k  \r  \r   /   /       s
0060620    t   a   t   u   s       o   f       l   a   s   t       S   t
0060640    o   r   e  \r   s   t   a   t   u   s   Y   e   s       =    
0060660    -   1  \r   s   t   a   t   u   s   B   u   s   y       =    
0060700    -   2  \r   s   t   a   t   u   s   N   o       =       -   3
0060720   \r  \r   g   c   S   t   a   t   s   V   e   r   s   i   o   n
0060740        =       1  \r   ]  \r  \r   /   /   -   -   -   -   -   -
0060760    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0061060    -   -   -   -   -   -  \r   s   t   r   u   c   t   u   r   e
0061100        S   t   a   t   s   :  \t   /   /       G   a   t   e   w
0061120    a   y       S   t   a   t   i   s   t   i   c   s  \r   /   /
0061140    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0061200    -   -   - 376 001  \0 037   O   -   -   -   -   -   -   -   -
0061220    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0061260    -  \r   [  \r   v   e   r   s   i   o   n       w   o   r   d
0061300   \t  \t   /   /       =       g   c   S   t   a   t   s   V   e
0061320    r   s   i   o   n  \r   s   t   a   r   t   T   i   m   e   ^
0061340    0   ,   1       w   o   r   d  \t   /   /       T   i   m   e
0061360        g   a   t   e   w   a   y       w   a   s       s   t   a
0061400    r   t   e   d  \r   f   t   p   S   t   a   t   u   s       w
0061420    o   r   d  \t  \t   /   /       s   t   a   t   u   s       o
0061440    f       m   o   s   t       r   e   c   e   n   t       F   T
0061460    P  \r   f   r   e   e   P   B   I   s       w   o   r   d  \t
0061500   \t   /   /       n   u   m   b   e   r       o   f       f   r
0061520    e   e       p   a   c   k   e   t       b   u   f   f   e   r
0061540    s  \r   f   r   e   e   P   a   g   e   s       w   o   r   d
0061560   \t  \t   /   /       n   u   m   b   e   r       o   f       f
0061600    r   e   e       d   i   s   k 376 001  \0   C 313       p   a
0061620    g   e   s  \r   v   e   r   s   i   o   n   T   e   x   t    
0061640    w   o   r   d  \t   /   /       B   C   P   L       s   t   r
0061660    i   n   g       s   t   a   r   t   s       h   e   r   e  \r
0061700    ]  \r   m   a   n   i   f   e   s   t       l   e   n   S   t
0061720    a   t   s       =       o   f   f   s   e   t       S   t   a
0061740    t   s   .   v   e   r   s   i   o   n   T   e   x   t   /   1
0061760    6           /   /   n   o   t       i   n   c   l   u   d   i
0062000    n   g       s   t   r   i   n   g  \r  \r   /   /   -   -   -
0062020    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0062120    -   -   -   -   -   -   -   -   -  \r   s   t   r   u   c   t
0062140    u   r   e       G   C   S   :  \t  \t   /   /       '   g   l
0062160    o   b   a   l       f   r   a   m   e   '       f   o   r    
0062200    G   a   t   e   C   o   n   t   r   o   l       S 376 001  \0
0062220  177 273   e   r   v   e   r  \r   /   /   -   -   -   -   -   -
0062240    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0062340    -   -   -   -   -   -  \r   [  \r   s   o   c       w   o   r
0062360    d  \t  \t   /   /       -   >       S   e   r   v   e   r   '
0062400    s       s   o   c   k   e   t  \r   s   t   a   t   s       @
0062420    S   t   a   t   s  \r   f   t   p   C   t   x       w   o   r
0062440    d  \t  \t   /   /       -   >       P   B   I       u   s   e
0062460    d       a   s       a       c   t   x       o   r       0    
0062500    i   f       n   o       c   t   x       a   c   t   i   v   e
0062520   \r   q   u   i   t   C   o   d   e       w   o   r   d  \t  \t
0062540    /   /       0       o   r       d   o   s       .   e   r   r
0062560    R   t   n       c   o   d   e   .       N   o   n       z   e
0062600    r   o       =   >       s   t   o   p  \r   r   e   s   t   a
0062620    r   t 376  \0   I 363 240   T   i   m   e   r       w   o   r
0062640    d  \t   /   /       t   i   m   e       d   e   l   a   y    
0062660    b   e   f   o   r   e       s   t   o   p   p   i   n   g  \r
0062700    ]  \r   m   a   n   i   f   e   s   t       l   e   n   G   C
0062720    S       =       s   i   z   e       G   C   S   /   1   6  \r
0062740  377  \0  \0   G   a   t   e   C   o   n   S   e   r   v   .   b
0062760    c   p   l  \0 376 001  \0 201   K   /   /       G   a   t   e
0063000    C   o   n   S   e   r   v   .   b   c   p   l       -   -    
0063020    G   a   t   e   w   a   y       c   o   n   t   r   o   l    
0063040    s   e   r   v   e   r  \r  \r   /   /       L   a   s   t    
0063060    m   o   d   i   f   i   e   d       M   a   r   c   h       7
0063100    ,       1   9   7   9           4   :   1   1       P   M    
0063120    b   y       B   o   g   g   s  \r  \r   g   e   t       "   P
0063140    u   p   E   F   T   P   .   d   e   c   l   "  \r   g   e   t
0063160        "   P   u   p   S   e   r   v   F   t   p   .   d   e   c
0063200    l   "  \r   g   e   t       "   G   a   t   e   C   o   n   S
0063220    e   r   v   .   d   e   c   l   "  \r  \r   e   x   t   e   r
0063240    n   a   l  \r   [  \r   /   /       o   u   t   g   o   i   n
0063260    g       p   r   o   c   e   d   u   r   e   s  \r   G   a   t
0063300    e   C   o   n   S   e   r   v   C   t   x   ;       H   a   l
0063320    t   G   a   t   e   w   a   y  \r  \r   /   /       i   n   c
0063340    o   m   i   n   g       p   r   o   c   e   d   u   r   e   s
0063360   \r   L   o   c   k   N   a   m   e 376 001  \0 215 254   S   e
0063400    r   v   ;       U   n   l   o   c   k   N   a   m   e   S   e
0063420    r   v   ;       G   e   t   T   i   m   e  \r   L   o   c   k
0063440    B   o   o   t   S   e   r   v   ;       U   n   l   o   c   k
0063460    B   o   o   t   S   e   r   v   ;       S   t   r   i   n   g
0063500    C   o   m   p   a   r   e  \r   G   a   t   e   w   a   y   F
0063520    i   n   i   s   h   ;       C   h   a   t   r   ;       P   u
0063540    p   S   e   r   v   R   e   c   e   i   v   e   ;       P   u
0063560    p   S   e   r   v   S   e   n   d  \r   I   n   i   t   i   a
0063600    l   i   z   e   C   o   n   t   e   x   t   ;       B   l   o
0063620    c   k  \r   A   l   l   o   c   a   t   e   ;       F   r   e
0063640    e   ;       M   o   v   e   B   l   o   c   k   ;       Z   e
0063660    r   o  \r   E   n   q   u   e   u   e   ;       D   e   q   u
0063700    e   u   e   ;       U   n   q   u   e   u   e   ;       Q   u
0063720    e   u   e   L   e   n   g   t   h  \r   S   e   t   T   i   m
0063740    e   r   ;       T   i   m   e   r   H   a   s   E   x   p   i
0063760    r   e   d  \r   G   e   t   P   B   I   ;       R   e 376 001
0064000   \0   u   y   l   e   a   s   e   P   B   I   ;       C   o   m
0064020    p   l   e   t   e   P   u   p   ;       S   e   t   P   u   p
0064040    I   D  \r   E   x   c   h   a   n   g   e   P   o   r   t   s
0064060    ;       A   p   p   e   n   d   S   t   r   i   n   g   T   o
0064100    P   u   p  \r  \r   /   /       o   u   t   g   o   i   n   g
0064120        s   t   a   t   i   c   s  \r   @   g   c   s  \r  \r   /
0064140    /       i   n   c   o   m   i   n   g       s   t   a   t   i
0064160    c   s  \r   s   y   s   Z   o   n   e   ;       c   t   x   Q
0064200    ;       v   e   r   s   i   o   n   T   e   x   t   ;       C
0064220    t   x   R   u   n   n   i   n   g  \r   p   b   i   T   Q   ;
0064240        p   b   i   F   r   e   e   Q   ;       g   a   t   e   w
0064260    a   y   G   o   i   n   g   D   o   w   n   ;       l   e   n
0064300    P   u   p  \r   ]  \r  \r   s   t   a   t   i   c       @   g
0064320    c   s  \r  \r   m   a   n   i   f   e   s   t  \r   [  \r   /
0064340    /       D   O   S       .   e   r   t   n       c   o   d   e
0064360    s  \r   q   u   i   t       =       1   2   3   4   5  \r   r
0064400    e   s   t 376 001  \0 031 231   a   r   t       =       1   0
0064420    0   0  \r   ]  \r  \r   s   t   r   u   c   t   u   r   e    
0064440    G   C   T   X   :  \t  \t   /   /       G   a   t   e   C   o
0064460    n   t   r   o   l       C   T   X  \r   [  \r   b   l   a   n
0064500    k       w   o   r   d       3  \r   p   b   i       w   o   r
0064520    d  \r   ]  \r   m   a   n   i   f   e   s   t       G   C   T
0064540    X   e   x   t   r   a       =       s   i   z   e       G   C
0064560    T   X   /   1   6       -   3  \r  \r   /   /   -   -   -   -
0064600    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0064700    -   -   -   -   -   -   -  \r   l   e   t       H   a   l   t
0064720    G   a   t   e   w   a   y   (   )       b   e  \r   /   /   -
0064740    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0065000    -   -   -   -   -   -   -   - 376 001  \0   G   <   -   -   -
0065020    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0065040    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -  \r
0065060    [  \r   g   c   s   >   >   G   C   S   .   q   u   i   t   C
0065100    o   d   e       =       q   u   i   t  \r   g   a   t   e   w
0065120    a   y   G   o   i   n   g   D   o   w   n       =       t   r
0065140    u   e  \r   /   /       D   a   l   l   y       f   o   r    
0065160    1   5       s   e   c   o   n   d   s       w   h   i   l   e
0065200        w   e       b   r   o   a   d   c   a   s   t       r   o
0065220    u   t   i   n   g       t   a   b   l   e   s       t   h   a
0065240    t       s   a   y       w   e       a   r   e  \r   /   /    
0065260    a       t   e   r   r   i   b   l   e       r   o   u   t   e
0065300        t   o       e   v   e   r   y   w   h   e   r   e       s
0065320    o       t   h   a   t       p   e   o   p   l   e       c   a
0065340    n       f   i   n   d       w   a   y   s       a   r   o   u
0065360    n   d       u   s   .  \r   S   e   t   T   i   m   e   r   (
0065400    l   v       g   c   s   >   >   G   C   S   .   r 376 001  \0
0065420  266 201   e   s   t   a   r   t   T   i   m   e   r   ,       1
0065440    5   0   0   )  \r   ]  \r  \f  \r   /   /   -   -   -   -   -
0065460    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0065560    -   -   -   -   -   -  \r   a   n   d       G   a   t   e   C
0065600    o   n   S   e   r   v   C   t   x   (   )       b   e  \r   /
0065620    /   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0065640    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0065720    -   -   -   -   -   -   -   -   -   -   -   -  \r   [  \r    
0065740            [           /   /       i   d   l   e       l   o   o
0065760    p  \r               B   l   o   c   k   (   )  \r            
0066000    i   f       g   c   s   >   >   G   C   S   .   s   t   a   t
0066020    s   . 376 001  \0   8 266   s   t   a   r   t   T   i   m   e
0066040    ^   0       e   q       0       t   h   e   n  \r            
0066060                G   e   t   T   i   m   e   (   l   v       g   c
0066100    s   >   >   G   C   S   .   s   t   a   t   s   .   s   t   a
0066120    r   t   T   i   m   e   )  \r               i   f       g   c
0066140    s   >   >   G   C   S   .   f   t   p   C   t   x       n   e
0066160        0       &       g   c   s   >   >   G   C   S   .   s   t
0066200    a   t   s   .   f   t   p   S   t   a   t   u   s       n   e
0066220        s   t   a   t   u   s   B   u   s   y       t   h   e   n
0066240   \r                           [  \r                           c
0066260    o   m   p   i   l   e   t   e   s   t       n   o   v   a  \r
0066300                                        i   f   s   o       [    
0066320    R   e   l   e   a   s   e   P   B   I   (   g   c   s   >   >
0066340    G   C   S   .   f   t   p   C   t   x   -   o   f   f   s   e
0066360    t       P   B   I   .   p   u   p   /   1   6   )       ]  \r
0066400                                        i   f   n   o   t       [
0066420        F   r   e   e   (   s 376 001  \0   | 304   y   s   Z   o
0066440    n   e   ,       g   c   s   >   >   G   C   S   .   f   t   p
0066460    C   t   x   )       ]  \r                           g   c   s
0066500    >   >   G   C   S   .   f   t   p   C   t   x       =       0
0066520   \r                           ]  \r               i   f       g
0066540    c   s   >   >   G   C   S   .   q   u   i   t   C   o   d   e
0066560        n   e       0       &       g   c   s   >   >   G   C   S
0066600    .   f   t   p   C   t   x       e   q       0       &  \r    
0066620                T   i   m   e   r   H   a   s   E   x   p   i   r
0066640    e   d   (   l   v       g   c   s   >   >   G   C   S   .   r
0066660    e   s   t   a   r   t   T   i   m   e   r   )       t   h   e
0066700    n  \r                           [  \r                        
0066720    L   o   c   k   B   o   o   t   S   e   r   v   (   )  \r    
0066740                        L   o   c   k   N   a   m   e   S   e   r
0066760    v   (   )  \r                           G   a   t   e   w   a
0067000    y   F   i   n   i   s   h   (   g   c   s   >   >   G   C   S
0067020    .   q   u   i   t   C   o   d   e   )  \r     376 001  \0 241
0067040  024                       ]  \r               ]       r   e   p
0067060    e   a   t   u   n   t   i   l       g   c   s   >   >   G   C
0067100    S   .   s   o   c   >   >   P   u   p   S   o   c   .   i   Q
0067120    .   h   e   a   d       n   e       0  \r  \r   l   e   t    
0067140    p   b   i       =       D   e   q   u   e   u   e   (   l   v
0067160        g   c   s   >   >   G   C   S   .   s   o   c   >   >   P
0067200    u   p   S   o   c   .   i   Q   )  \r   i   f       p   b   i
0067220    >   >   P   B   I   .   p   u   p   .   d   P   o   r   t   .
0067240    h   o   s   t       e   q       0       %       p   b   i   >
0067260    >   P   B   I   .   p   u   p   .   i   d   ^   1       n   e
0067300        g   c   P   a   s   s   w   o   r   d       t   h   e   n
0067320   \r               [       R   e   l   e   a   s   e   P   B   I
0067340    (   p   b   i   )   ;       l   o   o   p       ]  \r   E   x
0067360    c   h   a   n   g   e   P   o   r   t   s   (   p   b   i   )
0067400            /   /   d   o       t   h   i   s       h   e   r   e
0067420        r   a   t   h   e   r       t   h   a   n       i   n    
0067440    e 376 001  \0   l 223   a   c   h       c   a   s   e  \r  \r
0067460    s   w   i   t   c   h   o   n       p   b   i   >   >   P   B
0067500    I   .   p   u   p   .   t   y   p   e       i   n   t   o  \r
0067520                [  \r               c   a   s   e       p   t   E
0067540    x   a   m   i   n   e   :  \r                           [  \r
0067560                            /   /   e   x   a   m   i   n   e    
0067600    a       b   l   o   c   k       o   f       w   o   r   d   s
0067620        w   h   o   s   e       s   t   a   r   t   i   n   g    
0067640    a   d   d   r   e   s   s  \r                           /   /
0067660    a   n   d       l   e   n   g   t   h       a   r   e       g
0067700    i   v   e   n       i   n       t   h   e       f   i   r   s
0067720    t       2       w   o   r   d   s       o   f       t   h   e
0067740   \r                           /   /   r   e   q   u   e   s   t
0067760        P   u   p   .           r   e   t   u   r   n       t   h
0070000    e       b   l   o   c   k       s   t   a   r   t   i   n   g
0070020        i   n       w   o   r   d       3   .  \r                
0070040            M   o   v   e 376 001  \0 236 343   B   l   o   c   k
0070060    (   l   v       p   b   i   >   >   P   B   I   .   p   u   p
0070100    .   w   o   r   d   s   ^   3   ,       p   b   i   >   >   P
0070120    B   I   .   p   u   p   .   w   o   r   d   s   ^   1   ,  \r
0070140                                p   b   i   >   >   P   B   I   .
0070160    p   u   p   .   w   o   r   d   s   ^   2   )  \r            
0070200                C   o   m   p   l   e   t   e   P   u   p   (   p
0070220    b   i   ,       p   t   A   c   k   ,       p   b   i   >   >
0070240    P   B   I   .   p   u   p   .   w   o   r   d   s   ^   2    
0070260    l   s   h   i   f   t       1       +       p   u   p   O   v
0070300    B   y   t   e   s   +   4   )  \r                           e
0070320    n   d   c   a   s   e  \r                           ]  \r    
0070340            c   a   s   e       p   t   D   e   p   o   s   i   t
0070360    :  \r                           [  \r                        
0070400    /   /   d   e   p   o   s   i   t       a       b   l   o   c
0070420    k       o   f       w   o   r   d   s       w   h   o   s   e
0070440        s   t   a   r   t   i   n   g       a 376 001  \0 202 334
0070460    d   d   r   e   s   s  \r                           /   /   a
0070500    n   d       l   e   n   g   t   h       a   r   e       g   i
0070520    v   e   n       i   n       t   h   e       f   i   r   s   t
0070540        2       w   o   r   d   s       o   f       t   h   e  \r
0070560                            /   /   r   e   q   u   e   s   t    
0070600    P   u   p   .           t   h   e       d   a   t   a       s
0070620    t   a   r   t   s       a   t       w   o   r   d       3   .
0070640   \r                           M   o   v   e   B   l   o   c   k
0070660    (   p   b   i   >   >   P   B   I   .   p   u   p   .   w   o
0070700    r   d   s   ^   1   ,       l   v       p   b   i   >   >   P
0070720    B   I   .   p   u   p   .   w   o   r   d   s   ^   3   ,  \r
0070740                                p   b   i   >   >   P   B   I   .
0070760    p   u   p   .   w   o   r   d   s   ^   2   )  \r            
0071000                C   o   m   p   l   e   t   e   P   u   p   (   p
0071020    b   i   ,       p   t   A   c   k   ,       p   u   p   O   v
0071040    B   y   t   e   s   )  \r                           e   n   d
0071060  376 001  \0   ? 246   c   a   s   e  \r                        
0071100    ]  \r               c   a   s   e       p   t   H   a   l   t
0071120    :  \r                           [  \r                        
0071140    /   /   h   a   l   t       t   h   e       g   a   t   e   w
0071160    a   y       p   r   o   g   r   a   m  \r                    
0071200        H   a   l   t   G   a   t   e   w   a   y   (   )  \r    
0071220                        C   o   m   p   l   e   t   e   P   u   p
0071240    (   p   b   i   ,       p   t   A   c   k   ,       p   u   p
0071260    O   v   B   y   t   e   s   )  \r                           e
0071300    n   d   c   a   s   e  \r                           ]  \r    
0071320            c   a   s   e       p   t   R   e   s   t   a   r   t
0071340    :  \r                           [  \r                        
0071360    /   /   r   e   s   t   a   r   t       t   h   e       G   a
0071400    t   e   w   a   y       p   r   o   g   r   a   m  \r        
0071420                    g   c   s   >   >   G   C   S   .   q   u   i
0071440    t   C   o   d   e       =       r   e   s   t   a   r   t  \r
0071460                      376 001  \0 023 354       S   e   t   T   i
0071500    m   e   r   (   l   v       g   c   s   >   >   G   C   S   .
0071520    r   e   s   t   a   r   t   T   i   m   e   r   ,       5   0
0071540    0   )           /   /       d   a   l   l   y       f   o   r
0071560        5       s   e   c   o   n   d   s  \r                    
0071600        C   o   m   p   l   e   t   e   P   u   p   (   p   b   i
0071620    ,       p   t   A   c   k   ,       p   u   p   O   v   B   y
0071640    t   e   s   )  \r                           e   n   d   c   a
0071660    s   e  \r                           ]  \r  \f  \r   /   /    
0071700    G   a   t   e   C   o   n   S   e   r   v       (   c   o   n
0071720    t   '   d   )  \r  \r               c   a   s   e       p   t
0071740    S   t   o   r   e   :  \r                           /   /   S
0071760    t   o   r   e       a       f   i   l   e       o   n       t
0072000    h   e       g   a   t   e   w   a   y       d   i   s   k    
0072020    w   h   o   s   e       n   a   m   e       i   s       g   i
0072040    v   e   n  \r                           /   /       i   n    
0072060    t   h   e       P   u   p       c   o 376 001  \0   F   ?   n
0072100    t   e   n   t   s   .           T   h   e       s   e   r   v
0072120    e   r       r   e   s   p   o   n   d   s       w   i   t   h
0072140        a   n       a   c   k  \r                           /   /
0072160        c   o   n   t   a   i   n   i   n   g       t   h   e    
0072200    p   o   r   t       t   o       w   h   i   c   h       t   h
0072220    e       f   i   l   e       s   h   o   u   l   d       b   e
0072240        E   F   T   P   '   e   d   .  \r               c   a   s
0072260    e       p   t   R   e   t   r   i   e   v   e   :  \r        
0072300                    /   /   R   e   t   r   i   e   v   e       a
0072320        f   i   l   e       f   r   o   m       t   h   e       g
0072340    a   t   e   w   a   y       d   i   s   k       w   h   o   s
0072360    e       n   a   m   e       i   s       g   i   v   e   n  \r
0072400                            /   /       i   n       t   h   e    
0072420    P   u   p       c   o   n   t   e   n   t   s   .           T
0072440    h   e       s   e   r   v   e   r       g   e   n   e   r   a
0072460    t   e   s       n   o       a   c   k   :       i   t     376
0072500  001  \0 371 024   j   u   s   t       s   t   a   r   t   s  \r
0072520                            /   /       E   F   T   P   i   n   g
0072540        t   h   e       f   i   l   e       t   o       t   h   e
0072560        s   o   u   r   c   e       p   o   r   t       o   f    
0072600    t   h   e       i   n   c   o   m   i   n   g       p   a   c
0072620    k   e   t   .  \r                           [  \r            
0072640                i   f       g   c   s   >   >   G   C   S   .   f
0072660    t   p   C   t   x       e   q       0       &       g   c   s
0072700    >   >   G   C   S   .   q   u   i   t   C   o   d   e       e
0072720    q       0       t   h   e   n  \r                            
0072740            [  \r                                       l   e   t
0072760        c   t   x       =       a   l   t   o   ?       A   l   l
0073000    o   c   a   t   e   (   s   y   s   Z   o   n   e   ,       1
0073020    2   0   0   ,       t   r   u   e   )   ,       v   a   l   o
0073040    f  \r                                                   [  \r
0073060                                                    l   e   t    
0073100    p   b   i     376 001  \0 245 227   =       G   e   t   P   B
0073120    I   (   g   c   s   >   >   G   C   S   .   s   o   c   ,    
0073140    t   r   u   e   )  \r                                        
0073160            r   e   s   u   l   t   i   s       p   b   i       e
0073200    q       0   ?       0   ,       l   v       p   b   i   >   >
0073220    P   B   I   .   p   u   p  \r                                
0073240                    ]  \r                                       i
0073260    f       c   t   x       n   e       0       t   h   e   n  \r
0073300                                                    [  \r        
0073320                                            g   c   s   >   >   G
0073340    C   S   .   f   t   p   C   t   x       =       c   t   x  \r
0073360                                                    g   c   s   >
0073400    >   G   C   S   .   s   t   a   t   s   .   f   t   p   S   t
0073420    a   t   u   s       =       s   t   a   t   u   s   B   u   s
0073440    y  \r                                                   c   t
0073460    x   >   >   G   C   T   X   .   p   b   i       =       p   b
0073500    i  \r                             376 001  \0 240 354        
0073520                f   o   r       i       =       p   b   i   >   >
0073540    P   B   I   .   p   u   p   .   l   e   n   g   t   h   -   p
0073560    u   p   O   v   B   y   t   e   s       t   o       1       b
0073600    y       -   1       d   o  \r                                
0073620                                p   b   i   >   >   P   B   I   .
0073640    p   u   p   .   b   y   t   e   s   ^   (   i   +   1   )    
0073660    =       p   b   i   >   >   P   B   I   .   p   u   p   .   b
0073700    y   t   e   s   ^   i  \r                                    
0073720                p   b   i   >   >   P   B   I   .   p   u   p   .
0073740    b   y   t   e   s   ^   1       =       p   b   i   >   >   P
0073760    B   I   .   p   u   p   .   l   e   n   g   t   h   -   p   u
0074000    p   O   v   B   y   t   e   s  \r                            
0074020                        E   n   q   u   e   u   e   (   c   t   x
0074040    Q   ,       I   n   i   t   i   a   l   i   z   e   C   o   n
0074060    t   e   x   t   (   c   t   x   ,       (   a   l   t   o   ?
0074100        1   2   0   0   ,       l   e   n   P   u   p   ) 376 001
0074120   \0   E 314   ,  \r                                            
0074140            (   p   b   i   >   >   P   B   I   .   p   u   p   .
0074160    t   y   p   e       e   q       p   t   S   t   o   r   e   ?
0074200        G   C   S   S   t   o   r   e   ,       G   C   S   R   e
0074220    t   r   i   e   v   e   )   ,  \r                            
0074240                            G   C   T   X   e   x   t   r   a   )
0074260    )  \r                                                   e   n
0074300    d   c   a   s   e  \r                                        
0074320            ]  \r                                       ]  \r    
0074340                        R   e   l   e   a   s   e   P   B   I   (
0074360    p   b   i   )  \r                           e   n   d   c   a
0074400    s   e  \r                           ]  \r               c   a
0074420    s   e       p   t   S   t   a   t   s   :  \r                
0074440            [  \r                           l   e   t       s   t
0074460    a   t   s       =       l   v       p   b   i   >   >   P   B
0074500    I   .   p   u   p   .   w   o   r   d   s  \r                
0074520            M 376 001  \0 322   ,   o   v   e   B   l   o   c   k
0074540    (   s   t   a   t   s   ,       l   v       g   c   s   >   >
0074560    G   C   S   .   s   t   a   t   s   ,       l   e   n   S   t
0074600    a   t   s   )  \r                           s   t   a   t   s
0074620    >   >   S   t   a   t   s   .   f   r   e   e   P   B   I   s
0074640        =       Q   u   e   u   e   L   e   n   g   t   h   (   p
0074660    b   i   F   r   e   e   Q   )  \r                           l
0074700    e   t       l   e   n   V   e   r   s   i   o   n   T   e   x
0074720    t       =       v   e   r   s   i   o   n   T   e   x   t   >
0074740    >   S   t   r   i   n   g   .   l   e   n   g   t   h       r
0074760    s   h   i   f   t       1       +   1  \r                    
0075000        M   o   v   e   B   l   o   c   k   (   l   v       s   t
0075020    a   t   s   >   >   S   t   a   t   s   .   v   e   r   s   i
0075040    o   n   T   e   x   t   ,       v   e   r   s   i   o   n   T
0075060    e   x   t   ,       l   e   n   V   e   r   s   i   o   n   T
0075100    e   x   t   )  \r                           C   o   m   p   l
0075120    e   t   e   P   u   p   (   p 376 001  \0   E   E   b   i   ,
0075140        p   t   A   c   k   ,       p   u   p   O   v   B   y   t
0075160    e   s   +   (   l   e   n   S   t   a   t   s   +   l   e   n
0075200    V   e   r   s   i   o   n   T   e   x   t   )   *   2   )  \r
0075220                            e   n   d   c   a   s   e  \r        
0075240                    ]  \r               d   e   f   a   u   l   t
0075260    :  \r                           R   e   l   e   a   s   e   P
0075300    B   I   (   p   b   i   )  \r               ]  \r   ]       r
0075320    e   p   e   a   t  \r  \f  \r   /   /   -   -   -   -   -   -
0075340    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0075440    -   -   -   -   -  \r   a   n   d       G   C   S   S   t   o
0075460    r   e   (   c   t   x   )       b   e  \r   /   /   -   -   -
0075500    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0075520    -   -   -   -   -   -   -   -   -   -   -   -   - 376 001  \0
0075540  030   4   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0075560    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0075600    -   -   -   -   -   -   -   -   -   -   -   -   -  \r   /   /
0075620        A       s   e   p   a   r   a   t   e       c   o   n   t
0075640    e   x   t       t   h   a   t       d   o   e   s       t   h
0075660    e       f   i   l   e       t   r   a   n   s   f   e   r   .
0075700   \r   /   /       I   t       s   i   g   n   a   l   s       t
0075720    h   a   t       i   t       i   s       d   o   n   e       b
0075740    y       c   h   a   n   g   i   n   g       g   c   s   >   >
0075760    G   C   S   .   s   t   a   t   s   .   f   t   p   S   t   a
0076000    t   u   s  \r   /   /           t   o       a   n   y   t   h
0076020    i   n   g       o   t   h   e   r       t   h   a   n       s
0076040    t   a   t   u   s   B   u   s   y   .  \r   [  \r   l   e   t
0076060        p   b   i       =       c   t   x   >   >   G   C   T   X
0076100    .   p   b   i  \r   l   e   t       f   t   p       =       v
0076120    e   c       l   e   n   F   T   P   ;       Z   e   r   o   (
0076140    f   t 376 001  \0 315   ,   p   ,       l   e   n   F   T   P
0076160    )  \r   f   t   p   >   >   F   T   P   .   f   r   n   P   o
0076200    r   t       =       l   v       p   b   i   >   >   P   B   I
0076220    .   p   u   p   .   d   P   o   r   t  \r   Z   e   r   o   (
0076240    l   v       p   b   i   >   >   P   B   I   .   p   u   p   .
0076260    s   P   o   r   t   .   s   o   c   k   e   t   ,       2   )
0076300            /   /   l   e   t       O   p   e   n   L   e   v   e
0076320    l   1   S   o   c   k   e   t       p   i   c   k       t   h
0076340    e       s   o   c   k   e   t  \r   f   t   p   >   >   F   T
0076360    P   .   l   c   l   P   o   r   t       =       l   v       p
0076400    b   i   >   >   P   B   I   .   p   u   p   .   s   P   o   r
0076420    t           /   /   b   u   t       u   s   e       n   e   t
0076440    ,   h   o   s   t       i   n       r   e   q   u   e   s   t
0076460        p   u   p  \r   f   t   p   >   >   F   T   P   .   r   e
0076500    a   l   N   a   m   e       =       l   v       p   b   i   >
0076520    >   P   B   I   .   p   u   p   .   b   y   t   e   s  \r   f
0076540    t   p   >   >   F   T   P 376 001  \0 320   Y   .   t   e   m
0076560    p   N   a   m   e       =       "   T   E   M   P   .   G   C
0076600    "  \r   f   t   p   >   >   F   T   P   .   t   i   m   e   O
0076620    u   t   1       =       1   0   0  \r   f   t   p   >   >   F
0076640    T   P   .   t   i   m   e   O   u   t   2       =       2   0
0076660    0   0           /   /   2   0       s   e   c   o   n   d   s
0076700   \r   f   t   p   >   >   F   T   P   .   p   r   o   c   1    
0076720    =       G   a   t   e   C   o   n   S   t   a   r   t  \r   f
0076740    t   p   >   >   F   T   P   .   p   r   o   c   2       =    
0076760    G   a   t   e   C   o   n   E   n   d  \r  \r   l   e   t    
0077000    s   t   a   t   u   s       =       P   u   p   S   e   r   v
0077020    R   e   c   e   i   v   e   (   f   t   p   )   ?       s   t
0077040    a   t   u   s   Y   e   s   ,       s   t   a   t   u   s   N
0077060    o  \r   i   f       s   t   a   t   u   s       e   q       s
0077100    t   a   t   u   s   Y   e   s       t   h   e   n  \r        
0077120        [  \r               U   n   l   o   c   k   B   o   o   t
0077140    S   e   r   v   (   l   v       p   b   i   > 376 001  \0 317
0077160  316   >   P   B   I   .   p   u   p   .   b   y   t   e   s   )
0077200   \r               U   n   l   o   c   k   N   a   m   e   S   e
0077220    r   v   (   )  \r               ]  \r  \r   R   e   l   e   a
0077240    s   e   P   B   I   (   p   b   i   )  \r   U   n   q   u   e
0077260    u   e   (   c   t   x   Q   ,       c   t   x   )  \r   g   c
0077300    s   >   >   G   C   S   .   s   t   a   t   s   .   f   t   p
0077320    S   t   a   t   u   s       =       s   t   a   t   u   s    
0077340        /   /   s   i   g   n   a   l       t   h   a   t       w
0077360    e       a   r   e       d   o   n   e  \r   /   /       r   e
0077400    t   u   r   n   i   n   g       f   r   o   m       a       c
0077420    o   n   t   e   x   t       c   a   u   s   e   s       a   n
0077440        i   m   p   l   i   c   i   t       B   l   o   c   k   (
0077460    )  \r   ]  \r  \r   /   /   -   -   -   -   -   -   -   -   -
0077500    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0077560    - 376 001  \0   /   H   -   -   -   -   -   -   -   -   -   -
0077600    -   -   -   -   -   -   -  \r   a   n   d       G   a   t   e
0077620    C   o   n   S   t   a   r   t   (   s   o   c   )       b   e
0077640   \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -   -
0077660    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0077740    -   -   -   -   -   -   -   -   -   -   -   -   -   -  \r   /
0077760    /       T   h   i   s       i   s       w   h   e   r   e    
0100000    t   h   e       a   c   k       c   o   n   t   a   i   n   i
0100020    n   g       t   h   e       E   F   T   P       p   o   r   t
0100040        g   e   t   s       g   e   n   e   r   a   t   e   d   .
0100060   \r   [  \r   l   e   t       p   b   i       =       G   e   t
0100100    P   B   I   (   s   o   c   ,       t   r   u   e   )   ;    
0100120    i   f       p   b   i       n   e       0       t   h   e   n
0100140   \r               [  \r               S   e   t   P   u   p   I
0100160    D   (   p   b   i   , 376 001  \0 357   M       l   v       C
0100200    t   x   R   u   n   n   i   n   g   >   >   G   C   T   X   .
0100220    p   b   i   >   >   P   B   I   .   p   u   p   .   i   d   )
0100240   \r               M   o   v   e   B   l   o   c   k   (   l   v
0100260        p   b   i   >   >   P   B   I   .   p   u   p   .   w   o
0100300    r   d   s   ,       l   v       s   o   c   >   >   P   u   p
0100320    S   o   c   .   l   c   l   P   o   r   t   ,       l   e   n
0100340    P   o   r   t   )  \r               C   o   m   p   l   e   t
0100360    e   P   u   p   (   p   b   i   ,       p   t   A   c   k   ,
0100400        p   u   p   O   v   B   y   t   e   s   +   l   e   n   P
0100420    o   r   t   *   2   )  \r               ]  \r   ]  \r  \r   /
0100440    /   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0100460    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0100540    -   -   -   -   -   -   -   -   -   -   -   -  \r   a   n   d
0100560        G   a   t   e   C   o   n   E   n   d 376 001  \0   * 335
0100600    (   s   t   r   e   a   m   )       b   e  \r   /   /   -   -
0100620    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0100720    -   -   -   -   -   -   -   -   -  \r   [  \r   c   o   m   p
0100740    i   l   e   i   f       n   o   v   a       t   h   e   n  \r
0100760                [  \r               l   e   t       f   n       =
0101000        l   v       C   t   x   R   u   n   n   i   n   g   >   >
0101020    G   C   T   X   .   p   b   i   >   >   P   B   I   .   p   u
0101040    p   .   b   y   t   e   s  \r               i   f       S   t
0101060    r   i   n   g   C   o   m   p   a   r   e   (   f   n   ,    
0101100    "   .   S   V   "   ,       f   n   >   >   S   t   r   i   n
0101120    g   .   l   e   n   g   t   h   -   2   )       e   q       0
0101140        t   h   e   n  \r                           C   h   a   t
0101160    r   (   s   t   r   e   a   m   ,       2   0   0   0   0   b
0101200  376 001  \0 034 333   )           /   /       s   e   t       "
0101220    S   "       a   t   t   r   i   b   u   t   e       f   o   r
0101240        .   S   V       f   i   l   e  \r               ]  \r   L
0101260    o   c   k   B   o   o   t   S   e   r   v   (   )  \r   L   o
0101300    c   k   N   a   m   e   S   e   r   v   (   )  \r   ]  \r  \r
0101320    /   /   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0101340    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0101420    -   -   -   -   -   -   -   -   -   -   -   -   -  \r   a   n
0101440    d       G   C   S   R   e   t   r   i   e   v   e   (   c   t
0101460    x   )       b   e  \r   /   /   -   -   -   -   -   -   -   -
0101500    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0101600    -   -   -  \r   / 376 001  \0 240   Z   /       A       s   e
0101620    p   a   r   a   t   e       c   o   n   t   e   x   t       t
0101640    h   a   t       d   o   e   s       t   h   e       f   i   l
0101660    e       t   r   a   n   s   f   e   r   .  \r   /   /       I
0101700    t       s   i   g   n   a   l   s       t   h   a   t       i
0101720    t       i   s       d   o   n   e       b   y       c   h   a
0101740    n   g   i   n   g       g   c   s   >   >   G   C   S   .   s
0101760    t   a   t   s   .   f   t   p   S   t   a   t   u   s  \r   /
0102000    /           t   o       a   n   y   t   h   i   n   g       o
0102020    t   h   e   r       t   h   a   n       s   t   a   t   u   s
0102040    B   u   s   y   .  \r   [  \r   l   e   t       p   b   i    
0102060    =       c   t   x   >   >   G   C   T   X   .   p   b   i  \r
0102100    l   e   t       f   t   p       =       v   e   c       l   e
0102120    n   F   T   P   ;       Z   e   r   o   (   f   t   p   ,    
0102140    l   e   n   F   T   P   )  \r   f   t   p   >   >   F   T   P
0102160    .   f   r   n   P   o   r   t       =       l   v       p   b
0102200    i   >   >   P   B   I   .   p   u   p 376 001  \0 271 201   .
0102220    d   P   o   r   t  \r   Z   e   r   o   (   l   v       p   b
0102240    i   >   >   P   B   I   .   p   u   p   .   s   P   o   r   t
0102260    .   s   o   c   k   e   t   ,       2   )           /   /   l
0102300    e   t       O   p   e   n   L   e   v   e   l   1   S   o   c
0102320    k   e   t       p   i   c   k       t   h   e       s   o   c
0102340    k   e   t  \r   f   t   p   >   >   F   T   P   .   l   c   l
0102360    P   o   r   t       =       l   v       p   b   i   >   >   P
0102400    B   I   .   p   u   p   .   s   P   o   r   t           /   /
0102420    b   u   t       u   s   e       n   e   t   ,   h   o   s   t
0102440        i   n       r   e   q   u   e   s   t       p   u   p  \r
0102460    f   t   p   >   >   F   T   P   .   r   e   a   l   N   a   m
0102500    e       =       l   v       p   b   i   >   >   P   B   I   .
0102520    p   u   p   .   b   y   t   e   s  \r   f   t   p   >   >   F
0102540    T   P   .   t   i   m   e   O   u   t   1       =       5   0
0102560    0               /   /   5       s   e   c   o   n   d   s  \r
0102600    f   t   p   >   >   F   T   P   .   t   i   m   e   O   u 376
0102620   \0 346   F 340   t   2       =       2   0   0   0           /
0102640    /   2   0       s   e   c   o   n   d   s  \r  \r   l   e   t
0102660        s   t   a   t   u   s       =       P   u   p   S   e   r
0102700    v   S   e   n   d   (   f   t   p   )   ?       s   t   a   t
0102720    u   s   Y   e   s   ,       s   t   a   t   u   s   N   o  \r
0102740   \r   R   e   l   e   a   s   e   P   B   I   (   p   b   i   )
0102760   \r   U   n   q   u   e   u   e   (   c   t   x   Q   ,       c
0103000    t   x   )  \r   g   c   s   >   >   G   C   S   .   s   t   a
0103020    t   s   .   f   t   p   S   t   a   t   u   s       =       s
0103040    t   a   t   u   s           /   /   s   i   g   n   a   l    
0103060    t   h   a   t       w   e       a   r   e       d   o   n   e
0103100   \r   /   /       r   e   t   u   r   n   i   n   g       f   r
0103120    o   m       a       c   o   n   t   e   x   t       c   a   u
0103140    s   e   s       a   n       i   m   p   l   i   c   i   t    
0103160    B   l   o   c   k   (   )  \r   ]  \r 377  \0  \0   G   a   t
0103200    e   C   o   n   I   n   i   t   .   b   c   p   l  \0 376 001
0103220   \0 366 315   /   /       G   a   t   e   C   o   n   I   n   i
0103240    t   .   b   c   p   l  \r  \r   /   /       L   a   s   t    
0103260    m   o   d   i   f   i   e   d       F   e   b   r   u   a   r
0103300    y       6   ,       1   9   7   9           1   1   :   2   9
0103320        P   M       b   y       B   o   g   g   s  \r  \r   g   e
0103340    t       "   P   u   p   0   .   d   e   c   l   "  \r   g   e
0103360    t       "   P   u   p   1   .   d   e   c   l   "  \r   g   e
0103400    t       "   G   a   t   e   C   o   n   S   e   r   v   .   d
0103420    e   c   l   "  \r  \r   e   x   t   e   r   n   a   l  \r   [
0103440   \r   /   /       o   u   t   g   o   i   n   g       p   r   o
0103460    c   e   d   u   r   e   s  \r   C   r   e   a   t   e   G   a
0103500    t   e   C   o   n   S   e   r   v  \r  \r   /   /       i   n
0103520    c   o   m   i   n   g       p   r   o   c   e   d   u   r   e
0103540    s  \r   G   a   t   e   C   o   n   S   e   r   v   C   t   x
0103560    ;       O   p   e   n   L   e   v   e   l   1   S   o   c   k
0103600    e   t   ;       E   n   q   u   e   u   e  \r   A   l   l   o
0103620    c   a   t 376 001  \0 344   5   e   ;       Z   e   r   o   ;
0103640        I   n   i   t   i   a   l   i   z   e   C   o   n   t   e
0103660    x   t  \r  \r   /   /       i   n   c   o   m   i   n   g    
0103700    s   t   a   t   i   c   s  \r   @   g   c   s  \r   s   y   s
0103720    Z   o   n   e   ;       c   t   x   Q  \r   ]  \r  \r   m   a
0103740    n   i   f   e   s   t       g   c   s   s   s       =       a
0103760    l   t   o   ?       2   0   0   ,       1   0   0           /
0104000    /   g   a   t   e       c   o   n   t   r   o   l       s   e
0104020    r   v   e   r       s   t   a   c   k       s   i   z   e  \r
0104040   \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -   -
0104060    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0104140    -   -   -   -   -   -   -   -   -   -   -   -   -   -  \r   l
0104160    e   t       C   r   e   a   t   e   G   a   t   e   C   o   n
0104200    S   e   r   v   (   )       b   e  \r   /   /   -   -   -   -
0104220    -   -   -   -   -   -   -   - 376 001  \0 275   <   -   -   -
0104240    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0104320    -   -   -   -   -   -   -   -   -   -   -   -  \r   [  \r   g
0104340    c   s       =       A   l   l   o   c   a   t   e   (   s   y
0104360    s   Z   o   n   e   ,       l   e   n   G   C   S   )   ;    
0104400    Z   e   r   o   (   g   c   s   ,       l   e   n   G   C   S
0104420    )  \r   g   c   s   >   >   G   C   S   .   s   t   a   t   s
0104440    .   v   e   r   s   i   o   n       =       g   c   S   t   a
0104460    t   s   V   e   r   s   i   o   n  \r   E   n   q   u   e   u
0104500    e   (   c   t   x   Q   ,       I   n   i   t   i   a   l   i
0104520    z   e   C   o   n   t   e   x   t   (   A   l   l   o   c   a
0104540    t   e   (   s   y   s   Z   o   n   e   ,       g   c   s   s
0104560    s   )   ,       g   c   s   s   s   ,  \r       G   a   t   e
0104600    C   o   n   S   e   r   v   C   t   x   )   )  \r   g   c   s
0104620    >   >   G   C   S   .   s   o   c       =       A 376  \0   a
0104640  020 223   l   l   o   c   a   t   e   (   s   y   s   Z   o   n
0104660    e   ,       l   e   n   P   u   p   S   o   c   )  \r   O   p
0104700    e   n   L   e   v   e   l   1   S   o   c   k   e   t   (   g
0104720    c   s   >   >   G   C   S   .   s   o   c   ,       t   a   b
0104740    l   e       [       0   ;       g   c   S   o   c   k   e   t
0104760    1   ;       g   c   S   o   c   k   e   t   2       ]   )  \r
0105000    ]  \r  \r 377  \0  \0   G   a   t   e   w   a   y   .   c   m
0105020   \0 376  \0 302 211 244   G   a   t   e   w   a   y   .   b   c
0105040    p   l       G   a   t   e   w   a   y   I   n   i   t   .   b
0105060    c   p   l       G   a   t   e   F   o   r   w   a   r   d   .
0105100    d   e   c   l       G   a   t   e   F   o   r   w   a   r   d
0105120    .   b   c   p   l       G   a   t   e   F   o   r   I   n   i
0105140    t   .   b   c   p   l       G   a   t   e   P   a   r   a   m
0105160    e   t   e   r   .   b   c   p   l       G   a   t   e   C   o
0105200    n   S   e   r   v   .   d   e   c   l       G   a   t   e   C
0105220    o   n   S   e   r   v   .   b   c   p   l       G   a   t   e
0105240    C   o   n   I   n   i   t   .   b   c   p   l       G   a   t
0105260    e   w   a   y   .   c   m       C   o   m   p   i   l   e   G
0105300    a   t   e   w   a   y   .   c   m       L   o   a   d   G   a
0105320    t   e   w   a   y   .   c   m 377  \0  \0   C   o   m   p   i
0105340    l   e   G   a   t   e   w   a   y   .   c   m  \0 376  \0 254
0105360  234   {   B   C   P   L   /   F       G   A   T   E   W   A   Y
0105400    .   B   C   P   L   ;       B   C   P   L   /   F       G   A
0105420    T   E   W   A   Y   I   N   I   T   .   B   C   P   L   ;    
0105440    B   C   P   L   /   F       G   A   T   E   F   O   R   W   A
0105460    R   D   .   B   C   P   L   ;       B   C   P   L   /   F    
0105500    G   A   T   E   F   O   R   I   N   I   T   .   B   C   P   L
0105520    ;       B   C   P   L   /   F       G   A   T   E   P   A   R
0105540    A   M   E   T   E   R   .   B   C   P   L   ;       B   C   P
0105560    L   /   F       G   A   T   E   C   O   N   S   E   R   V   .
0105600    B   C   P   L   ;       B   C   P   L   /   F       G   A   T
0105620    E   C   O   N   I   N   I   T   .   B   C   P   L  \r 377  \0
0105640   \0   L   o   a   d   G   a   t   e   w   a   y   .   c   m  \0
0105660  376 001  \0  \a   k   B   L   D   R   /   L   /   V       7   0
0105700    0   /   W       1   2   0   0   /   N       B   U   T   I   L
0105720    /   U       D   E   B   U   G   3   /   I       G   A   T   E
0105740    W   A   Y       G   A   T   E   F   O   R   W   A   R   D    
0105760    G   A   T   E   C   O   N   S   E   R   V       P   U   P   E
0106000    C   H   O   S   E   R   V       P   U   P   M   I   S   C   S
0106020    E   R   V       P   U   P   N   A   M   E   S   E   R   V    
0106040    P   U   P   N   A   M   E   C   O   R   E       P   U   P   T
0106060    I   M   E   S   E   R   V       P   U   P   B   O   O   T   S
0106100    E   R   V       P   U   P   S   E   R   V   F   T   P       E
0106120    T   H   E   R   B   O   O   T       P   U   P   E   F   T   P
0106140        P   U   P   1   O   P   E   N   C   L   O   S   E       P
0106160    U   P   1   B       P   U   P   N   V   1   A       P   U   P
0106200    R   O   U   T   E       P   U   P   S   T   A   T   S   E   R
0106220    V       P   U   P   N   V   E   T   H   B       P   U   P   N
0106240    V   E   T   H   A       P   U   P   N   V   I   M   P   B    
0106260    P   U   P   N   V 376 001  \0 234   #   I   M   P   A       P
0106300    U   P   N   V   S   L   A   B       P   U   P   N   V   S   L
0106320    A   A       N   V   C   O   N   T   E   X   T       N   V   C
0106340    O   N   T   E   X   T   I   N   I   T       N   V   D   O   S
0106360    I   N   T   B       N   V   D   O   S   I   N   T   A       N
0106400    O   V   A   D   O   S   B       N   O   V   A   D   O   S   A
0106420        N   O   V   A   A   L   T   O   B       N   O   V   A   A
0106440    L   T   O   A       N   O   V   A   T   T   Y       N   V   R
0106460    I   N   G   B   Y   T   E   S       A   L   L   O   C       N
0106500    O   V   A   Q   U   E   U   E       N   O   V   A   T   I   M
0106520    E   R       G   A   T   E   W   A   Y   I   N   I   T       G
0106540    A   T   E   F   O   R   I   N   I   T       G   A   T   E   C
0106560    O   N   I   N   I   T       G   A   T   E   P   A   R   A   M
0106600    E   T   E   R       P   U   P   1   I   N   I   T       P   U
0106620    P   N   V   E   T   H   I   N   I   T       P   U   P   N   V
0106640    I   M   P   I   N   I   T       P   U   P   N   V   S   L   A
0106660    I   N   I   T       P   U   P   E   C 376  \0   7   k   s   H
0106700    O   I   N   I   T       P   U   P   M   I   S   C   I   N   I
0106720    T       P   U   P   N   A   M   E   I   N   I   T       P   U
0106740    P   T   I   M   E   I   N   I   T       P   U   P   B   O   O
0106760    T   I   N   I   T  \r 374                                    
0106767