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