'                                                                    
                                                                                                                                    
                                                                                                                                    
                                                                         '                                                          
                                                                                                                                    
                                                                                                                                    
                                                                                                                                    
                                                                                                                                    
                                                                                                                                    
                                                                                                                                    
                                                                                                                                    
                                                                                                                                    
                                                                                                                                    
                                                                                                                                    
                                                                                                                                    
                                                                                                                                    
                                                                                                                                    
                                                                                                                                    
                                                                                                                                    
                                                                                                                                    
                                                                                                                                    
                                                                                                                                    
                                                                                                                                    
                                                                                                                                    
                                                                                                                                    
                                                                                                                                    
                                                                                                                                    
                                                                                                                                    
                                                                                                                                    
                                                                                                                                    
                                                                                                                                    
                                                                                                                                    
                                                                                                                                    
                                                                                  '                                                 
                                                                                                                                    
                                                                                                                                    
                                                                              ' ' '  '          ''                                ' 
                                                                                                                                    
                                                                                                                                    
                                                            '         '  ' ''   ' '      '''  '  '  '   '''      ''''  ' '   '      
                                                                                                                                    
                                                                                                                                    
                                                              '   '  '''''' ''''''''''''' ''''''''''''''     '''' '     ''''''''    
                                                                                                                                    
                                                                                                                                    
                                                     ' ' '' ''   '''''''''''''''''''' '' '''''   ''''''''''''''' ''''''' ''' '''''''
                                                                                                                                    
                                                                                                                                    
                                                     '''''  ''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''' ''''
                                                                                                                                    
                                                                                                                                    
                                                '      '  ''''''''''''///'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
                                                                                                                                    
                                                                                                                                    
                                     '          '''' '''''''''/XXXX//XXXXX//''''''''''''''''''''''''''''''''''''''''''''''''''''''''
                                                                      -+-                                                           
                                                                                                                                    
                                            ''   ''''''''''''/XXXXXXXXXXXXXXX/''''''''''''''''''''''''''''''''''''''''''''''''''''''
                                                              -+++#+++++###+                                                        
                                                                                                                                    
                                            '  '' '''''''''/XXXXXXXXXXXXXXXXXXX/''''''''''''''''''''''''''''''''''''''''''''''''''''
                                                            -+###########+####                                                      
                                                                                                                                    
                                        ''' ''''' '''''''''XXXXXX#XXXXXXXXXXXXXX/'''''''''''''''''''''''''''''''''''''''''''''''''''
                                                           -#####@########+####-                                                    
                                                                 *                                                                  
                                   ' '' '   '''''''''''''/XXXXXXXXXXXXXXXXXXXXXXX/''''''''''''''''''''''''''''''''''''''''''''''''''
                                                          -#+###########+++#####-                                                   
                                                                                                                                    
                               '  ''  '  ' ' '' ''''''''/XXXXXXXXXXXXXX#XXXXXXXXXXX'''''''''''''''''''''''''''''''''''''''''''''''''
                                                          +++++########@##+#######                                                  
                                                                       *                                                            
                                '     '''''''''''''''''/XXXXXXXXXXXXXXXXX#XXXXXXXXX/''''''''''''''''''''''''''''''''''/''''''''/''''
                                                        +++#+######++++##@#########                                                 
                                                                         *                                                          
                                 '''''''' '''''''''''''XXXXXXXXXXXXXXXXXXXXXXXXXXXXX/'''''''''''''/''''''//''''''''''''''''/''/'''''
                                                       -++######++-----+###########+                                                
                                                                                                                                    
                            ' ''''''''''' ''''''''''''XXXXXXXXXXXXXXXXXXXXXX#XXXXXXXX/''''''''''''''''''''''///'/'''''/'//'/''''''''
                                                       +#+####++---   --++##@#######                                                
                                                                            *                                                       
                            ' '''''''''''''''''''''''/XXXXXXXXXXXXXXXXXXXXX###XXXXXXXX'''''/'''''''/''''//''/''/'/'//'////'//''''/''
                                                      -##+####+---    --++#@@@######+                                               
                                                                           ***                                                      
                     ' ''''''''''''''''''''''''''''''XXXXXXXXXXXXXXXXXXXXXX###XXXXXXXX/'/''''/'/'//'//'//'/''///////'//////'//'/''''
                                                      +#######+---    ---+#@@@#######+                                              
                                                                           ***                                                      
                    '  '  ''''''''''''''''''''''''''/XXXXXXXXXXXXXXXXXXXXXXX##XXX#XXXX//''//''''''//////''////////////////'//''''///
                                                      #######++--- -- ---++#@@###@####                                              
                                                                            **   *                                                  
                     '' '' '''''''''''''''''''''''''XXXXXXXXXXXXXXXXXXXXXXXX##X####XX#X//''/////''//'//////'////////////////'///////
                                                     +######++----   -----+#@@#@@@@##@-                                             
                                                                            ** ****  *                                              
                   ''''''''''''''''''''''''''''''''/XXXXXXXXXXXXXXXXXXXXXXXXX#XX###XXXX///''/'/'//////////////'///////////////'/////
                                                    -+######++------------++#@##@@@####                                             
                                                                             *  ***                                                 
             ' '''  '''''''''''''''''''''''''''''''/XXXXXXXXXXXXXXXXXXXXXXXX###X##X#XXXX////////////////////////////////////////////
                                                    -+#########++------+++##@@@#@@#@###                                             
                                                                            *** ** *                                                
              '  ''''''''''''''''''''''''''''''''''/XXXXXX#XXXXXXXXXXXXXXXXXXX######XXXX////////////////////////////////////////////
                                                    -+####@#######+---+#######@@@@@@###-                                            
                                                          *                   ******                                                
            '  ''''''''''''''''''''''''''''''''''''/XXXXXXXXX###XXXXXXXXX##XXX#######XXX////////////////////////////////////////////
                                                    +########@@@##+---###@@###@@@@@@@###                                            
                                                             ***         **   *******                                               
          '    ' '''''''''''''''''''''''''''''''''/XXXXXXXXXXXXXXXXXXXXXXX############XXX///////////////////////////////////////////
                                                    +##########++++- -+###@@@@@@@@@@@@##                                            
                                                                          ************                                              
          '   '''' '''''''''''''''''''''''''''''''/XXXXXXXXXXXXXXXXXXXXXXXXXXXX#######XXX///////////////////////////////////////////
                                                   -+######+++++++-- -++##++###@@@@@@@##-                                           
                                                                               *******                                              
         '''  ''''''''''''''''''''''''''''''''''///XXXX#XXXXXXXXXXXXXXXXXXXXXXXX#######XXX//////////////////////////////////////////
                                                   -+##@##++------- ------++++##@@@@@@@#-                                           
                                                       *                        *******                                             
     '' ''''''''''''''''''''''''''''''''''''''''//XXXX##XXXXXXXXXXXXXXXXXXXXXXXX########XX//////////////////////////////////////////
                                                   +##@@##+--- -------++----++##@@@@@@@@+                                           
                                                      **                        ********                                            
     '  ''''''''''''''''''''''''''''''''''''''''/XXXXX##XXXXXXXXXXXXXXXXXXXXXXXX########XX//////////////////////////////////////////
                                                  -+##@@##++---++-----++++--+++#@@@@@@@@#-                                          
                                                      **                        ********                                            
'    ''''''''''''''''''''''''''''''''''''''''/'//XXXXX###XXXXXXXXXXXXXXXXXXXXXXX#########X//////////////////////////////////////////
                                                  ++##@@@#+--+++++++++++++++++##@@@@@@@@@#                                          
                                                      ***                       *********                                           
