::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............................
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.........................