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