d8888                                   
      d88888                                   
     d88P888                                   
    d88P 888 888d888 .d88b.   .d88b.  88888b.  
   d88P  888 888P"  d88P"88b d88""88b 888 "88b 
  d88P   888 888    888  888 888  888 888  888 
 d8888888888 888    Y88b 888 Y88..88P 888  888 
d88P     888 888     "Y88888  "Y88P"  888  888 
                         888                   
                    Y8b d88P                   
                     "Y88P"