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