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