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