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