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