' '' ''' ''''''''''''''''''''''''''''''''''''/'/XXXXXX###XXXXXXXXXXXXXXXXXXXXXXX#########X///////////////////////////////////X///X//
                                                 -+###@@@#+++++--+++###+++++++##@@@@@@@@@#                                          
                                                      ***                       *********                                           
''''''''''''''''''''''''''''''''''''''''''''''//XXXXXX###XXXXXXXXXXXXXXXXXXXXXXX########XX////////////////////////////////////////X/
                                                 -+###@@@##+-+++++++#+++++++++##@@@@@@@@#+                                          
                                                      ***                       ********                                            
' '''''''''''''''''''''''''''''''''''''''''''///XXXXXX####XXXXXXXXXXXXXXXXXXXXXX########XXX//////////////////////////////X///////X/X
                                                 -+###@@@@#++-++#########++++###@@@@@@@@#+                                          
                                                      ****                      ********                                            
  '''''''''''''''''''''''''''''''''/''''''''////XXXXXX####XXXXXXXXXXXXXXXXXXXXX#########XXX////////////////////////////X//////X/X//X
                                                 -+###@@@@#++++-+++++#++++++###@@@@@@@@@##                                          
                                                      ****                     *********                                            
' '''''''''''''''''''''''''''''''''''''''''/////XXXXXXX####XXXXXXXXXXXXXXXXXXX#########XXXXX////////////////////////////////XXX/XXXX
                                                -+#####@@@@##++-++++++++++++##@@@@@@@@@##+                                          
                                                       ****                   *********                                             
 '''''''''''''''''''''''''''''''''''''//''/////XXXXXXXX#####XXXXXXXXXXXXXXXXXX#########XXXXXX/////////////////////////////X/XXXX//XX
                                                +######@@@@@##+++-------+++###@@@@@@@@@##+-                                         
                                                       *****                  *********                                             
' ''' ''''''''''''''''''''''''''''''''/'''''//XXXXXXXXX######XXXXXXXXXXXXXXXXX#########XXXXXX/////X////////////////////////XX///XXXX
                                               -+######@@@@@@##+++-----+++####@@@@@@@@@###+                                         
                                                       ******                 *********                                             
''' '''''''''''''''''''''''''''''''/'''/''////XXXXXXXXXXX#####XXXXXXXXXXXXXXXX##########XXXX/X///////X/////////////X//////X////XXXXX
                                              -++########@@@@@##+++++++++#####@@@@@@@@@@###                                         
                                                         *****                **********                                            
