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