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