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