''''''''''''''''''''''''''''''''''''''''/'//XXXXXXXXXXXX#X####XXXXXXXXXXXXXXXXX#########XXXXXX///X/X/////X////////X///////////XXXXXX
                                              -+########@#@@@@#################@@@@@@@@@##++                                        
                                                        * ****                 *********                                            
''''''''''''''''''''''''''''''''''/''''/'///XXXXXXXXXXXXXX####XXXXXXXXXXXXXXXXX#########XXXXXXXX//////////X////XX////////X/X/XXXXXXX
                                              -+##########@@@@#################@@@@@@@@@###+                                        
                                                          ****                 *********                                            
'''''''''''''''''''''''''''''''''''//'''////XXXXXXXXXX#XXX####XXXXXXXXXXXXXXXXX##########XXXXXXX/XX////XX//////////X//X/X/XXX/XXXXXX
                                              ++######@###@@@@#######++#+##+###@@@@@@@@@@###+                                       
                                                      *   ****                 **********                                           
''''''''''''''''''''''''''''/'''''//////////XXXXXXXXXXX#X#X###XXXXXXXXXXXXXXXXXX##X########XXXXXX/X/XX//X///////X/////XX///XXXXXXX/X
                                              ++#######@#@#@@@#####+++##++++####@@#@@@@@@@@##+                                      
                                                       * * ***                  ** ********                                         
''''''''''''''''''''''''''''''''''''''//////XXXXXXXXXXXXXX#####XXXXXXXXXXXXXXXXXXXXXXX####XXXXXXXXXX////X/X/XX/X/X/X/////XXXXX/XXX//
                                              ++##+#######@@@@@###++++++++++##########@@@@####+                                     
                                                          *****                       ****                                          
''''''''''''''''''''''''''''''''''''/''////XXXXXXXXXXX#X#######XXXXXXXXXXXXXXXXXXXXXXX#####XXXXXXXX/XXXX/X///X/////XXXX/X/XX/XXXX///
                                              -###+###@#@@@@@@@###+++++++++++###++####@@@@@####+-                                   
                                                      * *******                       *****                                         
