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