::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::
::::::::::::;,,,,,,,,,,,,;::::::::::::::
:::::::::::,,,. .. .,'..',';::::::::::::
:::::::::,';d0c.dx.cXO,,Ok:,,;::::::::::
:::::::::..x0cclcclkXKxl:x0,.;::::::::::
:::::::::..oo.:0xc;o00Ko.:k'.;::::::::::
:::::::::. '' ... .;;:,..'..;::oo::::::
:::::::;,';xo. :O0Kx:cl..;:cddc:::::
:::::::' cXXOc. .;xKXXOcdk'.;:cddc:::::
:::::::' .lOXXkllxKXXXXXXN0,.;:cddc:::::
:::::::;'..dNXXXNXXx::;l0NO,.;::ooc:::::
:::::::::..dNXXXXXX0kkkkkOx..',,;:::::::
:::::::::..dNXXXX0xddddl:;;'',,'..';::::
:::::::::..dNXXXXOc;::::ccccccc:;'.'::::
:::::::::..oXXXXXXXXXXX0o. ......';:::::
:::::::::..dXKX0l,;,;,,;;,';::::::::::::
:::::::::..dNKXO'.',,,,,,;::::::::::::::
:::::::::..dNXXO,.;:::::::::::::::::::::