'''''''''''''''''''''''''''''''''''''''////XXXXXXXXXXXX#X######XXXXXXXXXXXXXXXXXXXXXXXX#X##XXXXXXXXXXXXX///////X/XXX/XX///XXXXXX/X/X
                                             --########@#@@@@@@#+++++++++++++++---++###@#@@#####++-                                 
                                                       * ******                        * **                                         
'''''''''''''''''''''''''/''''/''''/'//////XXXXXXXXXXX#XXXXX#XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX//X////XX/X/X/X/XXXX/XXXX////
                                             --#######@#####@####++++++++++++++   -+####+######+----                                
                                                      *     *                                                                       
'''''''''''''''''''''''''''''''/'/'////'///XXXXXXXXXXX#XXXXXXXXXXXXXXXXXXXXXXXX//XXXXXXXXXXXXXXXXXX///XX/XXXXX///X/XXXX/X/XXXXX/XXXX
                                             -+#######@###########++++++++++++     -+##+++++++--                                    
                                                      *                                                                             
''''''''''''''''''''''''''''''''/''/''/////XXXXXXXXXX##X#XXXXXXXXXXXXXXXXXXXXX////XXXXXXXXXXXXXXX////////XX/X/X/XX/XX/XXXXXXXXXX///X
                                             -+######@@#@#########++++++++++-       -+#++--+--                                      
                                                     ** *                                                                           
'''''''''''''''''''''''''''''''''/''''//'//XXXXXXXXX#####XXXXXXXXXXXXXXXXXXXXXX//XXXXXXXXXXXXXX/XX/////////XXX/XX/XXXXX/XXXXXX//XX/X
                                            -++#####@@@@@####+++++++++++++++--      -++------                                       
                                                    *****                                                                           
''''''''''''''''''''''''''''''''////'''''//XXXXXXX#X######XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX///////////////XXXXXXXXXXXXXXXXXXXXXX/
                                            --+###@#@@@@@@##+++++++++--+---- -++     -+----- -                                      
                                                  * ******                                                                          
'''''''''''''''''''''''''''/'////'//''''///XXXXXXXXXX#####XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/////////////X/XXXXXXXXXXXXXXXXXX/XXX
                                            -+++#####@@@@@##+----++------- --+----    -- - ---                                      
                                                     *****                                                                          
''''''''''''/''''''''/''''''''/'///''''///XXXXXXXXX#XX####XXXXXXXXXXXXXXXXXXXXXXXXX/XXXXXXXXXXX/////////X/XXXXXXXXXXXXXXXXXXXXXXXXXX
                                            -+++###@##@@@@###++- -------  --------     -   --                                       
                                                   *  ****                                                                          
''''''''''''/'''/''''//''''''''////'''''/XXXXXXXXXX#XX####XXXXXXXXXXXXX/XXXXXXXXXXX///XX/XXXXXX//////////XXXXXXXXXXXXXXXXXXXX/XXXXXX
                                           ---+####@##@@@@##++--   ---    --   -       -    -                                       
                                                   *  ****                                                                          
'''''''''/'''''''''''''/''''''////''''///XXXXXXXXXXXX#####XXXXXXX//XX///XXXXXXX//////XXXX/XXXXXX/X//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                                          - --++#####@@@@@##+--          -             -    -                -                      
                                                     *****                                                                          
''''''''''''/'''''/''''''/'/////////////XXXXXXXXXXXXX#XX#XXXXXX/////XXXXXXX/XX/////////XX/XXXXX/XX/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                                         -  --+++####@##@##++-        --                    -              --                       
                                                     *  *                                                                           
''''''''''''//''/'''////''//'///////////XXXXXXXXXXXXXXXXXXXXXXXX///XXXXX///////////////XX//XXXXXXX/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                                        -   --+++##########+---                            -       -       --                       
                                                                                                                                    
''''''''''''//''''////''////'///////X//XXXXXXXXXXXXXXXXXXXXXXXXX/////''/////////////////X/XXXX//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                                            - +++++########+--                             -       -      -----                     
                                                                                                                                    
''''''''''/'//''''''//'///////////XXXX/XXXXXXXXXXXXXXXXXXXXXXXXX////'''///////////'/////XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                                              --+#+#######+-                            -          --     -----                     
                                                                                                                                    
