$ od -c -N 50000 [Indigo]<AltoSource>TELENET.DM!2
0000000  377  \0  \0   T   O   T   E   L   E   N   E   T   .   B   C   P
0000020    L  \0 376 001  \0 352   X   ;   <   S   T   R   O   L   L   O
0000040    >   T   O   T   E   L   E   N   E   T   .   B   C   P   L   ;
0000060    5                   2   8   -   M   A   R   -   8   1       1
0000100    6   :   0   5   :   1   8                   E   D   I   T    
0000120    B   Y       S   T   R   O   L   L   O  \r   /   /       <   S
0000140    T   R   O   L   L   O   >   T   O   T   E   L   E   N   E   T
0000160    .   B   C   P   L   ;   4                   3   0   -   S   E
0000200    P   -   7   7       0   6   :   2   1   :   2   6            
0000220        E   D   I   T       B   Y       S   T   R   O   L   L   O
0000240   \r   /   /       T   O   T   E   L   E   N   E   T   .   B   C
0000260    P   L   -   -       p   r   o   g       t   o       s   e   n
0000300    d       t   o      \r   /   /   <   x   -   t   e   l   e   n
0000320    e   t   >   [   -   -   t   e   l   e   n   e   t   -   m   a
0000340    i   l   -   -   ]   .   x   y   @   x   n   e   t  \r  \r  \r
0000360    g   e   t       "   s   y   s   d   e   f   s   .   d   "  \r
0000400    g   e   t       "   a   l   t   o   f   i   l   e   s   y   s
0000420    .   d   "  \r   g   e   t 376 001  \0 234 266       "   s   t
0000440    r   e   a   m   s   .   d   "  \r  \r   m   a   n   i   f   e
0000460    s   t  \r           [  \r           m   a   x   n   u   m   s
0000500    i   t   e   s       =       2   0           /   /       a   t
0000520        m   o   s   t       2   0       s   i   t   e   s       -
0000540        s   e   p   a   r   a   t   e   d       b   y       ,  \r
0000560            c   t   r   l   z       =       #   3   2           /
0000600    /       c   o   n   t   r   o   l       Z  \r           c   t
0000620    r   l   v       =       #   2   6           /   /       c   o
0000640    n   t   r   o   l       V  \r           c   r       =       #
0000660    1   5           /   /       c   a   r   r   i   a   g   e    
0000700    r   e   t   u   r   n  \r           s   p   a   c   e       =
0000720        #   4   0  \r           w   o   r   d   m   a   x       =
0000740        7   2  \r           l   f       =       #   1   2       /
0000760    /       l   i   n   e       f   e   e   d  \r           ]  \r
0001000   \r   e   x   t   e   r   n   a   l  \r           [  \r        
0001020    O   p   e   n   F   i   l   e   ;   C   l   o 376 001  \0   >
0001040  371   s   e   s   ;   F   i   l   e   P   o   s   ;   d   s   p
0001060    ;   P   u   t   s   ;   A   p   p   e   n   d   C   h   a   r
0001100    ;   k   e   y   s   ;   W   s   s  \r           s   y   s   Z
0001120    o   n   e   ;   A   l   l   o   c   a   t   e   ;   G   e   t
0001140    s   ;   F   i   l   e   L   e   n   g   t   h   ;   S   e   t
0001160    F   i   l   e   P   o   s   ;   W   s   ;   E   n   d   o   f
0001200    s  \r           C   a   l   l   S   u   b   s   y   s   ;   f
0001220    p   C   o   m   C   m  \r           ]  \r          \r   s   t
0001240    a   t   i   c  \r           [  \r           c   h   a   r   c
0001260    o   u   n   t       =       0  \r           l   a   s   t   c
0001300    r       =       f   a   l   s   e  \r           ]  \r  \r   s
0001320    t   r   u   c   t   u   r   e       [       S   L       b   y
0001340    t   e   ;       b   l   a   n   k       b   y   t   e       ]
0001360   \r   s   t   r   u   c   t   u   r   e           C   H       ^
0001400        0   ,       m   a   x   S   t   r   i   n   g   I   n   d
0001420    e   x       b   y   t   e  \r  \r          \r   l   e   t    
0001440    m 376 001  \0   H   ;   a   i   n   (   )       b   e  \r    
0001460        [  \r           /   /       o   p   e   n       f   i   l
0001500    e  \r                   l   e   t       r   a   w   s   t   r
0001520    e   a   m       =      \r                           O   p   e
0001540    n   F   i   l   e   (   "   t   o   t   e   l   e   n   e   t
0001560    .   r   a   w   "   ,   k   s   T   y   p   e   R   e   a   d
0001600    O   n   l   y   ,   c   h   a   r   I   t   e   m   )  \r    
0001620                i   f       r   a   w   s   t   r   e   a   m    
0001640    e   q       0       t   h   e   n  \r                        
0001660    [  \r                           W   s   (   "   N   o       r
0001700    a   w       t   e   x   t       f   i   l   e       -       f
0001720    a   t   a   l       e   r   r   o   r       -       g   e   t
0001740        S   w   i   n   e   h   a   r   t   "   )  \r            
0001760                r   e   t   u   r   n  \r                        
0002000    ]  \r           /   /       s   c   a   n       o   f   f    
0002020    d   e   s   t   i   n   a   t   i   o   n       s   i   t   e
0002040    s  \r           /   / 376 001  \0 256 241       p   o   s   i
0002060    t   i   o   n       t   o       f   i   r   s   t       p   r
0002100    i   n   t   i   n   g       c   h   a   r       p   a   s   t
0002120        "   :   "  \r                   l   e   t       r   a   w
0002140    p   o   s       =       n   i   l  \r                   l   e
0002160    t       r   a   w   c   h   a   r       =       n   i   l  \r
0002200                    [       r   a   w   c   h   a   r       =    
0002220    G   e   t   s   (   r   a   w   s   t   r   e   a   m   )    
0002240    ]  \r                           r   e   p   e   a   t   w   h
0002260    i   l   e       r   a   w   c   h   a   r       n   e       $
0002300    :  \r                   [       r   a   w   c   h   a   r    
0002320    =       G   e   t   s   (   r   a   w   s   t   r   e   a   m
0002340    )       ]  \r                           r   e   p   e   a   t
0002360    w   h   i   l   e       r   a   w   c   h   a   r       e   q
0002400        s   p   a   c   e  \r                           S   e   t
0002420    F   i   l   e   P   o   s   (   r   a   w   s   t   r   e   a
0002440    m   ,   0   ,   F   i   l   e   P   o   s 376 001  \0   > 347
0002460    (   r   a   w   s   t   r   e   a   m   )   -   1   )  \r    
0002500        /   /       r   e   a   d   y       t   o       g   e   t
0002520        s   i   t   e   s       -       2   0       m   a   x   ,
0002540        1       m   i   n  \r                   l   e   t       s
0002560    i   t   e   c   h   a   r   1   ,   s   i   t   e   c   h   a
0002600    r   2   ,   n   u   m   s   i   t   e   s       =       n   i
0002620    l   ,   n   i   l   ,   0  \r                   l   e   t    
0002640    s   i   t   e   v   e   c       =       v   e   c       m   a
0002660    x   n   u   m   s   i   t   e   s  \r                   l   e
0002700    t       w   o   r   d   v   e   c       =       v   e   c    
0002720    w   o   r   d   m   a   x       /   /       w   o   r   d   m
0002740    a   x       i   s       m   a   x       w   o   r   d   s   i
0002760    z   e  \r                   f   o   r       i       =       0
0003000        t   o       m   a   x   n   u   m   s   i   t   e   s   -
0003020    1       d   o  \r                           [  \r            
0003040                s   i   t   e   c   h   a   r   1       =       G
0003060  376 001  \0 363 305   e   t   s   (   r   a   w   s   t   r   e
0003100    a   m   )  \r                           /   /   P   u   t   s
0003120    (   d   s   p   ,   s   i   t   e   c   h   a   r   1   )  \r
0003140                            s   i   t   e   c   h   a   r   2    
0003160    =       G   e   t   s   (   r   a   w   s   t   r   e   a   m
0003200    )  \r                           /   /   P   u   t   s   (   d
0003220    s   p   ,   s   i   t   e   c   h   a   r   2   )  \r        
0003240                    s   i   t   e   v   e   c   !   i       =    
0003260    A   l   l   o   c   a   t   e   (   s   y   s   Z   o   n   e
0003300    ,   5   )  \r                           l   e   t       s   i
0003320    t   e   s   t   r   i   n   g       =       s   i   t   e   v
0003340    e   c   !   i  \r                           s   i   t   e   s
0003360    t   r   i   n   g   !   0       =       0  \r                
0003400            A   p   p   e   n   d   C   h   a   r   (   s   i   t
0003420    e   c   h   a   r   1   ,   s   i   t   e   s   t   r   i   n
0003440    g   )  \r                           A   p   p   e   n   d   C
0003460    h   a   r   (   s 376 001  \0 245 361   i   t   e   c   h   a
0003500    r   2   ,   s   i   t   e   s   t   r   i   n   g   )  \r    
0003520                        n   u   m   s   i   t   e   s       =    
0003540    i       +       1  \r                           i   f       G
0003560    e   t   s   (   r   a   w   s   t   r   e   a   m   )       n
0003600    e       $   ,       t   h   e   n       b   r   e   a   k  \r
0003620                            ]  \r           /   /       s   a   y
0003640        t   h   e       s   i   t   e   s  \r                   P
0003660    u   t   s   (   d   s   p   ,   $   *   n   )  \r            
0003700        f   o   r       i       =       0       t   o       n   u
0003720    m   s   i   t   e   s   -   1       d   o  \r                
0003740            [  \r                           l   e   t       s   i
0003760    t   e   s   t   r       =       s   i   t   e   v   e   c   !
0004000    i  \r                           W   s   (   s   i   t   e   s
0004020    t   r   )  \r                           P   u   t   s   (   d
0004040    s   p   ,   s   p   a   c   e   )  \r                        
0004060    ]  \r           /   /       w   e     376 001  \0 177 274   a
0004100    r   e       n   o   w       a   t       t   h   e       c   h
0004120    a   r       a   f   t   e   r       t   h   e       C   R    
0004140    t   e   r   m   i   n   a   t   i   n   g       s   i   t   e
0004160        l   i   n   e  \r           /   /           c   r   e   a
0004200    t   e       t   e   x   t       f   i   l   e       i   n   t
0004220    o       w   h   i   c   h       t   o       p   u   t       l
0004240    e   f   t       a   l   l   i   g   n   e   d       t   e   x
0004260    t  \r                   l   e   t       t   o   t   e   l   e
0004300    s   t   r   e   a   m       =  \r                           O
0004320    p   e   n   F   i   l   e   (   "   t   o   t   e   l   e   n
0004340    e   t   .   t   e   x   t   "   ,   k   s   T   y   p   e   W
0004360    r   i   t   e   O   n   l   y   ,   c   h   a   r   I   t   e
0004400    m   )  \r                   i   f       t   o   t   e   l   e
0004420    s   t   r   e   a   m       e   q       0       t   h   e   n
0004440   \r                           [  \r                           W
0004460    s   (   "   C   a   n   '   t       o   p   e   n       f 376
0004500  001  \0 375  \0   i   l   e       -       g   e   t       S   w
0004520    i   n   e   h   a   r   t   "   )  \r                        
0004540    r   e   t   u   r   n  \r                           ]  \r    
0004560        /   /           w   r   i   t   e       t   e   x   t    
0004600    i   n   t   o       f   i   l   e       -       s   k   i   p
0004620    p   i   n   g       o   v   e   r       t   r   a   i   l   e
0004640    r       s   t   u   f   f  \r                   c   h   a   r
0004660    c   o   u   n   t       =       0  \r                   w   o
0004700    r   d   v   e   c   >   >   S   L       =       0  \r        
0004720            l   e   t       s   k   i   p   c   h   a   r       =
0004740        n   i   l  \r                   l   a   s   t   c   r    
0004760    =       f   a   l   s   e  \r                   [  \r        
0005000            r   a   w   c   h   a   r       =       G   e   t   s
0005020    (   r   a   w   s   t   r   e   a   m   )  \r                
0005040    i   f       r   a   w   c   h   a   r       e   q       c   r
0005060        t   h   e   n  \r                           [  \r        
0005100                  376 001  \0 227 037   S   t   r   i   n   g   t
0005120    o   F   i   l   e   (   w   o   r   d   v   e   c   ,   t   o
0005140    t   e   l   e   s   t   r   e   a   m   )  \r                
0005160            P   u   t   C   R   L   F   (   t   o   t   e   l   e
0005200    s   t   r   e   a   m   )  \r                           l   a
0005220    s   t   c   r       =       t   r   u   e       /   /       p
0005240    e   r   m   i   t       i   n   t   e   n   t   i   o   n   a
0005260    l       s   p   a   c   e   s       a   f   t   e   r       c
0005300    r  \r                           l   o   o   p  \r            
0005320                ]  \r  \r                   t   e   s   t       r
0005340    a   w   c   h   a   r       e   q       c   t   r   l   z  \r
0005360                            i   f   s   o  \r                    
0005400                [  \r                                   [       s
0005420    k   i   p   c   h   a   r       =       G   e   t   s   (   r
0005440    a   w   s   t   r   e   a   m   )       ]  \r                
0005460                            r   e   p   e   a   t   w   h   i   l
0005500    e       (   (   s   k   i   p   c 376 001  \0 272 346   h   a
0005520    r       n   e       c   r   )       &  \r                    
0005540                                (   n   o   t       E   n   d   o
0005560    f   s   (   r   a   w   s   t   r   e   a   m   )   )   )  \r
0005600                                    S   e   t   F   i   l   e   P
0005620    o   s   (   r   a   w   s   t   r   e   a   m   ,   0   ,   F
0005640    i   l   e   P   o   s   (   r   a   w   s   t   r   e   a   m
0005660    )   -   1   )       /   /   t   o       s   e   e       C   R
0005700        a   g   a   i   n  \r                                   ]
0005720   \r                           i   f   n   o   t  \r            
0005740                        [  \r                                   i
0005760    f       r   a   w   c   h   a   r       n   e       s   p   a
0006000    c   e       t   h   e   n       l   a   s   t   c   r       =
0006020        f   a   l   s   e       /   /       f   i   r   s   t    
0006040    n   o   n   -   s   p   a   c   e       r   e   s   e   t   s
0006060        f   l   a   g  \r                                   t   e
0006100    s   t       B   r   e   a   k   C   h   a   r   (   r 376 001
0006120   \0 350 214   a   w   c   h   a   r   )  \r                    
0006140                        i   f   s   o  \r                        
0006160                            [  \r                                
0006200                    S   t   r   i   n   g   t   o   F   i   l   e
0006220    (   w   o   r   d   v   e   c   ,   t   o   t   e   l   e   s
0006240    t   r   e   a   m   )  \r                                    
0006260                P   u   t   C   h   k   E   O   L   (   t   o   t
0006300    e   l   e   s   t   r   e   a   m   ,   r   a   w   c   h   a
0006320    r   )  \r                                                   ]
0006340   \r                                           i   f   n   o   t
0006360   \r                                                   [  \r    
0006400                                                A   p   p   e   n
0006420    d   C   h   a   r   (   r   a   w   c   h   a   r   ,   w   o
0006440    r   d   v   e   c   )  \r                                    
0006460                i   f       w   o   r   d   v   e   c   >   >   S
0006500    L       g   e       w   o   r   d   m   a   x       t   h   e
0006520    n  \r     376 001  \0   I   A                                
0006540                        [  \r                                    
0006560                        P   u   t   C   R   L   F   (   t   o   t
0006600    e   l   e   s   t   r   e   a   m   )  \r                    
0006620                                        S   t   r   i   n   g   t
0006640    o   F   i   l   e   (   w   o   r   d   v   e   c   ,   t   o
0006660    t   e   l   e   s   t   r   e   a   m   )  \r                
0006700                                            P   u   t   C   R   L
0006720    F   (   t   o   t   e   l   e   s   t   r   e   a   m   )  \r
0006740                                                            ]  \r
0006760                                                    ]  \r        
0007000                            ]  \r                   ]  \r        
0007020            r   e   p   e   a   t   w   h   i   l   e       n   o
0007040    t       E   n   d   o   f   s   (   r   a   w   s   t   r   e
0007060    a   m   )  \r                   S   t   r   i   n   g   t   o
0007100    F   i   l   e   (   w   o   r   d   v   e   c   ,   t   o   t
0007120    e   l   e   s   t   r   e   a 376 001  \0 240       m   )  \r
0007140            /   /           c   l   o   s   e       f   i   l   e
0007160    s  \r                           C   l   o   s   e   s   (   r
0007200    a   w   s   t   r   e   a   m   )  \r                        
0007220    C   l   o   s   e   s   (   t   o   t   e   l   e   s   t   r
0007240    e   a   m   )  \r           /   /           c   r   e   a   t
0007260    e       c   o   m   m   a   n   d   s       i   n       t   e
0007300    m   p       c   o   m   m   a   n   d       f   i   l   e  \r
0007320                    l   e   t       t   m   p   s   t   r   e   a
0007340    m       =  \r                           O   p   e   n   F   i
0007360    l   e   (   "   C   o   m   .   c   m   "   ,       k   s   T
0007400    y   p   e   W   r   i   t   e   O   n   l   y   ,       c   h
0007420    a   r   I   t   e   m   ,       0   ,       f   p   C   o   m
0007440    C   m   )  \r                   i   f       t   m   p   s   t
0007460    r   e   a   m       e   q       0       t   h   e   n  \r    
0007500                        [  \r                           W   s   (
0007520    "   C   a   n   '   t       o   p   e   n       C 376 001  \0
0007540  243 355   o   m   .   C   M       -       g   e   t       S   w
0007560    i   n   e   h   a   r   t   "   )  \r                        
0007600    r   e   t   u   r   n  \r                           ]  \r    
0007620                W   s   s   (   t   m   p   s   t   r   e   a   m
0007640    ,   "   F   T   P   .   R   u   n       m   a   x   c   2    
0007660    "   )  \r                   f   o   r       i       =       0
0007700        t   o       n   u   m   s   i   t   e   s   -   1       d
0007720    o  \r                           [  \r                        
0007740    W   s   s   (   t   m   p   s   t   r   e   a   m   ,   "   s
0007760    t   o   r   e   /   s       "   )  \r                        
0010000    W   s   s   (   t   m   p   s   t   r   e   a   m   ,   "   t
0010020    o   t   e   l   e   n   e   t   .   t   e   x   t       "   )
0010040   \r                           W   s   s   (   t   m   p   s   t
0010060    r   e   a   m   ,   "   <   X   -   T   E   L   E   N   E   T
0010100    >   [   -   -   T   E   L   E   N   E   T   -   M   A   I   L
0010120    -   -   ]   .   "   )  \r                           W   s   s
0010140    (   t 376 001  \0 313 232   m   p   s   t   r   e   a   m   ,
0010160    s   i   t   e   v   e   c   !   i   )  \r                    
0010200        P   u   t   s   (   t   m   p   s   t   r   e   a   m   ,
0010220    c   t   r   l   v   )  \r                           P   u   t
0010240    s   (   t   m   p   s   t   r   e   a   m   ,   $   @   )  \r
0010260                            W   s   s   (   t   m   p   s   t   r
0010300    e   a   m   ,   "   X   N   E   T   "   )  \r                
0010320            P   u   t   s   (   t   m   p   s   t   r   e   a   m
0010340    ,   s   p   a   c   e   )  \r                           ]  \r
0010360                    P   u   t   s   (   t   m   p   s   t   r   e
0010400    a   m   ,   c   r   )  \r           /   /       c   l   o   s
0010420    e       f   i   l   e   s  \r                   C   l   o   s
0010440    e   s   (   t   m   p   s   t   r   e   a   m   )  \r        
0010460    /   /           c   a   l   l       F   T   P  \r            
0010500        l   e   t       F   T   P   s   t   r   e   a   m       =
0010520   \r                           O   p   e   n   F   i   l   e   (
0010540    "   F   T   P   .   R   U 376 001  \0 357   5   N   "   ,   k
0010560    s   T   y   p   e   R   e   a   d   O   n   l   y   )  \r    
0010600                i   f       F   T   P   s   t   r   e   a   m    
0010620    e   q       0       t   h   e   n  \r                        
0010640    [  \r                           W   s   (   "   C   a   n   '
0010660    t       o   p   e   n       F   T   P   .   R   U   N       -
0010700        g   e   t       S   w   i   n   e   h   a   r   t   "   )
0010720   \r                           r   e   t   u   r   n  \r        
0010740                    ]  \r                   C   a   l   l   S   u
0010760    b   s   y   s   (   F   T   P   s   t   r   e   a   m   )  \r
0011000            ]  \r          \r   a   n   d       P   u   t   C   R
0011020    L   F   (   s   t   r   e   a   m   )       b   e  \r        
0011040    [  \r           /   /       o   u   t   p   u   t       C   R
0011060    L   F   ,       i   n   i   t   i   a   l   i   z   e       c
0011100    o   u   n   t   s  \r                   P   u   t   s   (   s
0011120    t   r   e   a   m   ,   c   r   )  \r                   P   u
0011140    t   s   (   s   t   r   e   a   m   ,   l   f 376 001  \0 211
0011160  365   )  \r                   c   h   a   r   c   o   u   n   t
0011200    =   0  \r           ]  \r  \r   a   n   d       P   u   t   C
0011220    h   k   E   O   L   (   s   t   r   e   a   m   ,   c   h   r
0011240    )       b   e  \r           [  \r                   i   f    
0011260    c   h   a   r   c   o   u   n   t       g   e       7   2    
0011300    t   h   e   n  \r                           [  \r            
0011320                P   u   t   C   R   L   F   (   s   t   r   e   a
0011340    m   )  \r                           i   f       (   (   c   h
0011360    r       e   q       s   p   a   c   e   )   &       n   o   t
0011400        l   a   s   t   c   r   )       t   h   e   n       r   e
0011420    t   u   r   n  \r                           ]  \r            
0011440        i   f       (   (   c   h   a   r   c   o   u   n   t    
0011460    e   q       0   )   &   (   c   h   r       e   q       s   p
0011500    a   c   e   )   &   (   n   o   t       l   a   s   t   c   r
0011520    )   )       t   h   e   n       r   e   t   u   r   n  \r    
0011540                P   u   t   s   (   s   t   r   e   a   m   ,   c
0011560    h 376 001  \0   h 333   r   )  \r                   i   f    
0011600    (   (   c   h   r       n   e       $   *   1   7   7   )   &
0011620    (   c   h   r       n   e       l   f   )   )       t   h   e
0011640    n       c   h   a   r   c   o   u   n   t       =       c   h
0011660    a   r   c   o   u   n   t       +       1  \r                
0011700    i   f       c   h   r       e   q       c   r       t   h   e
0011720    n       c   h   a   r   c   o   u   n   t       =       0  \r
0011740            ]  \r  \r   a   n   d       S   t   r   i   n   g   t
0011760    o   F   i   l   e   (   s   t   r   ,   s   t   r   e   a   m
0012000    )       b   e  \r           [  \r           /   /       t   e
0012020    s   t       t   o       s   e   e       i   f       i   t    
0012040    w   i   l   l       f   i   t       o   n       c   u   r   r
0012060    e   n   t       l   i   n   e  \r                   i   f    
0012100    (   c   h   a   r   c   o   u   n   t       +       s   t   r
0012120    >   >   S   L   )       g   r       7   2       t   h   e   n
0012140        P   u   t   C   R   L   F   (   s   t   r   e   a   m   )
0012160   \r                   f 376 001  \0   G 265   o   r       i    
0012200    =       1       t   o       s   t   r   >   >   S   L       d
0012220    o       P   u   t   s   (   s   t   r   e   a   m   ,   s   t
0012240    r   >   >   C   H   ^   i   )  \r                   c   h   a
0012260    r   c   o   u   n   t       =       c   h   a   r   c   o   u
0012300    n   t       +       s   t   r   >   >   S   L  \r            
0012320        s   t   r   >   >   S   L       =       0  \r           ]
0012340   \r  \r   a   n   d       B   r   e   a   k   C   h   a   r   (
0012360    c   h   r   )       =       v   a   l   o   f  \r           [
0012400   \r           i   f       c   h   r       l   e       #   4   3
0012420        t   h   e   n       r   e   s   u   l   t   i   s       t
0012440    r   u   e       /   /       a   l   l       c   o   n   t   r
0012460    o   l   ,   s   p   a   c   e   ,   !   ,   "   ,   #       b
0012500    u   t       n   o   t       $  \r           r   e   s   u   l
0012520    t   i   s       s   e   l   e   c   t   o   n       c   h   r
0012540        i   n   t   o  \r                   [  \r                
0012560    c   a   s   e       $   %   :       t   r 376 001  \0 204 262
0012600    u   e  \r                   c   a   s   e       $   &   :    
0012620    t   r   u   e  \r                   c   a   s   e       $   '
0012640    :       f   a   l   s   e  \r                   c   a   s   e
0012660        $   *   *   :       t   r   u   e  \r                   c
0012700    a   s   e       $   +   :       t   r   u   e  \r            
0012720        c   a   s   e       $   ,   :       f   a   l   s   e  \r
0012740                    c   a   s   e       $   -   :       t   r   u
0012760    e  \r                   c   a   s   e       $   .   :       f
0013000    a   l   s   e  \r                   c   a   s   e       $   /
0013020    :       t   r   u   e  \r                   c   a   s   e    
0013040    $   =   :       t   r   u   e  \r                   c   a   s
0013060    e       $   @   :       t   r   u   e  \r                   c
0013100    a   s   e       $   \   :       t   r   u   e  \r            
0013120        c   a   s   e       $   ^   :       t   r   u   e  \r    
0013140                c   a   s   e       $   _   :       t   r   u   e
0013160   \r                   c   a   s   e       $   *   1   4   0   :
0013200  376  \0 225 025   0       t   r   u   e       /   /       a   c
0013220    c   e   n   t       g   r   a   v   e       (   w   o   n   '
0013240    t       p   r   i   n   t       f   o   r       s   o   m   e
0013260        r   e   a   s   o   n   )  \r                   c   a   s
0013300    e       $   |   :       t   r   u   e  \r                   c
0013320    a   s   e       $   ~   :       t   r   u   e  \r            
0013340        c   a   s   e       $   *   1   7   7   :       t   r   u
0013360    e  \r                   d   e   f   a   u   l   t   :       f
0013400    a   l   s   e  \r                   ]  \r           ]  \r  \r
0013420                                   \r  \0 377  \0  \0   U   T   I
0013440    L   S   T   R   .   B   C   P   L  \0 376 001  \0 335 203   /
0013460    /           U   t   i   l   S   t   r   .   b   c   p   l    
0013500    -   -       m   i   s   c   e   l   l   a   n   e   o   u   s
0013520        u   t   i   l   i   t   y       a   n   d       s   t   r
0013540    i   n   g       p   r   o   c   e   d   u   r   e   s  \r  \r
0013560    /   /           1   9       O   c   t   o   b   e   r       1
0013600    9   7   6       b   y       B   .   L   .       P   a   r   s
0013620    l   e   y  \r   /   /               8       M   a   r   c   h
0013640        1   9   7   7       b   y       B   .   L   .       P   a
0013660    r   s   l   e   y  \r  \t  \t   /   /       c   o   m   m   e
0013700    n   t   e   d       o   u   t       (   /   /   F   L   O   A
0013720    T   )       a   l   l       r   e   f   e   r   e   n   c   e
0013740    s       t   o       F   l   o   a   t   S   t   r       p   a
0013760    c   k   a   g   e  \r  \r   g   e   t       "   U   t   i   l
0014000    S   t   r   .   D   "  \r  \r   /   /       o   u   t   g   o
0014020    i   n   g       p   r   o   c   e   d   u   r   e   s  \r   e
0014040    x   t   e   r   n   a   l  \r  \t   [  \r   /   /       s 376
0014060  001  \0   5   A   t   r   i   n   g       p   r   o   c   e   d
0014100    u   t   e   s  \r  \t   C   o   p   y   S   t   r   i   n   g
0014120   \t  \t   /   /       (   s   o   u   r   c   e   S   t   r   ,
0014140        d   e   s   t   S   t   r   )  \t  \t  \t  \t  \t  \t  \t
0014160   \t   -   >       d   e   s   t   S   t   r  \r  \t   A   p   p
0014200    e   n   d   C   h   a   r  \t  \t   /   /       (   c   h   a
0014220    r   ,       d   e   s   t   S   t   r   )  \t  \t  \t  \t  \t
0014240   \t  \t  \t  \t  \t   -   >       d   e   s   t   S   t   r  \r
0014260   \t   A   p   p   e   n   d   S   t   r   i   n   g  \t   /   /
0014300        (   s   o   u   r   c   e   S   t   r   ,       d   e   s
0014320    t   S   t   r   )  \t  \t  \t  \t  \t  \t  \t  \t   -   >    
0014340    d   e   s   t   S   t   r  \r  \t   A   p   p   e   n   d   N
0014360    u   m  \t  \t   /   /       (   n   u   m   b   e   r   ,    
0014400    d   e   s   t   S   t   r   ,       [   r   a   d   i   x   /
0014420    1   0   ]   )  \t  \t  \t  \t  \t   -   >       d   e   s   t
0014440    S   t   r  \r  \t   M   a   k   e   S   t   r   i   n   g  \t
0014460   \t   /   /     376 001  \0 352   )   (   d   e   s   t   S   t
0014500    r   ,       r   a   d   i   x   ,   v   a   l   u   e   ,    
0014520    [   r   a   d   i   x   ,   v   a   l   u   e   ,       .   .
0014540    .   ]   )  \t   -   >       d   e   s   t   S   t   r  \r  \t
0014560    I   m   b   e   d   C   h   a   r  \t  \t   /   /       (   c
0014600    h   a   r   ,       d   e   s   t   S   t   r   ,       [   i
0014620    n   d   e   x   /   d   e   s   t   S   t   r   >   >   S   L
0014640    +   1   ]   )  \t  \t   -   >       d   e   s   t   S   t   r
0014660   \r  \t   E   x   t   r   a   c   t   S   t   r   i   n   g  \t
0014700   \t   /   /       (   s   S   t   r   ,       d   S   t   r   ,
0014720        b   I   n   d   e   x   ,       [   e   I   n   d   e   x
0014740    /   s   S   t   r   >   >   S   L   +   1   ]   )  \t   -   >
0014760        d   e   s   t   S   t   r  \r  \t   S   e   a   r   c   h
0015000    C   h   a   r  \t  \t   /   /       (   s   t   r   ,       c
0015020    h   a   r   ,       [   i   n   d   e   x   /   0   ]   )  \t
0015040   \t  \t  \t  \t  \t  \t  \t   -   >       i   n   d   e   x   /
0015060    0  \r  \t   S   e   a   r   c   h 376 001  \0 253   k   S   t
0015100    r   i   n   g  \t  \t   /   /       (   s   t   r   1   ,    
0015120    s   t   r   2   ,       [   i   n   d   e   x   /   0   ,    
0015140    [   s   w   /   f   a   l   s   e   ]   ]   )  \t  \t  \t   -
0015160    >       i   n   d   e   x   /   0  \r  \t   S   t   r   i   n
0015200    g   E   q   u   a   l  \t  \t   /   /       (   s   t   r   1
0015220    ,       s   t   r   2   ,       [   s   w   /   f   a   l   s
0015240    e   ]   )  \t  \t  \t  \t  \t  \t  \t   -   >       t   r   u
0015260    e   /   f   a   l   s   e  \r  \t   S   t   r   i   n   g   T
0015300    o   V   a   l   u   e  \t   /   /       (   s   o   u   r   c
0015320    e   S   t   r   ,       [   r   a   d   i   x   /   1   0   ,
0015340        [   p   o   i   n   t   e   r   ]   ]   )  \t  \t  \t   -
0015360    >       v   a   l   u   e  \r  \t   S   t   r   T   o   V   a
0015400    l   E   r   r  \t  \t   /   /       (   s   t   r   ,       c
0015420    h   a   r   ,       r   a   d   i   x   )  \r  \t   V   a   l
0015440    u   e   T   o   S   t   r   i   n   g  \t   /   /       (   v
0015460    a   l   u   e   ,       d   e   s   t   S   t   r   , 376 001
0015500   \0 225 017       [   r   a   d   i   x   /   1   0   ]   )  \t
0015520   \t  \t  \t  \t   -   >       d   e   s   t   S   t   r  \r  \t
0015540    ]  \r  \r   /   /       i   n   c   o   m   i   n   g       p
0015560    r   o   c   e   d   u   r   e   s  \r   e   x   t   e   r   n
0015600    a   l  \r  \t   [  \r  \t   M   o   v   e   B   l   o   c   k
0015620   \r  \t   A   l   l   o   c   a   t   e  \r  \t   W   s   s  \r
0015640   \t   C   a   l   l   S   w   a   t  \r  \t   ]  \r  \r   /   /
0015660        P   r   o   c   e   d   u   r   e   s  \t  \t  \t  \t  \t
0015700   \t  \f  \r  \r   l   e   t       C   o   p   y   S   t   r   i
0015720    n   g       (   s   o   u   r   c   e   S   t   r   ,       d
0015740    e   s   t   S   t   r   )       =       v   a   l   o   f  \r
0015760   \t   [  \r  \t   M   o   v   e   B   l   o   c   k       (   d
0016000    e   s   t   S   t   r   ,       s   o   u   r   c   e   S   t
0016020    r   ,       (   s   o   u   r   c   e   S   t   r   >   >   S
0016040    L       r   s   h   i   f   t       1   )       +       1   )
0016060   \r  \t   r   e   s   u   l   t   i   s       d   e   s   t   S
0016100    t   r  \r 376 001  \0 243 336  \t   ]  \r  \r   a   n   d    
0016120    A   p   p   e   n   d   C   h   a   r       (   c   h   a   r
0016140    ,       d   e   s   t   S   t   r   )       =       v   a   l
0016160    o   f  \r  \t   [  \r  \t   l   e   t       s   t   r   L    
0016200    =       d   e   s   t   S   t   r   >   >   S   L       +    
0016220    1  \r  \t   d   e   s   t   S   t   r   >   >   C   H   ^   s
0016240    t   r   L       =       c   h   a   r  \r  \t   d   e   s   t
0016260    S   t   r   >   >   S   L       =       s   t   r   L  \r  \t
0016300    r   e   s   u   l   t   i   s       d   e   s   t   S   t   r
0016320   \r  \t   ]  \r  \r   a   n   d       A   p   p   e   n   d   S
0016340    t   r   i   n   g       (   s   o   u   r   c   e   S   t   r
0016360    ,       d   e   s   t   S   t   r   )       =       v   a   l
0016400    o   f  \r  \t   [  \r  \t   l   e   t       s   t   r   L   S
0016420    ,       s   t   r   L   D       =       s   o   u   r   c   e
0016440    S   t   r   >   >   S   L   ,       d   e   s   t   S   t   r
0016460    >   >   S   L  \r  \t   f   o   r       i       =       1    
0016500    t   o       s   t   r   L   S 376 001  \0 035 327       d   o
0016520        d   e   s   t   S   t   r   >   >   C   H   ^   (   s   t
0016540    r   L   D       +       i   )       =       s   o   u   r   c
0016560    e   S   t   r   >   >   C   H   ^   i  \r  \t   d   e   s   t
0016600    S   t   r   >   >   S   L       =       s   t   r   L   D    
0016620    +       s   t   r   L   S  \r  \t   r   e   s   u   l   t   i
0016640    s       d   e   s   t   S   t   r  \r  \t   ]  \r  \r   a   n
0016660    d       A   p   p   e   n   d   N   u   m       (   n   u   m
0016700    b   e   r   ,       d   e   s   t   S   t   r   ,       r   a
0016720    d   i   x   ;           n   u   m   a   r   g   s       n   a
0016740    )       =       v   a   l   o   f  \r  \t   [  \r  \t   l   e
0016760    t       s   t   r       =       v   e   c       l   S   T   R
0017000    I   N   G  \r  \t   r   e   s   u   l   t   i   s       A   p
0017020    p   e   n   d   S   t   r   i   n   g       (   V   a   l   u
0017040    e   T   o   S   t   r   i   n   g       (   n   u   m   b   e
0017060    r   ,       s   t   r   ,       (   n   a       e   q       3
0017100        ?       r   a   d   i   x   ,       1   0   ) 376 001  \0
0017120  251 002   )   ,       d   e   s   t   S   t   r   )  \r  \t   ]
0017140   \r  \r   a   n   d       M   a   k   e   S   t   r   i   n   g
0017160        (   d   e   s   t   S   t   r   ,       r   a   d   i   x
0017200    0   ,   v   a   l   0   ,  \r       n   i   l   ,   n   i   l
0017220    ,       n   i   l   ,   n   i   l   ,       n   i   l   ,   n
0017240    i   l   ,       n   i   l   ,   n   i   l   ,       n   i   l
0017260    ,   n   i   l   ,       n   i   l   ,   n   i   l   ,       n
0017300    i   l   ,   n   i   l   ,       n   i   l   ,   n   i   l   ,
0017320        n   i   l   ,   n   i   l   ;           n   u   m   a   r
0017340    g   s       n   a   )       b   e  \r  \t   [  \r  \t   l   e
0017360    t       a   r   g       =       l   v       r   a   d   i   x
0017400    0  \r  \t   l   e   t       s   t   r       =       v   e   c
0017420        l   S   T   R   I   N   G  \r  \t   d   e   s   t   S   t
0017440    r   !   0       =       0  \r  \t   f   o   r       i       =
0017460        0       t   o       n   a       -       2       b   y    
0017500    2       d   o       A   p   p   e   n   d   S   t   r   i   n
0017520    g     376 001  \0   U   P   (   V   a   l   u   e   T   o   S
0017540    t   r   i   n   g       (   a   r   g   !   (   i   +   1   )
0017560    ,       s   t   r   ,       a   r   g   !   i   )   ,       d
0017600    e   s   t   S   t   r   )  \r  \t   ]  \r  \r   a   n   d    
0017620    I   m   b   e   d   C   h   a   r       (   c   h   a   r   ,
0017640        d   e   s   t   S   t   r   ,       i   n   d   e   x   ;
0017660            n   u   m   a   r   g   s       n   a   )       =    
0017700    v   a   l   o   f  \r  \t   [  \r  \t   l   e   t       s   t
0017720    r   L       =       d   e   s   t   S   t   r   >   >   S   L
0017740   \r  \t   i   f       n   a       l   s       3       d   o    
0017760    i   n   d   e   x       =       s   t   r   L       +       1
0020000   \r  \t   f   o   r       i       =       s   t   r   L       t
0020020    o       i   n   d   e   x       b   y       -   1       d   o
0020040        d   e   s   t   S   t   r   >   >   C   H   ^   (   i    
0020060    +       1   )       =       d   e   s   t   S   t   r   >   >
0020100    C   H   ^   i  \r  \t   d   e   s   t   S   t   r   >   >   C
0020120    H   ^   i   n   d   e   x 376 001  \0   J 205       =       c
0020140    h   a   r  \r  \t   d   e   s   t   S   t   r   >   >   S   L
0020160        =       s   t   r   L       +       1  \r  \t   r   e   s
0020200    u   l   t   i   s       d   e   s   t   S   t   r  \r  \t   ]
0020220   \r  \r   a   n   d       E   x   t   r   a   c   t   S   t   r
0020240    i   n   g       (   s   o   u   r   c   e   S   t   r   ,    
0020260    d   e   s   t   S   t   r   ,       b   I   n   d   e   x   ,
0020300        e   I   n   d   e   x   ;           n   u   m   a   r   g
0020320    s       n   a   )       =       v   a   l   o   f  \r  \t   [
0020340   \r  \t   l   e   t       l   e   n   g   t   h       =       s
0020360    o   u   r   c   e   S   t   r   >   >   S   L       -       b
0020400    I   n   d   e   x  \r  \t   i   f       n   a       e   q    
0020420    4       d   o       [       l   e   t       x       =       e
0020440    I   n   d   e   x       -       b   I   n   d   e   x       -
0020460        1   ;           i   f       x       l   s       l   e   n
0020500    g   t   h       d   o       l   e   n   g   t   h       =    
0020520    x       ]  \r  \t   f   o   r       i       = 376 001  \0 307
0020540  270       1       t   o       l   e   n   g   t   h       d   o
0020560        d   e   s   t   S   t   r   >   >   C   H   ^   i       =
0020600        s   o   u   r   c   e   S   t   r   >   >   C   H   ^   (
0020620    b   I   n   d   e   x       +       i   )  \r  \t   d   e   s
0020640    t   S   t   r   >   >   S   L       =       l   e   n   g   t
0020660    h       g   r       0       ?       l   e   n   g   t   h   ,
0020700        0  \r  \t   r   e   s   u   l   t   i   s       d   e   s
0020720    t   S   t   r  \r  \t   ]  \r  \r   a   n   d       S   e   a
0020740    r   c   h   C   h   a   r       (   s   t   r   ,       c   h
0020760    a   r   ,       i   n   d   e   x   ;           n   u   m   a
0021000    r   g   s       n   a   )       =       v   a   l   o   f  \r
0021020   \t   [  \r  \t   f   o   r       i   d   x       =       (   n
0021040    a       e   q       3       ?       i   n   d   e   x       +
0021060        1   ,       1   )       t   o       s   t   r   >   >   S
0021100    L       d   o  \r  \t  \t   i   f       s   t   r   >   >   C
0021120    H   ^   i   d   x       e   q       c   h   a   r       d   o
0021140      376 001  \0 032 317   r   e   s   u   l   t   i   s       i
0021160    d   x  \r  \t   r   e   s   u   l   t   i   s       0  \r  \t
0021200    ]  \r  \r   a   n   d       S   e   a   r   c   h   S   t   r
0021220    i   n   g       (   s   t   r   1   ,       s   t   r   2   ,
0021240        i   n   d   e   x   ,       s   w   ;           n   u   m
0021260    a   r   g   s       n   a   )       =       v   a   l   o   f
0021300   \r  \t   [  \r  \t   i   f       n   a       l   s       4    
0021320    d   o       s   w       =       f   a   l   s   e  \r  \t   l
0021340    e   t       s   t   r   1   L   ,       s   t   r   2   L    
0021360    =       s   t   r   1   >   >   S   L   ,       s   t   r   2
0021400    >   >   S   L  \r  \t   f   o   r       i   d   x       =    
0021420    (   n   a       g   e       3       ?       i   n   d   e   x
0021440    ,       0   )       t   o       s   t   r   1   L       -    
0021460    s   t   r   2   L       d   o  \r  \t  \t   [  \r  \t  \t   l
0021500    e   t       s   t   r   E   q       =       t   r   u   e  \r
0021520   \t  \t   f   o   r       j       =       1       t   o       s
0021540    t   r   2   L       d 376 001  \0  \a 017   o  \r  \t  \t  \t
0021560    [  \r  \t  \t  \t   l   e   t       c   1   ,       c   2    
0021600    =       s   t   r   1   >   >   C   H   ^   (   i   d   x    
0021620    +       j   )   ,       s   t   r   2   >   >   C   H   ^   j
0021640   \r  \t  \t  \t   u   n   l   e   s   s       s   w       d   o
0021660   \r  \t  \t  \t  \t   [  \r  \t  \t  \t  \t   i   f       $   a
0021700        l   e       c   1       &       c   1       l   e       $
0021720    z       d   o       c   1       =       c   1       -       #
0021740    4   0  \r  \t  \t  \t  \t   i   f       $   a       l   e    
0021760    c   2       &       c   2       l   e       $   z       d   o
0022000        c   2       =       c   2       -       #   4   0  \r  \t
0022020   \t  \t  \t   ]  \r  \t  \t  \t   i   f       c   1       n   e
0022040        c   2       d   o       [       s   t   r   E   q       =
0022060        f   a   l   s   e   ;           b   r   e   a   k       ]
0022100   \r  \t  \t  \t   ]  \r  \t  \t   i   f       s   t   r   E   q
0022120        d   o       r   e   s   u   l   t   i   s       i   d   x
0022140        +       s   t   r   2   L  \r  \t  \t 376 001  \0 317 021
0022160    ]  \r  \t   r   e   s   u   l   t   i   s       0  \r  \t   ]
0022200   \r  \r   a   n   d       S   t   r   i   n   g   E   q   u   a
0022220    l       (   s   t   r   1   ,       s   t   r   2   ,       s
0022240    w   ;           n   u   m   a   r   g   s       n   a   )    
0022260    =       v   a   l   o   f  \r  \t   [  \r  \t   l   e   t    
0022300    s   l       =       s   t   r   1   >   >   S   L  \r  \t   i
0022320    f       s   l       n   e       s   t   r   2   >   >   S   L
0022340        d   o       r   e   s   u   l   t   i   s       f   a   l
0022360    s   e  \r  \t   i   f       n   a       l   s       3       d
0022400    o       s   w       =       f   a   l   s   e  \r  \t   f   o
0022420    r       i       =       1       t   o       s   l       d   o
0022440   \r  \t  \t   [  \t   l   e   t       c   1   ,       c   2    
0022460    =       s   t   r   1   >   >   C   H   ^   i   ,       s   t
0022500    r   2   >   >   C   H   ^   i  \r  \t  \t  \t   u   n   l   e
0022520    s   s       s   w       d   o  \r  \t  \t  \t  \t   [  \r  \t
0022540   \t  \t  \t   i   f       $   a       l   e       c   1       &
0022560  376 001  \0   +   h       c   1       l   e       $   z       d
0022600    o       c   1       =       c   1       -       #   4   0  \r
0022620   \t  \t  \t  \t   i   f       $   a       l   e       c   2    
0022640    &       c   2       l   e       $   z       d   o       c   2
0022660        =       c   2       -       #   4   0  \r  \t  \t  \t  \t
0022700    ]  \r  \t  \t  \t   i   f       c   1       n   e       c   2
0022720        d   o       r   e   s   u   l   t   i   s       f   a   l
0022740    s   e  \r  \t  \t   ]  \r  \t   r   e   s   u   l   t   i   s
0022760        t   r   u   e  \r  \t   ]  \r  \r   a   n   d       S   t
0023000    r   i   n   g   T   o   V   a   l   u   e       (   s   o   u
0023020    r   c   e   S   t   r   ,       r   a   d   i   x   ,       p
0023040    o   i   n   t   e   r   ;           n   u   m   a   r   g   s
0023060        n   a   )       =       v   a   l   o   f  \r  \t   [  \r
0023100   \t   i   f       n   a       l   s       2       d   o       r
0023120    a   d   i   x       =       1   0  \r  \t   l   e   t       s
0023140    t   r   L       =       s   o   u   r   c   e   S   t   r   >
0023160    >   S   L  \r  \t 376 001  \0 275 003   l   e   t       s   t
0023200    r   1   c       =       (   s   t   r   L       e   q       0
0023220        ?       (   n   a       e   q       3       ?       p   o
0023240    i   n   t   e   r   ,       0   )   ,       s   o   u   r   c
0023260    e   S   t   r   >   >   C   H   ^   1   )  \r  \t   s   w   i
0023300    t   c   h   o   n       r   a   d   i   x       i   n   t   o
0023320   \r  \t  \t   [  \r  \t  \t   c   a   s   e       r   a   d   i
0023340    x   F   i   l   e   N   a   m   e   :  \r  \t  \t  \t   f   o
0023360    r       i       =       1       t   o       s   t   r   L    
0023400    d   o  \r  \t  \t  \t  \t   [  \r  \t  \t  \t  \t   l   e   t
0023420        c       =       s   o   u   r   c   e   S   t   r   >   >
0023440    C   H   ^   i  \r  \t  \t  \t  \t   u   n   l   e   s   s    
0023460    (   $   a       l   e       c       &       c       l   e    
0023500    $   z   )       %       (   $   A       l   e       c       &
0023520        c       l   e       $   Z   )       %       (   $   0    
0023540    l   e       c       &       c       l   e       $   9   )    
0023560    %  \r  \t  \t  \t  \t       c       e 376 001  \0   B 333   q
0023600        $   .       %       c       e   q       $   !       %    
0023620    c       e   q       $   $       %       c       e   q       $
0023640    +       %       c       e   q       $   -       d   o  \r  \t
0023660   \t  \t  \t  \t   S   t   r   T   o   V   a   l   E   r   r    
0023700    (   s   o   u   r   c   e   S   t   r   ,       c   ,       r
0023720    a   d   i   x   )  \r  \t  \t  \t  \t   ]  \r  \t  \t  \t   /
0023740    /       n   o       e   n   d   c   a   s   e  \r  \t  \t   c
0023760    a   s   e       r   a   d   i   x   S   t   r   i   n   g   :
0024000   \r  \t  \t  \t   [       M   o   v   e   B   l   o   c   k    
0024020    (   p   o   i   n   t   e   r   ,       s   o   u   r   c   e
0024040    S   t   r   ,       (   s   o   u   r   c   e   S   t   r   >
0024060    >   S   L       r   s   h   i   f   t       1   )       +    
0024100    1   )   ;       r   e   s   u   l   t   i   s       p   o   i
0024120    n   t   e   r       ]  \r  \t  \t   c   a   s   e       r   a
0024140    d   i   x   S   w   i   t   c   h   :  \t   r   e   s   u   l
0024160    t   i   s       s   t   r   1   c       e   q       $   Y 376
0024200  001  \0   % 355       %       s   t   r   1   c       e   q    
0024220    $   y       %       s   t   r   1   c       e   q       $   T
0024240        %       s   t   r   1   c       e   q       $   t  \r  \t
0024260   \t   c   a   s   e       r   a   d   i   x   C   h   a   r   S
0024300    t   r   :  \t   r   e   s   u   l   t   i   s       s   t   r
0024320    1   c  \r  \t  \t   c   a   s   e       r   a   d   i   x   C
0024340    h   a   r   C   o   d   e   :  \r  \t  \t  \t   [  \r  \t  \t
0024360   \t   i   f       s   t   r   1   c       e   q       $   *   *
0024400        d   o       [       s   o   u   r   c   e   S   t   r   >
0024420    >   C   H   ^   1       =       $   0   ;           r   e   s
0024440    u   l   t   i   s       S   t   r   i   n   g   T   o   V   a
0024460    l   u   e       (   s   o   u   r   c   e   S   t   r   ,    
0024500    8   )       ]  \r  \t  \t  \t   r   e   s   u   l   t   i   s
0024520        s   t   r   1   c  \r  \t  \t  \t   ]  \r   /   /   F   L
0024540    O   A   T  \t  \t   c   a   s   e       r   a   d   i   x   F
0024560    l   o   a   t   S   :  \r   /   /   F   L   O   A   T  \t  \t
0024600    c   a   s   e 376 001  \0 254   4       r   a   d   i   x   F
0024620    l   o   a   t   :  \r   /   /   F   L   O   A   T  \t  \t  \t
0024640    [  \r   /   /   F   L   O   A   T  \t  \t  \t   i   f       S
0024660    t   r   T   o   F   P   N   u   m       e   q       0       d
0024700    o       C   a   l   l   S   w   a   t       (   "   S   t   r
0024720    T   o   F   P   N   u   m       n   o   t       l   o   a   d
0024740    e   d   "   )  \r   /   /   F   L   O   A   T  \t  \t  \t   r
0024760    e   s   u   l   t   i   s       S   t   r   T   o   F   P   N
0025000    u   m       (   s   o   u   r   c   e   S   t   r   ,       p
0025020    o   i   n   t   e   r   )  \r   /   /   F   L   O   A   T  \t
0025040   \t  \t   ]  \r  \t  \t   d   e   f   a   u   l   t   :  \r  \t
0025060   \t  \t   [  \r  \t  \t  \t   l   e   t       n       =       s
0025100    t   r   L       e   q       0       ?       s   t   r   1   c
0025120    ,       0  \r  \t  \t  \t   i   f       s   t   r   1   c    
0025140    e   q       $   -       d   o       s   o   u   r   c   e   S
0025160    t   r   >   >   C   H   ^   1       =       $   0  \r  \t  \t
0025200   \t   f   o   r       i       =     376 001  \0 316 317   1    
0025220    t   o       s   t   r   L       d   o  \r  \t  \t  \t  \t   [
0025240   \r  \t  \t  \t  \t   l   e   t       x       =       s   o   u
0025260    r   c   e   S   t   r   >   >   C   H   ^   i       -       $
0025300    0  \r  \t  \t  \t  \t   u   n   l   e   s   s       (   0    
0025320    l   e       x       &       x       l   e       r   a   d   i
0025340    x       -       1   )       d   o       S   t   r   T   o   V
0025360    a   l   E   r   r       (   s   o   u   r   c   e   S   t   r
0025400    ,       x       +       $   0   ,       r   a   d   i   x   )
0025420   \r  \t  \t  \t  \t   n       =       n   *   r   a   d   i   x
0025440        +       x  \r  \t  \t  \t  \t   ]  \r  \t  \t  \t   r   e
0025460    s   u   l   t   i   s       s   t   r   1   c       e   q    
0025500    $   -       ?       -   n   ,       n  \r  \t  \t  \t   ]  \r
0025520   \t  \t   ]  \r  \t   ]  \r  \r   a   n   d       S   t   r   T
0025540    o   V   a   l   E   r   r       (   s   t   r   ,       c   h
0025560    a   r   ,       r   a   d   i   x   )       b   e       C   a
0025600    l   l   S   w   a   t       (   "   S   t   r   i   n 376 001
0025620   \0 316 252   g   T   o   V   a   l   u   e       e   r   r   o
0025640    r       i   n   :       "   ,       s   t   r   )  \r  \r   a
0025660    n   d       V   a   l   u   e   T   o   S   t   r   i   n   g
0025700        (   v   a   l   u   e   ,       d   e   s   t   S   t   r
0025720    ,       r   a   d   i   x   ;           n   u   m   a   r   g
0025740    s       n   a   )       =       v   a   l   o   f  \r  \t   [
0025760   \r  \t   i   f       n   a       l   s       3       d   o    
0026000    r   a   d   i   x       =       1   0  \r  \t   d   e   s   t
0026020    S   t   r   !   0       =       0  \r  \t   s   w   i   t   c
0026040    h   o   n       r   a   d   i   x       i   n   t   o  \r  \t
0026060   \t   [  \r  \t  \t   c   a   s   e       r   a   d   i   x   F
0026100    l   o   a   t   S   :  \r  \t  \t   c   a   s   e       r   a
0026120    d   i   x   F   i   l   e   N   a   m   e   :  \r  \t  \t   c
0026140    a   s   e       r   a   d   i   x   S   t   r   i   n   g   :
0026160   \t   r   e   s   u   l   t   i   s       C   o   p   y   S   t
0026200    r   i   n   g       (   v   a   l   u   e   ,       d   e   s
0026220    t   S   t 376 001  \0   #   &   r   )  \r  \t  \t   c   a   s
0026240    e       r   a   d   i   x   S   w   i   t   c   h   :  \t   r
0026260    e   s   u   l   t   i   s       A   p   p   e   n   d   C   h
0026300    a   r       (   (   v   a   l   u   e       ?       $   Y   ,
0026320        $   N   )   ,       d   e   s   t   S   t   r   )  \r  \t
0026340   \t   c   a   s   e       r   a   d   i   x   C   h   a   r   S
0026360    t   r   :  \t   r   e   s   u   l   t   i   s       A   p   p
0026400    e   n   d   C   h   a   r       (   v   a   l   u   e   ,    
0026420    d   e   s   t   S   t   r   )  \r  \t  \t   c   a   s   e    
0026440    r   a   d   i   x   C   h   a   r   C   o   d   e   :  \r  \t
0026460   \t  \t   [  \r  \t  \t  \t   i   f       v   a   l   u   e    
0026500    l   e       c   n   t   r   l   Z       d   o       [       A
0026520    p   p   e   n   d   C   h   a   r       (   $   ^   ,       d
0026540    e   s   t   S   t   r   )   ;           v   a   l   u   e    
0026560    =       v   a   l   u   e       +       #   1   0   0       ]
0026600   \r  \t  \t  \t   r   e   s   u   l   t   i   s       A   p   p
0026620    e   n   d   C   h   a   r     376 001  \0   -   H   (   v   a
0026640    l   u   e   ,       d   e   s   t   S   t   r   )  \r  \t  \t
0026660   \t   ]  \r   /   /   F   L   O   A   T  \t  \t   c   a   s   e
0026700        r   a   d   i   x   F   l   o   a   t   :  \r   /   /   F
0026720    L   O   A   T  \t  \t  \t   [  \r   /   /   F   L   O   A   T
0026740   \t  \t  \t   i   f       F   P   N   u   m   T   o   S   t   r
0026760        e   q       0       d   o       C   a   l   l   S   w   a
0027000    t       (   "   F   P   N   u   m   T   o   S   t   r       n
0027020    o   t       l   o   a   d   e   d   "   )  \r   /   /   F   L
0027040    O   A   T  \t  \t  \t   r   e   s   u   l   t   i   s       F
0027060    P   N   u   m   T   o   S   t   r       (   v   a   l   u   e
0027100    ,       d   e   s   t   S   t   r   )  \r   /   /   F   L   O
0027120    A   T  \t  \t  \t   ]  \r  \t  \t   c   a   s   e       2   :
0027140   \r  \t  \t  \t   [  \r  \t  \t  \t   f   o   r       c   o   l
0027160        =       1       t   o       1   6       d   o       A   p
0027200    p   e   n   d   C   h   a   r       (   $   0       +       (
0027220    v   a   l   u   e       r   s   h   i   f   t     376 001  \0
0027240  344 354   (   1   6       -       c   o   l   )   )   <   <   O
0027260    D   D   ,       d   e   s   t   S   t   r   )  \r  \t  \t  \t
0027300    e   n   d   c   a   s   e  \r  \t  \t  \t   ]  \r  \t  \t   c
0027320    a   s   e       8   :  \r  \t  \t  \t   [  \r  \t  \t  \t   l
0027340    e   t       z   e   r   o       =       t   r   u   e  \r  \t
0027360   \t  \t   f   o   r       i       =       0       t   o       1
0027400    6   /   3       d   o  \r  \t  \t  \t  \t   [  \r  \t  \t  \t
0027420   \t   l   e   t       v       =       (   v   a   l   u   e    
0027440    r   s   h   i   f   t       3   *   (   1   6   /   3       -
0027460        i   )   )       &       #   7  \r  \t  \t  \t  \t   i   f
0027500        v       e   q       0       &       z   e   r   o       l
0027520    o   o   p  \r  \t  \t  \t  \t   A   p   p   e   n   d   C   h
0027540    a   r       (   $   0       +       v   ,       d   e   s   t
0027560    S   t   r   )  \r  \t  \t  \t  \t   z   e   r   o       =    
0027600    f   a   l   s   e  \r  \t  \t  \t  \t   ]  \r  \t  \t  \t   i
0027620    f       z   e   r   o       d   o       d   e   s   t   S   t
0027640    r   ! 376 001  \0   u   j   0       =       1   b   8       +
0027660        $   0  \r  \t  \t  \t   e   n   d   c   a   s   e  \r  \t
0027700   \t  \t   ]  \r  \t  \t   c   a   s   e       1   6   :  \r  \t
0027720   \t  \t   [  \r  \t  \t  \t   f   o   r       c   o   l       =
0027740        1       t   o       4       d   o  \r  \t  \t  \t  \t   [
0027760   \t   l   e   t       v       =       (   v   a   l   u   e    
0030000    r   s   h   i   f   t       4   *   (   4       -       c   o
0030020    l   )   )       &       #   1   7  \r  \t  \t  \t  \t  \t   A
0030040    p   p   e   n   d   C   h   a   r       (   (   v       l   e
0030060        9       ?       (   $   0       +       v   )   ,       (
0030100    $   A       +       (   v       -       1   0   )   )   )   ,
0030120        d   e   s   t   S   t   r   )  \r  \t  \t  \t  \t   ]  \r
0030140   \t  \t  \t   e   n   d   c   a   s   e  \r  \t  \t  \t   ]  \r
0030160   \t  \t   d   e   f   a   u   l   t   :  \r  \t  \t  \t   [  \r
0030200   \t  \t  \t   l   e   t       m   i   n       =       v   a   l
0030220    u   e       l   s       0  \r  \t  \t  \t   i   f       m   i
0030240    n       d   o       v   a 376  \0 275   * 376   l   u   e    
0030260    =       -   v   a   l   u   e  \r  \t  \t  \t   [  \t   I   m
0030300    b   e   d   C   h   a   r       (   (   v   a   l   u   e    
0030320    r   e   m       r   a   d   i   x   )       +       $   0   ,
0030340        d   e   s   t   S   t   r   ,       1   )  \r  \t  \t  \t
0030360   \t   v   a   l   u   e       =       v   a   l   u   e   /   r
0030400    a   d   i   x  \r  \t  \t  \t   ]       r   e   p   e   a   t
0030420    u   n   t   i   l       v   a   l   u   e       e   q       0
0030440   \r  \t  \t  \t   i   f       m   i   n       d   o       I   m
0030460    b   e   d   C   h   a   r       (   $   -   ,       d   e   s
0030500    t   S   t   r   ,       1   )  \r  \t  \t  \t   ]  \r  \t  \t
0030520    ]  \r  \t   r   e   s   u   l   t   i   s       d   e   s   t
0030540    S   t   r  \r  \t   ]  \r  \r  \0 377  \0  \0   L   O   A   D
0030560    T   O   T   E   L   E   .   C   M  \0 376  \0 034   G   B   B
0030600    L   D   R   /   L   /   V       T   O   T   E   L   E   N   E
0030620    T       U   T   I   L   S   T   R  \r  \r 374                
0030634