^:''''':::::::::::::::::::::::::::::!^!!^!!!!!!!^/XCCCCX%%%%%//%XXXX++^+^^+%%%%%%%/%%%%%%/++/%%X
^  .::::::::::::::::''''..             ::':':!!^^^^!:!:          ^!':::!::!^!^!!:^!!::'      %XX
^  '^^^++++++++++!!^!!!!!:!:.         :X%!::^%//X+%C+%0.         %!:::!^^%XX%XCC+XCCCXXX/^.  XC0
C  !$@0C000000X%C+^^!^^^//CCC.       .%%+%/+%C/X0C%C%CX%         /^!:!!^%XCXX%%%/CXCCXXXX%/. %CC
C. +B$@0@00XC%   .!!^^//C/++%.      ./^//%X+%C/XXXCX%/%X+        :!::!!!^%XX!   :C//%%%X+%:! XC0
0. +@X$@@@X0C0+!:!!!^%CXC//!:       ++:++/!!:^'::%CX%^!.!.       ^!!!^+/%+X%!   .X^/%X+%^%/^ XCC
0. +CX@@$$@N$0X!!:'%/^!X+:'        !X/^:+^+:!/.'::^:!::.'+.      /!++%^^%!^+!   '^:!/%^+^+'^ XCC
$' %B@X/0BB$0^:::'++++/+^:::.     ./'^/!^++'!: .++^%%/::!:^      %^!+!+/+:!^!   '!:!:+!:.' : XCC
/. :^^^^+/++X^    +%/++!^^^!::   .!::+/++//%+^/+CCCX%X!!^/+'     !!:!++/+://!   '%%::/%^^! : %CC
^  '!!!!!:^+//'':^XX+%:^^^+^:!   +!!'^////+^:+!%X/%/%%::+^^!.    !!^^^^^!!+/^'':^//%%+/%+!!: %CC
^. '!^^!^^+!!!+X//%/^+!/%+%XX:  !X%%/%%++/%!.'..:+X%!!!!!!^!!    :::!:'^!!^/%XXX+%%XX/+/!^:  /CC
^. '!^^^!!+!^///%%/%^^/+^::'   .X/^^^^+/!:+'     .^^!!+^^'/+%^   ++:^+:!///+^+!++!^^^^!:.    !^+
^.  ........    .'''...'..  .''''       ...'     .''''.    .''''     .':''.         .        !^+
^' .^^^^:!/%/:  +XXX%C/XXX. /CC+C      :^%C@'  :^!!!!^+C^  ^$C$0:  '^^!!!!^^:   !^^^^!  !!^. :^+
^'  ^^^!'!//%X. +X%%X//++/. +/X/+      :++X$: '^^^^.'^!C@' ^B/C+' .^!!::'!!!!!  !^^^^^' !!!. :^^
^'  ^^^^ .^^^/. ^0XCC.      +%%++      :/C$X: :^!^!  ''.!' ^$0@/' '!!!!. !!!!^. !^!^!^^ !!^' !^+
^'  ^!^^^^^^!'  ^CXXCXXXX%  +X%%+      ^@X^^: :^!!! .''''. !@%/^' '^^^^. :^^^^. :^!^!:^:!^!' !^+
^'  ^^^^!!^^^:  !CXXX%////  ^X%^^.     :X/^^: :^^^! !^!^^: '0CC0^ ^0X+^' !^!::. '!!^.^^^^!!' !^+
^:  ^^^^. !^^^. :CC%C'      !CX/+.     'XX/+: '^^^! .!^^^: .^^@N% !@/^+' !^'::  '!!^.:!^!!!' !^+
/^  CCCC' ++^+' '+C@BB$B$$! !@@X^++^^: .%X$$/ .^^!!:'^^!!: .C0BB%..$0B0C+%!:''  '!!^..^!!!:' !^+
+^  X0CC: ^%X+: '+/CX$000X! '/%%+/+/%! '0B$0/  '!!^!!:.!:: .$C$B%  .%$/^^!!!'   .!!^. :!^!^' ^^+
+^  ......... .    .....          ..........'.   ...        ..''':!!!'.'''':!!!'.            ^^+
++  XCXCX%XX%+++++%CCCCC+'      .X0BNNNNNN$BB0        .:!/^/0$BBNBBN0%!^++XBNNNN$^^^!!::'    ^^+
+X  /CCX%%XX/+^^++XC+/%^!!!:.   .CNBNNBBBB@00C       +%/%%X%0$0BN$$$/.   .+BBBNNB%////^!^^:  ^^+
%0  +%%%%%%%++!^++XC+^^^^!!!^^' .$BBBBNB@$^/C0      :%%%//%XX$BN$$@0+     'BBN@$B%%X%//+%+%. %XX
00  +%%X%%%%^+^^++.^/!^!^^++^^+/CNNB$BN@@$@$$B.     :++^+/%CX$BNNN$NX     .BN$BNB%CXXXC%/:+. XCC
00  /%%X%%%/^+!+/%  .:!:!^!++!+X$BB@$$@^+XXXX%.     ./+'':^%%@B$BB@0C     .B$B@$$XX//%X//:+  %CC
0C  +//%+X%+++!^XX     '!+^+^!/@$BB@BN$X%/X%%/       .^+!!+%X$0BNBBNNC%/%/C@$@BB$+/+/%++/:   %CC
0X  ::!!:::!''':!^       .:::'++/X+!+%!!!^+!^/           ..':!!/+/+!/++%X%%%/%X!^..'''.      %CC
X%   '!^^^!''.    .':::::'   '++/^++. .::!: .:::::::::!  !!:!!!!!!:     :!^^!!''.   !:!!.   .XCC
++  !+//:'!!^^:  :^^^:.!!^+' !B$@@@$0'.//%^ .^:!^+++!!!  %//X+!/%/%%. !%+//!:+/+%+  /^%/.   .XCC
++  ^:^+.        ^^!^. !^^/^ 'X%//XX@@!X!++    ^++^%.    %+!++!/^^!!  ///^/  ^+!:C. %+!/.    XCX
++. !:^^' ':::'  !.:!' !!!/! '/+++'^/C@!/++    +^++%.    %/!^^.+/+^/. /!+:%. ^/+//. ++!+.    %XX
++. .:!^!'^!!:'  ':!!^!!^^!. '/!:+ '^+!:^++    ^^:!/.    %!^^! :^: +' '!'.+^:^+^/!  %::'!!!/ %XC
++     . ..         .....     ....  .......    .....     ... .  .. ..   ......'     .     ...%CC
/++++++++^^^^^^^^^^^^+++/////////////////////++/%%%%%X%%%%%%%%%%%%%%XX%%%%%%%%%%%%%XXXXXXXXX%XXX