''''''''''''//''''/////'///////XXX//XX//XXXXXXXXXXXXXXXXXXXXXX/X////'//////'/'//''////XXXXX//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                                              --+#+#######+-                            -                -------                    
                                                                                                                                    
''''''''''''///'''///''///'////XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX///////////////'//'//''///X/XX////XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                                               -++-+######-                                    -   - --  ------                     
                                                                                                                                    
''''''''//'/''/''///'//////////XXXXXXXXXXXXXXXXXXXXXXXXXXXXX/////////'////'/''''/'///'////X/////XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                                              -++++######+-                                        --   --------                    
                                                                                                                                    
''''/'///'''''/'''/////////////XXXXXXXXXXXXXXXXXXXXXXXXXXXX/////''''''///''''''//'/////////X/XX/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                                              -++++######+                                         - -  --------   -                
                                                                                                                                    
'''''''''''''//'///////////////XXXXXXXXXXXXXXXXXXXXXXXXXXXX////'''''''//''/''/''/'////////X/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                                              --++######+-                                    --   --- ---------                    
                                                                                                                                    
'''''''''''''///'//////////////XXXXXXXXXXXXXXXXXXXXXXXXXXX//'///'''/''//'//''////''////////XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                                           ---++#######+-                                     ---  --- +--------                   -
                                                                                                                                    
'''''''//'//'//////////////////XXXXXXXXXXXXXXXXXXXXXXXXX////'''//''/''/'/''/''//'///////X//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                                               -+#####+-                                      --++ +-----------   - -               
                                                                                                                                    
/'''//'/'//////////////////////XXXXXXXXXXXXXXXXXXXXXXXXX////'''///''''/'//'//'///////////XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                                       ---       -----                                       ---++-+-----------    ---             -
                                                                                                                                    
'''///'/////////////////////////XXXXXXXXXXXXXXXXXXXXXX/////'''''''//''X////////////X//X/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                                      - --                                                    --++------- ------   ---             -
                                                                                                                                    
/''///'/////////////////////////XXXXXXXXXXXXXXXXXXXX///////'//'/////''//////////////X/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                                      - --                                                 -- --+++----- ------    --- -         ---
                                                                                                                                    
/////////////////////////////////XXXXXXXXXXXXXXXXX////////////''/'///////////////////XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                                       ---                                               -------++----------- -    - -    -    -  --
                                                                                                                                    
/////////////////////////////X////XXXXXXXXXXXXXXXXX//////////'//''''////////X/////XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                                       ---                                                -----+++---------         --       -  ----
                                                                                                                                    
////////////////////////////XXX/XXXXXXXXXXXXXXXXXX////////////''/''//'////////////XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                                        --                                               --------+---- -----       -- --  - -- ---- 
                                                                                                                                    
/////////////////////////////X////XXXXXXXXXXXXXXX//////////'//''/////////////////XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                                        --                                              --------++--------  -      -- ------------ -
                                                                                                                                    
/////////////////////////////XX//XXXXXXXXXXXXXXX//////////////''///'////////X/////XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                                         -                                                ------+++-- ----   -     ----  -------  --
                                                                                                                                    
////////////////////////////XXX/XXXXXXXXXXXXXXXX//////////////'///'/////////////X/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                                         -                                                 -----++-------    -     ------------  -- 
                                                                                                                                    
////////////////////////////XX////XXXXXXXXXXXXX////////////'///'///'//////////////XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                                      -  -                                           -  -   ----++------    -     ----------- ----- 
                                                                                                                                    
/////////////////////////X/XXX/////XXXXXXXXXXXX/////////////////'/'/'/////////////XXXXXXXXXXXXXXXXXXXXXXXXXXXX/XXXXXXXXXXXXXXXXXXXXX
                                         -                                                 - ----+------  --        -----------    -
                                                                                                                                    
//////////////////////////X/XXX//X/XXXXXXXXXXX//////////////'//''/'/''/////////////XXXXXXXXXXXXXXXXXXXXXXXXX/XXXXXXXXXXXXXXXXXXXXXXX
                                       - -                                              -   - --++--+--  -         -----------  ----
                                                                                                                                    
