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