..  .                                                                                                                     
    . .  :=:..               .:...:....:=---::....                                                                              
    .  :.  .:-.    .        :.   .-..:::%@@@@@@%#+=-:.                                                                          
    .  ...-....::     .         .    .-.:+++==----:::::::....                                        ...                        
    .     -:...... ..    .. ..        .  .::::-:----=++*******+=---:::.                            .......::::::::..            
    .  .:  :::. ....     ..        :.    .-=+*##%%@@@@@@@@@@@%#**+=-----::.....            ....::::::-::::::::---==+=-::.       
    .     :::::...     .    .: ..     :.  =*####%%@@@@@@@%#**+=--::..  ...:----:------:--------------:::::::::.....:-----       
    .  .. .. :-......     .  .     .     .------:::-------------::--:::.     .::--:-------::::::....                            
    .  ::..:.   -:     .        :.     . .:--------:..   ..::-=+*###%%%#*=::......                                              
    .   .::. .  ..     .     ..       ..  :-=+#%@@@@%#*=------=+#%@@@@@@%%#*+=-----::...:.........:::::::--------::::---:.      
    .  .::. ...    ..     ..       ..     :====++#%@%#*=---------=+#%%%##*++=-:.::---=-------===----:-----------===----=-.      
    .  ..:::::....  ..     .     :.   .=:::-:::..  ..::-------::..  ..::::-::::...  ..:--------===-::...       ..----::::       
    .:::-*%##*+++++==+==--:...           .:--===++==:::-+*#%%%#*+=-:.... ....:::---:::.......::-====-:.     ..:----==-:..       
    -++***%@@#+=+++++=++++++*+++=-::::::.:-=*@@@@@@@@#+=+#@@@@%%#*+++=----------==*#%#*+=---:.....:-++++=--------:--:..:::.     
    -----:::==:......::::-::-==+*#*+=======+*%@@@@@@@@#+=++++++=--::....:-======---=+#%%#*==----::...:----::....     ...::::--  
    .       .:-.               ..-==---------=+**++==--::::----:::--:::..  ...::::::::-+**=-::::::---:::.           ..:-+*##%%. 
    ...::::::-=+**=--::::............        ..::::------::::-----====+++*+=-:.          ....      ..:-===--:::::------==++++#- 
   .==+++**++++**#%#***+++++++===++++=-:.     ..:=++***######***##%%%%%%%@@@@@#*=::.......:::::::.      .:::::--------------::: 
   .++==+++=============+++++++===++++*##*=----=+#@@@@@@@@@@@@@@%%@@@@%%%%%%%%%%#+==---------------.               ..           
   .::........           ...............-+##*+===*@@@@%%%@@%%%%%#*+++**+***+==----::..:::-------------::.     ....              
   .           ..........           ....  .:-=-:::-===--:::------:.......-----:...........     ......:::.     .:---=---::......:
   :---===========+++++++=====--::-==========-:..    ..:--::..:-==-::....:-====-::::::------::::::::... ....:::--=+*#%%@@@%#+=-:
   :++++++******+++**+***++++***++======++*******+=-::::-=#%#===+*####*****#%@@@@@@%#***++++++++=======++++++==--::....:-------=
   :=-----::::---::::::::::::::-==----:::::-----=++*##**+==+##+==++***##%%%%%%%@@@@@@@@@%#*+=-----------====+=-:..              
                         .....   ..   ...       ....::-===---==-::::::..:-=++=--::::::--=++==-::..... .                         
                         ...          :-:.      ....     ..    .........    .:::... .....:::-----:...                           
                                                              ........       ..:::.