/////////////////////X//X//XXXX//X/XXXXXXXXXXX//////////////'///'/'////////'///X//X/XXXXXXXXXXXXXXXXXXXXXXXXXX/XXXXXXXXXXXXXXXXXXXXX
                                        --                                                   ---+++-----           -------------- --
                                                                                                                                    
////////////////X////////X//XXX////XXXXXXXXXX////''////////''/'/'////'///X///////X//XXXXXXXXXXXXXXXXXXXXXXXXXX/XXXXXXXXXXXXXXXXXXXXX
                                         --                                             -  -- --++----             -----------------
                                                                                                                                    
/////////////////X/////X//XXXX//////XXXXXXXXX//X//////////'//''/'////'////////////XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                                          -                                            -  ------++----- ---+++----------------------
                                                                                                                                    
//////////////X///////////XXXX/////X//XXXXXXX////////////'/////'///////////////X//X/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                                                                                           -----##+##########++---------------------
                                                                                                                                    
//////////////////////X//XXXX/////XXXXXXXXXX////////////////////'////'/////////////XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                                                                                           -----##+#########++----------------------
                                                                                                                                    
X////////////////////XXXXXXXX/////XXXXXXXXXXX//////////////////'///'//////////////X/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                                                                                       - --------###########+---+-------------------
                                                                                                                                    
////////////////////XXXXXXXXXXXXXXXXXXXXXXX///////////'/''////'////////////X/X/X////XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                                  -----  -                                              ---------###########++-+--------------------
                                                                                                                                    
XX///////X///////X////XXXXXXXXXXXXXXXXXXXXXX///////////////'////////////////XXXXX///XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                                  -++++++++                                             ------- -##########++++-+-------------------
                                                                                                                                    
///XX//////////////XXXXXXXXXXXXXXXXXXXXXXXXXXX/////////////////////////////XXX/XX/XX/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                                  -++++++++                                              - ---- -##+#######++++---------------------
                                                                                                                                    
/X////////X////////XXXXXXXXXXXXXXXXXXXXXXXXXXXX/////////'//'//'/////////X//X//XX/////XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                                   ++++++++                                               ----  +##++######+++----------------------
                                                                                                                                    
//////X//X/X/X//XXXX/XXXXXXXXXXXXXXXXXXXXXXXXXXX///////////////////////////XXXXXX//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                                - --++++++-                                              ----   ###++######+++++--------------------
                                                                                                                                    
XXX/////X/X////XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX//////////////////////////XXXXXXX//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                                 ---+++++- - -                                          -      -###++######+++++--+-----------------
                                                                                                                                    
XXX////////XXX/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/////////////////////X//X//X/XXX/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                                   -+++++-                                                     -##+++#####+++++++----+--------------
                                                                                                                                    
XXX//XXX/////XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX////////////'/////////////////XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                                - ---+++-                                             -      ---##++######++++++-+------------------
                                                                                                                                    
XXXXX//XX/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX//X////X/////////////////////X///XXXX/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                                -----+++-                                           -  -  ------++++######++++++--------------------
                                                                                                                                    
XXXXXXX/XX/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX///////////////////////////X////XXXXXX/XXXX/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                               - -----++-                                                --------+#######++++++---------------------
                                                                                                                                    
XXXXXX//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX////////////////////////////X//X/XXXXX/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                               --  ---++                                               ----------+######++++++-+--------------------
                                                                                                                                    
XXXXXXX/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/X//X///////////////////////X////XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                                -   --++                                            -  -----------######++++++++--------------------
                                                                                                                                    
