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