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