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