XXXX/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/////////////////X/////X//XX/X//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                                --- ---+                                              ----------+-+####++++++++---------------------
                                                                                                                                    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/X/XXX//////////////////X////XXXX/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                                 -- ---+                                               ------------####++++++++---------------------
                                                                                                                                    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX//XX/X/////////////////XX////XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                                 -- ----                                         -  -------------- +##++++++++++-----------+--------
                                                                                                                                    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX///XXXXX////XX////X////XXX/X//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                                    ----                                             ------------- +##++++++-+++++++----------------
                                                                                                                                    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/'//X/X/X//////////X//XXXX///X/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                                 ------                                       --- - ------+------- -##++++++++++--------------------
                                                                                                                                    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX//XX/'//////XXX//XX//////X/XX/XX//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                             -   -- -                                       - - --------+-+--  -- --#++++++++++++--+-----+----------
                                                                                                                                    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/////''//XX/X/XX////////XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                            -- -- ---                                         --- ---------   --    ++++++++++++++----------------+-
                                                                                                                                    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX///''///////////////X/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                            - -- -------                                      - - --------    ---   +++++++++-++-+------------------
                                                                                                                                    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX//'/'/'/////////XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                         -    --------------                                    - ------    ----    ++++++++-++++-------+-----------
                                                                                                                                    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX////////////////XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                          - ----- ----       --                  -               ------     -----   ++++++++++++++------------------
                                                                                                                                    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX//XXXXXXXX/////////////XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                       -   -- --------     - -                                    ----      ------ -++++++++++++++----+-----+--+----
                                                                                                                                    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX////XXXXXXXX///////////XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                              -------         --                                   --       -----   +++++++++-++-++-+-+------+------
                                                                                                                                    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX////XXXXXXXXXX/X//X/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                        ----  - -------         ------          -                -         -----   -++++++++++-+++++-++--+----------
                                                                                                                                    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                        -   ----------              -----                                 ------    +++++++++++++++---+-+----+++----
                                                                                                                                    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                        - ---- -------  -   -          -----                          -   ------    -+++++++++++++-++--+-----+--+---
                                                                                                                                    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                          ---------- ------             ------- -             - --       ---- --   --++++++++++++++++--+------------
                                                                                                                                    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX//XXXX/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                         - -----------               -    ------       -                  -   -     -++++++++++++++++---+--------+--
                                                                                                                                    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX///X/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                         ------------                    -     ----      - ---               ---    -++++++++++++++++--+-----+------
                                                                                                                                    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX///XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                    -  -   ---------       -               -    ------   ------- -         -----    -+++++++++++++++++--++------+---
                                                                                                                                    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX///XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                    - -- - ---------    --------                  ------   -+-----         ----     -++++++++++++++++++-++--+-------
                                                                                                                                    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX////XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                    --  -----------           ----            -     ------- -------     -  ---      --++++++++++++-+++++-+----+-----
                                                                                                                                    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/////XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                    -- ------------             ----              ----------  --+-- -     ------   ----+++++++++++--++++-+----------
                                                                                                                                    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX//////XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                    ---------------               ----              ------ -----++------ -- --     -+--++++++++++++++-++-----+------
                                                                                                                                    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX//X//X/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                  ----------------         -  -    -----              -------------+----------    ----+++++++++++++++++++++---------
                                                                                                                                    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX//X//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
              -- -  --------------                    ------            ------------++-- ----   ---++-++++++++++++++++-+++---+----+-
                                                                                                                                    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
              - -----------------                       ------              ----------+----   - --++-++++++++++++++++++++++++-----+-
                                                                                                                                    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
              -   ---------------          -            -   -                      -- ------- ---++++++++++++++++++++++++++++-+-----
                                                                                                                                    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/XXXXXXXXX/XX//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
           -- ----------+--------                           --      -   -   -----------++++-----++++++-+#++++++++++++++++--+++-+++-+
                                                                                                                                    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX##########XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
   - --  -- ----------------------         -               ----         ---++++##@@@@@@@@@@#+----+++++++##++++++++++++++++++-+++++++
                                                                                 **********                                         
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX#######XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX#################XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-- ----------------------------++#@@@@@@@##+++--- -    --- ----    ---+++###@@@@@@@@@@@@@@@@@#+--+++++++####++++++++++++++++++++++++
                                  *******                                   *****************                                       
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX#############################XXXXXXXXX######################XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
----------------------+-+-+++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++---++##@@@@@@@@@@@@@@@@@@@@@@#+++++++++##########+##++#++++++++++++
                                  *****************************         **********************                                      

HI ITS ME LSON