________                  ,d888888888b,                  ________
"""" _.-;'               ,dP"'         `"Qb,           _.-'.'    """"
   .'  <           ,d88buP"               "Qud88b,    <  .'
    `.  `.        dP"   8'   ..       ..   `8   "Qb    \  `.
      `>  `,     dP" .::8 _ :.@;  _  ;@.: _ 8::. "Qb    `,  `>
     /'   /     ,8' .::dP"       `.'       "Qb::. `8,  /'  /'
   /'    `\     dP .:::8(      `--^--'      )8:::. Qb `\ /'
  `-,_     `\   8' ::::"Qba,..,       ,..,adP":::: `8   `-,_
      ~-.  /'  ,8  ::::::,p`""         ""'q,::::::  8,   /' ~-.
      _-'/'   ,d' .:::::,d'               `b,:::::. `b,/'   _-'
   ,-'  `\   ,d' .::::::d'                 `b::::::. `b\ .-'
  `-,_    `\,d' q888q8b,8    ,p       q,    8,d8p888p `b,\`-.
      `-,.  d' d",  ;  `b,   8,       ,8   ,d'  ;  ,"b `b `. `-,.
        .' ,8  8 `  `   `b,  `b,     ,d'  ,d'   '  ' 8  8 ,'  .'
       ,' / q, `b,       `b  a88a. .a88a  d'       ,d' ,p/  ,'
      <  `. `q,  `b,      8      8.8      8      ,d"  ,p'. <
       `.  ; `"Q888`b,    `Q8888P" "Q8888P'    ,d'888P"'  ; `.
_____    `_'         "Q888P"             "Q888P"          `._;   ____
   """"""""                                                 """""""