$ od -c -N 50000 [_CDMiwok_01_]<cedarcommon2.0>NPGS>NPGSScan.mesa!3
0000000    -   -       f   i   l   e       N   P   G   S   S   c   a   n
0000020    .   m   e   s   a       r   e   w   r   i   t   t   e   n    
0000040    b   y       N   P   G   S   ,       M   a   y       2   4   ,
0000060        1   9   9   0       1   :   5   2   :   1   4       p   m
0000100        P   D   T  \n   -   -       N   P   G   S   S   c   a   n
0000120    .   p   g   s  \n   -   -       C   o   p   y   r   i   g   h
0000140    t     323       1   9   8   5   ,       1   9   8   6   ,    
0000160    1   9   8   8   ,       1   9   9   0       b   y       X   e
0000200    r   o   x       C   o   r   p   o   r   a   t   i   o   n   .
0000220            A   l   l       r   i   g   h   t   s       r   e   s
0000240    e   r   v   e   d   .  \n   -   -       D   O       N   O   T
0000260        C   O   N   V   E   R   T       T   O       T   I   O   G
0000300    A       F   O   R   M   A   T   !           (   N   P   G   S
0000320        r   e   q   u   i   r   e   s       t   h   e       m   e
0000340    s   a   -   s   t   y   l   e       c   o   m   m   e   n   t
0000360    s   )  \n   -   -       R   u   s   s       A   t   k   i   n
0000400    s   o   n       (   R   R   A   )       M   a   r   c   h    
0000420    1   7   ,       1   9   8   8       1   0   :   1   4   :   2
0000440    2       a   m       P   S   T  \n   -   -       D   o   u   g
0000460        W   y   a   t   t   ,       M   a   y       1   5   ,    
0000500    1   9   8   6       5   :   3   6   :   0   1       p   m    
0000520    P   D   T  \n   -   -       J   K   F       M   a   y       2
0000540    4   ,       1   9   9   0       1   0   :   0   2   :   0   0
0000560        a   m       P   D   T  \n  \n   -   -       N   P   G   S
0000600        [   d   e   f   s   :       N   P   G   S   P   a   r   s
0000620    e   T   a   b   l   e   ,       g   r   a   m   m   a   r   :
0000640        N   P   G   S   ]       _       N   P   G   S   S   c   a
0000660    n   .   p   g   s  \n  \n   D   I   R   E   C   T   O   R   Y
0000700   \n  \t   I   O       U   S   I   N   G       [   S   T   R   E
0000720    A   M   ]   ,  \n  \t   N   P   G   S   1       U   S   I   N
0000740    G       [  \n  \t  \t   A   c   t   i   o   n   S   t   a   c
0000760    k   ,       I   n   d   e   x   ,       L   i   n   k   S   t
0001000    a   c   k   ,       T   o   k   e   n   ,       V   a   l   u
0001020    e   ,       V   a   l   u   e   S   t   a   c   k   ,       n
0001040    u   l   l   V   a   l   u   e   ,       I   n   p   u   t   L
0001060    o   c   ]   ,  \n  \t   N   P   G   S   P   a   r   s   e   T
0001100    a   b   l   e       U   S   I   N   G       [  \n  \t  \t   e
0001120    n   d   M   a   r   k   e   r   ,       H   a   s   h   I   n
0001140    d   e   x   ,       H   a   s   h   T   a   b   l   e   R   e
0001160    f   ,       I   n   d   e   x   T   a   b   l   e   R   e   f
0001200    ,  \n  \t  \t   I   n   i   t   H   a   s   h   T   a   b   l
0001220    e   ,       I   n   i   t   I   n   d   e   x   T   a   b   l
0001240    e   ,       I   n   i   t   S   c   a   n   T   a   b   l   e
0001260    ,       I   n   i   t   V   o   c   a   b   u   l   a   r   y
0001300    ,  \n  \t  \t   P   r   o   d   D   a   t   a   R   e   f   ,
0001320        S   c   a   n   T   a   b   l   e   R   e   f   ,       T
0001340    S   y   m   b   o   l   ,       V   o   c   a   b   u   l   a
0001360    r   y   R   e   f   ,       t   o   k   e   n   I   D   ,    
0001400    t   o   k   e   n   N   U   M   ,  \n  \t  \t   t   o   k   e
0001420    n   T   A   B   3   ,       t   o   k   e   n   T   A   B   4
0001440    ]   ,  \n  \t   N   P   G   S   C   o   n   D   e   f   s    
0001460    U   S   I   N   G       [  \n  \t  \t   a   l   i   a   s   e
0001500    s   ,       a   l   t   e   r   n   a   t   e   L   i   m   ,
0001520       \n  \t  \t   C   u   s   p   P   r   e   S   e   t   P   r
0001540    i   o   r   i   t   y   T   o   k   e   n   A   r   r   a   y
0001560    ,       -   -       n   e   w       f   o   r       C   U   S
0001600    P  \n  \t  \t   e   o   f   M   a   r   k   ,       E   x   p
0001620    a   n   d   A   l   i   a   s   e   s   ,       E   x   p   a
0001640    n   d   P   r   o   d   I   n   f   o   ,       E   x   p   a
0001660    n   d   R   h   s   C   h   a   r   ,  \n  \t  \t   E   x   p
0001700    a   n   d   S   y   m   T   a   b   ,       f   l   a   g   s
0001720    ,       g   e   t   i   n   d   e   x   ,       i   n   c   h
0001740    a   r   ,       M   a   k   e   A   l   i   a   s   e   s   ,
0001760        M   a   k   e   P   r   o   d   I   n   f   o   ,  \n  \t
0002000   \t   M   a   k   e   R   h   s   C   h   a   r   ,       M   a
0002020    k   e   S   y   m   I   n   f   o   ,       M   a   k   e   S
0002040    y   m   T   a   b   ,       M   a   k   e   T   o   k   e   n
0002060    I   n   f   o   ,       m   a   x   P   r   o   d   ,  \n  \t
0002100   \t   m   a   x   R   h   s   S   y   m   b   o   l   s   ,    
0002120    m   a   x   R   u   l   e   ,       n   e   x   t   A   l   i
0002140    a   s   ,       n   u   m   P   r   o   d   ,       n   u   m
0002160    R   u   l   e   s   ,       o   u   t   b   u   f   L   i   m
0002200    ,  \n  \t  \t   o   u   t   c   h   a   r   ,       o   u   t
0002220    e   o   l   ,       o   u   t   n   u   m   ,       o   u   t
0002240    s   t   r   i   n   g   ,       p   r   o   d   I   n   f   o
0002260    ,       p   s   s   L   i   m   ,       r   e   s   e   t   o
0002300    u   t   s   t   r   e   a   m   ,  \n  \t  \t   r   h   s   C
0002320    h   a   r   ,       r   h   s   L   i   m   ,       s   e   t
0002340    e   r   r   s   t   r   e   a   m   ,       s   e   t   i   n
0002360    d   e   x   ,       s   e   t   o   u   t   s   t   r   e   a
0002400    m   ,       s   y   m   I   n   f   o   ,       s   y   m   T
0002420    a   b   ,  \n  \t  \t   s   y   m   T   a   b   S   i   z   e
0002440    ,       t   o   k   e   n   I   n   f   o   ,       t   o   k
0002460    e   n   S   i   z   e   ,       t   o   t   a   l   T   o   k
0002500    e   n   s   ,       w   a   r   n   i   n   g   s   L   o   g
0002520    g   e   d   ]   ,  \n  \t   N   P   G   S   T   y   p   e   s
0002540        U   S   I   N   G       [   O   p   t   i   o   n   s   ]
0002560    ,  \n  \t   R   o   p   e       U   S   I   N   G       [   F
0002600    r   o   m   R   e   f   T   e   x   t   ,       L   e   n   g
0002620    t   h   ,       R   O   P   E   ]   ;  \n  \t  \n   N   P   G
0002640    S   S   c   a   n   :       C   E   D   A   R       P   R   O
0002660    G   R   A   M  \n  \t   I   M   P   O   R   T   S       N   P
0002700    G   S   1   ,       N   P   G   S   C   o   n   D   e   f   s
0002720    ,       N   P   G   S   P   a   r   s   e   T   a   b   l   e
0002740    ,       R   o   p   e      \n  \t   E   X   P   O   R   T   S
0002760        N   P   G   S   1   ,       N   P   G   S   C   o   n   D
0003000    e   f   s  \n  \t   =       {       O   P   E   N       N   P
0003020    G   S   1   ,       N   P   G   S   P   a   r   s   e   T   a
0003040    b   l   e   ,       N   P   G   S   C   o   n   D   e   f   s
0003060    ;  \n  \t  \n  \t   R   O   P   E   :       T   Y   P   E    
0003100    =       R   o   p   e   .   R   O   P   E   ;  \n  \t   S   T
0003120    R   E   A   M   :       T   Y   P   E       =       I   O   .
0003140    S   T   R   E   A   M   ;  \n  \t  \n   -   -       T   r   e
0003160    e   B   u   i   l   d   :       i   n   t   e   r   p   r   e
0003200    t   e   r       s   e   c   t   i   o   n  \n  \n  \t   -   -
0003220        i   n   t   e   r   p   r   e   t   e   r       s   t   a
0003240    t   e  \n  \t  \n  \t  \t   c   h   e   c   k   :       N   A
0003260    T       =       3   ;  \n  \t  \t   w   a   r   n   i   n   g
0003300    :       N   A   T       =       0   ;  \n  \t  \t   s   p   e
0003320    c   E   r   r   o   r   C   a   s   e   s   :       N   A   T
0003340        =       5   ;  \n  \t  \t  \n  \t  \t   t   o   k   e   n
0003360    ,       n   u   m   R   h   s   C   h   a   r   s   :       C
0003400    A   R   D   I   N   A   L       _       0   ;  \n  \t  \t   l
0003420    i   n   e   W   i   d   t   h   :       I   N   T   E   G   E
0003440    R   ;  \n  \t  \t   i   n   s   e   r   t   F   l   a   g   :
0003460        C   A   R   D   I   N   A   L   ;  \n  \t  \t  \n  \t  \t
0003500    H   a   s   h   C   h   a   i   n   A   r   r   a   y   :    
0003520    T   Y   P   E       =       A   R   R   A   Y       [   1   .
0003540    .   s   y   m   T   a   b   S   i   z   e   /   4   ]       O
0003560    F       C   A   R   D   I   N   A   L   ;  \n  \t  \t   h   a
0003600    s   h   C   h   a   i   n   :       R   E   F       H   a   s
0003620    h   C   h   a   i   n   A   r   r   a   y   ;  \n  \t  \t  \n
0003640   \t   -   -       l   o   c   a   l       d   a   t   a       b
0003660    a   s   e       (   s   u   p   p   l   i   e   d       b   y
0003700        p   a   r   s   e   r   )  \n  \t  \n  \t  \t   v   :    
0003720    N   P   G   S   1   .   V   a   l   u   e   S   t   a   c   k
0003740    ;  \n  \t  \t   l   :       N   P   G   S   1   .   L   i   n
0003760    k   S   t   a   c   k   ;  \n  \t  \t  \n  \t  \t   q   :    
0004000    N   P   G   S   1   .   A   c   t   i   o   n   S   t   a   c
0004020    k   ;  \n  \t  \t  \n  \t  \t   p   r   o   d   D   a   t   a
0004040    :       P   r   o   d   D   a   t   a   R   e   f   ;  \n  \t
0004060   \t  \n  \t   -   -       i   n   i   t   i   a   l   i   z   a
0004100    t   i   o   n   /   t   e   r   m   i   n   a   t   i   o   n
0004120   \n  \t  \n  \t  \t   A   s   s   i   g   n   D   e   s   c   r
0004140    i   p   t   o   r   s   :       P   U   B   L   I   C       P
0004160    R   O   C       [  \n  \t  \t  \t   q   d   :       N   P   G
0004200    S   1   .   A   c   t   i   o   n   S   t   a   c   k   ,    
0004220    v   d   :       N   P   G   S   1   .   V   a   l   u   e   S
0004240    t   a   c   k   ,       l   d   :       N   P   G   S   1   .
0004260    L   i   n   k   S   t   a   c   k   ,       p   p   :       P
0004300    r   o   d   D   a   t   a   R   e   f   ]       =       {  \n
0004320   \t  \t  \t   q       _       q   d   ;  \n  \t  \t  \t   v    
0004340    _       v   d   ;  \n  \t  \t  \t   l       _       l   d   ;
0004360   \n  \t  \t  \t   p   r   o   d   D   a   t   a       _       p
0004400    p   ;  \n  \t  \t  \t   }   ;  \n  \t  \t  \t  \n  \t  \t   O
0004420    u   t   T   o   k   e   n   :       P   U   B   L   I   C    
0004440    P   R   O   C       [   s   y   m   b   o   l   :       C   A
0004460    R   D   I   N   A   L   ]       R   E   T   U   R   N   S    
0004500    [   C   A   R   D   I   N   A   L   ]       =       {  \n  \t
0004520   \t  \t   r   :       R   O   P   E       =       "   *       *
0004540        *   "   ;  \n  \t  \t  \t   I   F       s   y   m   b   o
0004560    l       =       0       T   H   E   N       {   o   u   t   s
0004600    t   r   i   n   g   [   r   ]   ;       R   E   T   U   R   N
0004620    [   R   o   p   e   .   L   e   n   g   t   h   [   r   ]   ]
0004640    }   ;  \n  \t  \t  \t   F   O   R       i   :       C   A   R
0004660    D   I   N   A   L       I   N       [   0   .   .   s   y   m
0004700    I   n   f   o   [   s   y   m   b   o   l   ]   .   l   e   n
0004720    g   t   h   )       D   O  \n  \t  \t  \t  \t   o   u   t   c
0004740    h   a   r   [   s   y   m   T   a   b   [   s   y   m   b   o
0004760    l   *   t   o   k   e   n   S   i   z   e   +   i   ]   ,   1
0005000    ]   ;  \n  \t  \t  \t  \t   E   N   D   L   O   O   P   ;  \n
0005020   \t  \t  \t   R   E   T   U   R   N       [   s   y   m   I   n
0005040    f   o   [   s   y   m   b   o   l   ]   .   l   e   n   g   t
0005060    h   ]   ;  \n  \t  \t  \t   }   ;  \n  \t  \t  \t  \n  \t  \t
0005100   \t  \n  \t   -   -       t   h   e       i   n   t   e   r   p
0005120    r   e   t   a   t   i   o   n       r   u   l   e   s  \n  \t
0005140   \n  \t  \t   p   r   i   x   ,       c   h   i   x   :       C
0005160    A   R   D   I   N   A   L       _       0   ;       -   -   i
0005200    n   d   e   x   e   s       i   n   t   o       p   r   o   d
0005220    I   n   f   o       a   n   d       r   h   s   C   h   a   r
0005240   \n  \t  \t   r   h   s   F   l   a   g   :       B   O   O   L
0005260    ;      \n  \t  \t   l   a   s   t   S   y   m   b   o   l   ,
0005300        l   h   s   D   e   f   :       C   A   R   D   I   N   A
0005320    L       _       0   ;  \n  \t  \t  \n  \t  \t   P   r   o   c
0005340    e   s   s   Q   u   e   u   e   :       P   U   B   L   I   C
0005360        P   R   O   C       [   q   I   ,       t   o   p   :    
0005400    C   A   R   D   I   N   A   L   ,       c   u   s   p   :    
0005420    B   O   O   L   ]       =       {  \n  \t  \t  \t   i   ,    
0005440    j   ,       k   :       C   A   R   D   I   N   A   L   ;  \n
0005460   \t  \t  \t  \n  \t  \t  \t   -   -       l   o   c   a   l    
0005500    p   r   o   c   e   d   u   r   e   s  \n  \t  \t  \t  \t   P
0005520    r   i   n   t   T   a   b   l   e   H   e   a   d   :       P
0005540    R   O   C       [   c   :       C   H   A   R   ]       =    
0005560    {  \n  \t  \t  \t  \t  \t   I   F       f   l   a   g   s   [
0005600    e   c   h   o   ]       T   H   E   N       {   o   u   t   e
0005620    o   l   [   2   ]   ;       o   u   t   s   t   r   i   n   g
0005640    [   "   |   |   T   A   B   L   E   "   ]   ;       o   u   t
0005660    c   h   a   r   [   c   ,   1   ]   ;       o   u   t   e   o
0005700    l   [   1   ]   }   ;  \n  \t  \t  \t  \t  \t   }   ;  \n  \t
0005720   \t  \t  \t  \t  \n  \t  \t  \t  \t   S   e   t   R   u   l   e
0005740    C   h   a   i   n   :       P   R   O   C       [   r   u   l
0005760    e   :       C   A   R   D   I   N   A   L   ,       c   h   a
0006000    i   n   :       B   O   O   L   ]       =       {  \n  \t  \t
0006020   \t  \t  \t   F   i   x   L   a   s   t   P   r   o   d   [   ]
0006040    ;  \n  \t  \t  \t  \t  \t   I   F       p   r   i   x   =   p
0006060    r   o   d   I   n   f   o   .   l   e   n   g   t   h       T
0006100    H   E   N       -   -   p   r   o   d   u   c   t   i   o   n
0006120        t   a   b   l   e       o   v   e   r   f   l   o   w  \n
0006140   \t  \t  \t  \t  \t  \t   p   r   o   d   I   n   f   o       _
0006160        E   x   p   a   n   d   P   r   o   d   I   n   f   o   [
0006200    p   r   o   d   I   n   f   o   ,       p   r   o   d   I   n
0006220    f   o   .   l   e   n   g   t   h   /   8   ]   ;  \n  \t  \t
0006240   \t  \t  \t   p   r   o   d   I   n   f   o   [   p   r   i   x
0006260    ]   .   c   h   a   i   n       _       c   h   a   i   n   ;
0006300   \n  \t  \t  \t  \t  \t   n   u   m   R   u   l   e   s       _
0006320        M   A   X   [   n   u   m   R   u   l   e   s   ,       r
0006340    u   l   e   ]   ;  \n  \t  \t  \t  \t  \t   I   F       r   u
0006360    l   e   >   m   a   x   R   u   l   e       T   H   E   N    
0006400    E   r   r   o   r   [   c   h   e   c   k   +   1   0   ,   -
0006420    5   ,   I   n   p   u   t   L   o   c   [   ]   ]       E   L
0006440    S   E       p   r   o   d   I   n   f   o   [   p   r   i   x
0006460    ]   .   r   u   l   e       _       r   u   l   e   ;  \n  \t
0006500   \t  \t  \t  \t   }   ;  \n  \t  \t  \t  \t  \t  \n  \t  \t  \t
0006520   \t   F   i   x   L   a   s   t   P   r   o   d   :       P   R
0006540    O   C       =       {  \n  \t  \t  \t  \t  \t   e   o   f   M
0006560    a   r   k   :       C   A   R   D   I   N   A   L       _    
0006600    N   P   G   S   C   o   n   D   e   f   s   .   e   o   f   M
0006620    a   r   k   ;  \n  \t  \t  \t  \t  \t   p   r   o   d   I   n
0006640    f   o   [   p   r   i   x   -   1   ]   .   l   h   s       _
0006660        l   h   s   D   e   f   ;  \n  \t  \t  \t  \t  \t   I   F
0006700        p   r   o   d   I   n   f   o   [   p   r   i   x   -   1
0006720    ]   .   c   o   u   n   t   =   0       T   H   E   N       t
0006740    o   k   e   n   I   n   f   o   [   l   h   s   D   e   f   -
0006760    e   o   f   M   a   r   k   ]   .   e   m   p   t   y       _
0007000        T   R   U   E   ;  \n  \t  \t  \t  \t  \t   I   F       r
0007020    h   s   F   l   a   g       T   H   E   N       {  \n  \t  \t
0007040   \t  \t  \t  \t   -   -       t   o   o       m   a   n   y    
0007060    r   h   s   C   h   a   r   s  \n  \t  \t  \t  \t  \t  \t   r
0007100    h   s   F   l   a   g       _       F   A   L   S   E   ;  \n
0007120   \t  \t  \t  \t  \t  \t   E   r   r   o   r   [   c   h   e   c
0007140    k   +   5   ,       (   p   r   i   x   -   1   +   s   p   e
0007160    c   E   r   r   o   r   C   a   s   e   s   )   ,       I   n
0007200    p   u   t   L   o   c   [   ]   ]   ;  \n  \t  \t  \t  \t  \t
0007220   \t   }   ;  \n  \t  \t  \t  \t  \t   }   ;  \n  \t  \t  \t  \t
0007240   \t  \t  \n  \t  \t  \t  \t   P   r   o   d   H   e   a   d   e
0007260    r   :       P   R   O   C       [   n   e   w   :       B   O
0007300    O   L   ]       =       {  \n  \t  \t  \t  \t  \t   p   r   o
0007320    d   I   n   f   o   [   p   r   i   x   ]   .   i   n   d   e
0007340    x       _       c   h   i   x   ;  \n  \t  \t  \t  \t  \t   I
0007360    F       l   h   s   D   e   f   >   e   o   f   M   a   r   k
0007400        T   H   E   N       {  \n  \t  \t  \t  \t  \t  \t   I   F
0007420        t   o   k   e   n   I   n   f   o   [   l   h   s   D   e
0007440    f   -   e   o   f   M   a   r   k   ]   .   c   o   u   n   t
0007460    =   a   l   t   e   r   n   a   t   e   L   i   m       T   H
0007500    E   N       {  \n  \t  \t  \t  \t  \t  \t  \t   E   r   r   o
0007520    r   [   c   h   e   c   k   +   1   ,       l   h   s   D   e
0007540    f   ,   I   n   p   u   t   L   o   c   [   ]   ]   ;        
0007560    -   -   t   o   o       m   a   n   y       a   l   t   e   r
0007600    n   a   t   i   v   e   s  \n  \t  \t  \t  \t  \t  \t  \t   t
0007620    o   k   e   n   I   n   f   o   [   l   h   s   D   e   f   -
0007640    e   o   f   M   a   r   k   ]   .   c   o   u   n   t       _
0007660    1   ;  \n  \t  \t  \t  \t  \t  \t  \t   }   ;  \n  \t  \t  \t
0007700   \t  \t  \t   t   o   k   e   n   I   n   f   o   [   l   h   s
0007720    D   e   f   -   e   o   f   M   a   r   k   ]   .   c   o   u
0007740    n   t       _       t   o   k   e   n   I   n   f   o   [   l
0007760    h   s   D   e   f   -   e   o   f   M   a   r   k   ]   .   c
0010000    o   u   n   t       +       1   ;  \n  \t  \t  \t  \t  \t  \t
0010020    }   ;  \n  \t  \t  \t  \t  \t   I   F       f   l   a   g   s
0010040    [   e   c   h   o   ]       T   H   E   N       {  \n  \t  \t
0010060   \t  \t  \t  \t   l   i   n   e   W   i   d   t   h       _    
0010100    o   u   t   b   u   f   L   i   m   -   t   o   k   e   n   S
0010120    i   z   e   -   1   4   ;  \n  \t  \t  \t  \t  \t  \t   o   u
0010140    t   e   o   l   [   I   F       n   e   w       T   H   E   N
0010160        2       E   L   S   E       1   ]   ;  \n  \t  \t  \t  \t
0010200   \t  \t   o   u   t   n   u   m   [   p   r   i   x   ,   3   ]
0010220    ;  \n  \t  \t  \t  \t  \t  \t   o   u   t   s   t   r   i   n
0010240    g   [   I   F       p   r   o   d   I   n   f   o   [   p   r
0010260    i   x   ]   .   c   h   a   i   n       T   H   E   N       "
0010300        C       "       E   L   S   E       "               "   ]
0010320    ;  \n  \t  \t  \t  \t  \t  \t   o   u   t   n   u   m   [   p
0010340    r   o   d   I   n   f   o   [   p   r   i   x   ]   .   r   u
0010360    l   e   ,   3   ]   ;       o   u   t   c   h   a   r   [   '
0010400        ,   2   ]   ;  \n  \t  \t  \t  \t  \t  \t   o   u   t   c
0010420    h   a   r   [   '       ,   t   o   k   e   n   S   i   z   e
0010440    -   (   I   F       n   e   w       T   H   E   N       O   u
0010460    t   T   o   k   e   n   [   l   h   s   D   e   f   ]       E
0010500    L   S   E       0   )   ]   ;  \n  \t  \t  \t  \t  \t  \t   o
0010520    u   t   s   t   r   i   n   g   [   I   F       n   e   w    
0010540    T   H   E   N       "       :   :   =       "       E   L   S
0010560    E       "               |       "   ]   ;  \n  \t  \t  \t  \t
0010600   \t  \t   }   ;  \n  \t  \t  \t  \t  \t   p   r   i   x       _
0010620        p   r   i   x   +   1   ;  \n  \t  \t  \t  \t  \t   }   ;
0010640   \n  \t  \t  \t  \t  \t  \n  \t  \t  \t  \t   L   h   s   S   y
0010660    m   b   o   l   :       P   R   O   C       [   s   y   m   b
0010700    o   l   :       C   A   R   D   I   N   A   L   ]       =    
0010720    {  \n  \t  \t  \t  \t  \t   l   h   s   D   e   f       _    
0010740    s   y   m   b   o   l   ;  \n  \t  \t  \t  \t  \t   I   F    
0010760    l   h   s   D   e   f   <   =   e   o   f   M   a   r   k  \n
0011000   \t  \t  \t  \t  \t  \t       T   H   E   N       E   r   r   o
0011020    r   [   c   h   e   c   k   +   4   ,   l   h   s   D   e   f
0011040    ,   I   n   p   u   t   L   o   c   [   ]   ]  \n  \t  \t  \t
0011060   \t  \t  \t       -   -       u   n   d   e   f   i   n   e   d
0011100        o   r       t   e   r   m   i   n   a   l       s   y   m
0011120    b   o   l       b   e   f   o   r   e       :   :   =  \n  \t
0011140   \t  \t  \t  \t  \t       E   L   S   E  \n  \t  \t  \t  \t  \t
0011160   \t  \t       I   F       t   o   k   e   n   I   n   f   o   [
0011200    l   h   s   D   e   f   -   e   o   f   M   a   r   k   ]   .
0011220    i   n   d   e   x       =       0  \n  \t  \t  \t  \t  \t  \t
0011240   \t  \t   T   H   E   N       t   o   k   e   n   I   n   f   o
0011260    [   l   h   s   D   e   f   -   e   o   f   M   a   r   k   ]
0011300    .   i   n   d   e   x       _       p   r   i   x  \n  \t  \t
0011320   \t  \t  \t  \t  \t  \t   E   L   S   E       E   r   r   o   r
0011340    [   c   h   e   c   k   +   2   ,   l   h   s   D   e   f   ,
0011360    I   n   p   u   t   L   o   c   [   ]   ]   ;       -   -   m
0011400    u   l   t   i   p   l   e       d   e   f   i   n   i   t   i
0011420    o   n   s  \n  \t  \t  \t  \t  \t   P   r   o   d   H   e   a
0011440    d   e   r   [   T   R   U   E   ]   ;  \n  \t  \t  \t  \t  \t
0011460    }   ;  \n  \t  \t  \t   -   -       e   n   d       o   f    
0011500    l   o   c   a   l       p   r   o   c   e   d   u   r   e   s
0011520   \n  \t  \t  \t  \n  \t  \t  \t  \t   F   O   R       q   j   :
0011540        C   A   R   D   I   N   A   L       I   N       [   0   .
0011560    .   q   I   )       D   O  \n  \t  \t  \t  \t  \t   t   o   p
0011600        _       t   o   p   -   q   [   q   j   ]   .   t   a   g
0011620    .   p   L   e   n   g   t   h   +   1   ;  \n  \t  \t  \t  \t
0011640   \t   S   E   L   E   C   T       p   r   o   d   D   a   t   a
0011660    [   q   [   q   j   ]   .   t   r   a   n   s   i   t   i   o
0011700    n   ]   .   r   u   l   e       F   R   O   M  \n  \t  \t  \t
0011720   \t  \t  \n                                                    
0011740                                                    0           =
0011760    >       -   -       T   Y   P   E   :       N   P   G   S   P
0012000    a   r   s   e   T   a   b   l   e           E   X   P   O   R
0012020    T   S   :       S   E   L   F  \n  \t  \t  \t  \t   -   -    
0012040    G   O   A   L   :       g   r   a   m   m   a   r  \n  \t  \t
0012060   \t  \t   -   -       T   E   R   M   I   N   A   L   S   :  \n
0012100   \t  \t  \t  \t   -   -       s   y   m   b   o   l       n   u
0012120    m       '   ?       '   |       "   :   :   =   "       '   C
0012140        "   |   |   T   A   B   L   E   1   "       "   |   |   T
0012160    A   B   L   E   2   "       "   |   |   T   A   B   L   E   3
0012200    "  \n  \t  \t  \t  \t   -   -       "   |   |   T   A   B   L
0012220    E   4   "       "   |   |   I   N   P   U   T   "       "   |
0012240    |   C   H   A   I   N   "       "   |   |   L   I   S   T   S
0012260    "       "   |   |   P   R   I   N   T   L   R   "  \n  \t  \t
0012300   \t  \t   -   -       "   |   |   P   R   I   N   T   L   A   L
0012320    R   "       "   |   |   F   I   R   S   T   "       "   |   |
0012340    I   D   S   "       "   G   O   A   L   "  \n  \t  \t  \t  \t
0012360    -   -       A   L   I   A   S   E   S   :       s   y   m   b
0012400    o   l       t   o   k   e   n   I   D           n   u   m    
0012420    t   o   k   e   n   N   U   M           '   ?       t   o   k
0012440    e   n   Q   U   E   R   Y  \n  \t  \t  \t  \t   -   -       "
0012460    |   |   T   A   B   L   E   3   "       t   o   k   e   n   T
0012500    A   B   3           "   |   |   T   A   B   L   E   4   "    
0012520    t   o   k   e   n   T   A   B   4           '   ?       i   n
0012540    i   t   i   a   l   S   y   m   b   o   l  \n  \t  \t  \t  \t
0012560    -   -       P   R   O   D   U   C   T   I   O   N   S   :  \n
0012600   \t  \t  \t  \t   -   -       g   r   a   m   m   a   r        
0012620                            :   :   =       '   ?       h   e   a
0012640    d       r   u   l   e   s   e   t  \n  \t  \t  \t  \t   {  \n
0012660   \t  \t  \t  \t   F   i   x   L   a   s   t   P   r   o   d   [
0012700    ]   ;  \n  \t  \t  \t  \t   n   u   m   P   r   o   d       _
0012720        p   r   i   x   -   1   ;  \n  \t  \t  \t  \t   n   u   m
0012740    R   h   s   C   h   a   r   s       _       c   h   i   x   -
0012760    1   ;  \n  \t  \t  \t  \t   i       _       1   ;  \n  \t  \t
0013000   \t  \t   I   F       f   l   a   g   s   [   e   c   h   o   ]
0013020        T   H   E   N       o   u   t   e   o   l   [   1   ]   ;
0013040   \n  \t  \t  \t  \t   I   F       n   u   m   P   r   o   d    
0013060    >       p   s   s   L   i   m       O   R       t   o   t   a
0013100    l   T   o   k   e   n   s       >       p   s   s   L   i   m
0013120        T   H   E   N       E   r   r   o   r   [   c   h   e   c
0013140    k   +   6   ,   0   ,   I   n   p   u   t   L   o   c   [   ]
0013160    ]   ;  \n  \t  \t  \t  \t   I   F       c   u   s   p       T
0013200    H   E   N       C   u   s   p   P   r   e   S   e   t   P   r
0013220    i   o   r   i   t   y   T   o   k   e   n   A   r   r   a   y
0013240    [   h   a   s   h   C   h   a   i   n   ]   ;       -   -    
0013260    n   e   w       f   o   r       C   U   S   P  \n  \t  \t  \t
0013300   \t   h   a   s   h   C   h   a   i   n       _       N   I   L
0013320    ;  \n  \t  \t  \t  \t   W   H   I   L   E       s   y   m   I
0013340    n   f   o   [   i   ]   .   u   s   e   d       A   N   D    
0013360    i       <   =       t   o   t   a   l   T   o   k   e   n   s
0013400        D   O  \n  \t  \t  \t  \t  \t   I   F       i       >    
0013420    e   o   f   M   a   r   k       A   N   D       t   o   k   e
0013440    n   I   n   f   o   [   i   -   e   o   f   M   a   r   k   ]
0013460    .   i   n   d   e   x       =       0       T   H   E   N    
0013500    E   X   I   T   ;  \n  \t  \t  \t  \t  \t   i       _       i
0013520    +   1   ;  \n  \t  \t  \t  \t  \t   E   N   D   L   O   O   P
0013540    ;  \n  \t  \t  \t  \t   I   F       i       <   =       t   o
0013560    t   a   l   T   o   k   e   n   s       T   H   E   N       {
0013600   \n  \t  \t  \t  \t  \t   d   e   f   f   l   a   g   :       B
0013620    O   O   L       _       F   A   L   S   E   ;  \n  \t  \t  \t
0013640   \t  \t   l   i   n   e   W   i   d   t   h       _       0   ;
0013660        E   r   r   o   r   [   w   a   r   n   i   n   g   +   3
0013700    ,   0   ,   I   n   p   u   t   L   o   c   [   ]   ]   ;    
0013720    s   e   t   e   r   r   s   t   r   e   a   m   [   ]   ;  \n
0013740   \t  \t  \t  \t  \t   F   O   R       i       I   N       [   i
0013760    .   .   t   o   t   a   l   T   o   k   e   n   s   ]       D
0014000    O  \n  \t  \t  \t  \t  \t  \t   j       _       0   ;       I
0014020    F       ~   s   y   m   I   n   f   o   [   i   ]   .   u   s
0014040    e   d       T   H   E   N       j       _       j   +   1   ;
0014060   \n  \t  \t  \t  \t  \t  \t   I   F       i       >       e   o
0014100    f   M   a   r   k       A   N   D       t   o   k   e   n   I
0014120    n   f   o   [   i   -   e   o   f   M   a   r   k   ]   .   i
0014140    n   d   e   x       =       0       T   H   E   N       j    
0014160    _       j   +   2   ;  \n  \t  \t  \t  \t  \t  \t   I   F    
0014200    j       #       0       T   H   E   N       {  \n  \t  \t  \t
0014220   \t  \t  \t  \t   I   F       (   l   i   n   e   W   i   d   t
0014240    h       _       l   i   n   e   W   i   d   t   h   +   (   k
0014260    _   (   1   1   +   j   )   /   2   )   )       >       o   u
0014300    t   b   u   f   L   i   m       T   H   E   N       {  \n  \t
0014320   \t  \t  \t  \t  \t  \t  \t   o   u   t   e   o   l   [   1   ]
0014340    ;       l   i   n   e   W   i   d   t   h       _       k   }
0014360    ;  \n  \t  \t  \t  \t  \t  \t  \t   o   u   t   n   u   m   [
0014400    i   ,   5   ]   ;  \n  \t  \t  \t  \t  \t  \t  \t   I   F    
0014420    j   #   2       T   H   E   N       o   u   t   c   h   a   r
0014440    [   '   U   ,   1   ]       E   L   S   E       d   e   f   f
0014460    l   a   g       _       T   R   U   E   ;  \n  \t  \t  \t  \t
0014500   \t  \t  \t   I   F       j   >   1       T   H   E   N       o
0014520    u   t   c   h   a   r   [   '   D   ,   1   ]   }   ;  \n  \t
0014540   \t  \t  \t  \t  \t   E   N   D   L   O   O   P   ;  \n  \t  \t
0014560   \t  \t  \t   o   u   t   e   o   l   [   1   ]   ;       r   e
0014600    s   e   t   o   u   t   s   t   r   e   a   m   [   ]   ;  \n
0014620   \t  \t  \t  \t  \t   I   F       d   e   f   f   l   a   g    
0014640    T   H   E   N  \n  \t  \t  \t  \t  \t  \t   -   -       n   o
0014660    n   t   e   r   m   i   n   a   l       u   s   e   d       b
0014700    u   t       n   o   t       d   e   f   i   n   e   d  \n  \t
0014720   \t  \t  \t  \t  \t   E   r   r   o   r   [   c   h   e   c   k
0014740    +   3   ,   -   2   ,   I   n   p   u   t   L   o   c   [   ]
0014760    ]   ;  \n  \t  \t  \t  \t  \t   }   ;  \n  \t  \t  \t  \t   F
0015000    O   R       i       I   N       [   1   .   .   n   u   m   P
0015020    r   o   d   ]       D   O  \n  \t  \t  \t  \t  \t   I   F    
0015040    p   r   o   d   I   n   f   o   [   i   ]   .   c   h   a   i
0015060    n       T   H   E   N  \n  \t  \t  \t  \t  \t  \t   I   F    
0015100    p   r   o   d   I   n   f   o   [   i   ]   .   c   o   u   n
0015120    t       #       1       O   R       r   h   s   C   h   a   r
0015140    [   p   r   o   d   I   n   f   o   [   i   ]   .   i   n   d
0015160    e   x   ]       <   =       e   o   f   M   a   r   k       T
0015200    H   E   N       {  \n  \t  \t  \t  \t  \t  \t  \t   E   r   r
0015220    o   r   [   w   a   r   n   i   n   g   +   2   ,       -   (
0015240    i   +   s   p   e   c   E   r   r   o   r   C   a   s   e   s
0015260    )   ,       I   n   p   u   t   L   o   c   [   ]   ]   ;  \n
0015300   \t  \t  \t  \t  \t  \t  \t   p   r   o   d   I   n   f   o   [
0015320    i   ]   .   c   h   a   i   n       _       F   A   L   S   E
0015340    ;  \n  \t  \t  \t  \t  \t  \t  \t   }   ;  \n  \t  \t  \t  \t
0015360   \t   E   N   D   L   O   O   P   ;  \n  \t  \t  \t  \t   F   i
0015400    n   i   s   h   I   n   p   u   t   [   ]   ;  \n  \t  \t  \t
0015420   \t   }   ;  \n  \t  \t  \t  \t  \n                            
0015440                                                                 
0015460            1           =   >       -   -       h   e   a   d    
0015500                                            :   :   =       d   i
0015520    r   e   c   t   i   v   e   s       t   e   r   m   i   n   a
0015540    l   s       n   o   n   t   e   r   m   i   n   a   l   s    
0015560    "   |   |   T   A   B   L   E   4   "  \n  \t  \t  \t  \t   -
0015600    -       h   e   a   d                                        
0015620        :   :   =       d   i   r   e   c   t   i   v   e   s    
0015640    t   e   r   m   i   n   a   l   s       n   o   n   t   e   r
0015660    m   i   n   a   l   s       a   l   i   a   s   e   s       "
0015700    |   |   T   A   B   L   E   4   "  \n  \t  \t  \t  \t   {  \n
0015720   \t  \t  \t  \t   t   o   t   a   l   T   o   k   e   n   s    
0015740    _       l   a   s   t   S   y   m   b   o   l   ;       P   r
0015760    i   n   t   T   a   b   l   e   H   e   a   d   [   '   4   ]
0016000    ;  \n  \t  \t  \t  \t   t   o   k   e   n   I   n   f   o    
0016020    _       M   a   k   e   T   o   k   e   n   I   n   f   o   [
0016040    t   o   t   a   l   T   o   k   e   n   s   -   e   o   f   M
0016060    a   r   k   +   1   ]   ;  \n  \t  \t  \t  \t   n   u   m   R
0016100    u   l   e   s       _       0   ;  \n  \t  \t  \t  \t   p   r
0016120    o   d   I   n   f   o       _       M   a   k   e   P   r   o
0016140    d   I   n   f   o   [   m   a   x   P   r   o   d   +   1   ]
0016160    ;  \n  \t  \t  \t  \t   r   h   s   C   h   a   r       _    
0016200    M   a   k   e   R   h   s   C   h   a   r   [   m   a   x   R
0016220    h   s   S   y   m   b   o   l   s   +   1   ]   ;  \n  \t  \t
0016240   \t  \t   F   O   R       i       I   N       [   0   .   .   t
0016260    o   t   a   l   T   o   k   e   n   s   -   e   o   f   M   a
0016300    r   k   ]       D   O  \n  \t  \t  \t  \t  \t   t   o   k   e
0016320    n   I   n   f   o   [   i   ]       _       [   c   o   u   n
0016340    t   :   0   ,       e   m   p   t   y   :   F   A   L   S   E
0016360    ,       i   n   d   e   x   :   0   ]   ;  \n  \t  \t  \t  \t
0016400   \t   E   N   D   L   O   O   P   ;  \n  \t  \t  \t  \t   p   r
0016420    o   d   I   n   f   o   [   0   ]       _       [   c   o   u
0016440    n   t   :   2   ,       r   u   l   e   :   0   ,       c   h
0016460    a   i   n   :   F   A   L   S   E   ,       l   h   s   :   0
0016500    ,       i   n   d   e   x   :   0   ]   ;  \n  \t  \t  \t  \t
0016520    F   O   R       i       I   N       [   1   .   .   m   a   x
0016540    P   r   o   d   ]       D   O  \n  \t  \t  \t  \t  \t   p   r
0016560    o   d   I   n   f   o   [   i   ]       _       [   c   o   u
0016600    n   t   :   0   ,       r   u   l   e   :   0   ,       c   h
0016620    a   i   n   :   F   A   L   S   E   ,       l   h   s   :   0
0016640    ,       i   n   d   e   x   :   0   ]   ;  \n  \t  \t  \t  \t
0016660   \t   E   N   D   L   O   O   P   ;  \n  \t  \t  \t  \t   I   F
0016700        f   l   a   g   s   [   e   c   h   o   ]       T   H   E
0016720    N       {  \n  \t  \t  \t  \t  \t   o   u   t   e   o   l   [
0016740    1   ]   ;  \n  \t  \t  \t  \t  \t   o   u   t   c   h   a   r
0016760    [   '       ,   2   0   ]   ;  \n  \t  \t  \t  \t  \t   o   u
0017000    t   s   t   r   i   n   g   [   "   G   O   A   L       :   :
0017020    =       "   ]   ;  \n  \t  \t  \t  \t  \t   [   ]       _    
0017040    O   u   t   T   o   k   e   n   [   e   o   f   M   a   r   k
0017060    +   1   ]   ;       o   u   t   c   h   a   r   [   '       ,
0017100    1   ]   ;  \n  \t  \t  \t  \t  \t   [   ]       _       O   u
0017120    t   T   o   k   e   n   [   e   o   f   M   a   r   k   ]   ;
0017140   \n  \t  \t  \t  \t  \t   }   ;  \n  \t  \t  \t  \t   r   h   s
0017160    C   h   a   r   [   0   ]       _       e   o   f   M   a   r
0017200    k   +   1   ;  \n  \t  \t  \t  \t   r   h   s   C   h   a   r
0017220    [   1   ]       _       e   o   f   M   a   r   k   ;  \n  \t
0017240   \t  \t  \t   s   y   m   I   n   f   o   [   e   o   f   M   a
0017260    r   k   +   1   ]   .   u   s   e   d       _       s   y   m
0017300    I   n   f   o   [   e   o   f   M   a   r   k   ]   .   u   s
0017320    e   d       _       T   R   U   E   ;  \n  \t  \t  \t  \t   p
0017340    r   i   x       _       1   ;       c   h   i   x       _    
0017360    2   ;       l   h   s   D   e   f       _       0   ;       r
0017400    h   s   F   l   a   g       _       F   A   L   S   E   ;  \n
0017420   \t  \t  \t  \t   }   ;  \n  \t  \t  \t  \t  \n                
0017440                                                                 
0017460                        2           =   >       -   -       d   i
0017500    r   e   c   t   i   v   e   s                       :   :   =
0017520   \n  \t  \t  \t  \t   {   f   l   a   g   s       _       A   L
0017540    L   [   F   A   L   S   E   ]   ;           l   [   t   o   p
0017560    ]       _       I   n   p   u   t   L   o   c   [   ]   }   ;
0017600   \n  \t  \t  \t  \t  \n                                        
0017620                                                                3
0017640            =   >       -   -       d   i   r   e   c   t   i   v
0017660    e                           :   :   =       "   |   |   I   N
0017700    P   U   T   "  \n  \t  \t  \t  \t   {   f   l   a   g   s   [
0017720    e   c   h   o   ]       _       T   R   U   E   ;       s   e
0017740    t   o   u   t   s   t   r   e   a   m   [   "   .   e   c   h
0017760    o   "   ]   }   ;  \n  \t  \t  \t  \t  \n                    
0020000                                                                 
0020020                    4           =   >       -   -       d   i   r
0020040    e   c   t   i   v   e                           :   :   =    
0020060    "   |   |   C   H   A   I   N   "  \n  \t  \t  \t  \t   f   l
0020100    a   g   s   [   c   h   a   i   n   ]       _       T   R   U
0020120    E   ;  \n  \t  \t  \t  \t  \n                                
0020140                                                                 
0020160        5           =   >       -   -       d   i   r   e   c   t
0020200    i   v   e                           :   :   =       "   |   |
0020220    L   I   S   T   S   "  \n  \t  \t  \t  \t   f   l   a   g   s
0020240    [   l   i   s   t   s   ]       _       T   R   U   E   ;  \n
0020260   \t  \t  \t  \t  \n                                            
0020300                                                            6    
0020320        =   >       -   -       d   i   r   e   c   t   i   v   e
0020340                            :   :   =       "   |   |   P   R   I
0020360    N   T   L   R   "  \n  \t  \t  \t  \t   f   l   a   g   s   [
0020400    p   r   i   n   t   L   R   ]       _       T   R   U   E   ;
0020420   \n  \t  \t  \t  \t  \n                                        
0020440                                                                7
0020460            =   >       -   -       d   i   r   e   c   t   i   v
0020500    e                           :   :   =       "   |   |   P   R
0020520    I   N   T   L   A   L   R   "  \n  \t  \t  \t  \t   f   l   a
0020540    g   s   [   p   r   i   n   t   L   A   L   R   ]       _    
0020560    T   R   U   E   ;  \n  \t  \t  \t  \t  \n                    
0020600                                                                 
0020620                    8           =   >       -   -       d   i   r
0020640    e   c   t   i   v   e                           :   :   =    
0020660    "   |   |   F   I   R   S   T   "  \n  \t  \t  \t  \t   f   l
0020700    a   g   s   [   f   i   r   s   t   ]       _       T   R   U
0020720    E   ;  \n  \t  \t  \t  \t  \n                                
0020740                                                                 
0020760        9           =   >       -   -       d   i   r   e   c   t
0021000    i   v   e                           :   :   =       "   |   |
0021020    I   D   S   "  \n  \t  \t  \t  \t   f   l   a   g   s   [   i
0021040    d   s   ]       _       T   R   U   E   ;  \n  \t  \t  \t  \t
0021060   \n                                                            
0021100                                        1   0           =   >    
0021120    -   -       t   e   r   m   i   n   a   l   s                
0021140            :   :   =       "   |   |   T   A   B   L   E   1   "
0021160   \n  \t  \t  \t  \t   {  \n  \t  \t  \t  \t  \t   I   F       f
0021200    l   a   g   s   [   e   c   h   o   ]       T   H   E   N    
0021220    {  \n  \t  \t  \t  \t  \t  \t   o   u   t   e   o   l   [   1
0021240    ]   ;  \n  \t  \t  \t  \t  \t  \t   F   O   R       o   p   t
0021260    :       N   P   G   S   T   y   p   e   s   .   O   p   t   i
0021300    o   n   s       I   N       N   P   G   S   T   y   p   e   s
0021320    .   O   p   t   i   o   n   s       D   O  \n  \t  \t  \t  \t
0021340   \t  \t  \t   I   F       f   l   a   g   s   [   o   p   t   ]
0021360        T   H   E   N       o   u   t   s   t   r   i   n   g   [
0021400   \n  \t  \t  \t  \t  \t  \t  \t  \t   S   E   L   E   C   T    
0021420    o   p   t       F   R   O   M  \n  \t  \t  \t  \t  \t  \t  \t
0021440   \t  \t   e   c   h   o       =   >       "   |   |   I   N   P
0021460    U   T       "   ,  \n  \t  \t  \t  \t  \t  \t  \t  \t  \t   c
0021500    h   a   i   n       =   >       "   |   |   C   H   A   I   N
0021520        "   ,  \n  \t  \t  \t  \t  \t  \t  \t  \t  \t   l   i   s
0021540    t   s       =   >       "   |   |   L   I   S   T   S       "
0021560    ,  \n  \t  \t  \t  \t  \t  \t  \t  \t  \t   p   r   i   n   t
0021600    L   R       =   >       "   |   |   P   R   I   N   T   L   R
0021620        "   ,  \n  \t  \t  \t  \t  \t  \t  \t  \t  \t   p   r   i
0021640    n   t   L   A   L   R       =   >       "   |   |   P   R   I
0021660    N   T   L   A   L   R       "   ,  \n  \t  \t  \t  \t  \t  \t
0021700   \t  \t  \t   f   i   r   s   t       =   >       "   |   |   F
0021720    I   R   S   T       "   ,  \n  \t  \t  \t  \t  \t  \t  \t  \t
0021740   \t   E   N   D   C   A   S   E       =   >       "   |   |   I
0021760    D   S       "   ]   ;  \n  \t  \t  \t  \t  \t  \t  \t   E   N
0022000    D   L   O   O   P   ;  \n  \t  \t  \t  \t  \t  \t   }   ;  \n
0022020   \t  \t  \t  \t  \t   P   r   i   n   t   T   a   b   l   e   H
0022040    e   a   d   [   '   1   ]   ;  \n  \t  \t  \t  \t  \t   }   ;
0022060   \n  \t  \t  \t  \t  \t  \n                                    
0022100                                                                1
0022120    1           =   >       -   -       t   e   r   m   i   n   a
0022140    l   s                           :   :   =       t   e   r   m
0022160    i   n   a   l   s       d   i   s   c   a   r   d       s   y
0022200    m   b   o   l  \n  \t  \t  \t  \t   -   -       n   o   n   t
0022220    e   r   m   i   n   a   l   s               :   :   =       n
0022240    o   n   t   e   r   m   i   n   a   l   s       d   i   s   c
0022260    a   r   d       s   y   m   b   o   l      \n  \t  \t  \t  \t
0022300    {  \n  \t  \t  \t  \t  \t   l   a   s   t   S   y   m   b   o
0022320    l       _       v   [   t   o   p   +   2   ]   .   s   ;  \n
0022340   \t  \t  \t  \t  \t   I   F       f   l   a   g   s   [   e   c
0022360    h   o   ]       T   H   E   N       {  \n  \t  \t  \t  \t  \t
0022400   \t   o   u   t   n   u   m   [   l   a   s   t   S   y   m   b
0022420    o   l   ,       3   ]   ;       o   u   t   c   h   a   r   [
0022440    '       ,       2   ]   ;  \n  \t  \t  \t  \t  \t  \t   [   ]
0022460        _       O   u   t   T   o   k   e   n   [   l   a   s   t
0022500    S   y   m   b   o   l   ]   ;  \n  \t  \t  \t  \t  \t  \t   o
0022520    u   t   e   o   l   [   1   ]   }   ;  \n  \t  \t  \t  \t  \t
0022540    }   ;  \n  \t  \t  \t  \t  \t  \n                            
0022560                                                                 
0022600        1   2           =   >       -   -       n   o   n   t   e
0022620    r   m   i   n   a   l   s               :   :   =       "   |
0022640    |   T   A   B   L   E   2   "  \n  \t  \t  \t  \t   {  \n  \t
0022660   \t  \t  \t  \t   P   r   i   n   t   T   a   b   l   e   H   e
0022700    a   d   [   '   2   ]   ;       e   o   f   M   a   r   k    
0022720    _       l   a   s   t   S   y   m   b   o   l   ;  \n  \t  \t
0022740   \t  \t  \t   n   e   x   t   A   l   i   a   s       _       0
0022760    ;           -   -       a   s   s   e   r   t       T   A   B
0023000    L   E   3       e   m   p   t   y       i   n       c   a   s
0023020    e       i   t       i   s       o   m   i   t   t   e   d  \n
0023040   \t  \t  \t  \t  \t   a   l   i   a   s   e   s       _       N
0023060    I   L   ;  \n  \t  \t  \t  \t  \t   }   ;  \n  \t  \t  \t  \t
0023100   \t  \n                                                        
0023120                                            1   3           =   >
0023140        -   -       a   l   i   a   s   e   s                    
0023160                :   :   =       "   |   |   T   A   B   L   E   3
0023200    "  \n  \t  \t  \t  \t   {  \n  \t  \t  \t  \t  \t   P   r   i
0023220    n   t   T   a   b   l   e   H   e   a   d   [   '   3   ]   ;
0023240   \n  \t  \t  \t  \t  \t   a   l   i   a   s   e   s       _    
0023260    M   a   k   e   A   l   i   a   s   e   s   [   6   4   ]   ;
0023300   \n  \t  \t  \t  \t  \t   }   ;  \n  \t  \t  \t  \t  \t  \n    
0023320                                                                 
0023340                                1   4           =   >       -   -
0023360        a   l   i   a   s   e   s                                
0023400    :   :   =       a   l   i   a   s   e   s       s   y   m   b
0023420    o   l       s   y   m   b   o   l  \n  \t  \t  \t  \t   {   t
0023440    e   m   p   :       U   N   S   P   E   C   I   F   I   E   D
0023460        _       N   P   G   S   C   o   n   D   e   f   s   .   e
0023500    o   f   M   a   r   k   ;  \n  \t  \t  \t  \t  \t   I   F    
0023520    v   [   t   o   p   +   1   ]   .   s   >   t   e   m   p    
0023540    T   H   E   N       E   r   r   o   r   [   c   h   e   c   k
0023560    +   7   ,   v   [   t   o   p   +   1   ]   .   s   ,   I   n
0023600    p   u   t   L   o   c   [   ]   ]   ;  \n  \t  \t  \t  \t  \t
0023620    I   F       v   [   t   o   p   +   2   ]   .   s   <   =   t
0023640    e   m   p       T   H   E   N       E   r   r   o   r   [   c
0023660    h   e   c   k   +   8   ,   v   [   t   o   p   +   2   ]   .
0023700    s   ,   I   n   p   u   t   L   o   c   [   ]   ]   ;  \n  \t
0023720   \t  \t  \t  \t   I   F       n   e   x   t   A   l   i   a   s
0023740    =   a   l   i   a   s   e   s   .   l   e   n   g   t   h    
0023760    T   H   E   N  \n  \t  \t  \t  \t  \t  \t   a   l   i   a   s
0024000    e   s       _       E   x   p   a   n   d   A   l   i   a   s
0024020    e   s   [   a   l   i   a   s   e   s   ,       a   l   i   a
0024040    s   e   s   .   l   e   n   g   t   h   /   8   ]   ;  \n  \t
0024060   \t  \t  \t  \t   a   l   i   a   s   e   s   [   n   e   x   t
0024100    A   l   i   a   s   ]       _       [   v   [   t   o   p   +
0024120    1   ]   .   s   ,   v   [   t   o   p   +   2   ]   .   s   ]
0024140    ;       n   e   x   t   A   l   i   a   s       _       n   e
0024160    x   t   A   l   i   a   s   +   1   ;  \n  \t  \t  \t  \t  \t
0024200    I   F       f   l   a   g   s   [   e   c   h   o   ]       T
0024220    H   E   N       {  \n  \t  \t  \t  \t  \t  \t   o   u   t   c
0024240    h   a   r   [   '       ,   t   o   k   e   n   S   i   z   e
0024260    +   1   -   O   u   t   T   o   k   e   n   [   v   [   t   o
0024300    p   +   1   ]   .   s   ]   ]   ;       o   u   t   c   h   a
0024320    r   [   '       ,   1   ]   ;  \n  \t  \t  \t  \t  \t  \t   j
0024340        _       C   A   R   D   I   N   A   L   [   v   [   t   o
0024360    p   +   2   ]   .   s   ]   *   t   o   k   e   n   S   i   z
0024400    e   ;  \n  \t  \t  \t  \t  \t  \t   F   O   R       i       I
0024420    N       [   j   .   .   j   +   t   o   k   e   n   S   i   z
0024440    e   )       W   H   I   L   E       s   y   m   T   a   b   [
0024460    i   ]   #   0   C       D   O       o   u   t   c   h   a   r
0024500    [   s   y   m   T   a   b   [   i   ]   ,   1   ]       E   N
0024520    D   L   O   O   P   ;  \n  \t  \t  \t  \t  \t  \t   o   u   t
0024540    e   o   l   [   1   ]   }   ;  \n  \t  \t  \t  \t  \t   }   ;
0024560   \n  \t  \t  \t  \t  \t  \n                                    
0024600                                                                1
0024620    5           =   >       -   -       d   i   s   c   a   r   d
0024640                                    :   :   =  \n  \t  \t  \t  \t
0024660    l   [   t   o   p   ]       _       I   n   p   u   t   L   o
0024700    c   [   ]   ;       -   -       k   e   e   p       t   h   e
0024720        p   a   r   s   e   r       e   r   r   o   r       r   e
0024740    c   o   v   e   r   y       h   a   p   p   y  \n  \t  \t  \t
0024760   \t  \n                                                        
0025000                                            1   6           =   >
0025020        -   -       r   u   l   e   g   r   o   u   p            
0025040                :   :   =       s   y   m   b   o   l       "   :
0025060    :   =   "  \n  \t  \t  \t  \t   {   S   e   t   R   u   l   e
0025100    C   h   a   i   n   [   p   r   i   x   ,       F   A   L   S
0025120    E   ]   ;       L   h   s   S   y   m   b   o   l   [   v   [
0025140    t   o   p   ]   .   s   ]   }   ;  \n  \t  \t  \t  \t  \n    
0025160                                                                 
0025200                                1   7           =   >       -   -
0025220        r   u   l   e   g   r   o   u   p                        
0025240    :   :   =       p   r   e   f   i   x       s   y   m   b   o
0025260    l       "   :   :   =   "  \n  \t  \t  \t  \t   L   h   s   S
0025300    y   m   b   o   l   [   v   [   t   o   p   +   1   ]   .   s
0025320    ]   ;  \n  \t  \t  \t  \t  \n                                
0025340                                                                 
0025360    1   8           =   >       -   -       r   u   l   e   g   r
0025400    o   u   p                           :   :   =       r   u   l
0025420    e   g   r   o   u   p       s   y   m   b   o   l       "   :
0025440    :   =   "  \n  \t  \t  \t  \t   {   S   e   t   R   u   l   e
0025460    C   h   a   i   n   [   p   r   i   x   ,       F   A   L   S
0025500    E   ]   ;       L   h   s   S   y   m   b   o   l   [   v   [
0025520    t   o   p   +   1   ]   .   s   ]   }   ;  \n  \t  \t  \t  \t
0025540   \n                                                            
0025560                                        1   9           =   >    
0025600    -   -       r   u   l   e   g   r   o   u   p                
0025620            :   :   =       r   u   l   e   g   r   o   u   p    
0025640    p   r   e   f   i   x       s   y   m   b   o   l       "   :
0025660    :   =   "  \n  \t  \t  \t  \t   L   h   s   S   y   m   b   o
0025700    l   [   v   [   t   o   p   +   2   ]   .   s   ]   ;  \n  \t
0025720   \t  \t  \t  \n                                                
0025740                                                    2   0        
0025760    =   >       -   -       r   u   l   e   g   r   o   u   p    
0026000                        :   :   =       r   u   l   e   g   r   o
0026020    u   p       '   |  \n  \t  \t  \t  \t   {   S   e   t   R   u
0026040    l   e   C   h   a   i   n   [   p   r   i   x   ,       F   A
0026060    L   S   E   ]   ;       P   r   o   d   H   e   a   d   e   r
0026100    [   F   A   L   S   E   ]   }   ;  \n  \t  \t  \t  \t  \n    
0026120                                                                 
0026140                                2   1           =   >       -   -
0026160        r   u   l   e   g   r   o   u   p                        
0026200    :   :   =       r   u   l   e   g   r   o   u   p       p   r
0026220    e   f   i   x       '   |  \n  \t  \t  \t  \t   P   r   o   d
0026240    H   e   a   d   e   r   [   F   A   L   S   E   ]   ;  \n  \t
0026260   \t  \t  \t  \n                                                
0026300                                                    2   2        
0026320    =   >       -   -       r   u   l   e   g   r   o   u   p    
0026340                        :   :   =       r   u   l   e   g   r   o
0026360    u   p       s   y   m   b   o   l  \n  \t  \t  \t  \t   {   t
0026400    e   m   p   :       C   A   R   D   I   N   A   L       _    
0026420    0   ;  \n  \t  \t  \t  \t  \t   i       _       v   [   t   o
0026440    p   +   1   ]   .   s   ;       s   y   m   I   n   f   o   [
0026460    i   ]   .   u   s   e   d       _       T   R   U   E   ;  \n
0026500   \t  \t  \t  \t  \t   I   F       i   =   e   o   f   M   a   r
0026520    k       O   R       i   =   e   o   f   M   a   r   k   +   1
0026540        T   H   E   N       E   r   r   o   r   [   c   h   e   c
0026560    k   +   9   ,   0   ,   I   n   p   u   t   L   o   c   [   ]
0026600    ]   ;       -   -   g   o   a   l       s   y   m   b   o   l
0026620    s  \n  \t  \t  \t  \t  \t   I   F       f   l   a   g   s   [
0026640    e   c   h   o   ]       T   H   E   N       {  \n  \t  \t  \t
0026660   \t  \t  \t   I   F       l   i   n   e   W   i   d   t   h   <
0026700    s   y   m   I   n   f   o   [   i   ]   .   l   e   n   g   t
0026720    h       T   H   E   N       {  \n  \t  \t  \t  \t  \t  \t  \t
0026740    o   u   t   e   o   l   [   1   ]   ;       o   u   t   c   h
0026760    a   r   [   '       ,   t   o   k   e   n   S   i   z   e   +
0027000    1   8   ]   ;       l   i   n   e   W   i   d   t   h       _
0027020        o   u   t   b   u   f   L   i   m       -       t   o   k
0027040    e   n   S   i   z   e   -   1   8   }   ;  \n  \t  \t  \t  \t
0027060   \t  \t   I   F       (   l   i   n   e   W   i   d   t   h    
0027100    _       (   l   i   n   e   W   i   d   t   h   -   O   u   t
0027120    T   o   k   e   n   [   i   ]   -   1   )   )       >       0
0027140        T   H   E   N       o   u   t   c   h   a   r   [   '    
0027160    ,       1   ]   }   ;  \n  \t  \t  \t  \t  \t   I   F       c
0027200    h   i   x   =   r   h   s   C   h   a   r   .   l   e   n   g
0027220    t   h       T   H   E   N  \n  \t  \t  \t  \t  \t  \t   r   h
0027240    s   C   h   a   r       _       E   x   p   a   n   d   R   h
0027260    s   C   h   a   r   [   r   h   s   C   h   a   r   ,       r
0027300    h   s   C   h   a   r   .   l   e   n   g   t   h   /   8   ]
0027320    ;  \n  \t  \t  \t  \t  \t   r   h   s   C   h   a   r   [   c
0027340    h   i   x   ]   _   i   ;       c   h   i   x       _       c
0027360    h   i   x       +   1   ;  \n  \t  \t  \t  \t  \t   I   F    
0027400    p   r   o   d   I   n   f   o   [   p   r   i   x   -   1   ]
0027420    .   c   o   u   n   t       =       r   h   s   L   i   m    
0027440    T   H   E   N       {  \n  \t  \t  \t  \t  \t  \t   p   r   o
0027460    d   I   n   f   o   [   p   r   i   x   -   1   ]   .   c   o
0027500    u   n   t       _       1   ;       r   h   s   F   l   a   g
0027520        _       T   R   U   E   }   ;  \n  \t  \t  \t  \t  \t   t
0027540    e   m   p       _       p   r   o   d   I   n   f   o   [   p
0027560    r   i   x   -   1   ]   .   c   o   u   n   t   ;  \n  \t  \t
0027600   \t  \t  \t   p   r   o   d   I   n   f   o   [   p   r   i   x
0027620    -   1   ]   .   c   o   u   n   t       _       t   e   m   p
0027640    +   1   ;  \n  \t  \t  \t  \t  \t   }   ;  \n  \t  \t  \t  \t
0027660   \t  \n                                                        
0027700                                            2   3           =   >
0027720        -   -       p   r   e   f   i   x                        
0027740                :   :   =       n   u   m  \n  \t  \t  \t  \t   S
0027760    e   t   R   u   l   e   C   h   a   i   n   [   v   [   t   o
0030000    p   ]   .   s   ,       F   A   L   S   E   ]   ;  \n  \t  \t
0030020   \t  \t  \n                                                    
0030040                                                2   4           =
0030060    >       -   -       p   r   e   f   i   x                    
0030100                    :   :   =       n   u   m       n   u   m  \n
0030120   \t  \t  \t  \t   -   -       p   r   e   f   i   x            
0030140                            :   :   =       '   ?       n   u   m
0030160   \n  \t  \t  \t  \t   S   e   t   R   u   l   e   C   h   a   i
0030200    n   [   v   [   t   o   p   +   1   ]   .   s   ,       F   A
0030220    L   S   E   ]   ;  \n  \t  \t  \t  \t  \n                    
0030240                                                                 
0030260                2   5           =   >       -   -       p   r   e
0030300    f   i   x                                       :   :   =    
0030320    d   i   s   c   a   r   d       '   C  \n  \t  \t  \t  \t   S
0030340    e   t   R   u   l   e   C   h   a   i   n   [   p   r   i   x
0030360    ,       T   R   U   E   ]   ;  \n  \t  \t  \t  \t  \n        
0030400                                                                 
0030420                            2   6           =   >       -   -    
0030440    p   r   e   f   i   x                                       :
0030460    :   =       d   i   s   c   a   r   d       '   C       n   u
0030500    m  \n  \t  \t  \t  \t   S   e   t   R   u   l   e   C   h   a
0030520    i   n   [   v   [   t   o   p   +   2   ]   .   s   ,       T
0030540    R   U   E   ]   ;  \n  \t  \t  \t  \t  \n                    
0030560                                                                 
0030600                2   7           =   >       -   -       p   r   e
0030620    f   i   x                                       :   :   =    
0030640    '   ?  \n  \t  \t  \t  \t   S   e   t   R   u   l   e   C   h
0030660    a   i   n   [   p   r   i   x   ,       F   A   L   S   E   ]
0030700    ;  \n  \t  \t  \t  \t  \n                                    
0030720                                                                2
0030740    8           =   >       -   -       d   i   r   e   c   t   i
0030760    v   e   s                       :   :   =       d   i   r   e
0031000    c   t   i   v   e   s       d   i   r   e   c   t   i   v   e
0031020   \n  \t  \t  \t  \t   -   -       d   i   s   c   a   r   d    
0031040                                :   :   =       n   u   m  \n  \t
0031060   \t  \t  \t   -   -       d   i   s   c   a   r   d            
0031100                        :   :   =       '   ?  \n  \t  \t  \t  \t
0031120    -   -       r   u   l   e   s   e   t                        
0031140            :   :   =   C       r   u   l   e   g   r   o   u   p
0031160   \n  \t  \t  \t  \t   -   -       r   u   l   e   s   e   t    
0031200                                :   :   =       g   o   a   l   r
0031220    u   l   e       r   u   l   e   g   r   o   u   p  \n  \t  \t
0031240   \t  \t   -   -       g   o   a   l   r   u   l   e            
0031260                    :   :   =       "   G   O   A   L   "       "
0031300    :   :   =   "       s   y   m   b   o   l       s   y   m   b
0031320    o   l  \n  \t  \t  \t  \t   N   U   L   L   ;  \n  \t  \t  \t
0031340   \t   E   N   D   C   A   S   E       =   >       E   R   R   O
0031360    R   ;  \n  \t  \t  \t  \t   E   N   D   L   O   O   P   ;  \n
0031400   \t  \t  \t   }   ;  \n  \t  \t  \t  \t  \n   -   -       t   h
0031420    e       f   o   l   l   o   w   i   n   g       p   r   o   c
0031440    e   d   u   r   e       i   s       c   a   l   l   e   d    
0031460    f   r   o   m       t   h   e       S   c   a   n   R   e   s
0031500    e   t       i   f       n   o       e   r   r   o   r   s  \n
0031520   \n  \t   F   i   n   i   s   h   I   n   p   u   t   :       P
0031540    R   O   C       =       {  \n  \t  \t   e   m   p   t   y   F
0031560    l   a   g   :       B   O   O   L       _       T   R   U   E
0031600    ;  \n  \t  \t   j   ,       k   :       C   A   R   D   I   N
0031620    A   L   ;  \n  \t  \t   -   -       c   o   m   p   u   t   e
0031640        n   o   n   t   e   r   m   i   n   a   l   s       d   e
0031660    r   i   v   i   n   g       e   m   p   t   y  \n  \t  \t   W
0031700    H   I   L   E       e   m   p   t   y   F   l   a   g       D
0031720    O  \n  \t  \t  \t   e   m   p   t   y   F   l   a   g       _
0031740        F   A   L   S   E   ;  \n  \t  \t  \t   F   O   R       i
0031760    :       C   A   R   D   I   N   A   L       I   N       [   1
0032000    .   .   t   o   t   a   l   T   o   k   e   n   s   -   e   o
0032020    f   M   a   r   k   ]       D   O           -   -       e   a
0032040    c   h       n   o   n   t   e   r   m   i   n   a   l  \n  \t
0032060   \t  \t  \t   I   F       t   o   k   e   n   I   n   f   o   [
0032100    i   ]   .   e   m   p   t   y       T   H   E   N       L   O
0032120    O   P   ;           -   -   w   h   i   c   h       d   o   e
0032140    s       n   o   t       d   e   r   i   v   e       e   m   p
0032160    t   y  \n  \t  \t  \t  \t   j       _       t   o   k   e   n
0032200    I   n   f   o   [   i   ]   .   i   n   d   e   x   ;  \n  \t
0032220   \t  \t  \t   F   O   R       p   r   i   x   :       C   A   R
0032240    D   I   N   A   L       I   N       [   j   .   .   j   +   t
0032260    o   k   e   n   I   n   f   o   [   i   ]   .   c   o   u   n
0032300    t   )       D   O  \n  \t  \t  \t  \t  \t   -   -       e   a
0032320    c   h       p   r   o   d   u   c   t   i   o   n       o   f
0032340        t   h   e       n   o   n   t   e   r   m   i   n   a   l
0032360   \n  \t  \t  \t  \t  \t   k       _       p   r   o   d   I   n
0032400    f   o   [   p   r   i   x   ]   .   i   n   d   e   x   ;  \n
0032420   \t  \t  \t  \t  \t   F   O   R       c   h   i   x   :       C
0032440    A   R   D   I   N   A   L       I   N       [   k   .   .   k
0032460    +   p   r   o   d   I   n   f   o   [   p   r   i   x   ]   .
0032500    c   o   u   n   t   )       D   O               -   -       e
0032520    a   c   h       r   h   s       c   h   a   r   a   c   t   e
0032540    r  \n  \t  \t  \t  \t  \t  \t   I   F       r   h   s   C   h
0032560    a   r   [   c   h   i   x   ]   <   =   e   o   f   M   a   r
0032600    k       O   R       ~   t   o   k   e   n   I   n   f   o   [
0032620    r   h   s   C   h   a   r   [   c   h   i   x   ]   -   e   o
0032640    f   M   a   r   k   ]   .   e   m   p   t   y       T   H   E
0032660    N       E   X   I   T   ;  \n  \t  \t  \t  \t  \t  \t   R   E
0032700    P   E   A   T       F   I   N   I   S   H   E   D       =   >
0032720        {   t   o   k   e   n   I   n   f   o   [   i   ]   .   e
0032740    m   p   t   y       _       e   m   p   t   y   F   l   a   g
0032760        _       T   R   U   E   ;       E   X   I   T   }   ;  \n
0033000   \t  \t  \t  \t  \t  \t   E   N   D   L   O   O   P  \n  \t  \t
0033020   \t  \t  \t   E   N   D   L   O   O   P  \n  \t  \t  \t  \t   E
0033040    N   D   L   O   O   P  \n  \t  \t  \t   E   N   D   L   O   O
0033060    P   ;  \n  \t  \t   }   ;  \n  \t  \t  \t  \n  \t  \t   -   -
0033100        t   h   e       f   o   l   l   o   w   i   n   g       p
0033120    r   o   c   e   d   u   r   e       o   u   t   p   u   t   s
0033140        t   h   e       d   a   t   a       s   t   r   u   c   t
0033160    u   r   e       c   o   n   t   e   n   t   s       i   n    
0033200    t   h   e       t   a   b   l   e   s   :  \n  \t  \t   -   -
0033220        P   R   O   D   U   C   T   I   O   N   I   N   F   O    
0033240                                                T   O   K   E   N
0033260    I   N   F   O                                                
0033300        S   Y   M   I   N   F   O  \n  \t  \t   -   -       n   u
0033320    m       c   o   u   n   t       r   u   l   e       c   h   a
0033340    i   n       l   h   s       i   n   d   e   x               c
0033360    o   u   n   t       e   m   p   t   y       i   n   d   e   x
0033400                l   i   n   k       u   s   e   d       l   e   n
0033420    g   t   h               s   y   m   b   o   l  \n  \t  \t   -
0033440    -       4       1           3                   5            
0033460        1                   4                   5               2
0033500                3                       1                       5
0033520                2               4               1                
0033540        3                   1           .   .   .  \n  \t  \t  \n
0033560   \t   C   h   e   c   k   O   u   t   :       P   U   B   L   I
0033600    C       P   R   O   C       =       {  \n  \t  \t   I   F    
0033620    f   l   a   g   s   [   i   d   s   ]       T   H   E   N    
0033640    {  \n  \t  \t  \t   s   e   t   e   r   r   s   t   r   e   a
0033660    m   [   ]   ;       o   u   t   e   o   l   [   1   ]   ;  \n
0033700   \t  \t  \t   o   u   t   s   t   r   i   n   g   [   "        
0033720                        P   R   O   D   U   C   T   I   O   N   I
0033740    N   F   O                       T   O   K   E   N   I   N   F
0033760    O                   S   Y   M   I   N   F   O   "   ]   ;  \n
0034000   \t  \t  \t   F   O   R       i   :       C   A   R   D   I   N
0034020    A   L       I   N       [   0   .   .   M   A   X   [   n   u
0034040    m   P   r   o   d   ,   t   o   t   a   l   T   o   k   e   n
0034060    s   ]   ]       D   O  \n  \t  \t  \t  \t   o   u   t   e   o
0034100    l   [   1   ]   ;       o   u   t   n   u   m   [   i   ,   4
0034120    ]   ;       o   u   t   c   h   a   r   [   '       ,   1   ]
0034140    ;  \n  \t  \t  \t  \t   I   F       i   >   n   u   m   P   r
0034160    o   d       T   H   E   N       o   u   t   c   h   a   r   [
0034200    '       ,   2   0   ]  \n  \t  \t  \t  \t   E   L   S   E    
0034220    {  \n  \t  \t  \t  \t  \t   o   u   t   n   u   m   [   p   r
0034240    o   d   I   n   f   o   [   i   ]   .   c   o   u   n   t   ,
0034260    3   ]   ;       o   u   t   n   u   m   [   p   r   o   d   I
0034300    n   f   o   [   i   ]   .   r   u   l   e   ,   5   ]   ;  \n
0034320   \t  \t  \t  \t  \t   o   u   t   c   h   a   r   [   I   F    
0034340    p   r   o   d   I   n   f   o   [   i   ]   .   c   h   a   i
0034360    n       T   H   E   N       '   C       E   L   S   E       '
0034400        ,       1   ]   ;  \n  \t  \t  \t  \t  \t   o   u   t   n
0034420    u   m   [   p   r   o   d   I   n   f   o   [   i   ]   .   l
0034440    h   s   ,   4   ]   ;       o   u   t   n   u   m   [   p   r
0034460    o   d   I   n   f   o   [   i   ]   .   i   n   d   e   x   ,
0034500    5   ]   ;       o   u   t   c   h   a   r   [   '       ,   2
0034520    ]   }   ;  \n  \t  \t  \t  \t   I   F       i       I   N    
0034540    (   0   .   .   t   o   t   a   l   T   o   k   e   n   s   ]
0034560        T   H   E   N       {  \n  \t  \t  \t  \t  \t   I   F    
0034600    i   <   =   e   o   f   M   a   r   k       T   H   E   N    
0034620    o   u   t   c   h   a   r   [   '       ,   1   1   ]       E
0034640    L   S   E       {  \n  \t  \t  \t  \t  \t  \t   o   u   t   n
0034660    u   m   [   t   o   k   e   n   I   n   f   o   [   i   -   e
0034700    o   f   M   a   r   k   ]   .   c   o   u   n   t   ,   3   ]
0034720    ;  \n  \t  \t  \t  \t  \t  \t   o   u   t   c   h   a   r   [
0034740    I   F       t   o   k   e   n   I   n   f   o   [   i   -   e
0034760    o   f   M   a   r   k   ]   .   e   m   p   t   y       T   H
0035000    E   N       '   E       E   L   S   E       '       ,   1   ]
0035020    ;  \n  \t  \t  \t  \t  \t  \t   o   u   t   n   u   m   [   t
0035040    o   k   e   n   I   n   f   o   [   i   -   e   o   f   M   a
0035060    r   k   ]   .   i   n   d   e   x   ,   5   ]   ;       o   u
0035100    t   c   h   a   r   [   '       ,   2   ]   }   ;  \n  \t  \t
0035120   \t  \t  \t   o   u   t   n   u   m   [   s   y   m   I   n   f
0035140    o   [   i   ]   .   l   i   n   k   ,   4   ]   ;       o   u
0035160    t   c   h   a   r   [   I   F       s   y   m   I   n   f   o
0035200    [   i   ]   .   u   s   e   d       T   H   E   N       '   U
0035220        E   L   S   E       '       ,   1   ]   ;  \n  \t  \t  \t
0035240   \t  \t   o   u   t   n   u   m   [   s   y   m   I   n   f   o
0035260    [   i   ]   .   l   e   n   g   t   h   ,   3   ]   ;       o
0035300    u   t   c   h   a   r   [   '       ,   1   ]   ;       [   ]
0035320        _       O   u   t   T   o   k   e   n   [   i   ]   }  \n
0035340   \t  \t  \t  \t   E   N   D   L   O   O   P   ;  \n  \t  \t  \t
0035360    o   u   t   e   o   l   [   1   ]   ;       o   u   t   s   t
0035400    r   i   n   g   [   "   R   H   S   C   H   A   R   "   ]   ;
0035420        l   i   n   e   W   i   d   t   h       _       o   u   t
0035440    b   u   f   L   i   m   ;  \n  \t  \t  \t   F   O   R       i
0035460    :       C   A   R   D   I   N   A   L       I   N       [   0
0035500    .   .   n   u   m   R   h   s   C   h   a   r   s   ]       D
0035520    O  \n  \t  \t  \t  \t   l   i   n   e   W   i   d   t   h    
0035540    _       l   i   n   e   W   i   d   t   h   +   t   o   k   e
0035560    n   S   i   z   e   +   1   ;  \n  \t  \t  \t  \t   I   F    
0035600    l   i   n   e   W   i   d   t   h       >       o   u   t   b
0035620    u   f   L   i   m       T   H   E   N       {   o   u   t   e
0035640    o   l   [   1   ]   ;       o   u   t   n   u   m   [   i   ,
0035660    4   ]   ;       l   i   n   e   W   i   d   t   h       _    
0035700    4   }   ;  \n  \t  \t  \t  \t   o   u   t   c   h   a   r   [
0035720    '       ,   1   ]   ;       [   ]       _       O   u   t   T
0035740    o   k   e   n   [   r   h   s   C   h   a   r   [   i   ]   ]
0035760    ;  \n  \t  \t  \t  \t   E   N   D   L   O   O   P   ;  \n  \t
0036000   \t  \t   o   u   t   e   o   l   [   1   ]   ;       r   e   s
0036020    e   t   o   u   t   s   t   r   e   a   m   [   ]   ;  \n  \t
0036040   \t  \t   }   ;  \n  \t  \t   }   ;  \n  \t  \t  \t  \n  \t  \t
0036060   \t  \n  \t   -   -       e   r   r   o   r       r   e   c   o
0036100    v   e   r   y  \n  \t  \n  \t  \t   T   o   k   e   n   V   a
0036120    l   u   e   :       P   U   B   L   I   C       P   R   O   C
0036140        [   s   :       T   S   y   m   b   o   l   ]       R   E
0036160    T   U   R   N   S       [   N   P   G   S   1   .   V   a   l
0036200    u   e   ]       =       {  \n  \t  \t  \t   R   E   T   U   R
0036220    N       [   N   P   G   S   1   .   n   u   l   l   V   a   l
0036240    u   e   ]   ;  \n  \t  \t  \t   }   ;                  \n  \t
0036260   \t  \n   -   -       S   c   a   n   n   e   r   :       t   e
0036300    x   t       i   n   p   u   t       a   n   d       e   r   r
0036320    o   r       r   o   u   t   i   n   e   s  \n  \n  \t   -   -
0036340        t   a   b   l   e       i   n   s   t   a   l   l   a   t
0036360    i   o   n  \n  \t  \n  \t  \t   h   a   s   h   T   a   b   :
0036400        H   a   s   h   T   a   b   l   e   R   e   f   ;  \n  \t
0036420   \t   s   c   a   n   T   a   b   :       S   c   a   n   T   a
0036440    b   l   e   R   e   f   ;  \n  \t  \t   v   o   c   a   b   :
0036460        V   o   c   a   b   u   l   a   r   y   R   e   f   ;  \n
0036500   \t  \t   v   o   c   a   b   I   n   d   e   x   :       I   n
0036520    d   e   x   T   a   b   l   e   R   e   f   ;  \n  \t  \t  \n
0036540   \t  \t   I   n   s   t   a   l   l   S   c   a   n   T   a   b
0036560    l   e   :       P   U   B   L   I   C       P   R   O   C    
0036600    =       {  \n  \t  \t  \t   h   a   s   h   T   a   b       _
0036620        N   P   G   S   P   a   r   s   e   T   a   b   l   e   .
0036640    I   n   i   t   H   a   s   h   T   a   b   l   e   [   ]   ;
0036660   \n  \t  \t  \t   s   c   a   n   T   a   b       _       N   P
0036700    G   S   P   a   r   s   e   T   a   b   l   e   .   I   n   i
0036720    t   S   c   a   n   T   a   b   l   e   [   ]   ;  \n  \t  \t
0036740   \t   v   o   c   a   b       _       N   P   G   S   P   a   r
0036760    s   e   T   a   b   l   e   .   I   n   i   t   V   o   c   a
0037000    b   u   l   a   r   y   [   ]   ;  \n  \t  \t  \t   v   o   c
0037020    a   b   I   n   d   e   x       _       N   P   G   S   P   a
0037040    r   s   e   T   a   b   l   e   .   I   n   i   t   I   n   d
0037060    e   x   T   a   b   l   e   [   ]   ;  \n  \t  \t  \t   }   ;
0037100   \n  \t  \t  \t  \n   -   -       s   c   a   n   n   e   r    
0037120    s   t   a   t   e  \n  \n  \t   s   t   r   e   a   m   :    
0037140    S   T   R   E   A   M       _       N   I   L   ;            
0037160        -   -       t   h   e       i   n   p   u   t       s   t
0037200    r   e   a   m       (   a       d   u   m   m   y       f   o
0037220    r       n   o   w   )  \n  \t   L   o   g   g   e   r   :    
0037240    P   R   O   C       [   P   R   O   C       [   l   o   g   :
0037260        S   T   R   E   A   M   ]   ]       _       N   I   L   ;
0037300   \n  \t  \n  \t   N   U   L   :       C   H   A   R       =    
0037320    '   \   0   0   0   ;  \n  \t  \n  \t   b   u   f   f   e   r
0037340    :       R   E   F       T   E   X   T       _       N   I   L
0037360    ;                   -   -       t   o   k   e   n       a   s
0037400    s   e   m   b   l   y       a   r   e   a  \n  \t  \n  \t   n
0037420    T   o   k   e   n   s   :       C   A   R   D   I   N   A   L
0037440        _       0   ;                           -   -       t   o
0037460    k   e   n       c   o   u   n   t  \n  \t   n   E   r   r   o
0037500    r   s   :       C   A   R   D   I   N   A   L   ;            
0037520                -   -       l   e   x   i   c   a   l       e   r
0037540    r   o   r   s  \n  \t  \n  \t   c   h   a   r   :       C   H
0037560    A   R   ;           -   -       c   u   r   r   e   n   t    
0037600    (   m   o   s   t       r   e   c   e   n   t   l   y       s
0037620    c   a   n   n   e   d   )       c   h   a   r   a   c   t   e
0037640    r  \n  \t   t   I   :       C   A   R   D   I   N   A   L    
0037660    _       0   ;           -   -       i   t   s       (   s   t
0037700    r   e   a   m   )       i   n   d   e   x  \n  \t   e   o   f
0037720    :       B   O   O   L   ;  \n  \t  \n  \t   N   e   x   t   C
0037740    h   a   r   :       P   R   O   C       =       {           -
0037760    -       a   l   s   o       e   x   p   a   n   d   e   d    
0040000    i   n   l   i   n   e       w   i   t   h   i   n       A   t
0040020    o   m  \n  \t  \t   t   I       _       t   I       +       1
0040040    ;           [   c   h   a   r   ,       e   o   f   ]       _
0040060        i   n   c   h   a   r   [   ]   }   ;  \n  \t  \t  \n  \t
0040100   \t  \n  \t   N   e   x   t   T   o   k   e   n   :       P   U
0040120    B   L   I   C       P   R   O   C       R   E   T   U   R   N
0040140    S   [   t   :       T   o   k   e   n   ]       =       {  \n
0040160   \t  \t   -   -   O   P   E   N       t   ;  \n  \t  \t  \n  \t
0040200   \t   L   o   c   a   t   e   T   o   k   e   n   :       P   R
0040220    O   C   [   s   t   r   i   n   g   :       R   E   F       T
0040240    E   X   T   ]       R   E   T   U   R   N   S   [   C   A   R
0040260    D   I   N   A   L   ]       =       {  \n  \t  \t  \t   -   -
0040300        r   e   t   u   r   n   s       t   o   k   e   n       c
0040320    o   r   r   e   s   p   o   n   d   i   n   g       t   o    
0040340    s   t   r   i   n   g  \n  \t  \t  \t   i   ,       j   :    
0040360    C   A   R   D   I   N   A   L   ;  \n  \t  \t  \t   j       _
0040400        h   a   s   h   C   h   a   i   n   [   (   s   t   r   i
0040420    n   g   .   l   e   n   g   t   h   *   2   5   6   +   (   s
0040440    t   r   i   n   g   [   0   ]   .   O   R   D   )   )       M
0040460    O   D       (   s   y   m   T   a   b   S   i   z   e   /   4
0040500    )       +       1   ]   ;  \n  \t  \t  \t   W   H   I   L   E
0040520        j       #       0       D   O  \n  \t  \t  \t  \t   I   F
0040540        s   y   m   I   n   f   o   [   j   ]   .   l   e   n   g
0040560    t   h       =       s   t   r   i   n   g   .   l   e   n   g
0040600    t   h       T   H   E   N       {  \n  \t  \t  \t  \t  \t   i
0040620        _       j   *   t   o   k   e   n   S   i   z   e   ;  \n
0040640   \t  \t  \t  \t  \t   F   O   R       k   :       C   A   R   D
0040660    I   N   A   L       I   N       [   0   .   .   s   t   r   i
0040700    n   g   .   l   e   n   g   t   h   )       D   O  \n  \t  \t
0040720   \t  \t  \t  \t   I   F       s   y   m   T   a   b   [   i   +
0040740    k   ]   #   s   t   r   i   n   g   [   k   ]       T   H   E
0040760    N       E   X   I   T  \n  \t  \t  \t  \t  \t  \t   R   E   P
0041000    E   A   T       F   I   N   I   S   H   E   D       =   >    
0041020    R   E   T   U   R   N       [   j   ]  \n  \t  \t  \t  \t  \t
0041040   \t   E   N   D   L   O   O   P   ;  \n  \t  \t  \t  \t  \t   }
0041060    ;  \n  \t  \t  \t  \t   j       _       s   y   m   I   n   f
0041100    o   [   j   ]   .   l   i   n   k   ;  \n  \t  \t  \t  \t   E
0041120    N   D   L   O   O   P   ;  \n  \t  \t  \t   R   E   T   U   R
0041140    N       [   0   ]   ;  \n  \t  \t  \t   }   ;  \n  \t  \t  \t
0041160   \n  \t  \t   T   o   k   e   n   T   o   S   y   m   T   a   b
0041200    :       P   R   O   C   [   s   t   r   i   n   g   :       R
0041220    E   F       T   E   X   T   ,       t   o   k   e   n   :    
0041240    C   A   R   D   I   N   A   L   ]       =       {  \n  \t  \t
0041260   \t   i   ,       j   :       C   A   R   D   I   N   A   L   ;
0041300   \n  \t  \t  \t   i       _       t   o   k   e   n   *   t   o
0041320    k   e   n   S   i   z   e   ;  \n  \t  \t  \t   F   O   R    
0041340    j       I   N       [   0   .   .   s   t   r   i   n   g   .
0041360    l   e   n   g   t   h   )       D   O       s   y   m   T   a
0041400    b   [   i   +   j   ]       _       s   t   r   i   n   g   [
0041420    j   ]       E   N   D   L   O   O   P   ;  \n  \t  \t  \t   s
0041440    y   m   I   n   f   o   [   t   o   k   e   n   ]   .   l   e
0041460    n   g   t   h       _       s   t   r   i   n   g   .   l   e
0041500    n   g   t   h   ;       s   y   m   I   n   f   o   [   t   o
0041520    k   e   n   ]   .   u   s   e   d       _       F   A   L   S
0041540    E   ;  \n  \t  \t  \t   j       _       (   s   t   r   i   n
0041560    g   .   l   e   n   g   t   h   *   2   5   6   +   (   s   t
0041600    r   i   n   g   [   0   ]   .   O   R   D   )   )       M   O
0041620    D       (   s   y   m   T   a   b   S   i   z   e   /   4   )
0041640        +       1   ;  \n  \t  \t  \t   s   y   m   I   n   f   o
0041660    [   t   o   k   e   n   ]   .   l   i   n   k       _       h
0041700    a   s   h   C   h   a   i   n   [   j   ]   ;  \n  \t  \t  \t
0041720    h   a   s   h   C   h   a   i   n   [   j   ]       _       t
0041740    o   k   e   n   ;  \n  \t  \t  \t   }   ;  \n  \t  \t  \t  \n
0041760   \t  \t   T   o   k   e   n   O   r   I   d   :       P   R   O
0042000    C   [   s   u   b   :       C   A   R   D   I   N   A   L   ]
0042020        =       {  \n  \t  \t  \t   j   ,       s   1   ,       s
0042040    2   :       C   A   R   D   I   N   A   L   ;  \n  \t  \t  \t
0042060    h   :       H   a   s   h   I   n   d   e   x   ;  \n  \t  \t
0042100   \t   W   H   I   L   E       c   h   a   r       N   O   T    
0042120    I   N       [   N   U   L   .   .   '       ]       D   O  \n
0042140   \t  \t  \t  \t   I   F       s   u   b   <   t   o   k   e   n
0042160    S   i   z   e       T   H   E   N       b   u   f   f   e   r
0042200    [   s   u   b   ]       _       c   h   a   r   ;  \n  \t  \t
0042220   \t  \t   s   u   b       _       s   u   b       +       1   ;
0042240        N   e   x   t   C   h   a   r   [   ]   ;  \n  \t  \t  \t
0042260   \t   E   N   D   L   O   O   P   ;  \n  \t  \t  \t   I   F    
0042300    s   u   b   >   t   o   k   e   n   S   i   z   e       T   H
0042320    E   N       {  \n  \t  \t  \t  \t   b   u   f   f   e   r   .
0042340    l   e   n   g   t   h       _       s   u   b       _       t
0042360    o   k   e   n   S   i   z   e   ;       E   r   r   o   r   [
0042400    1   ,   -   1   ,   t   .   i   n   d   e   x   ]   }   ;    
0042420    -   -   o   v   e   r   l   e   n   g   t   h  \n  \t  \t  \t
0042440    I   F       s   u   b       =       1       T   H   E   N    
0042460    {  \n  \t  \t  \t  \t   t   .   c   l   a   s   s       _    
0042500    s   c   a   n   T   a   b   [   b   u   f   f   e   r   [   0
0042520    ]   ]   ;  \n  \t  \t  \t  \t   I   F       t   .   c   l   a
0042540    s   s       #       0       T   H   E   N       R   E   T   U
0042560    R   N   }   ;  \n  \t  \t  \t   j       _       b   u   f   f
0042600    e   r   [   0   ]       -       0   C   ;  \n  \t  \t  \t   h
0042620        _       (   (   j   *   1   2   8   -   j   )       +    
0042640    C   A   R   D   I   N   A   L   [   b   u   f   f   e   r   [
0042660    s   u   b   -   1   ]   -   0   C   ]   )       M   O   D    
0042700    H   a   s   h   I   n   d   e   x   .   L   A   S   T       +
0042720        1   ;  \n  \t  \t  \t   W   H   I   L   E       (   j    
0042740    _       h   a   s   h   T   a   b   [   h   ]   .   s   y   m
0042760    b   o   l   )       #       0       D   O      \n  \t  \t  \t
0043000   \t   I   F       v   o   c   a   b   I   n   d   e   x   [   j
0043020    ]   -   (   s   2   _   v   o   c   a   b   I   n   d   e   x
0043040    [   j   -   1   ]   )       =       s   u   b       T   H   E
0043060    N  \n  \t  \t  \t  \t  \t   F   O   R       s   1       I   N
0043100        [   0       .   .       s   u   b   )       D   O      \n
0043120   \t  \t  \t  \t  \t  \t   I   F       b   u   f   f   e   r   [
0043140    s   1   ]       #       v   o   c   a   b   .   t   e   x   t
0043160    [   s   2   ]       T   H   E   N       E   X   I   T   ;  \n
0043200   \t  \t  \t  \t  \t  \t   s   2       _       s   2   +   1   ;
0043220   \n  \t  \t  \t  \t  \t  \t   R   E   P   E   A   T       F   I
0043240    N   I   S   H   E   D       =   >       {  \n  \t  \t  \t  \t
0043260   \t  \t  \t   I   F       j       =       t   o   k   e   n   T
0043300    A   B   3       T   H   E   N       i   n   s   e   r   t   F
0043320    l   a   g       _       2       E   L   S   E  \n  \t  \t  \t
0043340   \t  \t  \t  \t  \t   I   F       j       =       t   o   k   e
0043360    n   T   A   B   4       T   H   E   N       i   n   s   e   r
0043400    t   F   l   a   g       _       3   ;  \n  \t  \t  \t  \t  \t
0043420   \t  \t   I   F       j   <   =   t   o   k   e   n   N   U   M
0043440        T   H   E   N       E   X   I   T   ;  \n  \t  \t  \t  \t
0043460   \t  \t  \t   t   .   c   l   a   s   s       _       j   ;    
0043500    R   E   T   U   R   N   }   ;  \n  \t  \t  \t  \t  \t  \t   E
0043520    N   D   L   O   O   P   ;  \n  \t  \t  \t  \t   I   F       (
0043540    h       _       h   a   s   h   T   a   b   [   h   ]   .   l
0043560    i   n   k   )       =       0       T   H   E   N       E   X
0043600    I   T   ;  \n  \t  \t  \t  \t   E   N   D   L   O   O   P   ;
0043620   \n  \t  \t  \t   b   u   f   f   e   r   .   l   e   n   g   t
0043640    h       _       s   u   b   ;       t   .   c   l   a   s   s
0043660        _       t   o   k   e   n   I   D   ;       t   .   v   a
0043700    l   u   e   .   s       _       L   o   c   a   t   e   T   o
0043720    k   e   n   [   b   u   f   f   e   r   ]   ;  \n  \t  \t  \t
0043740    S   E   L   E   C   T       i   n   s   e   r   t   F   l   a
0043760    g       F   R   O   M  \n  \t  \t  \t  \t   1       =   >  \n
0044000   \t  \t  \t  \t   -   -       r   e   a   d   i   n   g       t
0044020    e   r   m   i   n   a   l   s       a   n   d       n   o   n
0044040    t   e   r   m   i   n   a   l   s  \n  \t  \t  \t  \t  \t   I
0044060    F       t   .   v   a   l   u   e       #       N   P   G   S
0044100    1   .   n   u   l   l   V   a   l   u   e  \n  \t  \t  \t  \t
0044120   \t  \t       T   H   E   N       E   r   r   o   r   [   c   h
0044140    e   c   k   +   2   ,   t   .   v   a   l   u   e   .   s   ,
0044160    t   .   i   n   d   e   x   ]           -   -       m   u   l
0044200    t   i   p   l   y       d   e   f   i   n   e   d       s   y
0044220    m   b   o   l  \n  \t  \t  \t  \t  \t  \t       E   L   S   E
0044240        {  \n  \t  \t  \t  \t  \t  \t  \t       I   F       t   o
0044260    k   e   n   =   s   y   m   T   a   b   .   l   e   n   g   t
0044300    h       T   H   E   N       {  \n  \t  \t  \t  \t  \t  \t  \t
0044320   \t       s   y   m   T   a   b       _       E   x   p   a   n
0044340    d   S   y   m   T   a   b   [   s   y   m   T   a   b   ,    
0044360    s   y   m   T   a   b   .   l   e   n   g   t   h   /   1   6
0044400    ]   ;  \n  \t  \t  \t  \t  \t  \t  \t  \t       s   y   m   T
0044420    a   b       _       E   x   p   a   n   d   S   y   m   T   a
0044440    b   [   s   y   m   T   a   b   ,       s   y   m   I   n   f
0044460    o   .   l   e   n   g   t   h   /   1   6   ]   ;  \n  \t  \t
0044500   \t  \t  \t  \t  \t  \t       }   ;  \n  \t  \t  \t  \t  \t  \t
0044520    T   o   k   e   n   T   o   S   y   m   T   a   b   [   b   u
0044540    f   f   e   r   ,       t   o   k   e   n   ]   ;  \n  \t  \t
0044560   \t  \t  \t  \t   t   .   v   a   l   u   e   .   s       _    
0044600    t   o   k   e   n   ;       -   -   [   s   c   a   l   a   r
0044620    [   t   o   k   e   n   ]   ]   ;  \n  \t  \t  \t  \t  \t  \t
0044640    t   o   k   e   n       _       t   o   k   e   n   +   1   ;
0044660   \n  \t  \t  \t  \t  \t  \t   }   ;  \n  \t  \t  \t  \t   2    
0044700    =   >  \n  \t  \t  \t  \t   -   -       p   r   o   c   e   s
0044720    s   i   n   g       a   l   i   a   s   e   s  \n  \t  \t  \t
0044740   \t   I   F       t   .   v   a   l   u   e   =   N   P   G   S
0044760    1   .   n   u   l   l   V   a   l   u   e       T   H   E   N
0045000        {  \n  \t  \t  \t  \t  \t   s   1       _       t   o   k
0045020    e   n   *   t   o   k   e   n   S   i   z   e   ;  \n  \t  \t
0045040   \t  \t  \t   I   F       t   o   k   e   n   =   s   y   m   T
0045060    a   b   .   l   e   n   g   t   h       T   H   E   N  \n  \t
0045100   \t  \t  \t  \t  \t   s   y   m   T   a   b       _       E   x
0045120    p   a   n   d   S   y   m   T   a   b   [   s   y   m   T   a
0045140    b   ,       s   y   m   T   a   b   .   l   e   n   g   t   h
0045160    /   1   6   ]   ;  \n  \t  \t  \t  \t  \t   F   O   R       j
0045200        I   N       [   0   .   .   b   u   f   f   e   r   .   l
0045220    e   n   g   t   h   )       D   O       s   y   m   T   a   b
0045240    [   s   1   +   j   ]       _       b   u   f   f   e   r   [
0045260    j   ]       E   N   D   L   O   O   P   ;  \n  \t  \t  \t  \t
0045300   \t   t   .   v   a   l   u   e   .   s       _       t   o   k
0045320    e   n   ;       -   -   [   s   c   a   l   a   r   [   t   o
0045340    k   e   n   ]   ]   ;  \n  \t  \t  \t  \t  \t   t   o   k   e
0045360    n       _       t   o   k   e   n   +   1   ;  \n  \t  \t  \t
0045400   \t  \t   }   ;  \n  \t  \t  \t  \t   3       =   >  \n  \t  \t
0045420   \t  \t   -   -       p   r   o   c   e   s   s   i   n   g    
0045440    p   r   o   d   u   c   t   i   o   n   s  \n  \t  \t  \t  \t
0045460   \t   I   F       t   .   v   a   l   u   e       =       N   P
0045500    G   S   1   .   n   u   l   l   V   a   l   u   e       T   H
0045520    E   N       E   r   r   o   r   [   c   h   e   c   k   +   3
0045540    ,   -   3   ,   t   .   i   n   d   e   x   ]   ;           -
0045560    -   s   y   m   b   o   l       n   o   t       d   e   f   i
0045600    n   e   d  \n  \t  \t  \t  \t   E   N   D   C   A   S   E   ;
0045620   \n  \t  \t  \t   }   ;  \n  \t  \t  \t  \t  \n  \t  \t   D   O
0045640   \n  \t  \t  \t   W   H   I   L   E       c   h   a   r       I
0045660    N       [   N   U   L   .   .   '       ]       D   O      \n
0045700   \t  \t  \t  \t   S   E   L   E   C   T       c   h   a   r    
0045720    F   R   O   M  \n  \t  \t  \t  \t  \t   '   \   0   3   2    
0045740    -   -   ^   Z   -   -       =   >  \n  \t  \t  \t  \t  \t  \t
0045760    U   N   T   I   L       c   h   a   r       =       '   \   n
0046000        D   O  \n  \t  \t  \t  \t  \t  \t  \t   I   F       e   o
0046020    f       T   H   E   N       G   O       T   O       E   n   d
0046040    F   i   l   e   ;  \n  \t  \t  \t  \t  \t  \t  \t   N   e   x
0046060    t   C   h   a   r   [   ]   ;  \n  \t  \t  \t  \t  \t  \t   E
0046100    N   D   L   O   O   P   ;  \n  \t  \t  \t  \t  \t   E   N   D
0046120    C   A   S   E   ;  \n  \t  \t  \t  \t   I   F       e   o   f
0046140        T   H   E   N       G   O       T   O       E   n   d   F
0046160    i   l   e   ;  \n  \t  \t  \t  \t   N   e   x   t   C   h   a
0046200    r   [   ]   ;  \n  \t  \t  \t  \t   E   N   D   L   O   O   P
0046220    ;  \n  \t  \t  \t   t   .   i   n   d   e   x       _       t
0046240    I   ;  \n  \t  \t  \t   t   .   v   a   l   u   e   .   s    
0046260    _       N   P   G   S   1   .   n   u   l   l   V   a   l   u
0046300    e   ;  \n  \t  \t  \t  \n  \t  \t  \t   S   E   L   E   C   T
0046320        c   h   a   r       F   R   O   M  \n  \t  \t  \t  \t   I
0046340    N       [   '   0   .   .   '   9   ]       =   >       {  \n
0046360   \t  \t  \t  \t  \t   v   a   l   :       C   A   R   D   I   N
0046400    A   L       _       0   ;  \n  \t  \t  \t  \t  \t   v   a   l
0046420    i   d   :       B   O   O   L       _       T   R   U   E   ;
0046440   \n  \t  \t  \t  \t  \t   m   a   x   V   a   l   :       C   A
0046460    R   D   I   N   A   L       =       C   A   R   D   I   N   A
0046500    L   .   L   A   S   T   ;  \n  \t  \t  \t  \t  \t   W   H   I
0046520    L   E       c   h   a   r       I   N       [   '   0   .   .
0046540    '   9   ]       D   O  \n  \t  \t  \t  \t  \t  \t   I   F    
0046560    v   a   l   i   d       T   H   E   N       {  \n  \t  \t  \t
0046600   \t  \t  \t  \t   d   :       [   0   .   .   9   ]       =    
0046620    c   h   a   r   .   O   R   D   -   '   0   .   O   R   D   ;
0046640   \n  \t  \t  \t  \t  \t  \t  \t   v   a   l   i   d       _    
0046660    v   a   l   <   m   a   x   V   a   l   /   1   0       O   R
0046700        (   v   a   l   =   m   a   x   V   a   l   /   1   0    
0046720    A   N   D       d   <   =   (   m   a   x   V   a   l       M
0046740    O   D       1   0   )   )   ;  \n  \t  \t  \t  \t  \t  \t  \t
0046760    I   F       v   a   l   i   d       T   H   E   N       v   a
0047000    l       _       1   0   *   v   a   l   +   d   }   ;  \n  \t
0047020   \t  \t  \t  \t  \t   N   e   x   t   C   h   a   r   [   ]   ;
0047040   \n  \t  \t  \t  \t  \t  \t   E   N   D   L   O   O   P   ;  \n
0047060   \t  \t  \t  \t  \t   I   F       ~   v   a   l   i   d       T
0047100    H   E   N       v   a   l       _       m   a   x   V   a   l
0047120    ;  \n  \t  \t  \t  \t  \t   t   .   c   l   a   s   s       _
0047140        t   o   k   e   n   N   U   M   ;       t   .   v   a   l
0047160    u   e   .   s       _       v   a   l   ;       G   O       T
0047200    O       G   o   t   N   e   x   t   }   ;       -   -   [   s
0047220    c   a   l   a   r   [   v   a   l   ]   ]   ;       G   O    
0047240    T   O       G   o   t   N   e   x   t   }   ;  \n  \t  \t  \t
0047260   \t   '   -       =   >       {  \n  \t  \t  \t  \t  \t   N   e
0047300    x   t   C   h   a   r   [   ]   ;  \n  \t  \t  \t  \t  \t   I
0047320    F       c   h   a   r       #       '   -       T   H   E   N
0047340        {   b   u   f   f   e   r   [   0   ]       _       '   -
0047360    ;       T   o   k   e   n   O   r   I   d   [   1   ]   ;    
0047400    G   O       T   O       G   o   t   N   e   x   t   }   ;  \n
0047420   \t  \t  \t  \t  \t   c   h   a   r       _       N   U   L   ;
0047440   \n  \t  \t  \t  \t  \t   D   O  \n  \t  \t  \t  \t  \t  \t   p
0047460    C   h   a   r   :       C   H   A   R       =       c   h   a
0047500    r   ;  \n  \t  \t  \t  \t  \t  \t   I   F       e   o   f    
0047520    T   H   E   N       G   O       T   O       E   n   d   F   i
0047540    l   e   ;  \n  \t  \t  \t  \t  \t  \t   N   e   x   t   C   h
0047560    a   r   [   ]   ;  \n  \t  \t  \t  \t  \t  \t   S   E   L   E
0047600    C   T       c   h   a   r       F   R   O   M  \n  \t  \t  \t
0047620   \t  \t  \t  \t   '   -       =   >           I   F       p   C
0047640    h   a   r       =       '   -       T   H   E   N       E   X
0047660    I   T   ;  \n  \t  \t  \t  \t  \t  \t  \t   '   \   n       =
0047700    >           E   X   I   T   ;  \n  \t  \t  \t  \t  \t  \t  \t
0047720    E   N   D   C   A   S   E   ;  \n  \t  \t  \t  \t  \t  \t   E
0047740    N   D   L   O   O   P   ;  \n  \t  \t  \t  \t  \t   N   e   x
0047760    t   C   h   a   r   [   ]   ;  \n  \t  \t  \t  \t  \t   }   ;
0050000   \n  \t  \t  \t  \t   E   N   D   C   A   S   E       =   >    
0050020    {   T   o   k   e   n   O   r   I   d   [   0   ]   ;       G
0050040    O       T   O       G   o   t   N   e   x   t   }   ;  \n  \t
0050060   \t  \t   R   E   P   E   A   T  \n  \t  \t  \t   G   o   t   N
0050100    e   x   t       =   >           N   U   L   L   ;  \n  \t  \t
0050120   \t   E   n   d   F   i   l   e       =   >       {   t   .   c
0050140    l   a   s   s       _       e   n   d   M   a   r   k   e   r
0050160    ;       t   .   i   n   d   e   x       _       t   I   ;    
0050200    t   .   v   a   l   u   e   .   s       _       N   P   G   S
0050220    1   .   n   u   l   l   V   a   l   u   e   }   ;  \n  \t  \t
0050240   \t   E   N   D   L   O   O   P   ;  \n  \t  \t   n   T   o   k
0050260    e   n   s       _       n   T   o   k   e   n   s       +    
0050300    1   ;  \n  \t  \t   }   ;  \n  \t  \t  \n  \t   -   -       i
0050320    n   i   t   i   a   l   i   z   a   t   i   o   n   /   f   i
0050340    n   a   l   i   z   a   t   i   o   n  \n  \t  \n  \t  \t   S
0050360    c   a   n   I   n   i   t   :       P   U   B   L   I   C    
0050400    P   R   O   C       [   s   o   u   r   c   e   :       S   T
0050420    R   E   A   M   ,       l   o   g   g   e   r   :       P   R
0050440    O   C       [   P   R   O   C       [   l   o   g   :       S
0050460    T   R   E   A   M   ]   ]   ]       =       {  \n  \t  \t  \t
0050500    s   t   r   e   a   m       _       s   o   u   r   c   e   ;
0050520            L   o   g   g   e   r       _       l   o   g   g   e
0050540    r   ;  \n  \t  \t  \t   b   u   f   f   e   r       _       N
0050560    E   W   [   T   E   X   T   [   t   o   k   e   n   S   i   z
0050600    e   ]   ]   ;  \n  \t  \t  \t   t   I       _       0   ;  \n
0050620   \t  \t  \t   [   c   h   a   r   ,       e   o   f   ]       _
0050640        i   n   c   h   a   r   [   ]   ;  \n  \t  \t  \t   n   T
0050660    o   k   e   n   s       _       n   E   r   r   o   r   s    
0050700    _       0   ;  \n  \t  \t  \t   b   u   f   f   e   r   .   l
0050720    e   n   g   t   h       _       t   o   k   e   n   S   i   z
0050740    e   ;  \n  \t  \t  \t  \n  \t  \t  \t   -   -       i   n   i
0050760    t   i   a   l   i   s   e       s   y   m   b   o   l       t
0051000    a   b   l   e  \n  \t  \t  \t   t   o   k   e   n       _    
0051020    1   ;       i   n   s   e   r   t   F   l   a   g       _    
0051040    1   ;  \n  \t  \t  \t   s   y   m   T   a   b       _       M
0051060    a   k   e   S   y   m   T   a   b   [   (   s   y   m   T   a
0051100    b   S   i   z   e   +   1   )   *   t   o   k   e   n   S   i
0051120    z   e   ]   ;  \n  \t  \t  \t   s   y   m   I   n   f   o    
0051140    _       M   a   k   e   S   y   m   I   n   f   o   [   s   y
0051160    m   T   a   b   S   i   z   e   +   1   ]   ;  \n  \t  \t  \t
0051200    F   O   R       i   :       C   A   R   D   I   N   A   L    
0051220    I   N       [   1   .   .   s   y   m   T   a   b   S   i   z
0051240    e   ]       D   O  \n  \t  \t  \t  \t   s   y   m   I   n   f
0051260    o   [   i   ]       _       [   l   i   n   k   :   0   ,    
0051300    l   e   n   g   t   h   :   0   ,       u   s   e   d   :   F
0051320    A   L   S   E   ]   ;  \n  \t  \t  \t  \t   E   N   D   L   O
0051340    O   P   ;  \n  \t  \t  \t   h   a   s   h   C   h   a   i   n
0051360        _       N   E   W   [   H   a   s   h   C   h   a   i   n
0051400    A   r   r   a   y       _       A   L   L   [   0   ]   ]   ;
0051420   \n  \t  \t  \t   }   ;  \n  \t  \t  \t  \n  \t  \t   S   c   a
0051440    n   R   e   s   e   t   :       P   U   B   L   I   C       P
0051460    R   O   C       =       {  \n  \t  \t  \t   s   t   r   e   a
0051500    m       _       N   I   L   ;  \n  \t  \t  \t   L   o   g   g
0051520    e   r       _       N   I   L   ;  \n  \t  \t  \t   C   h   e
0051540    c   k   O   u   t   [   ]   ;  \n  \t  \t  \t   b   u   f   f
0051560    e   r       _       N   I   L   ;  \n  \t  \t  \t   }   ;  \n
0051600   \t  \t  \t  \n  \t  \t   S   c   a   n   S   t   a   t   s   :
0051620        P   U   B   L   I   C       P   R   O   C       R   E   T
0051640    U   R   N   S   [   C   A   R   D   I   N   A   L   ,       C
0051660    A   R   D   I   N   A   L   ]       =       {  \n  \t  \t  \t
0051700    R   E   T   U   R   N       [   n   T   o   k   e   n   s   ,
0051720        n   E   r   r   o   r   s   ]   ;  \n  \t  \t  \t   }   ;
0051740   \n  \t  \t  \t  \n  \t   -   -       e   r   r   o   r       h
0051760    a   n   d   l   i   n   g  \n  \t  \n  \t  \t   R   e   s   e
0052000    t   S   c   a   n   I   n   d   e   x   :       P   U   B   L
0052020    I   C       P   R   O   C   [   i   n   d   e   x   :       C
0052040    A   R   D   I   N   A   L   ]       R   E   T   U   R   N   S
0052060    [   s   u   c   c   e   s   s   :       B   O   O   L   _   T
0052100    R   U   E   ]       =       {  \n  \t  \t  \t   I   F       i
0052120    n   d   e   x       =       t   I       T   H   E   N       R
0052140    E   T   U   R   N   ;  \n  \t  \t  \t   s   e   t   i   n   d
0052160    e   x   [   i   n   d   e   x   ]   ;  \n  \t  \t  \t   [   c
0052200    h   a   r   ,       e   o   f   ]       _       i   n   c   h
0052220    a   r   [   ]   ;  \n  \t  \t  \t   t   I       _       i   n
0052240    d   e   x   ;  \n  \t  \t  \t   }   ;  \n  \t  \t  \t  \n  \t
0052260   \t   P   r   i   n   t   T   e   x   t   L   i   n   e   :    
0052300    P   R   O   C   [   o   r   i   g   i   n   :       C   A   R
0052320    D   I   N   A   L   ]       R   E   T   U   R   N   S   [   s
0052340    t   a   r   t   :       C   A   R   D   I   N   A   L   ]    
0052360    =       {  \n  \t  \t  \t   l   i   n   e   I   n   d   e   x
0052400    :       C   A   R   D   I   N   A   L   ;  \n  \t  \t  \t   c
0052420    h   a   r   :       C   H   A   R   ;  \n  \t  \t  \t   n   :
0052440        [   1   .   .   1   0   0   ]   ;  \n  \t  \t  \t   s   t
0052460    a   r   t       _       l   i   n   e   I   n   d   e   x    
0052500    _       o   r   i   g   i   n   ;  \n  \t  \t  \t   F   O   R
0052520        n       I   N       [   1   .   .   1   0   0   ]       U
0052540    N   T   I   L       l   i   n   e   I   n   d   e   x       =
0052560        0       D   O  \n  \t  \t  \t  \t   l   i   n   e   I   n
0052600    d   e   x       _       l   i   n   e   I   n   d   e   x    
0052620    -       1   ;  \n  \t  \t  \t  \t   s   e   t   i   n   d   e
0052640    x   [   l   i   n   e   I   n   d   e   x   ]   ;  \n  \t  \t
0052660   \t  \t   I   F       i   n   c   h   a   r   [   ]   .   c    
0052700    =       '   \   n       T   H   E   N       E   X   I   T   ;
0052720   \n  \t  \t  \t  \t   s   t   a   r   t       _       l   i   n
0052740    e   I   n   d   e   x   ;  \n  \t  \t  \t  \t   E   N   D   L
0052760    O   O   P   ;  \n  \t  \t  \t   s   e   t   i   n   d   e   x
0053000    [   s   t   a   r   t   ]   ;  \n  \t  \t  \t   F   O   R    
0053020    n       I   N       [   1   .   .   1   0   0   ]       U   N
0053040    T   I   L       (   [   c   :       c   h   a   r   ]       _
0053060        i   n   c   h   a   r   [   ]   )   .   e   n   d       D
0053100    O  \n  \t  \t  \t  \t   S   E   L   E   C   T       c   h   a
0053120    r       F   R   O   M  \n  \t  \t  \t  \t  \t   '   \   n   ,
0053140        '   \   0   3   2       -   -   ^   Z   -   -       =   >
0053160        E   X   I   T   ;  \n  \t  \t  \t  \t  \t   E   N   D   C
0053200    A   S   E       =   >       o   u   t   c   h   a   r   [   c
0053220    h   a   r   ,   1   ]   ;  \n  \t  \t  \t  \t   E   N   D   L
0053240    O   O   P   ;  \n  \t  \t  \t   o   u   t   e   o   l   [   1
0053260    ]   ;  \n  \t  \t  \t   }   ;  \n  \t  \t  \t  \n  \t  \t   E
0053300    r   r   o   r   C   o   n   t   e   x   t   :       P   U   B
0053320    L   I   C       P   R   O   C       [   t   o   :       S   T
0053340    R   E   A   M   ,       m   e   s   s   a   g   e   :       R
0053360    O   P   E   ,       t   o   k   e   n   I   n   d   e   x   :
0053400        C   A   R   D   I   N   A   L   ]       =       {  \n  \t
0053420   \t  \t   s   a   v   e   I   n   d   e   x   :       C   A   R
0053440    D   I   N   A   L       =       g   e   t   i   n   d   e   x
0053460    [   ]   ;  \n  \t  \t  \t   o   r   i   g   i   n   :       C
0053500    A   R   D   I   N   A   L       =       t   o   k   e   n   I
0053520    n   d   e   x   ;  \n  \t  \t  \t   c   h   a   r   :       C
0053540    H   A   R   ;  \n  \t  \t  \t   s   e   t   i   n   d   e   x
0053560    [   P   r   i   n   t   T   e   x   t   L   i   n   e   [   o
0053600    r   i   g   i   n   ]   ]   ;  \n  \t  \t  \t   U   N   T   I
0053620    L       g   e   t   i   n   d   e   x   [   ]       =       o
0053640    r   i   g   i   n       O   R       (   [   c   :       c   h
0053660    a   r   ]       _       i   n   c   h   a   r   [   ]   )   .
0053700    e   n   d       D   O  \n  \t  \t  \t  \t   o   u   t   c   h
0053720    a   r   [   I   F       c   h   a   r       =       '   \   n
0053740        T   H   E   N       '   \   n       E   L   S   E       '
0053760        ,   1   ]   ;  \n  \t  \t  \t  \t   E   N   D   L   O   O
0054000    P   ;  \n  \t  \t  \t   o   u   t   s   t   r   i   n   g   [
0054020    "   ^       [   "   ]   ;       o   u   t   n   u   m   [   t
0054040    o   k   e   n   I   n   d   e   x   ,   1   ]   ;  \n  \t  \t
0054060   \t   o   u   t   c   h   a   r   [   '   ]   ,   1   ]   ;    
0054100        o   u   t   e   o   l   [   1   ]   ;           o   u   t
0054120    s   t   r   i   n   g   [   m   e   s   s   a   g   e   ]   ;
0054140   \n  \t  \t  \t   s   e   t   i   n   d   e   x   [   s   a   v
0054160    e   I   n   d   e   x   ]   ;  \n  \t  \t  \t   }   ;  \n  \t
0054200   \t  \t  \n  \t  \t  \t  \n  \t  \t   E   r   r   o   r   :    
0054220    P   R   O   C       [   c   o   d   e   :       C   A   R   D
0054240    I   N   A   L   ,       c   o   n   t   r   o   l   :       I
0054260    N   T   E   G   E   R   ,       i   n   d   e   x   :       C
0054300    A   R   D   I   N   A   L   ]       =       {  \n  \t  \t  \n
0054320   \t  \t  \t   I   n   n   e   r   :       P   R   O   C       [
0054340    l   o   g   :       S   T   R   E   A   M       -   -       a
0054360        d   u   m   m   y       f   o   r       n   o   w       -
0054400    -   ]       ~       {  \n  \t  \t  \t  \t   E   r   r   o   r
0054420    C   o   n   t   e   x   t   [   l   o   g   ,  \n  \t  \t  \t
0054440   \t  \t   S   E   L   E   C   T       c   o   d   e       F   R
0054460    O   M  \n  \t  \t  \t  \t  \t  \t   1           =   >       "
0054500    W   A   R   N   I   N   G       -       O   v   e   r   l   e
0054520    n   g   t   h       s   y   m   b   o   l       (   i   n   c
0054540    r   e   a   s   e       T   O   K   E   N   S   I   Z   E   ?
0054560    )       t   r   u   n   c   a   t   e   d       t   o       -
0054600        "   ,  \n  \t  \t  \t  \t  \t  \t   2           =   >    
0054620    "   W   A   R   N   I   N   G       -       N   o   t       a
0054640        c   h   a   i   n       p   r   o   d   u   c   t   i   o
0054660    n       -       "   ,  \n  \t  \t  \t  \t  \t  \t   3        
0054700    =   >       "   W   A   R   N   I   N   G       -       U   n
0054720    u   s   e   d   (   U   )       o   r       u   n   d   e   f
0054740    i   n   e   d   (   D   )   s   y   m   b   o   l   s       (
0054760    r   e   f   e   r       t   o       T   A   B   L   E   1    
0055000    a   n   d       2   )   "   ,  \n  \t  \t  \t  \t  \t  \t   4
0055020            =   >       "   E   R   R   O   R       -       N   o
0055040    n   t   e   r   m   i   n   a   l       w   i   t   h       t
0055060    o   o       m   a   n   y       r   u   l   e   s       (   i
0055100    n   c   r   e   a   s   e       A   L   T   E   R   N   A   T
0055120    E   L   I   M   ?   )       -       "   ,  \n  \t  \t  \t  \t
0055140   \t  \t   5           =   >       "   E   R   R   O   R       -
0055160        M   u   l   t   i   p   l   e       d   e   f   i   n   i
0055200    t   i   o   n   s       o   f       s   y   m   b   o   l    
0055220    -       "   ,  \n  \t  \t  \t  \t  \t  \t   6           =   >
0055240        "   E   R   R   O   R       -       S   y   m   b   o   l
0055260        n   o   t       d   e   f   i   n   e   d       -       "
0055300    ,  \n  \t  \t  \t  \t  \t  \t   7           =   >       "   E
0055320    R   R   O   R       -       T   e   r   m   i   n   a   l    
0055340    p   r   e   c   e   d   e   s       :   :   =       -       "
0055360    ,  \n  \t  \t  \t  \t  \t  \t   8           =   >       "   E
0055400    R   R   O   R       -       T   o   o       m   a   n   y    
0055420    r   h   s       s   y   m   b   o   l   s       i   n       p
0055440    r   o   d   u   c   t   i   o   n       (   i   n   c   r   e
0055460    a   s   e       R   H   S   L   I   M   ?   )       -       "
0055500    ,  \n  \t  \t  \t  \t  \t  \t   9           =   >       "   E
0055520    R   R   O   R       -       I   n   t   e   r   n   a   l    
0055540    f   i   e   l   d       w   i   l   l       o   v   e   r   f
0055560    l   o   w       -       i   n   c   r   e   a   s   e       P
0055600    S   S   L   I   M   "   ,  \n  \t  \t  \t  \t  \t  \t   1   0
0055620        =   >       "   E   R   R   O   R       -       A   l   i
0055640    a   s   e   d       s   y   m   b   o   l       n   o   t    
0055660    a       t   e   r   m   i   n   a   l       s   y   m   b   o
0055700    l       -       "   ,  \n  \t  \t  \t  \t  \t  \t   1   1    
0055720    =   >       "   E   R   R   O   R       -       A   l   i   a
0055740    s   e   s       m   u   s   t       n   o   t       b   e    
0055760    t   e   r   m   i   n   a   l       s   y   m   b   o   l   s
0056000        -       "   ,  \n  \t  \t  \t  \t  \t  \t   1   2       =
0056020    >       "   E   R   R   O   R       -       G   o   a   l    
0056040    s   y   m   b   o   l   s       u   s   e   d       i   n    
0056060    r   h   s   "   ,  \n  \t  \t  \t  \t  \t  \t   1   3       =
0056100    >       "   E   R   R   O   R       -       N   u   m   b   e
0056120    r       g   r   e   a   t   e   r       t   h   a   n       "
0056140    ,  \n  \t  \t  \t  \t  \t  \t   E   N   D   C   A   S   E    
0056160    =   >       N   I   L   ,  \n  \t  \t  \t  \t  \t   i   n   d
0056200    e   x   ]   ;  \n  \t  \t  \t  \t   S   E   L   E   C   T    
0056220    -   c   o   n   t   r   o   l       F   R   O   M  \n  \t  \t
0056240   \t  \t  \t   <   0       =   >       [   ]       _       O   u
0056260    t   T   o   k   e   n   [   c   o   n   t   r   o   l   ]   ;
0056300   \n  \t  \t  \t  \t  \t   0       =   >       N   U   L   L   ;
0056320   \n  \t  \t  \t  \t  \t   1       =   >       o   u   t   s   t
0056340    r   i   n   g   [   R   o   p   e   .   F   r   o   m   R   e
0056360    f   T   e   x   t   [   b   u   f   f   e   r   ]   ]   ;  \n
0056400   \t  \t  \t  \t  \t   2       =   >       o   u   t   s   t   r
0056420    i   n   g   [   "   s   e   e       p   r   e   v   i   o   u
0056440    s       m   e   s   s   a   g   e   "   ]   ;  \n  \t  \t  \t
0056460   \t  \t   3       =   >       {   o   u   t   s   t   r   i   n
0056500    g   [   R   o   p   e   .   F   r   o   m   R   e   f   T   e
0056520    x   t   [   b   u   f   f   e   r   ]   ]   ;       o   u   t
0056540    s   t   r   i   n   g   [   "       n   o   t       i   n    
0056560    T   A   B   L   E   1       o   r       2   "   ]   }   ;  \n
0056600   \t  \t  \t  \t  \t   4       =   >       N   U   L   L   ;    
0056620        -   -       n   o   t       u   s   e   d  \n  \t  \t  \t
0056640   \t  \t   5       =   >       o   u   t   s   t   r   i   n   g
0056660    [   "   M   A   X   R   U   L   E   "   ]   ;  \n  \t  \t  \t
0056700   \t  \t   E   N   D   C   A   S   E       =   >       o   u   t
0056720    n   u   m   [   -   c   o   n   t   r   o   l   -   s   p   e
0056740    c   E   r   r   o   r   C   a   s   e   s   ,       5   ]   ;
0056760   \n  \t  \t  \t  \t   o   u   t   e   o   l   [   2   ]   ;  \n
0057000   \t  \t  \t  \t   }   ;  \n  \t  \t  \t  \t  \n  \t  \t  \t   L
0057020    o   g   g   e   r   [   I   n   n   e   r   ]   ;  \n  \t  \t
0057040   \t   I   F       c   o   d   e   >   c   h   e   c   k       T
0057060    H   E   N       n   E   r   r   o   r   s       _       n   E
0057100    r   r   o   r   s   +   1       E   L   S   E       w   a   r
0057120    n   i   n   g   s   L   o   g   g   e   d       _       T   R
0057140    U   E   ;  \n  \t  \t  \t   }   ;  \n  \t  \t  \t  \n  \t  \t
0057160    }   .  \n                                                    
0057163