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