::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::_:::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::_:::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::_:^_::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::_:...:::::::::::::::::::::::::::::::::::::::::::::
:::::::::_:::::::.' __ @@___@ ':::::::::::::::::::::::::::::
:::::::::::_:::.'@ @__@b /@ ':::::::::::::::::::::::::
:::::::::::::_: @@@@ __/ b ^^ ':::::::::::::::::::::
:::::::::::::::'@ @ @@ __b@@^^ _ ':::::::::::::::::::
::::::::::::::| _ @^~~~~_ __@^^ ~~~~~_ ::::::::::::::::::
::::::::::::::|@b b@ _ b _@^@_______| '::::::::::::::::
::::::::::::::|@b b _^ b b|_______________:::::::::::::::
::::::::::::::| b@_____^@b __________________::::::::::::::
::::::::::::::|_______________^@@_@ @ |/::::::::::::::::::
:::::::::::::::_~~~~~~~~~~~~~ @@_ | /:::::::::::::::::::
:::::::::::::::^~~~~~~~~~~~~~~~~~~~~~______|/_::::::::::::::::::
::::::::::::::/~~~~~~~~~~~~~~~~~~~~~~~__@ @ /::::::::::::::::::
|