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