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