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