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