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