::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::–:::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::–:::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::.:::::::::::::–:::::::::::::.:::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::.::::::::::::–::::::::::::.::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::.-::::::::::–::::::::::-.:::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::.-:::::::::–:::::::::-.::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::.-::::::::-.::::::::-.:::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::-:::::::::::::::..:::::::-.:::::::..:::::::::::::::-::::::::::::::::::::::
::::::::::::::::::::::::—-:::::::::::::-.::::::-.::::::.-:::::::::::::—-::::::::::::::::::::::
::::::::::::::::::::::::::::—-::::::::::-.:::::..:::::.-::::::::::—-::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::–.-::::::::-.-:::..::::.-::::::::-.–:::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::–..-:::::-`-::..::-`-:::::-..–::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::-..-::::`-:..:-`::::-..-::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::-…-:.-..-.:-…-:::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::-..““…:::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::————-.….….…… .….….……————-::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::-…““…-::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::-..-::`-..-`::-..-:::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::–..-:::-`-:..:-`-:::-…-:::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::-..-::::::-`:::..:::`-::::::-..-::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::–.-::::::::-.::::..::::.-::::::::-.–:::::::::::::::::::::::::::::
:::::::::::::::::::::::::::—-:::::::::::-.:::::..:::::..:::::::::::—-:::::::::::::::::::::::::
::::::::::::::::::::::::—-:::::::::::::..::::::-.::::::..:::::::::::::—-::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::.-:::::::-.:::::::-.::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::.-::::::::-.::::::::-.:::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::.-:::::::::–:::::::::-.::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::.:::::::::::–:::::::::::.-::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::-.::::::::::::–::::::::::::.-:::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::-:::::::::::::–:::::::::::::-:::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::–:::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::–:::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::