##########  ##########  ####        ##########  ####  ####  
####::####  #::#######  #::#        #::::::::#  #::#  #::#  
   #::#     #::#        #::#        #######::#  #::#  #::#  
   #::#     #::#        #::#              #::#  #::#  #::#  
   #::#     #::#######  #::#             #::#   #::#  #::#  
   #::#     #::####::#  #::#            #::#    #::#  #::#  
   #::#     #::#  #::#  #::#           #::#     #::#  #::#  
   #::#     #::#  #::#  #::#######    #::#      #::####::#  
####::####  #::####::#  #::::::::#   #::#       #::::::::#  
##########  ##########  ##########   ####       ##########