888 888                                
                  888 888                                
                  888 888                                
88888888  8888b.  888 888  888  .d88b.   .d88b.  88888b. 
   d88P      "88b 888 888 .88P d8P  Y8b d8P  Y8b 888 "88b
  d88P   .d888888 888 888888K  88888888 88888888 888  888
 d88P    888  888 888 888 "88b Y8b.     Y8b.     888  888
88888888 "Y888888 888 888  888  "Y8888   "Y8888  888  888