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