$ od -c -N 50000 [_CD8_]<doradosource>pcprint.dm!4
0000000  377  \0  \0   p   c   p   r   i   n   t   .   b   c   p   l  \0
0000020  373 226   x 375 335  \0  \0 376 001  \0 357   ;   /   /  \r   /
0000040    /       P   r   i   n   t       m   i   c   r   o   -   P   C
0000060        h   i   s   t   o   g   r   a   m  \r   /   /       l   a
0000100    s   t       e   d   i   t   e   d       D   e   c   e   m   b
0000120    e   r       5   ,       1   9   8   0           1   2   :   3
0000140    1       P   M  \r   /   /  \r  \r   /   /  \t   >   p   c   p
0000160    r   i   n   t       (   i   n   p   u   t       f   i   l   e
0000200    )       (   .   M   B       f   i   l   e   )       (   o   u
0000220    t   p   u   t       f   i   l   e   )  \r   /   /       L   o
0000240    c   a   l       f   l   a   g   s       o   n       i   n   p
0000260    u   t       f   i   l   e   :  \r   /   /  \t   i   n   p   u
0000300    t   /   l       m   e   a   n   s       i   n   p   u   t    
0000320    i   s       i   n       L   i   s   p       f   o   r   m   a
0000340    t  \r   /   /  \t   b   a   n   k   ,   a   d   d   r   /   a
0000360        m   e   a   n   s       i   n   p   u   t       i   s    
0000400    i   n       X   M  \r  \r  \t   g   e   t       "   s   t   r
0000420    e   a   m   s   .   d   "  \r  \t   g   e   t 376 001  \0 302
0000440  326       "   a   l   t   o   d   e   f   s   .   d   "  \t   /
0000460    /       f   o   r       b   a   n   k   R   e   g   s  \r  \r
0000500    e   x   t   e   r   n   a   l  \r   [  \t  \t   /   /       O
0000520    S  \r  \t   C   l   o   s   e   s  \r  \t   D   o   u   b   l
0000540    e   A   d   d  \r  \t   E   n   d   o   f   s  \r  \t   M   o
0000560    v   e   B   l   o   c   k  \r  \t   O   p   e   n   F   i   l
0000600    e  \r  \t   R   e   a   d   B   l   o   c   k  \r  \t   d   s
0000620    p  \r  \t   f   p   C   o   m   C   m  \r  \t  \t   /   /    
0000640    G   P  \r  \t   S   e   t   u   p   R   e   a   d   P   a   r
0000660    a   m   ;       R   e   a   d   P   a   r   a   m   ;       E
0000700    v   a   l   P   a   r   a   m  \r  \t  \t   /   /       T   e
0000720    m   p   l   a   t   e  \r  \t   P   u   t   T   e   m   p   l
0000740    a   t   e  \r  \t  \t   /   /       P   C   H   i   s   t  \r
0000760   \t   R   e   a   d   L   i   s   p   P   C   H   i   s   t  \r
0001000   \t   S   c   a   n   M   B   F   o   r   P   C   H   i   s   t
0001020   \r  \t   P   r   i   n   t   P   C   H   i   s   t  \r   ]  \r
0001040   \r 376 001  \0 254   b  \r   m   a   n   i   f   e   s   t  \r
0001060    [  \t   l   H   i   s   t       =       1   0   0   0   0   b
0001100   \r   ]  \r  \r  \r   l   e   t       P   C   P   r   i   n   t
0001120    (   n   i   l   ,       n   i   l   ,       n   i   l   )    
0001140    b   e  \r   [  \t   l   e   t       c   o   m       =       O
0001160    p   e   n   F   i   l   e   (   0   ,       k   s   T   y   p
0001200    e   R   e   a   d   O   n   l   y   ,       c   h   a   r   I
0001220    t   e   m   ,       0   ,       f   p   C   o   m   C   m   )
0001240   \r  \t   l   e   t       n   v   ,       s   w   v       =    
0001260    v   e   c       1   0   0   ,       v   e   c       1   0   0
0001300   \r  \t   S   e   t   u   p   R   e   a   d   P   a   r   a   m
0001320    (   n   v   ,       s   w   v   ,       c   o   m   ,       s
0001340    w   v   )  \r  \t   l   e   t       d   n   v       =       v
0001360    e   c       1   0   0  \r  \t   l   e   t       m   n   v    
0001400    =       v   e   c       1   0   0  \r  \t   l   e   t       l
0001420    i   s   p   f       =       f   a   l   s   e  \r  \t   l   e
0001440    t       h   i   s   t 376 001  \0 031 330       =       v   e
0001460    c       l   H   i   s   t   *   2  \r  \t   l   e   t       x
0001500    a   d   d   r       =       v   e   c       2  \r  \t   x   a
0001520    d   d   r   !   0       =       -   1  \r  \t   R   e   a   d
0001540    P   a   r   a   m   (   $   P   ,       "   D   a   t   a    
0001560    i   n   p   u   t   :       "   ,       d   n   v   )  \r  \t
0001600    s   w   i   t   c   h   o   n       (   s   w   v   !   0    
0001620    e   q       0   ?       0   ,       s   w   v   !   1       &
0001640        1   3   7   b   )       i   n   t   o  \r  \t   [       c
0001660    a   s   e       $   A   :  \r  \t                   g   e   t
0001700    A   d   d   r   (   n   v   ,       x   a   d   d   r   )  \r
0001720   \t                   g   e   t   X   M   H   i   s   t   (   x
0001740    a   d   d   r   ,       h   i   s   t   )  \r  \t            
0001760        d   n   v   !   0       =       0  \r  \t                
0002000    e   n   d   c   a   s   e  \r  \t           c   a   s   e    
0002020    $   L   :  \r  \t                   l   i   s   p   f       =
0002040        t   r   u   e  \r  \t           d   e 376 001  \0 230 027
0002060    f   a   u   l   t   :  \r  \t   ]  \r  \t   R   e   a   d   P
0002100    a   r   a   m   (   $   P   ,       "   .   M   B       f   i
0002120    l   e   :       "   ,       m   n   v   )  \r  \t   l   e   t
0002140        l   s   t       =       R   e   a   d   P   a   r   a   m
0002160    (   $   O   ,       "   L   i   s   t   i   n   g       o   u
0002200    t   p   u   t       f   i   l   e   :       "   )  \r  \t   l
0002220    e   t       i   n       =       n   i   l  \r  \t   i   f    
0002240    d   n   v   !   0       n   e       0       t   h   e   n  \r
0002260   \t   [       [       i   n       =       O   p   e   n   F   i
0002300    l   e   (   d   n   v   ,       k   s   T   y   p   e   R   e
0002320    a   d   O   n   l   y   ,       w   o   r   d   I   t   e   m
0002340    )  \r  \t                   i   f       i   n       n   e    
0002360    0       t   h   e   n  \r  \t                   [       l   e
0002400    t       r       =       0  \r  \t                           t
0002420    e   s   t       l   i   s   p   f  \r  \t                    
0002440            i   f   s   o       r       =       R   e   a   d   L
0002460  376 001  \0 002 321   i   s   p   P   C   H   i   s   t   (   i
0002500    n   ,       h   i   s   t   )  \r  \t                        
0002520        i   f   n   o   t  \r  \t                           [    
0002540    i   f       (   R   e   a   d   B   l   o   c   k   (   i   n
0002560    ,       h   i   s   t   ,       l   H   i   s   t   *   2   )
0002600        n   e       (   l   H   i   s   t   *   2   )   )       %
0002620        n   o   t       E   n   d   o   f   s   (   i   n   )    
0002640    t   h   e   n  \r  \t                                        
0002660    r       =       "   I   n   c   o   r   r   e   c   t       f
0002700    i   l   e       l   e   n   g   t   h   "      \r  \t        
0002720                    ]  \r  \t                           C   l   o
0002740    s   e   s   (   i   n   )  \r  \t                           i
0002760    f       r       e   q       0       b   r   e   a   k  \r  \t
0003000                            P   u   t   T   e   m   p   l   a   t
0003020    e   (   d   s   p   ,       "   $   S   *   N   "   ,       r
0003040    )  \r  \t                   ]  \r  \t                   R   e
0003060    a   d   P   a   r 376 001  \0   n 035   a   m   (   $   P   ,
0003100        "   D   a   t   a       i   n   p   u   t       f   i   l
0003120    e   :       "   ,       d   n   v   )  \r  \t           ]    
0003140    r   e   p   e   a   t  \r  \t   ]  \r  \t   [       i   n    
0003160    =       O   p   e   n   F   i   l   e   (   m   n   v   ,    
0003200    k   s   T   y   p   e   R   e   a   d   O   n   l   y   ,    
0003220    w   o   r   d   I   t   e   m   )  \r  \t           i   f    
0003240    i   n       n   e       0       t   h   e   n  \r  \t        
0003260    [       l   e   t       r       =       S   c   a   n   M   B
0003300    F   o   r   P   C   H   i   s   t   (   i   n   )  \r  \t    
0003320                C   l   o   s   e   s   (   i   n   )  \r  \t    
0003340                i   f       r       e   q       0       b   r   e
0003360    a   k  \r  \t                   P   u   t   T   e   m   p   l
0003400    a   t   e   (   d   s   p   ,       "   $   S   *   N   "   ,
0003420        r   )  \r  \t           ]  \r  \t           R   e   a   d
0003440    P   a   r   a   m   (   $   P   ,       "   .   M   B       f
0003460    i   l   e   :       "   ,       m   n 376 001  \0 322 335   v
0003500    )  \r  \t   ]       r   e   p   e   a   t  \r  \t   C   l   o
0003520    s   e   s   (   c   o   m   )  \r  \t   P   u   t   T   e   m
0003540    p   l   a   t   e   (   l   s   t   ,       "   D   a   t   a
0003560        f   r   o   m       $   S       /       $   S   *   N   *
0003600    N   "   ,       (   d   n   v   !   0       e   q       0   ?
0003620        "   X   M   "   ,       d   n   v   )   ,       m   n   v
0003640    )  \r  \t   P   r   i   n   t   P   C   H   i   s   t   (   l
0003660    s   t   ,       h   i   s   t   )  \r  \t   C   l   o   s   e
0003700    s   (   l   s   t   )  \r   ]  \r  \r   a   n   d       f   a
0003720    i   l   (   s   t   r   )       b   e  \r   [  \t   P   u   t
0003740    T   e   m   p   l   a   t   e   (   d   s   p   ,       "   *
0003760    N   $   S   *   N   "   ,       s   t   r   )  \r  \t   f   i
0004000    n   i   s   h  \r   ]  \r  \r   a   n   d       g   e   t   A
0004020    d   d   r   (   a   r   g   v   e   c   ,       x   a   d   d
0004040    r   )       b   e  \r   [  \t   l   e   t       d   g   t    
0004060    =       v   e   c       2  \r  \t   d   g   t   !   0     376
0004100  001  \0 331   u   =       0  \r  \t   x   a   d   d   r   !   0
0004120    ,       x   a   d   d   r   !   1       =       0   ,       0
0004140   \r  \t   l   e   t       x   b   a   n   k       =       0  \r
0004160   \t   f   o   r       i       =       1       t   o       a   r
0004200    g   v   e   c   !   0       d   o  \r  \t   [       t   e   s
0004220    t       a   r   g   v   e   c   !   i       e   q       $   ,
0004240   \r  \t               i   f   s   o       [       x   b   a   n
0004260    k       =       x   a   d   d   r   !   1   ;       x   a   d
0004300    d   r   !   1       =       0       ]  \r  \t               i
0004320    f   n   o   t  \r  \t           [       x   a   d   d   r   !
0004340    0       =       (   x   a   d   d   r   !   0       l   s   h
0004360    i   f   t       3   )       +       (   x   a   d   d   r   !
0004400    1       r   s   h   i   f   t       1   3   )  \r  \t        
0004420            x   a   d   d   r   !   1       =       x   a   d   d
0004440    r   !   1       l   s   h   i   f   t       3  \r  \t        
0004460            d   g   t   !   1       =       a   r   g   v   e   c
0004500    !   i   -   $ 376 001  \0 220   ?   0  \r  \t                
0004520    D   o   u   b   l   e   A   d   d   (   x   a   d   d   r   ,
0004540        d   g   t   )  \r  \t           ]  \r  \t   ]  \r  \t   x
0004560    a   d   d   r   !   0       =       x   a   d   d   r   !   0
0004600        +       x   b   a   n   k  \r   ]  \r  \r   a   n   d    
0004620    g   e   t   X   M   H   i   s   t   (   x   a   d   d   r   ,
0004640        h   i   s   t   )       b   e  \r   [  \t   i   f       x
0004660    a   d   d   r   !   0       e   q       -   1       t   h   e
0004700    n       f   a   i   l   (   "   N   o       X   M       a   d
0004720    d   r   e   s   s       s   p   e   c   i   f   i   e   d   "
0004740    )  \r  \t   l   e   t       X   M   L   D   A       =       t
0004760    a   b   l   e   [  \r  \t           1   0   5   0   0   0   b
0005000   \t   /   /       m   o   v       0       1  \r  \t            
0005020    6   1   0   2   5   b  \t   /   /       x   m   l   d   a  \r
0005040   \t                   1   4   0   1   b  \t   /   /       j   m
0005060    p       1   ,   3  \r  \t       ]  \r  \t   @   b   a   n   k
0005100    R   e   g   s       =       x   a 376  \0   Q 026 245   d   d
0005120    r   !   0  \r  \t   l   e   t       a   d   d   r       =    
0005140    x   a   d   d   r   !   1  \r  \t   f   o   r       i       =
0005160        0       t   o       l   H   i   s   t   *   2   -   1    
0005200    d   o  \r  \t           h   i   s   t   !   i       =       X
0005220    M   L   D   A   (   a   d   d   r   +   i   )  \r   ]  \r 377
0005240   \0  \0   p   c   h   i   s   t   .   b   c   p   l  \0 373 226
0005260    k   E   >  \0  \0 376 001  \0 300 030   /   /       P   a   c
0005300    k   a   g   e       f   o   r       a   n   a   l   y   z   i
0005320    n   g       m   i   c   r   o   -   P   C       h   i   s   t
0005340    o   g   r   a   m   s  \r   /   /       l   a   s   t       e
0005360    d   i   t   e   d       D   e   c   e   m   b   e   r       1
0005400    9   ,       1   9   8   0           2   :   2   1       P   M
0005420   \r  \r  \r   e   x   t   e   r   n   a   l  \t   /   /       d
0005440    e   f   i   n   e   d       h   e   r   e  \r   [  \t   R   e
0005460    a   d   L   i   s   p   P   C   H   i   s   t  \t   /   /    
0005500    (   i   n   s   t   r   m   ,       h   i   s   t   )       -
0005520    >       0   /   s   t   r   i   n   g  \r  \t   S   c   a   n
0005540    M   B   F   o   r   P   C   H   i   s   t  \t   /   /       (
0005560    m   b   s   t   r   m   [   ,       z   o   n   e   ]   )    
0005600    -   >       0   /   s   t   r   i   n   g  \r  \t   P   r   i
0005620    n   t   P   C   H   i   s   t  \t   /   /       (   o   u   t
0005640    s   t   r   m   ,       h   i   s   t   )  \r   ]  \r  \r  \r
0005660    e   x   t   e   r   n   a   l  \r   [ 376 001  \0   E 334  \t
0005700   \t   /   /       O   S  \r  \t   A   l   l   o   c   a   t   e
0005720   \r  \t   D   o   u   b   l   e   A   d   d   ;       D   v   e
0005740    c  \r  \t   E   n   d   o   f   s  \r  \t   G   e   t   F   i
0005760    x   e   d   ;       G   e   t   s  \r  \t   M   o   v   e   B
0006000    l   o   c   k  \r  \t   N   o   o   p  \r  \t   o   n   e   B
0006020    i   t   s  \r  \t   P   u   t   s  \r  \t   R   e   a   d   B
0006040    l   o   c   k  \r  \t   S   e   t   B   l   o   c   k  \r  \t
0006060    U   s   c  \r  \t   W   r   i   t   e   B   l   o   c   k   ;
0006100        W   s   ;       W   s   s  \r  \t   Z   e   r   o  \r  \t
0006120   \t   /   /       R   e   a   d   M   B  \r  \t   R   e   a   d
0006140    M   B  \r  \t  \t   /   /       T   e   m   p   l   a   t   e
0006160   \r  \t   P   u   t   T   e   m   p   l   a   t   e  \r  \t  \t
0006200    /   /       D   P   D   i   v   i   d   e  \r  \t   D   P   D
0006220    I   V   I   D   E  \r   ]  \r  \r  \r   m   a   n   i   f   e
0006240    s   t  \r   [  \t   l   v   M   u   l   t   i   p   l   y    
0006260    =       3   4   3   b  \t   /   /       B   c   p   l     376
0006300  001  \0   i 233   M   u   l   t   i   p   l   y       s   u   b
0006320    r   o   u   t   i   n   e  \r  \t   l   H   i   s   t       =
0006340        1   0   0   0   0   b  \t  \t   /   /       l   e   n   g
0006360    t   h       o   f       h   i   s   t   o   g   r   a   m  \r
0006400   \t   l   H   E       =       2  \t  \t  \t   /   /       l   e
0006420    n   g   t   h       o   f       h   i   s   t   o   g   r   a
0006440    m       e   n   t   r   y  \r  \t   l   L   i   n   e       =
0006460        9   6  \t  \t   /   /       l   i   n   e       w   i   d
0006500    t   h       (   a   s   s   u   m   e   s       G   a   c   h
0006520    a   8       o   n       d   i   s   p   l   a   y   ,  \r  \t
0006540   \t  \t  \t   /   /       G   a   c   h   a   6       o   n    
0006560    p   r   i   n   t   e   r   )  \r  \t   l   L   a   b   e   l
0006600    0       =       3   2  \t  \t   /   /       w   i   d   t   h
0006620        o   f       l   a   b   e   l       f   o   r       D   o
0006640    l   p   h   i   n  \r  \t   l   L   a   b   e   l   1       =
0006660        2   7  \t  \t   /   /       w   i   d   t   h       o   f
0006700        l   a   b 376 001  \0   , 357   e   l       f   o   r    
0006720    D   o   r   a   d   o  \r  \t   s   t   a   r   F   a   c   t
0006740    o   r       =       2   0   0   0  \t   /   /       p   r   o
0006760    p   o   r   t   i   o   n       o   f       t   o   t   a   l
0007000        f   o   r       o   n   e       *  \r  \t   u   p   c   E
0007020    v   e   n   t   T   y   p   e       =       2   1   4   b  \t
0007040    /   /       "   e   v   e   n   t       t   y   p   e   "    
0007060    i   n       L   i   s   p   -   f   o   r   m   a   t       l
0007100    o   g       f   i   l   e  \r  \t   u   p   c   B   l   o   c
0007120    k   S   i   z   e       =       6   4  \t   /   /       e   n
0007140    t   r   i   e   s       p   e   r       b   l   o   c   k  \r
0007160    ]  \r  \r   s   t   r   u   c   t   u   r   e       B   S   :
0007200        [       l   e   n   g   t   h       b   y   t   e   ;    
0007220    c   h   a   r   ^   1   ,   2   5   5       b   y   t   e    
0007240    ]  \r  \r   s   t   r   u   c   t   u   r   e       E   v   e
0007260    n   t   :       [       t   y   p   e       b   y   t   e   ;
0007300        a   r   g       b   y   t   e 376 001  \0 342  \b       ]
0007320   \r  \r   s   t   r   u   c   t   u   r   e       M   I   0   :
0007340   \t   /   /       D   o   l   p   h   i   n       m   i   c   r
0007360    o   i   n   s   t   r   u   c   t   i   o   n       -   -    
0007400    a   s       o   u   t   p   u   t       b   y       M   i   c
0007420    r   o   D  \r   [  \t   w   0       w   o   r   d       =  \r
0007440   \t   [       m   e   m   i   n   s   t       b   i   t       1
0007460   \r  \t           r   m   o   d       b   i   t       1  \r  \t
0007500            =       d   f   2       b   i   t       1  \r  \t    
0007520        r   s   e   l   h   i   4       b   i   t       4  \r  \t
0007540            a   l   u   f       b   i   t       4  \r  \t        
0007560    =       t   y   p   e       b   i   t       4  \r  \t        
0007600    [       b   s   e   l       b   i   t       2  \r  \t        
0007620            f   1       b   i   t       4  \r  \t           ]    
0007640    =       s   r   c   d   e   s   t   h   i   6       b   i   t
0007660        6  \r  \t   ]  \r  \t   w   1       w   o   r   d       =
0007700   \r  \t   [       [       l   r       b   i   t       1 376 001
0007720   \0   E   ~  \r  \t                   l   t       b   i   t    
0007740    1  \r  \t           ]       =       s   r   c   d   e   s   t
0007760    l   o   2       b   i   t       2  \r  \t           f   2    
0010000    b   i   t       4  \r  \t           j   c       b   i   t    
0010020    3  \r  \t           j   a   l   o   6       b   i   t       6
0010040   \r  \t           p   a   r   i   t   y       b   i   t       1
0010060   \r  \t   ]  \r  \t   w   2       w   o   r   d       =  \r  \t
0010100    [       r   s   e   l   l   o   2       b   i   t       2  \r
0010120   \t           j   a   h   i   2       b   i   t       2  \r  \t
0010140            b   l   a   n   k       b   i   t       1   2  \r  \t
0010160    ]  \r   ]  \r  \r   m   a   n   i   f   e   s   t  \r   [  \t
0010200    f   1   L   o   a   d   P   a   g   e   0       =       5  \r
0010220   \t   j   c   C   a   l   l   0       =       5  \r  \t   j   c
0010240    R   e   t   u   r   n   0       =       6  \r   ]  \r  \r   s
0010260    t   r   u   c   t   u   r   e       M   I   1   :  \t   /   /
0010300        D   o   r   a   d   o       m   i   c   r   o   i   n   s
0010320    t   r   u 376 001  \0   L   ^   c   t   i   o   n       -   -
0010340        a   s       o   u   t   p   u   t       b   y       M   i
0010360    c   r   o   D  \r   [  \t   w   0       w   o   r   d       =
0010400   \r  \t   [       r   s   t   k       b   i   t       4  \r  \t
0010420            a   l   u   f       b   i   t       4  \r  \t        
0010440    b   s   e   l       b   i   t       3  \r  \t           l   c
0010460        b   i   t       3  \r  \t           a   s   e   l   x   2
0010500        b   i   t       2  \r  \t   ]  \r  \t   w   1       w   o
0010520    r   d       =  \r  \t   [       a   s   e   l   l   o   1    
0010540    b   i   t       1  \r  \t           b   l   o   c   k       b
0010560    i   t       1  \r  \t           f   f       b   i   t       8
0010600   \r  \t           j   c   n       b   i   t       6  \r  \t    
0010620        =       [       j   c   l   o   c   a   l       b   i   t
0010640        2   ;       j   n   l   o   c   a   l   x   4       b   i
0010660    t       4       ]  \r  \t           =       [       j   c   g
0010700    l   o   b   a   l       b   i   t       2   ;       j   n   g
0010720    l   o   b   a   l   x   4     376 001  \0   5 221   b   i   t
0010740        4       ]  \r  \t           =       [       j   c   l   o
0010760    n   g       b   i   t       4   ;       j   n   l   o   n   g
0011000    x   4       b   i   t       2       ]  \r  \t           =    
0011020    [       j   c   f   a   s   t       b   i   t       1   ;    
0011040    j   n   f   a   s   t   x   8       b   i   t       2   ;    
0011060    j   n   f   a   s   t   x   2       b   i   t       2   ;    
0011100    j   c   o   n   d   x   4       b   i   t       1       ]  \r
0011120   \t   ]  \r  \t   w   2       w   o   r   d       =  \r  \t   [
0011140        j   n   l   o       b   i   t       2  \r  \t           =
0011160        j   c   o   n   d   l   o       b   i   t       2  \r  \t
0011200            b   r   k   p       b   i   t       2  \r  \t        
0011220    b   l   a   n   k       b   i   t       1   2  \r  \t   ]  \r
0011240    ]  \r  \r   m   a   n   i   f   e   s   t  \r   [  \t   j   c
0011260    L   o   c   a   l   1       =       2  \r  \t   j   c   G   l
0011300    o   b   a   l   1       =       3  \r  \t   j   c   L   o   n
0011320    g   1       =       0  \r  \t   j   c   F   a   s 376 001  \0
0011340  266 350   t   1       =       0  \r   ]  \r  \r   m   a   n   i
0011360    f   e   s   t       [       l   M   I       =       3       ]
0011400   \t  \t   /   /       w   i   d   t   h       o   f       m   i
0011420    c   r   o   i   n   s   t   r   u   c   t   i   o   n  \r  \r
0011440    s   t   r   u   c   t   u   r   e       I   F   U   M   :  \t
0011460    /   /       D   o   r   a   d   o       I   F   U       m   e
0011500    m   o   r   y       -   -       a   s       o   u   t   p   u
0011520    t       b   y       M   i   c   r   o   D  \r   [  \t   i   w
0011540    0       w   o   r   d       =  \r  \t   [       P   A       b
0011560    i   t       6  \t   /   /       o   n   l   y       u   s   e
0011600    s       l   o   w       b   i   t  \r  \t           n   o   t
0011620    I   F   A   D   r   2       b   i   t       1   0  \t   /   /
0011640        n   o   t       (   a   d   d   r   e   s   s       r   s
0011660    h   i   f   t       2   )  \r  \t   ]  \r  \t   i   w   1    
0011700    w   o   r   d       =  \r  \t   [       S   i   g   n       b
0011720    i   t       1  \r  \t           I   P   a   r       b   i   t
0011740        3 376 001  \0 037 374  \r  \t           n   o   t   L   e
0011760    n   g   t   h       b   i   t       2  \r  \t           n   o
0012000    t   R   B   a   s   e   B       b   i   t       1  \r  \t    
0012020        M   e   m   B       b   i   t       3  \r  \t           n
0012040    o   t   T   P   a   u   s   e       b   i   t       1  \r  \t
0012060            n   o   t   T   J   u   m   p       b   i   t       1
0012100   \r  \t           N       b   i   t       4  \r  \t   ]  \r   ]
0012120   \r  \r   m   a   n   i   f   e   s   t       [       I   F   A
0012140    D   r   2   m   a   s   k       =       1   7   7   7   b    
0012160    ]  \t   /   /       c   o   m   p   l   e   m   e   n   t    
0012200    n   o   t   I   F   A   D   r   2       w   r   t       t   h
0012220    i   s  \r  \r  \r   s   t   a   t   i   c  \r   [  \t   i   m
0012240    x       =       -   1  \t   /   /       m   e   m   o   r   y
0012260        i   n   d   e   x       o   f       I   M  \r  \t   r   i
0012300    m   a   p  \t   /   /       r   e   a   l       t   o       i
0012320    m   a   g   i   n   a   r   y       a   d   d   r   e   s   s
0012340        m   a   p  \r  \t   i 376 001  \0     342   r   m   a   p
0012360   \t   /   /       i   m   a   g   i   n   a   r   y       t   o
0012400        r   e   a   l       a   d   d   r   e   s   s       m   a
0012420    p  \r  \t   i   s   y   m   a   p  \t   /   /       i   m   a
0012440    g   i   n   a   r   y       a   d   d   r   e   s   s       t
0012460    o       s   y   m   b   o   l       m   a   p  \r  \t   i   d
0012500    a   t   a  \t   /   /       c   o   n   t   e   n   t   s    
0012520    o   f       I   M  \r  \t   i   f   u   e  \t   /   /       f
0012540    l   a   g   s       f   o   r       I   F   U       e   n   t
0012560    r   i   e   s  \r  \t   m   a   c   h   i   n   e       =    
0012600    -   1  \t   /   /       0       f   o   r       D   o   l   p
0012620    h   i   n   ,       1       f   o   r       D   o   r   a   d
0012640    o  \r  \t   m   b   z   o   n   e  \t   /   /       z   o   n
0012660    e       f   o   r       a   l   l   o   c   a   t   i   n   g
0012700        s   y   m   b   o   l   s  \r  \t   s   p   e   c   i   a
0012720    l  \t   /   /       p   r   o   c   e   d   u   r   e       f
0012740    o   r       m   a   c   h   i   n   e   -   d 376 001  \0 332
0012760  233   e   p   e   n   d   e   n   t       o   u   t   p   u   t
0013000   \r  \t   l   L   a   b   e   l  \t   /   /       m   a   c   h
0013020    i   n   e   -   d   e   p   e   n   d   e   n   t       l   a
0013040    b   e   l       w   i   d   t   h  \r  \t   n   C   a   l   l
0013060    s  \t   /   /       c   o   u   n   t       #       o   f    
0013100    c   a   l   l       i   n   s   t   r   u   c   t   i   o   n
0013120    s  \r   ]  \r  \r  \r   l   e   t       R   e   a   d   L   i
0013140    s   p   P   C   H   i   s   t   (   i   n   ,       h   i   s
0013160    t   )       =       v   a   l   o   f  \r   [  \t   Z   e   r
0013200    o   (   h   i   s   t   ,       l   H   i   s   t   *   l   H
0013220    E   )  \r  \t   u   n   t   i   l       E   n   d   o   f   s
0013240    (   i   n   )       d   o  \r  \t   [       l   e   t       e
0013260    v   e   n   t       =       G   e   t   s   (   i   n   )  \r
0013300   \t           l   e   t       t   y   p   e       =       e   v
0013320    e   n   t   <   <   E   v   e   n   t   .   t   y   p   e  \r
0013340   \t           t   e   s   t       t   y   p   e       e   q    
0013360    u 376 001  \0 375 252   p   c   E   v   e   n   t   T   y   p
0013400    e  \r  \t               i   f   s   o  \r  \t           [    
0013420    l   e   t       b   l   o   c   k       =       G   e   t   s
0013440    (   i   n   )  \r  \t                   i   f       (   e   v
0013460    e   n   t   <   <   E   v   e   n   t   .   a   r   g       n
0013500    e       u   p   c   B   l   o   c   k   S   i   z   e   *   l
0013520    H   E   )       %       (   U   s   c   (   b   l   o   c   k
0013540    ,       l   H   i   s   t   /   u   p   c   B   l   o   c   k
0013560    S   i   z   e   )       g   e       0   )       t   h   e   n
0013600   \r  \t                           r   e   s   u   l   t   i   s
0013620        "   I   l   l   e   g   a   l       d   a   t   a       f
0013640    i   l   e   "  \r  \t                   R   e   a   d   B   l
0013660    o   c   k   (   i   n   ,       h   i   s   t   +   b   l   o
0013700    c   k   *   u   p   c   B   l   o   c   k   S   i   z   e   *
0013720    l   H   E   ,       u   p   c   B   l   o   c   k   S   i   z
0013740    e   *   l   H   E   )  \r  \t           ]  \r  \t            
0013760    i   f   n   o   t  \r 376 001  \0 215 362  \t           s   w
0014000    i   t   c   h   o   n       t   y   p   e       r   s   h   i
0014020    f   t       6       i   n   t   o  \r  \t           [       c
0014040    a   s   e       2   :       f   o   r       i       =       0
0014060        t   o       e   v   e   n   t   <   <   E   v   e   n   t
0014100    .   a   r   g       d   o       G   e   t   s   (   i   n   )
0014120    ;       e   n   d   c   a   s   e  \r  \t                   c
0014140    a   s   e       3   :       G   e   t   s   (   i   n   )   ;
0014160        G   e   t   s   (   i   n   )  \r  \t                   c
0014200    a   s   e       1   :       G   e   t   s   (   i   n   )  \r
0014220   \t                   c   a   s   e       0   :  \r  \t        
0014240    ]  \r  \t   ]  \r  \t   r   e   s   u   l   t   i   s       0
0014260   \r   ]  \r  \r   a   n   d       S   c   a   n   M   B   F   o
0014300    r   P   C   H   i   s   t   (   m   b   i   n   ,       z   o
0014320    n   e   ;       n   u   m   a   r   g   s       n   a   )    
0014340    =       v   a   l   o   f  \r   [  \t   l   e   t       a   l
0014360    l   o   c   f   i   x   e   d   (   z   o 376 001  \0 212   Q
0014400    n   e   ,       n   )       =       G   e   t   F   i   x   e
0014420    d   (   n   )  \r  \t   i   f       n   a       l   s       2
0014440        t   h   e   n       z   o   n   e       =       l   v    
0014460    a   l   l   o   c   f   i   x   e   d  \r  \t   m   b   z   o
0014500    n   e       =       z   o   n   e  \r  \t   i   m   x   ,    
0014520    m   a   c   h   i   n   e       =       -   1   ,       -   1
0014540   \r  \t   r   i   m   a   p       =       A   l   l   o   c   a
0014560    t   e   (   z   o   n   e   ,       l   H   i   s   t   )  \t
0014600    /   /       R   e   a   l       t   o       i   m   a   g   i
0014620    n   a   r   y       a   d   d   r   e   s   s       m   a   p
0014640   \r  \t   S   e   t   B   l   o   c   k   (   r   i   m   a   p
0014660    ,       -   1   ,       l   H   i   s   t   )  \r  \t   i   r
0014700    m   a   p       =       A   l   l   o   c   a   t   e   (   z
0014720    o   n   e   ,       l   H   i   s   t   )  \t   /   /       I
0014740    m   a   g   i   n   a   r   y       t   o       r   e   a   l
0014760        a   d   d   r   e   s   s       m   a   p  \r  \t   S   e
0015000  376 001  \0   C 006   t   B   l   o   c   k   (   i   r   m   a
0015020    p   ,       -   1   ,       l   H   i   s   t   )  \r  \t   i
0015040    s   y   m   a   p       =       A   l   l   o   c   a   t   e
0015060    (   z   o   n   e   ,       l   H   i   s   t   )  \t   /   /
0015100        I   m   a   g   i   n   a   r   y       t   o       s   y
0015120    m   b   o   l   i   c       a   d   d   r   e   s   s       m
0015140    a   p  \r  \t   Z   e   r   o   (   i   s   y   m   a   p   ,
0015160        l   H   i   s   t   )  \r  \t   i   s   y   m   a   p   !
0015200    0       =       "   "  \r  \t   i   d   a   t   a       =    
0015220    A   l   l   o   c   a   t   e   (   z   o   n   e   ,       l
0015240    H   i   s   t   *   l   M   I   )  \t   /   /       c   o   n
0015260    t   e   n   t   s       o   f       I   M  \r  \t   i   f   u
0015300    e       =       A   l   l   o   c   a   t   e   (   z   o   n
0015320    e   ,       l   H   i   s   t   /   6   4   )  \t   /   /    
0015340    I   F   U       e   n   t   r   y       f   l   a   g   s   ,
0015360        o   n   l   y       e   v   e   r   y       4   t   h    
0015400    i   n   s   t   r 376 001  \0   C   &   u   c   t   i   o   n
0015420   \r  \t   Z   e   r   o   (   i   f   u   e   ,       l   H   i
0015440    s   t   /   6   4   )  \r  \t   r   e   s   u   l   t   i   s
0015460        R   e   a   d   M   B   (   m   b   i   n   ,       2   0
0015500    ,       p   m   e   m   p   r   o   c   ,       p   s   y   m
0015520    p   r   o   c   )  \r   ]  \r  \r   a   n   d       P   r   i
0015540    n   t   P   C   H   i   s   t   (   o   u   t   ,       h   i
0015560    s   t   )       b   e  \r   [  \t   s   w   i   t   c   h   o
0015600    n       m   a   c   h   i   n   e       i   n   t   o  \r  \t
0015620    [       c   a   s   e       0   :       s   p   e   c   i   a
0015640    l   ,       l   L   a   b   e   l       =       s   p   e   c
0015660    i   a   l   0   ,       l   L   a   b   e   l   0   ;       e
0015700    n   d   c   a   s   e  \r  \t           c   a   s   e       1
0015720    :       s   p   e   c   i   a   l   ,       l   L   a   b   e
0015740    l       =       s   p   e   c   i   a   l   1   ,       l   L
0015760    a   b   e   l   1   ;       e   n   d   c   a   s   e  \r  \t
0016000    ]  \r  \t   m   a   i   n   p   r   i 376 001  \0   1 200   n
0016020    t   (   o   u   t   ,       h   i   s   t   )  \r  \t   i   f
0016040        m   a   c   h   i   n   e       e   q       1       t   h
0016060    e   n       c   a   l   l   p   r   i   n   t   (   o   u   t
0016100    ,       h   i   s   t   )  \r   ]  \r  \r   a   n   d       m
0016120    a   i   n   p   r   i   n   t   (   o   u   t   ,       h   i
0016140    s   t   )       b   e  \r   [  \t   l   e   t       t   o   t
0016160    a   l       =       v   e   c       2  \r  \t   t   o   t   a
0016200    l   !   0   ,       t   o   t   a   l   !   1       =       0
0016220    ,       0  \r  \t   l   e   t       n   o   n   z   e   r   o
0016240        =       0  \r  \t   l   e   t       e   n   t   r   y    
0016260    =       v   e   c       2  \r  \t   f   o   r       i       =
0016300        0       t   o       l   H   i   s   t   -   1       d   o
0016320   \r  \t   [       l   e   t       h   p       =       h   i   s
0016340    t   +   i   *   l   H   E  \r  \t           e   n   t   r   y
0016360    !   0   ,       e   n   t   r   y   !   1       =       h   p
0016400    !   1   ,       h   p   !   0  \r  \t           i   f     376
0016420  001  \0   j   X   (   e   n   t   r   y   !   0       n   e    
0016440    0   )       %       (   e   n   t   r   y   !   1       n   e
0016460        0   )       t   h   e   n  \r  \t           [       n   o
0016500    n   z   e   r   o       =       n   o   n   z   e   r   o   +
0016520    1  \r  \t                   D   o   u   b   l   e   A   d   d
0016540    (   t   o   t   a   l   ,       e   n   t   r   y   )  \r  \t
0016560            ]  \r  \t   ]  \r  \t   l   e   t       q   ,       r
0016600        =       v   e   c       2   ,       v   e   c       2  \r
0016620   \t   l   e   t       p   e   r   S   t   a   r       =       v
0016640    e   c       2  \r  \t   D   P   D   I   V   I   D   E   (   t
0016660    o   t   a   l   ,       t   a   b   l   e   [       0   ;    
0016700    s   t   a   r   F   a   c   t   o   r   ]   ,       p   e   r
0016720    S   t   a   r   ,       r   )  \r  \t   i   f       (   p   e
0016740    r   S   t   a   r   !   0       e   q       0   )       &    
0016760    (   p   e   r   S   t   a   r   !   1       e   q       0   )
0017000        t   h   e   n       p   e   r   S   t   a   r   !   1    
0017020    =       1  \r 376 001  \0   [ 253  \t   l   e   t       m   a
0017040    x   S   t   a   r   s       =       l   L   i   n   e   -   1
0017060    0   -   l   L   a   b   e   l  \r  \t   P   u   t   T   e   m
0017100    p   l   a   t   e   (   o   u   t   ,       "   T   o   t   a
0017120    l       o   f       $   E   D       c   o   u   n   t   s   ,
0017140        $   D       n   o   n   z   e   r   o       e   n   t   r
0017160    i   e   s   ;       e   a   c   h       *   *       =       $
0017200    E   D       c   o   u   n   t   s   *   N   *   N   "   ,    
0017220    t   o   t   a   l   ,       n   o   n   z   e   r   o   ,    
0017240    p   e   r   S   t   a   r   )  \r  \t   l   e   t       l   a
0017260    s   t   S   y   m       =       0  \r  \t   l   e   t       c
0017300    u   m       =       v   e   c       2  \r  \t   c   u   m   !
0017320    0   ,       c   u   m   !   1       =       0   ,       0  \r
0017340   \t   l   e   t       c   o   u   n   t       =       v   e   c
0017360        2  \r  \t   n   C   a   l   l   s       =       0  \r  \t
0017400    f   o   r       i   m   a   g       =       0       t   o    
0017420    l   H   i   s   t   -   1       d 376 001  \0 276 034   o  \r
0017440   \t   [       l   e   t       i       =       i   r   m   a   p
0017460    !   i   m   a   g  \r  \t           i   f       i       e   q
0017500        -   1       l   o   o   p  \r  \t           l   e   t    
0017520    h   p       =       h   i   s   t   +   i   *   l   H   E  \r
0017540   \t           i   f       (   h   p   !   0       e   q       0
0017560    )       &       (   h   p   !   1       e   q       0   )    
0017600    l   o   o   p  \r  \t           l   e   t       i   m   s   y
0017620    m       =       f   i   n   d   s   y   m   (   i   m   a   g
0017640    )  \r  \t           l   e   t       s   y   m       =       i
0017660    s   y   m   a   p   !   i   m   s   y   m  \r  \t           t
0017700    e   s   t       s   y   m       e   q       l   a   s   t   S
0017720    y   m  \r  \t               i   f   s   o  \r  \t           [
0017740        W   s   s   (   o   u   t   ,       "                    
0017760                    "   )  \r  \t                   p   r   i   n
0020000    t   s   t   a   r   s   (   o   u   t   ,       c   o   u   n
0020020    t   ,       p   e   r   S   t   a   r   ,       m   a 376 001
0020040   \0 237 367   x   S   t   a   r   s   )  \r  \t           ]  \r
0020060   \t               i   f   n   o   t  \t   /   /       p   r   i
0020100    n   t       c   u   m   u   l   a   t   i   v   e       p   e
0020120    r   c   e   n   t       f   o   r       o   l   d       s   y
0020140    m   b   o   l  \r  \t           [       i   f       l   a   s
0020160    t   S   y   m       n   e       0       t   h   e   n  \r  \t
0020200                    [       p   r   i   n   t   p   e   r   c   e
0020220    n   t   (   o   u   t   ,       c   u   m   ,       t   o   t
0020240    a   l   )  \r  \t                           p   r   i   n   t
0020260    s   t   a   r   s   (   o   u   t   ,       c   o   u   n   t
0020300    ,       p   e   r   S   t   a   r   ,       m   a   x   S   t
0020320    a   r   s   )  \r  \t                   ]  \r  \t           ]
0020340   \r  \t           P   u   t   s   (   o   u   t   ,       $   *
0020360    N   )  \r  \t           c   o   u   n   t   !   0   ,       c
0020400    o   u   n   t   !   1       =       h   p   !   1   ,       h
0020420    p   !   0  \r  \t           p   r   i   n   t   l   e   f   t
0020440    (   o   u 376 001  \0   } 367   t   ,       i   m   a   g   ,
0020460        i   m   s   y   m   ,       s   y   m       e   q       l
0020500    a   s   t   S   y   m   ,       c   o   u   n   t   )  \r  \t
0020520            l   a   s   t   S   y   m       =       s   y   m  \r
0020540   \t           D   o   u   b   l   e   A   d   d   (   c   u   m
0020560    ,       c   o   u   n   t   )  \r  \t   ]  \r  \t   p   r   i
0020600    n   t   p   e   r   c   e   n   t   (   o   u   t   ,       c
0020620    u   m   ,       t   o   t   a   l   )  \r  \t   p   r   i   n
0020640    t   s   t   a   r   s   (   o   u   t   ,       c   o   u   n
0020660    t   ,       p   e   r   S   t   a   r   ,       m   a   x   S
0020700    t   a   r   s   )  \r  \t   P   u   t   s   (   o   u   t   ,
0020720        $   *   N   )  \r   ]  \r  \r   a   n   d       f   i   n
0020740    d   s   y   m   (   i   m   a   g   )       =       v   a   l
0020760    o   f  \r   [  \t   l   e   t       i   m   s   y   m       =
0021000        i   m   a   g  \r  \t   w   h   i   l   e       i   s   y
0021020    m   a   p   !   i   m   s   y   m       e   q       0       d
0021040    o       i   m   s   y   m     376 001  \0 021   }   =       i
0021060    m   s   y   m   -   1  \r  \t   r   e   s   u   l   t   i   s
0021100        i   m   s   y   m  \r   ]  \r  \r   a   n   d       c   a
0021120    l   l   p   r   i   n   t   (   o   u   t   ,       h   i   s
0021140    t   )       b   e  \r   [  \t   W   s   s   (   o   u   t   ,
0021160        "   *   0   1   4   C   a   l   l       i   n   s   t   r
0021200    u   c   t   i   o   n   s   :   *   N   "   )  \t   /   /    
0021220    ^   L   ,       n   e   w       p   a   g   e  \r  \t   s   p
0021240    e   c   i   a   l       =       s   p   e   c   i   a   l   1
0021260    c  \r  \t   l   e   t       c   f   r   o   m   ,       c   t
0021300    o       =       n   C   a   l   l   s   ,       n   C   a   l
0021320    l   s  \r  \t   D   v   e   c   (   c   a   l   l   p   r   i
0021340    n   t   ,       l   v       c   f   r   o   m   ,       l   v
0021360        c   t   o   )  \r  \t   l   e   t       n   c   a   l   l
0021400    s       =       0  \r  \t   f   o   r       i   m   a   g    
0021420    =       0       t   o       l   H   i   s   t   -   1       d
0021440    o  \r  \t   [       l   e   t       r   e   a   l 376 001  \0
0021460    B   Q       =       i   r   m   a   p   !   i   m   a   g  \r
0021500   \t           i   f       r   e   a   l       e   q       -   1
0021520        l   o   o   p  \r  \t           l   e   t       h   p    
0021540    =       h   i   s   t   +   r   e   a   l   *   l   H   E  \r
0021560   \t           i   f       (   h   p   !   0       e   q       0
0021600    )       &       (   h   p   !   1       e   q       0   )    
0021620    l   o   o   p  \r  \t           l   e   t       r   d   e   s
0021640    t       =       n   i   a   1   (   i   m   a   g   )  \r  \t
0021660            l   e   t       i   d   e   s   t       =       r   i
0021700    m   a   p   !   r   d   e   s   t  \r  \t           u   n   l
0021720    e   s   s       (   i   d   e   s   t       g   e       0   )
0021740        &       i   s   e   n   t   r   y   1   (   i   d   e   s
0021760    t   )       l   o   o   p  \r  \t           l   e   t       p
0022000    t   r       =       n   c   a   l   l   s  \r  \t           u
0022020    n   t   i   l       p   t   r       e   q       0       d   o
0022040   \r  \t           [       l   e   t       n   p   t   r       =
0022060        p 376 001  \0 246 355   t   r   -   1  \r  \t            
0022100        i   f       c   t   o   !   n   p   t   r       l   e    
0022120    i   d   e   s   t       b   r   e   a   k  \r  \t            
0022140        c   f   r   o   m   !   p   t   r   ,       c   t   o   !
0022160    p   t   r       =       c   f   r   o   m   !   n   p   t   r
0022200    ,       c   t   o   !   n   p   t   r  \r  \t                
0022220    p   t   r       =       n   p   t   r  \r  \t           ]  \r
0022240   \t           c   f   r   o   m   !   p   t   r   ,       c   t
0022260    o   !   p   t   r       =       i   m   a   g   ,       i   d
0022300    e   s   t  \r  \t           n   c   a   l   l   s       =    
0022320    n   c   a   l   l   s   +   1  \r  \t   ]  \r  \t   l   e   t
0022340        c   o   u   n   t       =       v   e   c       2  \r  \t
0022360    l   e   t       l   a   s   t   t   o       =       -   1  \r
0022400   \t   f   o   r       j       =       0       t   o       n   c
0022420    a   l   l   s   -   1       d   o  \r  \t   [       i   f    
0022440    c   t   o   !   j       n   e       l   a   s   t   t   o    
0022460    t   h   e   n  \r  \t     376 001  \0   v 246       [       l
0022500    a   s   t   t   o       =       c   t   o   !   j  \r  \t    
0022520                l   e   t       h   p       =       h   i   s   t
0022540    +   i   r   m   a   p   !   l   a   s   t   t   o   *   l   H
0022560    E  \r  \t                   c   o   u   n   t   !   0   ,    
0022600    c   o   u   n   t   !   1       =       h   p   !   1   ,    
0022620    h   p   !   0  \r  \t                   P   u   t   T   e   m
0022640    p   l   a   t   e   (   o   u   t   ,       "   <   $   S   >
0022660        $   E   D   *   N   "   ,       i   s   y   m   a   p   !
0022700    l   a   s   t   t   o   ,       c   o   u   n   t   )  \r  \t
0022720            ]  \r  \t           l   e   t       i   m   a   g    
0022740    =       c   f   r   o   m   !   j  \r  \t           l   e   t
0022760        h   p       =       h   i   s   t   +   i   r   m   a   p
0023000    !   i   m   a   g   *   l   H   E  \r  \t           c   o   u
0023020    n   t   !   0   ,       c   o   u   n   t   !   1       =    
0023040    h   p   !   1   ,       h   p   !   0  \r  \t           W   s
0023060    s   (   o   u   t   ,       "           "   ) 376 001  \0   y
0023100  302  \r  \t           p   r   i   n   t   l   e   f   t   (   o
0023120    u   t   ,       i   m   a   g   ,       f   i   n   d   s   y
0023140    m   (   i   m   a   g   )   ,       f   a   l   s   e   ,    
0023160    c   o   u   n   t   )  \r  \t           P   u   t   s   (   o
0023200    u   t   ,       $   *   N   )  \r  \t   ]  \r   ]  \r  \r   a
0023220    n   d       p   r   i   n   t   l   e   f   t   (   o   u   t
0023240    ,       i   m   a   g   ,       i   m   s   y   m   ,       s
0023260    p   a   c   e   ,       c   o   u   n   t   )       b   e  \r
0023300    /   /       P   r   i   n   t       t   h   e       s   y   m
0023320    b   o   l       (   o   r       b   l   a   n   k   s       i
0023340    f       s   p   a   c   e   )   ,       +   o   f   f   s   e
0023360    t   ,       s   p   e   c   i   a   l       s   t   u   f   f
0023400    ,       c   o   u   n   t  \r   [  \t   l   e   t       s   y
0023420    m       =       i   s   y   m   a   p   !   i   m   s   y   m
0023440   \r  \t   t   e   s   t       s   p   a   c   e  \r  \t       i
0023460    f   s   o       f   o   r       i       =       1       t   o
0023500      376 001  \0 350   Y   s   y   m   >   >   B   S   .   l   e
0023520    n   g   t   h       d   o       P   u   t   s   (   o   u   t
0023540    ,       $   *   S   )  \r  \t       i   f   n   o   t       W
0023560    s   s   (   o   u   t   ,       s   y   m   )  \r  \t   l   e
0023600    t       d       =       i   m   a   g   -   i   m   s   y   m
0023620   \r  \t   i   f       d       n   e       0       t   h   e   n
0023640        P   u   t   T   e   m   p   l   a   t   e   (   o   u   t
0023660    ,       "   +   $   D   "   ,       d   )  \r  \t   l   e   t
0023700        w   i   d   t   h       =       s   y   m   >   >   B   S
0023720    .   l   e   n   g   t   h   +   (   d       e   q       0   ?
0023740        0   ,       d       l   s       1   0   ?       2   ,    
0023760    d       l   s       1   0   0   ?       3   ,       d       l
0024000    s       1   0   0   0   ?       4   ,       5   )  \r  \t   w
0024020    i   d   t   h       =       w   i   d   t   h   +   s   p   e
0024040    c   i   a   l   (   o   u   t   ,       i   m   a   g   ,    
0024060    i   r   m   a   p   !   i   m   a   g   )  \t   /   /       D
0024100    o       m   a   c   h 376 001  \0   a 234   i   n   e   -   d
0024120    e   p   e   n   d   e   n   t       s   t   u   f   f  \r  \t
0024140    l   e   t       n   d       =       n   d   i   g   i   t   s
0024160    (   c   o   u   n   t   )  \r  \t   i   f       w   i   d   t
0024200    h   +   n   d   +   2       g   r       l   L   a   b   e   l
0024220        t   h   e   n       [       P   u   t   s   (   o   u   t
0024240    ,       $   *   N   )   ;       w   i   d   t   h       =    
0024260    0       ]  \r  \t   f   o   r       j       =       w   i   d
0024300    t   h       t   o       l   L   a   b   e   l   -   n   d   -
0024320    2       d   o       P   u   t   s   (   o   u   t   ,       $
0024340    *   S   )  \r  \t   P   u   t   T   e   m   p   l   a   t   e
0024360    (   o   u   t   ,       "   $   E   D       "   ,       c   o
0024400    u   n   t   )  \r   ]  \r  \r  \r   a   n   d       n   d   i
0024420    g   i   t   s   (   v   )       =       v   a   l   o   f  \r
0024440    /   /       R   e   t   u   r   n       t   h   e       n   u
0024460    m   b   e   r       o   f       d   i   g   i   t   s       i
0024500    n       t   h   e       d   e   c   i   m 376 001  \0 026   I
0024520    a   l       r   e   p   r   e   s   e   n   t   a   t   i   o
0024540    n       o   f       v  \r   [  \t   i   f       v   !   0    
0024560    n   e       0       t   h   e   n  \r  \t   [       l   e   t
0024600        w   ,       r       =       v   e   c       2   ,       v
0024620    e   c       2  \r  \t           D   P   D   I   V   I   D   E
0024640    (   v   ,       t   a   b   l   e   [       0   ;       1   0
0024660    0   0   0   ]   ,       w   ,       r   )  \r  \t           r
0024700    e   s   u   l   t   i   s       n   d   i   g   i   t   s   (
0024720    w   )   +   4  \r  \t   ]  \r  \t   l   e   t       n       =
0024740        v   !   1  \r  \t   r   e   s   u   l   t   i   s       (
0024760    n       l   s       0   ?       5   ,       n       l   s    
0025000    1   0   ?       1   ,       n       l   s       1   0   0   ?
0025020        2   ,       n       l   s       1   0   0   0   ?       3
0025040    ,       n       l   s       1   0   0   0   0   ?       4   ,
0025060        5   )  \r   ]  \r  \r   a   n   d       p   r   i   n   t
0025100    s   t   a   r   s   (   o   u   t   ,       c   o   u   n   t
0025120  376 001  \0   )   Y   ,       p   e   r   S   t   a   r   ,    
0025140    m   a   x   )       =       v   a   l   o   f  \r   /   /    
0025160    R   e   t   u   r   n   s       #       o   f       c   h   a
0025200    r   a   c   t   e   r   s       p   r   i   n   t   e   d  \r
0025220    [  \t   l   e   t       c   ,       d       =       v   e   c
0025240        2   ,       v   e   c       2  \r  \t   c   !   0   ,    
0025260    c   !   1       =       c   o   u   n   t   !   0   ,       c
0025300    o   u   n   t   !   1  \r  \t   d   !   0   ,       d   !   1
0025320        =       p   e   r   S   t   a   r   !   0       r   s   h
0025340    i   f   t       1   ,       (   p   e   r   S   t   a   r   !
0025360    0       l   s   h   i   f   t       1   5   )       +       (
0025400    p   e   r   S   t   a   r   !   1       r   s   h   i   f   t
0025420        1   )  \r  \t   D   o   u   b   l   e   A   d   d   (   c
0025440    ,       d   )  \t   /   /       r   o   u   n   d       n   u
0025460    m   e   r   a   t   o   r  \r  \t   l   e   t       q   ,    
0025500    r       =       v   e   c       2   ,       v   e   c       2
0025520   \r  \t   D   P   D 376 001  \0 272 001   I   V   I   D   E   (
0025540    c   ,       p   e   r   S   t   a   r   ,       q   ,       r
0025560    )  \r  \t   l   e   t       s   t   a   r   s       =       q
0025600    !   1   ;       i   f       s   t   a   r   s       e   q    
0025620    0       t   h   e   n       s   t   a   r   s       =       1
0025640   \r  \t   l   e   t       n   c   h   a   r   s       =       s
0025660    t   a   r   s  \r  \t   i   f       s   t   a   r   s       g
0025700    r       m   a   x       t   h   e   n  \r  \t   [       P   u
0025720    t   T   e   m   p   l   a   t   e   (   o   u   t   ,       "
0025740    (   $   3   D   )   "   ,       s   t   a   r   s   )  \r  \t
0025760            s   t   a   r   s   ,       n   c   h   a   r   s    
0026000    =       m   a   x   -   5   ,       m   a   x  \r  \t   ]  \r
0026020   \t   f   o   r       j       =       1       t   o       s   t
0026040    a   r   s       d   o       P   u   t   s   (   o   u   t   ,
0026060        $   *   *   )  \r  \t   r   e   s   u   l   t   i   s    
0026100    n   c   h   a   r   s  \r   ]  \r  \r   a   n   d       p   r
0026120    i   n   t   p   e   r   c   e   n   t 376 001  \0 317 375   (
0026140    o   u   t   ,       c   u   m   ,       t   o   t   a   l   )
0026160        b   e  \r   [  \t   l   e   t       p   e   r       =    
0026200    p   e   r   1   0   0   0   0   (   c   u   m   ,       t   o
0026220    t   a   l   )  \r  \t   P   u   t   T   e   m   p   l   a   t
0026240    e   (   o   u   t   ,       "   (   $   3   D   .   $   2   F
0026260    0   D   )       "   ,       p   e   r   /   1   0   0   ,    
0026300    p   e   r       r   e   m       1   0   0   )  \r   ]  \r  \r
0026320    a   n   d       p   e   r   1   0   0   0   0   (   n   u   m
0026340    ,       d   e   n   o   m   )       =       v   a   l   o   f
0026360   \r   /   /       V   e   r   y       c   a   r   e   f   u   l
0026400    l   y       c   o   m   p   u   t   e       n   u   m   *   1
0026420    0   0   0   0   /   d   e   n   o   m  \r   /   /       K   n
0026440    o   w       b   o   t   h       a   r   e       p   o   s   i
0026460    t   i   v   e       a   n   d       n   u   m       l   e    
0026500    d   e   n   o   m  \r   [  \t   l   e   t       r   1       =
0026520        v   e   c       2  \r  \t   l   e   t       q   1     376
0026540  001  \0 343 314   =       p   e   r   1   0   0   (   n   u   m
0026560    ,       d   e   n   o   m   ,       r   1   )  \r  \t   l   e
0026600    t       r   2       =       v   e   c       2  \r  \t   l   e
0026620    t       q   2       =       p   e   r   1   0   0   (   r   1
0026640    ,       d   e   n   o   m   ,       r   2   )  \r  \t   r   e
0026660    s   u   l   t   i   s       q   1   *   1   0   0   +   q   2
0026700   \r   ]  \r  \r   a   n   d       p   e   r   1   0   0   (   n
0026720    u   m   ,       d   e   n   o   m   ,       r   e   m   n   )
0026740        =       v   a   l   o   f  \r   /   /       R   e   t   u
0026760    r   n       t   h   e       q   u   o   t   i   e   n   t    
0027000    o   f       n   u   m   *   1   0   0   /   d   e   n   o   m
0027020    ,       l   e   a   v   e       t   h   e       r   e   m   a
0027040    i   n   d   e   r       i   n       r   e   m   n  \r   /   /
0027060        K   n   o   w       b   o   t   h       n   u   m       a
0027100    n   d       d   e   n   o   m       a   r   e       p   o   s
0027120    i   t   i   v   e   ,       a   n   d       n   u   m       l
0027140    e       d   e 376 001  \0 256 310   n   o   m  \r   [  \t   l
0027160    e   t       n   ,       d       =       v   e   c       2   ,
0027200        v   e   c       2  \r  \t   n   !   0   ,       n   !   1
0027220        =       n   u   m   !   0   ,       n   u   m   !   1  \r
0027240   \t   d   !   0   ,       d   !   1       =       d   e   n   o
0027260    m   !   0   ,       d   e   n   o   m   !   1  \r  \t   w   h
0027300    i   l   e       n   !   0       g   r       3   2   7       d
0027320    o  \t   /   /       m   a   k   e       s   u   r   e       1
0027340    0   0   *       w   i   l   l       f   i   t  \r  \t   [    
0027360    n   !   1       =       (   n   !   0       l   s   h   i   f
0027400    t       1   5   )       +       (   n   !   1       r   s   h
0027420    i   f   t       1   )  \r  \t           d   !   1       =    
0027440    (   d   !   0       l   s   h   i   f   t       1   5   )    
0027460    +       (   d   !   1       r   s   h   i   f   t       1   )
0027500   \r  \t           n   !   0   ,       d   !   0       =       n
0027520    !   0       r   s   h   i   f   t       1   ,       d   !   0
0027540        r   s   h   i   f   t       1 376 001  \0 235 203  \r  \t
0027560    ]  \r  \t   l   e   t       n   1   0   0       =       v   e
0027600    c       2  \r  \t   m   u   l   1   0   0   (   n   ,       n
0027620    1   0   0   )  \r  \t   l   e   t       p       =       v   e
0027640    c       2  \r  \t   D   P   D   I   V   I   D   E   (   n   1
0027660    0   0   ,       d   ,       p   ,       r   e   m   n   )  \r
0027700   \t   r   e   s   u   l   t   i   s       p   !   1  \r   ]  \r
0027720   \r   a   n   d       m   u   l   1   0   0   (   v   ,       w
0027740    )       b   e  \r   /   /       M   u   l   t   i   p   l   y
0027760        a       d   o   u   b   l   e   -   p   r   e   c   i   s
0030000    i   o   n       n   u   m   b   e   r       b   y       1   0
0030020    0  \r   /   /       K   n   o   w       t   h   e       r   e
0030040    s   u   l   t       w   i   l   l       f   i   t  \r   [  \t
0030060    l   e   t       M   u   l   t   i   p   l   y       =       t
0030100    a   b   l   e   [  \r  \t           1   7   5   4   0   0   b
0030120   \t   /   /       i   n   c       3       3       /   /       s
0030140    k   i   p       a   r   g       c   o   u   n   t     376 001
0030160   \0   _   <   w   o   r   d  \r  \t                   2   3   4
0030200    3   b  \t   /   /       j   m   p       @   3   4   3   b    
0030220    /   /       B   c   p   l       r   u   n   t   i   m   e   ,
0030240        l   e   a   v   e   s       A   C   0       =       h   i
0030260        p   a   r   t  \r  \t       ]  \r  \t   w   !   0       =
0030300        v   !   0   *   1   0   0       +       M   u   l   t   i
0030320    p   l   y   (   v   !   1   ,       1   0   0   )  \t   /   /
0030340        W   h   a   t       a       k   l   u   d   g   e   !  \r
0030360   \t   w   !   1       =       v   !   1   *   1   0   0  \t   /
0030400    /       d   i   s   c   a   r   d   s       h   i       p   a
0030420    r   t  \r   ]  \r  \r  \r   a   n   d       s   p   e   c   i
0030440    a   l   0   (   o   u   t   ,       i   m   a   g   ,       r
0030460    e   a   l   )       =       v   a   l   o   f  \r   /   /    
0030500    S   p   e   c   i   a   l       s   t   u   f   f       f   o
0030520    r       D   o   l   p   h   i   n       (   o   p   c   o   d
0030540    e       e   n   t   r   i   e   s   ,       c   a   l   l   s
0030560    )  \r   [ 376 001  \0   w 214  \t   l   e   t       w   i   d
0030600    t   h       =       0  \r  \t   i   f       (   r   e   a   l
0030620    &   6   0   0   3   b   )       e   q       2   0   0   1   b
0030640        t   h   e   n  \t   /   /       o   p   c   o   d   e    
0030660    e   n   t   r   y  \r  \t   [       P   u   t   T   e   m   p
0030700    l   a   t   e   (   o   u   t   ,       "       [   $   3   F
0030720    0   O   ]   "   ,       (   r   e   a   l       r   s   h   i
0030740    f   t       2   )       &       3   7   7   b   )  \r  \t    
0030760        w   i   d   t   h       =       w   i   d   t   h   +   6
0031000   \r  \t   ]  \r   /   /       I   f       t   h   e       i   n
0031020    s   t   r   u   c   t   i   o   n       p   r   e   c   e   d
0031040    i   n   g       i   m   a   g       i   s       a       C   a
0031060    l   l   ,  \r   /   /       r   e   t   u   r   n       t   h
0031100    e       i   m   a   g   i   n   a   r   y       a   d   d   r
0031120    e   s   s       b   e   i   n   g       c   a   l   l   e   d
0031140    ,       o   t   h   e   r   w   i   s   e       -   1  \r  \t
0031160    l   e   t       i   d   e   s 376 001  \0   O  \0   t       =
0031200        v   a   l   o   f  \r   [  \t   l   e   t       i   p    
0031220    =       i   d   a   t   a   +   (   i   m   a   g   -   1   )
0031240    *   l   M   I  \r  \t   i   f       i   p   >   >   M   I   0
0031260    .   j   c       n   e       j   c   C   a   l   l   0       r
0031300    e   s   u   l   t   i   s       -   1  \r  \t   l   e   t    
0031320    j   a       =       n   i   a   0   (   i   m   a   g   -   1
0031340    )  \r  \t   l   e   t       p   a   g   e       =       i   r
0031360    m   a   p   !   (   i   m   a   g   -   1   )       r   s   h
0031400    i   f   t       8  \r  \t   i   p       =       i   p   -   l
0031420    M   I  \r  \t   i   f       (   i   p   >   >   M   I   0   .
0031440    m   e   m   i   n   s   t       e   q       0   )       &    
0031460    (   i   p   >   >   M   I   0   .   f   1       e   q       f
0031500    1   L   o   a   d   P   a   g   e   0   )       t   h   e   n
0031520        p   a   g   e       =       i   p   >   >   M   I   0   .
0031540    f   2  \r  \t   r   e   s   u   l   t   i   s       r   i   m
0031560    a   p   !   (   (   p   a   g   e       l   s   h 376 001  \0
0031600    I   u   i   f   t       8   )       +       j   a   )  \r   ]
0031620   \r  \t   i   f       (   i   d   e   s   t       n   e       -
0031640    1   )       &       (   i   s   y   m   a   p   !   i   d   e
0031660    s   t       n   e       0   )       t   h   e   n  \t   /   /
0031700        n   o   t   e       t   h   e       c   a   l   l  \r  \t
0031720    [       l   e   t       d   s   y   m       =       i   s   y
0031740    m   a   p   !   i   d   e   s   t  \r  \t           P   u   t
0031760    T   e   m   p   l   a   t   e   (   o   u   t   ,       "    
0032000    <   $   S   >   "   ,       d   s   y   m   )  \r  \t        
0032020    w   i   d   t   h       =       w   i   d   t   h   +   d   s
0032040    y   m   >   >   B   S   .   l   e   n   g   t   h   +   3  \r
0032060   \t   ]  \r  \t   r   e   s   u   l   t   i   s       w   i   d
0032100    t   h  \r   ]  \r  \r   a   n   d       n   i   a   0   (   i
0032120    m   a   g   )       =       v   a   l   o   f  \r   [  \t   l
0032140    e   t       i   p       =       i   d   a   t   a   +   i   m
0032160    a   g   *   l   M   I  \r  \t   r   e   s   u   l   t   i   s
0032200        ( 376 001  \0   : 222   i   p   >   >   M   I   0   .   j
0032220    a   h   i   2       l   s   h   i   f   t       6   )       +
0032240        i   p   >   >   M   I   0   .   j   a   l   o   6  \r   ]
0032260   \r  \r   a   n   d       s   p   e   c   i   a   l   1   (   o
0032300    u   t   ,       i   m   a   g   ,       r   e   a   l   )    
0032320    =       v   a   l   o   f  \r   /   /       S   p   e   c   i
0032340    a   l       s   t   u   f   f       f   o   r       D   o   r
0032360    a   d   o       (   f   l   a   g       s   u   b   r   o   u
0032400    t   i   n   e       e   n   t   r   i   e   s   )  \r   [  \t
0032420    l   e   t       w       =       0  \r  \t   l   e   t       r
0032440    d   e   s   t       =       n   i   a   1   (   i   m   a   g
0032460    )  \r  \t   l   e   t       i   d   e   s   t       =       r
0032500    i   m   a   p   !   r   d   e   s   t  \r  \t   i   f       (
0032520    i   d   e   s   t       g   e       0   )       &       i   s
0032540    e   n   t   r   y   1   (   i   d   e   s   t   )       t   h
0032560    e   n  \r  \t   [       l   e   t       s       =       i   s
0032600    y   m   a   p   !   i   d 376 001  \0   s   L   e   s   t  \t
0032620    /   /       m   u   s   t       b   e       e   x   a   c   t
0032640   \r  \t           P   u   t   T   e   m   p   l   a   t   e   (
0032660    o   u   t   ,       "       <   $   S   >   "   ,       s   )
0032700   \r  \t           w       =       w       +       s   >   >   B
0032720    S   .   l   e   n   g   t   h       +       3  \r  \t        
0032740    n   C   a   l   l   s       =       n   C   a   l   l   s   +
0032760    1  \r  \t   ]  \r  \t   r   e   s   u   l   t   i   s       s
0033000    p   e   c   i   a   l   1   c   (   o   u   t   ,       i   m
0033020    a   g   ,       r   e   a   l   )       +       w  \r   ]  \r
0033040   \r   a   n   d       s   p   e   c   i   a   l   1   c   (   o
0033060    u   t   ,       i   m   a   g   ,       r   e   a   l   )    
0033100    =       v   a   l   o   f  \r   /   /       R   e   p   l   a
0033120    c   e   s       s   p   e   c   i   a   l   1       d   u   r
0033140    i   n   g       l   i   s   t   i   n   g       o   f       c
0033160    a   l   l   s  \r   [  \t   i   f       i   s   e   n   t   r
0033200    y   1   (   i   m   a   g   )       t   h   e 376 001  \0 341
0033220  371   n  \r  \t   [       l   e   t       s       =       (   (
0033240    r   e   a   l   &   7   7   b   )       e   q       0   ?    
0033260    "       (   *   *   *   *   )   "   ,       "       (   *   *
0033300    )   "   )  \r  \t           W   s   s   (   o   u   t   ,    
0033320    s   )  \r  \t           r   e   s   u   l   t   i   s       s
0033340    >   >   B   S   .   l   e   n   g   t   h  \r  \t   ]  \r  \t
0033360    r   e   s   u   l   t   i   s       0  \r   ]  \r  \r   a   n
0033400    d       i   s   e   n   t   r   y   1   (   i   m   a   g   )
0033420        =       v   a   l   o   f  \r   /   /       R   e   t   u
0033440    r   n       t   r   u   e       i   f       i   m   a   g    
0033460    i   s       a       s   u   b   r   o   u   t   i   n   e    
0033500    e   n   t   r   y  \r   [  \t   l   e   t       r   e   a   l
0033520        =       i   r   m   a   p   !   i   m   a   g  \r  \t   i
0033540    f       (   r   e   a   l   &   1   7   b   )       n   e    
0033560    0       r   e   s   u   l   t   i   s       f   a   l   s   e
0033600   \t   /   /       n   o   t       a   n       e   n   t   r   y
0033620   \r 376 001  \0   ,   D  \t   i   f       i   s   y   m   a   p
0033640    !   i   m   a   g       e   q       0       r   e   s   u   l
0033660    t   i   s       f   a   l   s   e  \t   /   /       n   o    
0033700    l   a   b   e   l   ,       a   l   m   o   s   t       c   e
0033720    r   t   a   i   n   l   y       n   o   t       a   n       e
0033740    n   t   r   y  \r  \t   i   f       n   i   a   1   (   i   m
0033760    a   g   -   1   )       e   q       r   e   a   l       r   e
0034000    s   u   l   t   i   s       f   a   l   s   e  \t   /   /    
0034020    p   r   e   v   i   o   u   s       i   n   s   t   r   u   c
0034040    t   i   o   n       f   a   l   l   s       t   h   r   o   u
0034060    g   h       t   o       h   e   r   e   ,       a   l   m   o
0034100    s   t       c   e   r   t   a   i   n   l   y       n   o   t
0034120        a   n       e   n   t   r   y  \r  \t   i   f       (   i
0034140    f   u   e   !   (   r   e   a   l       r   s   h   i   f   t
0034160        6   )       &       o   n   e   B   i   t   s   !   (   (
0034200    r   e   a   l       r   s   h   i   f   t       2   )   &   1
0034220    7   b   )   )       n 376 001  \0   y 204   e       0       r
0034240    e   s   u   l   t   i   s       f   a   l   s   e  \t   /   /
0034260        a   n       I   F   U       e   n   t   r   y  \r  \t   r
0034300    e   s   u   l   t   i   s       t   r   u   e  \r   ]  \r  \r
0034320    a   n   d       n   i   a   1   (   i   m   a   g   )       =
0034340        v   a   l   o   f  \r   /   /       R   e   t   u   r   n
0034360        t   h   e       t   a   r   g   e   t       a   d   d   r
0034400    e   s   s       f   r   o   m       J   C   N  \r   [  \t   l
0034420    e   t       j   f   r   o   m       =       i   r   m   a   p
0034440    !   i   m   a   g  \r  \t   l   e   t       i   p       =    
0034460    i   d   a   t   a   +   i   m   a   g   *   l   M   I  \r  \t
0034500    l   e   t       j   n   l   o       =       i   p   >   >   M
0034520    I   1   .   j   n   l   o  \r  \t   i   f       i   p   >   >
0034540    M   I   1   .   j   c   l   o   n   g       e   q       j   c
0034560    L   o   n   g   1       t   h   e   n  \t   /   /       m   u
0034600    s   t       t   e   s   t       l   o   n   g       b   e   f
0034620    o   r   e       f   a   s   t  \r  \t     376 001  \0 201 207
0034640        r   e   s   u   l   t   i   s       (   i   p   >   >   M
0034660    I   1   .   f   f       l   s   h   i   f   t       4   )    
0034700    +       (   i   p   >   >   M   I   1   .   j   n   l   o   n
0034720    g   x   4       l   s   h   i   f   t       2   )       +    
0034740    j   n   l   o  \r  \t   i   f       i   p   >   >   M   I   1
0034760    .   j   c   l   o   c   a   l       e   q       j   c   L   o
0035000    c   a   l   1       t   h   e   n  \r  \t           r   e   s
0035020    u   l   t   i   s       (   j   f   r   o   m       &       7
0035040    7   0   0   b   )       +       (   i   p   >   >   M   I   1
0035060    .   j   n   l   o   c   a   l   x   4       l   s   h   i   f
0035100    t       2   )       +       j   n   l   o  \r  \t   i   f    
0035120    i   p   >   >   M   I   1   .   j   c   g   l   o   b   a   l
0035140        e   q       j   c   G   l   o   b   a   l   1       t   h
0035160    e   n  \r  \t           r   e   s   u   l   t   i   s       (
0035200    (   i   p   >   >   M   I   1   .   j   n   g   l   o   b   a
0035220    l   x   4       l   s   h   i   f   t       2   )       +    
0035240  376 001  \0 217   t   j   n   l   o   )       l   s   h   i   f
0035260    t       6  \r   /   /  \t   i   f       i   p   >   >   M   I
0035300    1   .   j   c   f   a   s   t       e   q       j   c   F   a
0035320    s   t   1       t   h   e   n  \r  \t   i   f       (   i   p
0035340    >   >   M   I   1   .   j   c   o   n   d   x   4       l   s
0035360    h   i   f   t       2       +       i   p   >   >   M   I   1
0035400    .   j   c   o   n   d   l   o   )       n   e       7       t
0035420    h   e   n  \r  \t           r   e   s   u   l   t   i   s    
0035440    (   j   f   r   o   m       &       7   7   0   0   b   )    
0035460    +       (   i   p   >   >   M   I   1   .   j   n   f   a   s
0035500    t   x   8       l   s   h   i   f   t       3   )       +    
0035520    (   i   p   >   >   M   I   1   .   j   n   f   a   s   t   x
0035540    2       l   s   h   i   f   t       1   )  \r  \t   r   e   s
0035560    u   l   t   i   s       (   j   f   r   o   m       &       7
0035600    7   0   0   b   )       +       (   (   j   f   r   o   m   +
0035620    1   )       &       7   7   b   )  \t   /   /       a       R
0035640    e   t   u   r   n 376 001  \0 323 216       o   r       o   t
0035660    h   e   r       e   x   c   e   p   t   i   o   n  \r   ]  \r
0035700   \r  \r   a   n   d       p   m   e   m   p   r   o   c   (   m
0035720    e   m   x   ,       w   i   d   t   h   ,       n   a   m   e
0035740    )       =       v   a   l   o   f  \r   [  \t   t   e   s   t
0035760        (   n   a   m   e   !   0       e   q       1   0   0   0
0036000    b   +   $   I   )       &       (   n   a   m   e   !   1    
0036020    e   q       $   M   *   4   0   0   b   )  \r  \t       i   f
0036040    s   o       [       i   m   x       =       m   e   m   x   ;
0036060        r   e   s   u   l   t   i   s       p   i   m   p   r   o
0036100    c       ]  \r  \t       i   f   n   o   t  \r  \t   t   e   s
0036120    t       (   n   a   m   e   !   0       e   q       2   0   0
0036140    0   b   +   $   I   )       &       (   n   a   m   e   !   1
0036160        e   q       $   F   *   4   0   0   b   +   $   U   )    
0036200    &       (   n   a   m   e   !   2       e   q       $   M   *
0036220    4   0   0   b   )  \r  \t       i   f   s   o       [       m
0036240    a   c   h   i   n   e       =       1 376 001  \0 205   [   ;
0036260        r   e   s   u   l   t   i   s       p   i   f   u   m   p
0036300    r   o   c       ]  \r  \t       i   f   n   o   t       r   e
0036320    s   u   l   t   i   s       N   o   o   p  \r   ]  \r  \r   a
0036340    n   d       p   i   m   p   r   o   c   (   i   m   a   g   ,
0036360        d   a   t   a   )       b   e  \r   [  \t   l   e   t    
0036400    r   e   a   l       =       d   a   t   a   !   3       &    
0036420    7   7   7   7   b  \r  \t   r   i   m   a   p   !   r   e   a
0036440    l       =       i   m   a   g  \r  \t   i   r   m   a   p   !
0036460    i   m   a   g       =       r   e   a   l  \r  \t   M   o   v
0036500    e   B   l   o   c   k   (   i   d   a   t   a   +   i   m   a
0036520    g   *   l   M   I   ,       d   a   t   a   ,       l   M   I
0036540    )  \r   ]  \r  \r   a   n   d       p   i   f   u   m   p   r
0036560    o   c   (   a   d   d   r   ,       d   a   t   a   )       b
0036600    e  \r   [  \t   l   e   t       r   e   a   l       =       I
0036620    F   A   D   r   2   m   a   s   k   -   d   a   t   a   >   >
0036640    I   F   U   M   .   n   o   t   I   F   A   D   r   2  \r 376
0036660  001  \0 312   z  \t   l   e   t       i   f   u   p       =    
0036700    i   f   u   e   +   (   r   e   a   l       r   s   h   i   f
0036720    t       4   )  \r  \t   @   i   f   u   p       =       o   n
0036740    e   B   i   t   s   !   (   r   e   a   l   &   1   7   b   )
0036760        %       @   i   f   u   p  \t   /   /       m   a   r   k
0037000        e   n   t   r   y  \r   ]  \r  \r   a   n   d       p   s
0037020    y   m   p   r   o   c   (   m   e   m   x   ,       v   a   l
0037040    u   e   ,       n   a   m   e   )       b   e  \r   /   /    
0037060    S   a   v   e       s   y   m   b   o   l   i   c       a   d
0037100    d   r   e   s   s  \r   i   f       m   e   m   x       e   q
0037120        i   m   x       t   h   e   n  \r   [  \t   l   e   t    
0037140    n   w       =       n   a   m   e   >   >   B   S   .   l   e
0037160    n   g   t   h   /   2   +   1  \r  \t   l   e   t       s   y
0037200    m       =       A   l   l   o   c   a   t   e   (   m   b   z
0037220    o   n   e   ,       n   w   )  \r  \t   M   o   v   e   B   l
0037240    o   c   k   (   s   y   m   ,       n   a   m   e   ,       n
0037260    w   )  \r  \t 376  \0 025 004   &   i   s   y   m   a   p   !
0037300    v   a   l   u   e       =       s   y   m  \r   ]  \r 377  \0
0037320   \0   c   o   m   p   i   l   e   p   c   p   r   i   n   t   .
0037340    c   m  \0 373 226   X 004   G  \0  \0 376  \0   '   [   5   B
0037360    c   p   l   /   F       p   c   p   r   i   n   t   .   b   c
0037400    p   l  \r   B   c   p   l   /   F       p   c   h   i   s   t
0037420    .   b   c   p   l  \r 377  \0  \0   l   o   a   d   p   c   p
0037440    r   i   n   t   .   c   m  \0 373 226   0 337 244  \0  \0 376
0037460   \0   2 371   z   B   l   d   r   /   F       p   c   p   r   i
0037500    n   t       p   c   h   i   s   t       r   e   a   d   m   b
0037520        d   p   d   i   v   i   d   e       t   e   m   p   l   a
0037540    t   e       g   p  \r 377  \0  \0   s   e   n   d   p   c   p
0037560    r   i   n   t   .   c   m  \0 373 226   x 337      \0  \0 376
0037600   \0   t 340 245   F   t   p       P   h   y   l   u   m       S
0037620    t   o   r   e   /   c       p   c   p   r   i   n   t   .   R
0037640    u   n       p   c   p   r   i   n   t   .   S   y   m   s    
0037660    p   c   p   r   i   n   t   .   b   c   p   l       p   c   h
0037700    i   s   t   .   b   c   p   l       c   o   m   p   i   l   e
0037720    p   c   p   r   i   n   t   .   c   m       l   o   a   d   p
0037740    c   p   r   i   n   t   .   c   m       s   e   n   d   p   c
0037760    p   r   i   n   t   .   c   m 374                            
0037771