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