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