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