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