:::::::::   ::::::::   ::::::::  :::   :::   :::         :::     
:+:    :+: :+:    :+: :+:    :+: :+:   :+: :+: :+:     :+: :+:   
+:+    +:+ +:+    +:+ +:+    +:+  +:+ +:+ +:+   +:+   +:+   +:+  
+#++:++#+  +#+    +:+ +#+    +:+   +#++: +#++:++#++: +#++:++#++: 
+#+    +#+ +#+    +#+ +#+    +#+    +#+  +#+     +#+ +#+     +#+ 
#+#    #+# #+#    #+# #+#    #+#    #+#  #+#     #+# #+#     #+# 
#########   ########   ########     ###  ###     ### ###     ### 

'########:::'#######:::'#######::'##:::'##::::'###:::::::'###::::
 ##.... ##:'##.... ##:'##.... ##:. ##:'##::::'## ##:::::'## ##:::
 ##:::: ##: ##:::: ##: ##:::: ##::. ####::::'##:. ##:::'##:. ##::
 ########:: ##:::: ##: ##:::: ##:::. ##::::'##:::. ##:'##:::. ##:
 ##.... ##: ##:::: ##: ##:::: ##:::: ##:::: #########: #########:
 ##:::: ##: ##:::: ##: ##:::: ##:::: ##:::: ##.... ##: ##.... ##:
 ########::. #######::. #######::::: ##:::: ##:::: ##: ##:::: ##:
........::::.......::::.......::::::..:::::..:::::..::..:::::..::

888888b.                 Y88b   d88P                
888  "88b                 Y88b d88P                 
888  .88P                  Y88o88P                  
8888888K.   .d88b.   .d88b. Y888P  8888b.   8888b.  
888  "Y88b d88""88b d88""88b 888      "88b     "88b 
888    888 888  888 888  888 888  .d888888 .d888888 
888   d88P Y88..88P Y88..88P 888  888  888 888  888 
8888888P"   "Y88P"   "Y88P"  888  "Y888888 "Y888888 
                                                    
_/\/\/\/\/\____________________________/\/\____/\/\_________________________
_/\/\____/\/\____/\/\/\______/\/\/\____/\/\____/\/\__/\/\/\______/\/\/\_____
_/\/\/\/\/\____/\/\__/\/\__/\/\__/\/\____/\/\/\/\________/\/\________/\/\___
_/\/\____/\/\__/\/\__/\/\__/\/\__/\/\______/\/\______/\/\/\/\____/\/\/\/\___
_/\/\/\/\/\______/\/\/\______/\/\/\________/\/\______/\/\/\/\/\__/\/\/\/\/\_
____________________________________________________________________________