-----------------------------------------------------------------------------------------------
--------------------8888----------8888--------888888888888888888----------------------
--------------------8888---------8888---------8888--------------8888-----------------------
--------------------8888--------8888----------888--------------8888--------------------------
--------------------8888------8888------------88--------------8888--------------------------
--------------------8888----8888--------------8--------------8888-----------------------------
--------------------8888--8888------------------------------8888-----------------------------
--------------------88888888------------------------------8888--------------------------------
--------------------888888888--------------------------8888---------------------------------
--------------------8888---8888-----------------------8888-------------8--------------------
--------------------8888-----8888-------------------8888-------------88------------------
--------------------8888-------8888---------------8888-------------888---------------------
--------------------8888---------8888-----------8888--------------8888---------------------
--------------------8888-----------8888--------888888888888888888--------------------
------------------------------------------------------------------------------------------------------