##    ##### #####     ####   ###     ##      ###    #### ##### ####    #### ## 
##    ##       ##    ##     ## ##    ##     ## ##  ##    ##    ## ##  ##    ## 
##    ##      ##    ##     ##   ##   ##    ##   ## ###   ##    ## ##  ###   ## 
##    ####   ###    ##  ## ##   ##   ##    ##   ##  ###  ####  ####    ###   # 
##    ##     ##     ##  ## ##   ##   ##    ##   ##   ### ##    ## ##    ###    
##    ##    ##       ## ##  ## ##    ##     ## ##     ## ##    ## ##     ## ## 
##### ##### #####     ####   ###     #####   ###   ####  ##### ##  ## ####  ## 

