.d8888. d888888b  .d88b.  d8888b. db    db .88b  d88.    .d8b.  d8888b. .88b  d88. d888888b d8b   db   d888888b  .d88b.   .d88b.  db      .d8888.
88'  YP `~~88~~' .8P  Y8. 88  `8D `8b  d8' 88'YbdP`88   d8' `8b 88  `8D 88'YbdP`88   `88'   888o  88   `~~88~~' .8P  Y8. .8P  Y8. 88      88'  YP
`8bo.      88    88    88 88oobY'  `8bd8'  88  88  88   88ooo88 88   88 88  88  88    88    88V8o 88      88    88    88 88    88 88      `8bo.
  `Y8b.    88    88    88 88`8b      88    88  88  88   88~~~88 88   88 88  88  88    88    88 V8o88      88    88    88 88    88 88        `Y8b.
db   8D    88    `8b  d8' 88 `88.    88    88  88  88   88   88 88  .8D 88  88  88   .88.   88  V888      88    `8b  d8' `8b  d8' 88booo. db   8D
`8888Y'    YP     `Y88P'  88   YD    YP    YP  YP  YP   YP   YP Y8888D' YP  YP  YP Y888888P VP   V8P      YP     `Y88P'   `Y88P'  Y88888P `8888Y'