........--------------------------------------------------------------------------.-------------
........--------------------------------------------..--------------------...-----.-------------
........----------------------------..----------------------------------..   ..-------------..--
---.........---------------------------------------------------------...#####  ..---------------
--..   ...----.--------------------------------------------------...  ##XXXXX##  .--------------
.    ...........-.--------------------------------------------..... ###XXXXXXX##  .-------------
.  ........ ............-------------.--------. .-----------...... ###XXXXXXXXXX## .------------
..........  ........ ....-----------.---------  ......-----...    ###XXddddddddXX## .-----------
..   ....     .....  .. ...------------------....  ...---...    ###XXXddddddddddXX# .-----------
.   ..       .--..    .   . .----...------#.... XX ...--...  #XXXddxxxddddddxxdddXX# .----------
       .    .--...    .#    ..--.....---..#. . ddd# ......  XXdxxxxxxxxxxxxxxxddddX##.----------
   .  ..... --.... .. .      ....  #......X  . dxx#   .... #XdddxxxxxxxxxxxxxxddddXX#.----------
. .  .......-... .... ....###  .# ##      ##.. #ddX##X ..   #XXddddxxxxxxxxxxxddddXX#.----------
---..-..---...    .......   ####d# # ### ###...#Xdd###X#   ##XXXXdddxxxxxxxxdxddddXX#.----------
..-----.-....     ..........  #XdX#XX #####X   #XddXXXXXddXXXXXdddxxxxxxxxdddddddXXX -----------
.......---...         ....... #XXXddd  XX#######XXdddxxxrrrxxxxxxxxxxxxxxxddXXXddXX#.-----------
............. ## ##XXXXX#    #dddxrrd#XddXX##XXXXXdddxxrrrrrxxxxxxxxxxxxxddXXX#XXXX#------------
............. XdddxxxxxxxdXdddxxrrrrxddxddddXdXXXddxxxrrrrrrxxxxxxddddddddXXX#  #XX ------------
..............#dxxxxxxxxrrrrrrrrrrrrxxxxxxxrxxddXXXdxxrrrrxxxxxxxddddX#XdXXXXX# .  -------------
.... .......... dxxxxxxrrrrrrrrrrrrrxxxxrrrrrrrxxddxxxrrrrxxxxxxxdddXXX#XXXXXXX ..--------------
....   ......... XxxxxxxrrrrrrrrrrrrxxrrrrrrrrrrrrrrrrrxxxrxxxxxxdddX#X# #XXddX ..--------------
....     ......   XxxxxxrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrxxrrxxxxxxxddX##X#XddddX#.---------------
..... ..    .....  XxxxrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrxrxxxxxxxxddXX#XXddddX .----------------
.........   ......  dxxrrrrrrrrrrrxrrrrrrrrrrrrrrrrrrrrrxxxxxxxxxxdddX##XXddd#------------------
...................  dxrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrxxxxxxxxxxxxddXX#Xdddd#------------------
............  .....   dxxxxxxrrrrrrrrrrrrrrrrrrrrrrrrxxxxxxxxxxxxxdddXXXXddddX.-----------------
............. .......  XxxxxxxxrrrrrrrrrrrrrrrrrrrrxxxxxxxxxxxxxxddddddddXXddX.-----------------
................ ...... XxxxxrrrrrrrrrrrrrrrrrrrrxxxxxxxxxxxxxxdddXdddXXdddXdX -----------------
.................. ..... XxxxxxxxrrrrrrrrrrrrrrxxxxxxxxxxxxxxxddXXXXddX##Xdddd -----------------
.........  .......  ..... XxxxxxxxxxrrrrrrrrrrxxxxxxxxxxxxxxxddddXXXXdddXXdxxd -----------------
.........    .....   ..... XxxxxxxxxxxrrrrrrxxxxxxxxxxxxxxxxddddddX#  #XXdddX#.-----------------
.........     ......  ....  dxxxxxxxxxxrrrrrxxxxxxxxxxxxxxddddddXXX ----.....-------------------
.........       ....   .....#xxxxxxxxxxxxrrxxxxxxxxxxxxxdddddXXX## .----------------------------
  .........     ......  ....#dxxxxddxxxxxrrxxxxxxxxxxdddddXXX#  ..----. ##XXXX# .---------------
   . ......      .....   ... ddxxddddxxxxxxxxxxxxxxddddddX# ..------. #XXXXXXXdXX  -------------
     .......       ....   .. dxxdxddddxxxxxxxxxxxxddxxddx#...------.XXXXX#XXXXXXXXX#------------
 .    ......        ....   . ddddddddddxxxxxxxxxxddxdddxd#....----.#X####XXXdddXdXXXX.----------
.       .....        ....    #XXXdXdddddxxxxxxxxddddddddd#....----.X#####XdxxdXXXXXXX.----------
         .....        ....   ... #XXXXdddxxxxxxxddddXXddX ....---..#XXXXXdxdXXXX#XX# -----------
.         .....         ...  ..---  #XXddddxxxxxdXX######.....----. XX##XXX#XX#XXdX .. .--------
  .        .....         ...  .----. #XXXdddxxxxdX#........-.------. ##Xd#X#XXXdxxX  # ---------
            .....         ..  ..-----. ##XddddddXX.--...-..---------.. XdX#X#X#X##dx#.----------
              ......       ... .-------. #XXdddXX ---------------------.  ## ..-...#dd#.--------
..            .......       ... .-------. #XXXX# .------------------------..---...-- Xxx#.------
...             .......      ....--------.     .-------------------------------.------ Xxx .----
...  .             .....      ....------------------------------------------------------ Xrd .--
...                 .....      ...-------------------------------------------------------- X## .