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