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