About
Software engineer by curiosity, generalist by choice.
I got here by taking things apart: rooting Android phones and flashing custom ROMs while studying civil engineering, then web apps once I found JavaScript. Since 2022 that curiosity has been my job; now it's pushing me to become a generalist, one step at a time.
Self-taught? Community-taught, really. Docs, blog posts, open source and strangers on forums taught me most of what I know; the crafts and notes here are my way of paying it back.
A human being should be able to change a diaper, plan an invasion, butcher a hog, conn a ship, design a building, write a sonnet, balance accounts, build a wall, set a bone, comfort the dying, take orders, give orders, cooperate, act alone, solve equations, analyze a new problem, pitch manure, program a computer, cook a tasty meal, fight efficiently, die gallantly.
Specialization is for insects.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;=::::_=^>=red|(>::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*v%(">m^37>+&@@@@@@7>(;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::!Y>"m5@@@35@@@@@&@@@@@@@@@&7>:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::::::;:=::::!==::::r=77&@@@@@@@@&@@&R{5@@@@@@@@@@@7^::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::^>::"?|>%@7+el%@&5@&@@@@&@&5&R5557>|*+&@@@@@@@@@7>::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::^>{R737{75@@@@@@@&553%@&&&RR5R755577++7^*?r|^R&&@@@@@&>:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::;^v@@@@@{%R@@@&&537377%{&5{7R{{@@&&@@@&5R3vevv|r|lY7+7@@@@%r::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::>@@@@775@5R7@@&%777+>Y3&&{7Y%5{5&@5@@@@@5@@@7Yv73e>e37dv&@@@5e_::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::>{@@3Y7{R@RR@7^57{R7Y>%5@&7++^v37%73%{{{5{{R{{77YlY5R=l7Y^r5@@&{Yvl^:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::;v@@@RY%@@@5&5R7vv>7@R{@@@&R%33^Y>%{RR557{R%{{%vY33^vv3Rl={v>m@@@@{Y^5@{lr"::::=::;;;::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::m@@@@5@@@@5%5R{{3+^7@@@@575&@&7R&55RR55555{7777>ev>77{%+7@^^+mdr{&5@&7>%&@@@@@@7r>_^::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::"R@@@@@%R&5@575RR%+>{@@@@&%%{RR5RR55&R7R{{{7{%Y33>l*rrdY35{7&vvvr:^R33&&{+7%{5@@@@@@@Y(";:::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::"_r@@@@@@@{3^7{@@&R5&R&@@@7mmeY%%%77%7%%333%7{{{R{%77{3Y|^^m%@@@Y%%^v57%33555{{R%%5@@@@573{+r":::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::>Y{%@@@@@@@@%%{^%5&@RR&&@@@&R3>ev+7&&55RR{{{7%%7%%773^vlml7^*^>7@@777+v^773%&&&&77{RRR5@@@@%+>^?>::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::_R@+^"@@@@@@@@{7&5&&5@&7R&@@@@@@@@@57%R5&5R{%3%7R5&5RR55{7l^r^r*>|R@7Y{Ye^^+e>R&@&5{5{%+^R&&5&@d::!(*;:::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::">:::^+5^::^@@5@&R5@@R{R5@@@@@@@@@@@@@@@@@{%{R5555&&@@@@@@@@@@@@@&^>=;r|7&%+^vvY+{e*Y{&@@%{{77%{7{73R&%^::"v:::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::=@R;:"@^3:::>&@&555&@@@5&55&@@@@@@@@&&R{{R5&@@@@@@@@@@@@@@@@@&&@@@@@R+>r^l&R7^Ye^>{R+vY75R7%3R5%^%{3>Y77Rl?;_7::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::=@R@=:^vd>::?5@@&&&&@@@@@@@@@@@&&{777{R{{%%5R3{5@@@@@@@@@@@@@@@@5R@@@@@&%YvY53Y7>e+^@@&%+735R7@@@{+3^l=vR@{>_;37:::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::l@@@R%Rel3:^R@5RRR5&@@@@@@@@@5{%7Y+^Y+++YemevevY^75@&5@@@@@@@@@@@&R5@@@@@+lv&&vv{|>e7&@@7%7%3{@&&&7+v=lll3@@|:>@:::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::;Y@@@@@@7vR5v^&YY555@@@@@@@@@&77Yvl|mem|*=>|(|^*||l>+7R%%R5@@&@@@@55&R5&R@@&dm7@Remv|^eY337R{{{vv+%R{3m>r|dl%5@r5&:::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::>^>l@@@@@@@@@@@@^Y{&R5&5&@@@@@53+l>|^^^^^>>^^||>>>>>*=d^7^3%75&R5&@@@{{{R55R@@^e+%5%^Y++^YR5&&&@R>dve^{3^mlvemY35@R@;::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::v^"^d@@@@&@@@@57{&&5%%R5&@@@@@R+Ym>r?^>rr(||(||^^^>>>^>=le>^7%7RR{77&@@&7{%&{5@7+3375{7{5&5&@@@&&5&%mv=e+%7^7{R3Y^lR@^::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::^|^_3>^@@&@@@@@@&375@R3%5@@@@@@R>vl*r;>?^rr(||||||||>>>>*=|mlvY^{R77%73R@@@&{%&7@5%%R7{5{R5&@R5&&@@@@@%7^d>|v+^Y%53>|7@7;:::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::v7?|>^%5&@@@@@@@@&{R5R55&@@@@@&^vv=>;_>>?^r((|(((((((^^>*>>=dvev+{{R{%^^7@@@@%R55@&75{37R5&&@&5@@@@@&R%7{^e^^re>>7^lY>R@>:::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::^e|;>Y5Y^&@@@@@@@@@&{R5@5@@@@@@%vdd>>"_:>>?>>^rrrr>>>r(|(||||||dde+7&&55{35@@@R75R@@RR5%^+%5@@@@&@@&5RR75@&{R%>|*v73^^{7@>:::::::::::::::::::::::::::::::::::::::::::::
::::::::::::">;:v{>|@@5@@@@@@@@@5555@&@@@@@@+^(>>;;::>^??>>>?^^^^?>?^>>^rr^(>>lY^{R&@@&&@@@RY5%@@@&5{+lv^7R5&5&&&555555@R^Y7R7+R{^>7%R(:::::::::::::::::::::::::::::::::::::::::::::
::::::::::::?_:Yv:|@@55&&@@@@@@5RR5@@@@@@@@5=^||;!::>>>??>>>>>^>??>??^^^?^^rr||*v7{R&@@@@@@{+R37@@@&{777R5&@@@55&@&5@@&5@Rvv+7%37%Yl75(;;:::::::::::::::::::::::::::::::::::::::::::
:::::::::::::^3|:>@@@5l{@@@@@@@@&@@@@@@@@@@^|r|?":>>>????^>=>>^=^>>???^??^^>rr|^*v7{5@@@@@@7+75R^&@@@@@@@@@@@@&{R55@@@@5{53vvv{7%R{v33^>?:::::::::::::::::::::::::::::::::::::::::::
:::::::::::::RY:^@733^>{R@@@@@@@@&@@@@@@@@&l>r>=>>??^>^^^??>>>^>^^?^?^>?>?>>>?^r|=v^%%R@@@@7>5R{{Y35@@@@@@@@@@777{@@@@@&{77>>Y3Y+7&{@7:r^;::::::::::::::::::::::::::::::::::::::::::
::::::::::::;>;:R@^3R^@55R{5&@@@@&&@@@@@@@%*r>=?>?^^?^^^^^?>>^>>^>^??^>>^??????>>>>v37{5@@&>^&Rv5R%%3{&@@@@@@&%e>5@@@@@5577>v%3YY^%7%@^:5>::::::::::::::::::::::::::::::::::::::::::
::::::::::::_::|@@@@377777%75@@@@@@@@@@@@&^>?^>^^=>>>^^^^???^??^??>^>?^^>?^^^^??=>>^d77R5&R7&5&7dRR75&&@@@@@@7ve%3R@@{&&R3%^>vv3%R5@5&@:>>::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::@5@@@R5&R7%75@@@@@@@@@&@@&Rv(>^=;;;>>>^^^^^^^^^^??>>?r>>>???^^>^>=;^^?=^{{R7{@&5@^l{{35&@@@@@7Y775R^5{35@&RR77>v>>^{&@&@+=(::::::>;::::::::::::::::::::::::::::::::::
::::::::::::::?lR@@@@@@&5R5&&5@@@@@@@&@@&7dr^>>_"=_>>=^??>>>>^>>?^^>>^^>>>^^^>=>__":>>l7{{%&@@&5@{Y37555&5%^77@RR{%{{R@@@@3>^%RR%>|eR55@>|::;>ev>;=:::::::::::::::::::::::::::::::::
::::::::::::::>>l@{{@@@@@@&{%&@{3{&@@@@@@^>>>>""::_:"_>;;;;>>>>=^>=>====>=>>;>^:;:;;_>|Y773&@@@5&@&7%RR&@57%%&@773^%&@@@@&+vv75R5@R^7RR53v*Y@%v;:>;:::::::::::::::::::::::::::::::::
::::::::::::::>:>@5%@@@5@@{733>e+5@@@@@@R>(=>_":;::_:=::";_::"_>>>;>>>>;;;>^"::_;;:=:?^rm^+7@@@@55&@@@&@&55R{@R{7{&@@@@@@@73^^5&{5@&5R&@^v>e|::::=::=:::::::::::::::::::::::::::::::
::::::::::::::?;:*5@@@R&@{+75&{3{5&@@@@@%*>>":=;::^^=:::";;_;:::="^__^"======::"_:::?=:;rv>Y{@@@@&55@@@@@@@&@@&@@@@@55@&@@@&@@&@@R77@&@@v^7>r_r{{|>^::::::::::::::::::::::::::::::::
::::::::::::::>::;={@@@@@^^@@%vv+{&@@@@{l>":;:=>^r||||(r>>?>"""::=="=::::>===>;>>>^r|>>>?>|l+R@@@@@@&@@@@@@@@@@@@@@@@&7{R5@@@@555RR{R%&@>+@@@@@R{@@?::::::::::::::::::::::::::::::::
::::::::::::::=^:::{@@@@@{5@&R5@&&@@@@&v>:">l^+7^3R5@@@@5^^l^^??>;>>=="^???m>|mv>33%{%3%73{75@@@@@@@@@@@@@@@@@@@&5&&@@R%R&@&5R55RRRRR{5@^l5@@@@@@@7l^vr>::::::::::::::::::::::::::::
:::::::::::::::^;:d@@@@@@@@@@@@@@@@&@@%^=^l3{&&@@@@@@@@@@@5&^vv*??>>==^?^*m7Y77R@@@@@@@@@@@@@@@@@@@@@@@{@@@@@&R7YY3R5&@{{{555555R5R{5R&@Rm=^@@@@^vR@@7|v;:::::::::::::::::::::::::::
::::::::::::::::::{{@@@@@@@@@@@@@@@@@@+_({&&@@@@@@@@@@@@@@@@@5uYv*????dv++3RR5@@@@@@@@@@@@@@@@@@@@@@@@&R@@@5{{{R55&@@&&{%{&&&555{57R5{&@@%^^(e>+vv7&@@@*::::::::::::::::::::::::::::
::::::::::::::::::>@@@@@@@@@@@@@@@@@@@l=>^>Y^Y>Y+3R@@@@@@@@@@@5n+v>^>=e^u&5@@@@@@@@@@@@@@@@@@55&@@@@@@@@@@555@@@@&@@@&55RR&@@&5R%R{75R7&@@Rl>^(|=>{55@@&=:::::::::::::::::::::::::::
:::::::::::::::::::;+@@@@@@@@@@@@@@@@@>^|>>>^^r^=|eY%5@@@@&&&5Rn>d^?*^dYu@@@&@&&@&&@@&5R7^>eeee>+%R&@@@@@@@@@@@@@@@@R7%%R&&@&&&57Y{%{&@5{5@@%+v%7v+%R&Y@5:::::::::::::::::::::::::::
:::::::::::::::::::::>@@@&5@@@@@@@@@@@r:=>>>>e++^7^^7%R&@@@@&R3v*?>>>_>^*nRR5&@&&@@@&5R{3Yvvvl||lv+7{@@@@@@@@@@@@@R{{5533R{&@@@@{37%5@@@@@@@@577%37{@&5+r:::::::::::::::::::::::::::
::::::::::::::::::::::>5@R&@@@@@@@@@@@;!:;^(%{^55YR%3@&@@@@@@&ue?>::;:::^?eu@@@@@@&&5{R{R{+Y^%%7vlvv>7{%R@@@@@@@@7%R5&&&R73{5&&@355R{R@@@@@@R+*>r=^7@&@r::::::::::::::::::::::::::::
:::::::::::::::::::::::=Y@@@@@@@@@@@@@::_^*3@@@>>;v@&@@@@+5@un%v?==:;::^">?^@@5@@@&>>^@5@@@@&5{{%>m||vv>Y3&@@@@@5R5@@@@&R%335R&Rd7@&@R%7R&&&7Yl|>>>%5@@=::::::::::::::::::::::::::::
::::::::::::::::::!::^mr::*3&@@@@@@@@R;::rv{5Ye>^:"%@@@&^e3uuv>*>>":_::;>^^^n7v55RY^:;Y@@@@&l%&%Yvd*>*d|de35@@@@&&@@@@@&5&5555RYeR&5@@55{3^+{@@&R775R@@=::::::::::::::::::::::::::::
::::::::::::::::::>::>@5||>vR&@@@@@@@v:!_^(>>?(vvm>>e>el>3n3+Yd*>"_=::;:>>^^*e7^^^vem>|vYvemv77^>eld=====*d%&@@@@@@@@@@@@@@R3vvv{@&R&@@&R7{%355@@57R&@@:::::::::::::::::::::::::::::
::::::::::::::::::;*::@@@@@R55&@@@@@@(::_=_;>?>mv>^7^375@5%>v*>>::__"::>=>>^^?^l+{5R73^>elddddmed*|||**>^^>e{@@@@@@@@@@@@@7^v>^{@@@@&&@@57+vvv7{@@&{@@&:::::::::::::::::::::::::::::
:::::::::::::::::::|%?v@&@@@@@@@@@@@@_=::_>^r^dY7%7R&@5%v*^*?^?_;:__::">^?>>^==>^*>%5&&&5{3^^+vd(^^r(((r>^r^d7@@&&@@@@@&R733%R@@@@@@@@@@@@5^eeYR@@@@@@R:::::::::::::::::::::::::::::
:::::::::::::::::::;>+5@&|v@@@@@@@@@&:;:;:^^>(^dvv>vl=|^??^??^"::>_^:;>=>^>=>>>>::;>|*l+^%%3^v=(>;;>=>>=>=^>^|>&@@RRRRR{R55&@@@@@@@@@@@@@@@@@@&@@@@@@@+:::::::::::::::::::::::::::::
::::::::::::::::::::::;:?+5@@@@@@@5^3;::;;__>?^^^>^=>>>>>;^^=:::;>_^""_>>???^>>>"::_";>===>;>>;;>"="^^___;=>>?>7@@@@@@@@@@@@@@@@@@@@@@@@{@@@@@@@&@@@@5::::::::::::::::::::::::::::::
:::::::::::::::::::::::::^@@@@@@{r_7%;__;=!:">>>>>>;>>>>;">?;";::^";;=>>>>??*??>=;:_:::^_>>>_^=::::==^_>__;^^^*vR@@@@@@@@@&&@@@@@@@@@@@@{@@@@@@@@@@@R:::::::::::::::::::::::::::::::
::::::::::::::::::::::::::&@@@@@@e^Y%::=_:;;::=>>>>>=>>=>*>=:;:;":_^:;_;;?>>?*>>";;":::::"=::_:::_:""""^__>>^>>d3@@@@@@@@@&R@@@@@@@@@@@@5@@@@@@@@@@*>:::::::::::::::::::::::::::::::
::::::::::::::::::::::::::v&{@@@@^:_{;:=_::::=_>=>==>=^^**:::;">=;:::"^"::"^_^*=*>_::=:::::;::::":=""=:"^_>=^r>|^@@@@{R@&@@5@@@@@@@@@@@@&@@@@@@@@@>:^=::::::::::::::::::::::::::::::
::::::::::::::::::::::::::*7>@@@@@5@@=;=::^^_>;>>>>>>^r>*";>??^^^?^^>?>^^"::_:^=>*(>=_^_:::_:;:;":""=::=^_>>?|dl7@@@{^Y5@@@@@@@@@@@@@@@@&@@@@@@@@Y;:^:::::::::::::::::::::::::::::::
::::::::::::::::::::::::::>@&@@@|;;!dr;">==_>>>=^^?^>|^|?>eR@@@m=m*=*vn&&R^=??*d|>>|>>>>>"":::;"::""==:::^>=?|d>R@@57v+5&@@@@@&@@@@@@@@@R&@@@@@@@^::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::>+@@@Y:;::=v:>=>^>>?>?>?^>(|rr(?v@@&@@>3&uR@@@@@@@@n>>=?(^|r^^>>>___"^^^___"^==^>?r*e7@@@7le75@@@@R{@@@@@@@@@@R&@@@@@@v:::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::?@@@5::::_%:>>>^^^^rrr>rr>^?^?^=^>d>r^(7&53YvY^Yv|:::;:_^|r>^?>>>>_;>=>>>;>>>>>^|>l7R@@@>l@@@@RR33&@&@@@@@@@@@@@@@R@m::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::"+@@>=;::5^>^(^|||r((((^?^>=;==^|>R&%>>^evlv=^?>_;;;::;:>(rr^?^>>>==>^^==>=^^^r>l>{&&@&vY@53vm3&@&R@@@@@@R@@@@@@@@":::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::|@@@@3Y{>>>^=>^^^>|r^>>>_>^|75@@@@@@+v{5@@7%7vr;^:!;;::>>>^^>^???^^>^^^>>?>^rv+7&&R@5v+>>llv^%37&@@@@@&>%@@@@@&?::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::r7@@Y7d>^|**>*^|r^>>>>rvR@@@@@&@5@@@@@@@@@@53vY|>:::::=^^==?^^^>r^?>>^>^>>(+37%R%57vv^^Ye=||>Y@@@@@@@@@@@@>>::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::;?|7&=?r^**^||r|de>%R@@&@5@@&&@@@@@@@&@@@@@@@R3>(>>>>?>^^?^>rrr^>r?^???re7+YY7{{^v(r>>(r?>^R@@@@@@@@RY^:::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::;&&^rr^>(rr^+5R5@&&@@@@@@R>e=|^e7R@&@@@@@@@@@@{7vl=r>r>^^^rr>^^^?|^||^+el+{{3^%>^_=::;:Y@@@@@@@+^::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::^@3lrr(r^|7@@&@@@&{{{73+Y>vmr^vY^^7%%RR@@@@@@@@@&&>^>^rr^r(>>r>^^vml>me|^3775@R+m|r(=R@@&37RR|::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::@@&|>>>^^@@@@@@@R{R{7%%%%RRR5&R{{RRRR&@@&&@@@@@@@@d^>^^?^|(*mmvm^mddlee>e^7@@@@@@@@@@@@@edR*:>>_=>^!:::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::3@@@{er>^^@@@@@@5@@5%e*^^*lv+^v||?>;>|l^5@@@@@@@@@@Y^>^>^>>dv3>^{||llee++e^{@@@@@@@@@@@@@@@&{*^>5%{7v>!:::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::":::^>:@@@7l>|*3@@{>|^^led|?;:":_"::::=;"==?^>||^*v7@@@@v^==r|*d*Y7++v(|^^ed^>v+{@@@@@@@@@@@@@@@@@@@@@@@7@l>:::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::rm::|@&^%^l>>^{m((^^>>|=*=^r>?>^^^(^>>|(r^>>_"=>rl7&%(>^(>m^v>mvem>dvv>vmYY7Y{@@@@@@@@@@@@@@@@@@&5RR@@5&(:::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::|?:::3@7%%^l^Y{e>>^^?>>^(^>>|r^>>(^^^|^^>>=>>^_;>(>Rl^^^=++Ye|=v|dv+v|>^v33^l&@@@@@@@@@@@@@@@@@@@@53{R@+::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::>7:::^@R37+^^75>>>=?^^^|>e+3R55RRR%+vd|=^>^^=^^>>|7Rv^>de3Y>mdv>lv+77v%%+%7d^@@@@@@@@@@@@@@@@@@R@@@@5{m=::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::;@::>>>@337%^R@^>?^?^>^*e{@@@@@@@@@&&57%>||^||^=?>3&3>vY%%>7YY+%+v>RR3{7%53^|@@@@@@@@@@@@@@@@@&e>@@"::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::^::v>:@777%%5@Re>((r(^*>v{@@@@@@@@@R{+ld||ml>rr|>+557^+R3^^53^5{+%557%R57|"d@@@@@@@@@@@@@@&5@@@@5%:::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::>=^_@7%7>7R@53l^|(|>^|^m>R@@@@@@&77+d***>rr(^|v^%{%7^%57%57%5R{R5&{5@R*:^Y@@@@@@@@@@@@@5&@@@@>:=r^_::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::l_?R@v"%5RR@&3>e*(>?>^^(>v^{5{%vm^r>^=>;_?*=mv^{5777Ye%%%RRR&&@55R&@&|^:;{@@@@@@@@@@@@@&5@@@@::::=;d:::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::==:|@@((5@R@5777+|*|^==^r|>^>>=_:!!:::=>^>>Y7%337{ve7Y7%+555&@@&&@@@>=::>&@@@@@@@@@@@R5@@@@@@^:::::lv::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::;v^:;@@5:>R55@5R53+vm|>(r>>>=>^|??^r=>>|YY+^^%33%{^Y{57>%55@@@@@@@&Y^_::r@@@@@@@@@@@@@@@@@@@@{:::_l>!::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::^^:^&@@dY@5@@&@&RR%7v=mYv>^m>>e>7^RY>%3++737^%5R{5R&575&@@@@@@@{l?>^:"(@@@@@@@@@@@@@@@@@@@@@::|^"::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::;>7@@@@@@@@@@55{377735&7++>73%R3R5{3^7%RR&@&5&&@5&@@@@@@@&^Y|>^:=^|@@@@@@@@@@@@@@@@@@@@@>:;::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::=:>@@@@@@@@&RR%%R@&{73^%{{5R&@@557{@@@@@@@@@@@@@@@@&&3dd>^^"^_^@@@@@@@@@@@@@@5&@@@@&^;:::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::"@@@@@@@@@@5{&@@@&{7R&RR&@@@@@@@@@@@@@@@@@@@@@@57%lr^>_^::>>@@@@&5R@55@@@@&@@@@@r>>:::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::*@@@@@@@@@@@@@@@@5&@@5&@@@@@@@@@@@@@@@&@@@@&{>m|r^>_^=:"r3@@@&5RR5@&@@@@@@@@@5:"?:::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::^{&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@5&&&@@5{3>*r>?=>_="^e@@@@&&&5&&@@@@@@@@@@5>>(::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::=|dY%7&@@@@@@@@@@@@@@@@@@@@@@&&&5&@@&&53>vl*>??=;;>(+@@@@&&5&&@@@@@&@@@@@@@=>::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::>*(>^|d^R&@@@@@@@@@@@@@@5555&&5&&@&5{+ll*(^>>>=re{@@@@@@@@&@@@@@@@v5@@5^|;::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::?>|??^>rv^7RR&&&&@5&5R5555R5555RR{%^v|^rr^>=?|%@@@@@@@@@@@&@@@@@@:;;:=::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::::::;^{(r((^^r>*e7%{&@&R{{RRRR5R{7{{{73+>vm*(?>^rm3@@@@@@@@&&@&@@@@@@@@@:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::>@@@=>rr^^r^>|l+^%{{{{{RR{{{{{{%%^>vvv|(^^(m%@@@@@@@@&@@&@@@@@@@@@@@@|::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::::%@@@@>>^??>((|==*|v3%3%3%7%33%%37+ved>||=>R@@@@@@@&@&@@@@@@@@&@&@@@@@@@%>":::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::Y@@@@@{>^?>>>>|dem>=evv^7%777777+>vd=dv3&@@@@@@&@&&@@@@@@@@@@&&&5&&@@@@@@@@5d;::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::!@@@@@@@>;^??^=^||vld*=l>+%3777+>ve>35@@@@@@@&@&&@@@@@@@@@@@@@&&&55&@@@@@@@@@@@":::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::@@@@@@@7?>=>^=?r>d|*=dv+3%++^^^7R&@@@@@@&&&&&&@@@@@@@@@@@@&555&55&55&&&@@@@@@@>:::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::;@@@@@@@@+|^=>>?>r|>*mv^7{{7{5&@@@@@@&&@&&&&@@@@@@@@@@@@@&@&555555R5R55&@@@@@@Y::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::%@@@@@@@@%d(^>??^r^|>7{55&@@@@&&@&&@&@@@@@@@@@@@@@@@@@@555555555{RRRR5&@&5@@@&^=>:::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::::@@@@@@&@@RR73%377{5&55&&&@&&@&@@@@@@@@@@@@@@@@@@@@@&&&555555555R5&&&5555&@@@@@@@@7r=:::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::::>@@@@@@@&&&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@5&&5&&5555555RR&555RR@@@@5R55&@@@@@@;:::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::::::{@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&&55&55&&&&5&5R5555RR5@@@&RR{{{{RRR55@@@^r!::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::::::=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&&&&5&&&&5&55&&55R5555&@@@&5RR{7{%%7{5555&@@@@v>::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::m&5@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&&55&5&&5&&5&55555555&@@@@&&5R7{{7{7%%%7R55&&&@@@@@Y>:::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::::v@7{@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&&&&&&@&&&5&&&&&555555&@@@@@&@&R{7{R{7{{{%%7{R5R5&&&@@@@5|:::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::^@@5R@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&&&&&&5&&5&&&&5&5R555&@@@@@@@&&&5RR5R{{{RR5@&5{7{{R&&55{R@@@@@5|":::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::^@@@&R5@@@&&@@@@@@@@@@@@@@@@@@@@@@@@&&@55555&555R&555R55@@@@@@@@&&55RR55R{{{R&55&&573RR{R5&@577{5@@@@@7>;::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::r&@@@@&5R55&&5&&&@@@@@@@@@@@@@@@@@@&5&555555555RR{RRR5&@@@@@@@@&555RRRRR{{{{R5555R55RR{{55{{77{777375&@@@@@%|::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::=@@@@@55&R{77RRR55&@@&&@@@@@@@@@@&&555R555555RRR{{{5&@@@@@@@@@&555R55R5RR{{{RR55RRRRRRR5{{5&&&R5{{7%3377%{&@@@@@3>:::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::^e@@@@@@@&R5{%33{{7{{R&55&&5&55&&&&555555R55RRRR{RR&@@@@@@@@@&55R5RR55&&R555&555RR5RRRRR{{R{{55@&&5%3%%7333%^3RR&&@@@@|=::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::"m@@@@@@&@@@RR&RRR7%%3%77{{7RR{R{{RRRRR5R{R{{{RR5&@@@@@@@@@&5555555R555&55555555RR55RR{{{{RR{R{{55&5RR%^^^+^^^3%%37%%{5&@@@5>;:::::::::::::::
::::::::::::::::::::::::::::::::::::==R@@@&&&@@55@@5R555@@@&{R7%737%337%%7%7{{RR5&&@@@@@@@@@@@&55555R&5555555RRRR555{{{R5&5R{{RRR5R{R{R5&@@@&{337^^^7%3^7^3%%%7{R5@@@7|:::::::::::::
:::::::::::::::::::::::::::::::::_>R@@@@5R55&{&5{{&@5{%{5&@@@@@@@&55555555&@@@@@@@@@@@@@&55555RRRR55555555RRRRRR5R{{{{R555RRRR555RRRR{{&&&@@5{377%7733^^^Y+7^77+^775&@@@+>::::::::::
:::::::::::::::::::::::::::::::|7@@@@@@5%{7{5%7&R%%{5&{{{{R&&@@@@@@@@@@@@@@@@@@@@@@&&&55RR5RRRRRRR5555RR5555R5R{{{R5R{5RRRRRRR5R{RR5RRR5&@@&R{%7%%%%^^++^>>>v^33%77%%{R&@@&l::::::::
:::::::::::::::::::::::::::;^7@@@@@@@&73733%%77{R{{%%{R55{{{RRR5&@@@@@@@@@@@@&&5RRRRRRRRRRRRR5R5555RR5555&55555R55R5RRRR5&RRR{RRR55{R555&&@&R{RR7%7%3^Y^3%7%^^+^%{773^37{&@@@^>:::::
:::::::::::::::::::::::::>v@@@@@&@@@5^+^7^%%777%37RR{777{{RR%%7{R{{R{{RRRR{{7%7777{{{{R5R555R5RR55555555&5555&&5&55555555&5RRRR5R&&555R&&&@&7{7%3+77^7R5&5R5{7%^^33%%3%73{5&@@@&>=::
::::::::::::::::::::::|^@@@@@@@&@@@{>Y^737^3333%%777R55R{7{{7{{{{7{{7%{73773^^%%%7{{55555RR5555&5555555&55555&55&&5&55&&55555R555&55&5&&&&@R%%733%{{5@@@@@5R%{R{R{%%3733%%3%55@@@@^:
::::::::::::::::::>dR@@@@@@@&{5@@R%773%77773337%%7{7%3RRRRRRRRR{{{{{{7%^^7^7%7{{RR555RRRRR5&&&&5&5&5555&55&5555555555555555RRR55555&&&&5&@57{{{RR555&@@&&&&&{777{{%7773+7%33%%{R5@@7
::::::::::::::!?^@@@@@@@@@@RR5@@57>333%%7%3733773{R3%{73%%{5R5RR5RRR7%+v7{R55RRRR{7{{{{R55&&&&5&555R5&&5555555555555555555RRRR555&55&5&&&&RRRRRR55&&5&&&&&55RR{755%737%37^+^^^7337{&
:::::::::::::e@@@@@@@@@@@5%{5&@53v+3%7R{7733^Y37{5R3%733%%%{7{RR55RR7%%7R&&55{%%{{7{{{{RR5&&&&555RRR5&5555555555&&555R5555555R5555555R&@@5{7{RR5&&&&5555555RRR7{{RR573%%7%^YYYY++^^^
::::::::::>{@@@@@@@@@@@@{37RR55%v>%R&R5R^^77^^RR&&{333%{7%R73%7{RRR3737R&&55R{R7{{{{R{R&&@@@&555R{R55&55555555&5&&5555555&5R5R555R55&&@@&R{RR5R5&&&&55RR577{{R555RR5R{{33%77^^7>lee>
::::::::?{@@@@@@@@@@@@&%+3{5&&7Yv%R55R%7377^%{{R&5{%3{{R{7R{%7{{%%%7%{55&&55R55RR{7{R5&@@@&&55R{{{555&&555555&&5&55&55555&55555&5555&&@@R{RR5&5&55&555R{{77RR5&5&&555R{%77%%%3%%7%%7
::::::;{@@@@@@@@@@@@@5^>3{5&&{^>+R5{75&%++7%7{7R5{7{5R{77%%3%773333R5@@&@@55&R5R77{5&&@@&&&55R%3{R555&&555555&&555555555555555555555&&@&R{RR&&55&&5555R{{{{55RRRR5R{{{R{{77{R55@&{%%
:::::^@@@@@@&@@@@@@@RYv3{&@@5%^>35&RR553777%{RR55RR{R{{{{77%%7{%{{5@@@@@@&555{{77R5@@@&@&55R{377RR5&&&55555R%&&555R55555555555555555&@@5{{R55&5R555555RRR{R5R55RRR7R{{RR5&&&5RRRR%^Y
::!d@@@@@@@@@@@@@@@R^v3R@@&&5%YY7&555{733Y+%{RR&{55R{RR%%{RR{5&&&&@@@&@@5&RR{%7R{5@@@&&&55R{37%{55&&&&&5&5R5&&&5555555555555555555R5@@&R{R5&&@&55&5&5RRRR{55R5&RRRR5RR&&&555555R5{Y^
:?@@@&@@@@@@@@@@@@&7v^R@@@@&53v^{55RR&R%3^^%{R55&5RR{R{{7{RR@&&@@&5&&@@5&5{337R&5@@@@&5&&5R737R5&&@@@&R5555&55&5&5555&&5555R5555555&@@5R{R5&@@&@@&5&5{R5&555555{RR{R&@@5555&&555R57+
7@@@&R@@@@@@@@@@@@%v^R@@@@@&{+>3555555R77^73{5RR55RRRR{55R{R5&@&@&&&&&&55R%3%{&&@@@&&&5&5{7%{R5&&@@@&&5&@&5&5R55&&5&&5&55&555555555@@@RRR5@@@@@@@55R{R55&&&555R{RR5@&5555&55RRRRR5{+
@&@&7@@@@&@@@@@@@7v^R@@@@@@R7Y7{55&&5{{%Y+7{{{RRR55R5R555{{5R5@@@&&@55&55{%7R5&@@@&&&&55{%7{5&&&@@@&&&&&&55555&&&&5&&&&&&&&&&&&&&&@@@&R5R&@@@@@@@&5R555&@&&&R55R&@@@R5&5&@&555555&&{
R&@R5@@@@@@@@@@@&+^5@@@5@@&R7Y7&&&&&&RR%^3{RR&55&&55555&5RRR5&@@&&5&5&&5R{{5&&@@@@@@&@@57{55&@@@@@@@&&5&&&&&5&&&@&&@&@@@@@&&&@@@&@@@@&5&&@@@@@@@@&&&&@&@@@&&&&@@@@@@&R&@@@@&@&&&5&&&
5@@7@@@@@@@@@@@@7+R@@@@@@@&{Y^555@&&RR{73{RR555&55&5R&55&5&&&&@&@5&&5&55R55&&@@@&&&&&&5{7{5&&@@@@@&&&5&5&@&&&555&@&&@5&&5&&&&&&5&@@@@5R&@@@@@@@@&5&&&@@&&5&@&@@@@&&@&5&@@@&&&&5&5555
%R3+5@@@@@@@@@5^dY75&&&5R{3vl>337%%73^Y>vY^^7%3%%337^773377%3%%33333373^^33%{{{7%%33%3Y+^^33%7777337^37^337373%7337%33%37777337%3{55{3^3%{55&577%^373%33%3%7R@R3%%%%3%{7%7%%%3377337
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$X]$$$$mvnxv/~-)|zp%$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$W[>,|Cx_I:;il. "i|XO%$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$o!xC_' :' . .;{0$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$wb*&$$&oLL$$$$/];;. . .`^' "f&$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$#0fY%8Zr(}, "l~+, .' . . .'.`'''"i?[l. "Y$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$qji^`":"^;' .'':, ...``'`"''';;ll;I[r\?I`.. .x$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$aj< ^,` ..':;:";,^.'^"`^^ .. .'`:>~<>?\)+!;l; ,/b$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$$$$$@c ;;' '`; .,;;"li!:..^;!,'^'. ' ' "!<;:~}~:;-<. '~UM$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$$$$$$x^ :!"^` `` ;I';^`;!i,' ."llI>:",":,^^^'^^`^^";!+!'`]+;!j/' .^!>+jO&$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$w> `!, '.'`"<<i" `^ .`,::I!i,^``''"^`,^^,>!::I<>:`+]^>x_ ^!I' ^+/CM8&&*bpwwa&$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$8_ ' ','`^^:lI" '"'. ."`.''``'''''^;;;;i~>i""^,l; IIl_-/^.' .;i,. ;/YUJ%$%$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$Z` ,`.' '"'``,li^ .,,^``'``''.`"`^^^"^,!::i+[//-!:'^".>>>/OI`::..^l;,^' !|Cw$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$@%$$$$ZU\ ^:I;^ .`'.`. ;__~!,,,"",",,:::,"^^^`^,""^:!?fj_, !,,I>'",::'''^^`,,' '":^l\Z$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$%@$$$Mt!^, ,,^I,'. ``.. .`:i~<l"..''``^^^",,",,"":I>+_+;I[f}; ";"l<I;;:,....""^```' ,lcJr}0$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$%$$$m` lJC ^".'..' ."`. ';,`'.'`^,:,"`'.'``''^;+1/f\[{?` "!^!~IIl~i`. .'^'^,lI`..'. -%$o|[k$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$ZuW$$jl'j$$f ' .`' `^`' ^,^`''''.. .I}vX\(;.,lI<<!l^~[!^. ,^^";,^"^":`.,j@$Z>d$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$] `a$C 1:W$$i. .'''. '.''. ..`^^`'. .. `l{/1+.`;I!~Ii^`l<!"'`",:`',I,^:i!;"`+raU"q$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$* ` ]&I<-iW$r' .... ..^"""^`^^,,'`:^' '` .,!>!':!"i~lI .,l;:'`; ^l:I+]>` ^xUk:"$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$&+ `,`~+:0J` '```'. '^,;!lI!lll!~_~>~<!I"' .' .`' l+<..><^?{~;. ",",:^ ...;l<]+++: ?$i $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$&X! ">`'>I.!!''' .";!>+?_~_?[]})|(1[??+il"`,,`' . ''.`'.` .-_; `~_>)1~!::"`^^^<<l,`^:_x\?-+,' \'.%$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$Mx1z+ I!^.`'.'. ':l+{)11111{}11)){}}}}[]-I;I:,"'.`'. ^^^`''` I~l,',I!llI!`'... `i->~I^:I_+>~_!:' ` X$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$%0b<jCn- . '"^..',,`'. `l!_}\rft/\|((|()111{{{1}]+~iI;,"``^"". ."^,.^' "l::"'^"^'.'. ..'.,_<]~l,"I"^`:!I+` n$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$Mn)fU:tn . .:;' `:,' `i>+[/Xcrf/\|()(()((){}}}[]?_+>!I^`"",;:` .^,." ',,`"^'^`'. `'.. ,;I-{?>lI!,':i?; ;w$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$<"r(zI,'. .^`'`''. .I><]tXUYurf\||(|||||||11{[}}]->~<l^^`^,II" ,`'' ."'^:"`'.. .' .`,;^I~1f/~ii;I+!i` Y$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$J~)Xc!'!I. .^`' ' ,<--}zCmOYurttf////ttt/|)|((())?--~l"..''^:' `;'` ``',Il,' . .'``"' .^`,i?[>":II^; z$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$Cia$>^u( ' '''' . l1|}uhhdQcnrrxxxrffffrxrfttf//f|}{+!I^`. .. `!', .'^l+<I"`'.'...'''''' `I!;`;l`^Ii;,`|b$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$rUB!<%) ''.. '``' ']f((woq0Yuxrrxuccunxrrxrrjfjrff/\()[<;^`. ^l`:" .^;;"`'. ''. .' .' `>>l",:;,!+;'|Xw$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$%J:(@{ '+^ . I)\)rZ0Ycurrrrnuvcunvnxxrrrfrrfft//(1[>;^' "l"'`I. .^`'' '^':<>>^",`^>::J{rB$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$`!$J "::jt^` . .+{/xvzcrrftffjrrxuununnrjrjtrxrxxxrf/(]<I,,` ;i'`^^!:' "";^ .^""ii!:!l".^ "%\Ih$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$w}aB` I:`I ''`^'. .. ,[\uvrxrfjrffffjrxunuunxnrrjxunrrrrrrxxt{<:"^' .iI.`>'`,,:^. .,~i' ''";i>,:!!I,", fB't$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$m$$? :;"""","' .I{rnunnvuuxffffrrrnrrnrrxftrnnxrfffjrrvuuf-;"`'.`;.'.;-``"'.. ;>~,:` ^..`:,Ii><:,`' '. q}u$$$$$$%#$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$#$d ' `'.`","' . .`<|xnvXXXcuxjjjffjjjjjrrxxr/xxxrrrjjxnxvXJJr]I^^`"^ .' I+^^:'. ;!;"'`I'^:' .``;;i>iiI^. . lL|$$$$BOxh$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$r+` .'`'..' . ."-/nuzUCLUYzvnrrxxxxnxxrnnxxnnxxxnnnuvzUUCQzt+"^^,. .' ^!:"'''.',I;" ``^,^^` :iI,``,i?~`'' i($8wt~<YaL$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$tz+ ^^ .^,. ^:^. I}xczCZpqm0CUYXXXXzzzcvnuvuvvvvcvczXYJQwpkkmc?!;":. '. .",``. ';,,. "":I,. .l>>;'`' `I;``':<[! ,<X&cX$@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$tWY ', ' ^;::i~l' `i|vcUZpkbqm0L0OZwmOQCUYzzXcczzXXXYJC0Omkh#*0rf/_Il" ''. . .''`^ `^"^. ":II'.^' .'`. I>}~?W$@0L8%L8$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$rh#[' `. ^l;'.^:^'. ,[czCd*apOJJLQ0OZwwmwO00LCJUUJCLLLLLLQ0Zm0OQrvOX\>i!^ .'' . . '' . . . `"" . <I"i/U/^^){18$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$zM$aL^ II ,><l^. ^+cCOwOLzn/((()|/ttrYCCCQQLLCL0Q00YvvvcXuxtf/)uccr}?+l` . ."^`' '''``^`,. il `^ r$@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$Lf#$$^ ^' .`' .. .>uQCc+Il;I:`' 'II+fn??cXzz**Cu?<<_})_>i::,^,:,;:^"' .'.. `,`. .'`''`````^' I+' "+1>/Y@$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$Ja$- . ,jLf+:^.. '.I><*??uuvvn?n?_;!;"` ^ .`;!!:`'. ^^^''''''`'`^'`. `_]I I<` ;(>a$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$^^ lU|^.. '^^+??<??->vv:``' .` '^^^`''. ..^,^...'''^'"`'^. ,1n|~il>>". [$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$Y +viIi!I!i!l:` '"v+cnc*~o^.' ''. ''' . .''``. .'`,`^"'`". `+}1|)]i^'' .v$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$Xl }n(tttfj/1]?~!,' ...'`"z-n<?n-^^ . .. .. .'`"Ii~~~~il,`. `",,`.. ...'"!^,^. '^' ,l>,;>l,`.! '$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$u .' /OLYzct~llI;II;,`. .`:>??uzYUzn*;``'. .. .'`^:!<<<+??+>l;^ `^^''::`^. ^:",' '"",:"^ .'l\$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$%c' `. XoqXn|,^I''!`,: . .^~<u00wb%#u?~^ ..'^`^`^l!I,,;>+<>i"^,` ",`'...`":^'.. :''`^` `l[t\]I" . /$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$@8v! 0#mf[: ick> . l' ^;,<?v*0wb%oCx<o ' .iuj ' .'^^,i_??<>i!:. '`' .`,::'`.`-; . `,"`..."!+?{}i,' v$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$o$Wf_\$O[:. `k#0\>^'!~tJqC, .I~:^^<z*zzCQmd#wYnnn;;>''`!fba! .+,.,!<-[}[-?-~:' .. .'.''''`!~`.' ''^:Il^ .`""'` L$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$t$$} '??t>`. >Womn|txr|>>_}{~i~+i:":v^-?uCU*0ba0Yxnn?~;III>~_{)>!<~_>;;Ii~+-]]]]][-,. `:><>^ .`. .`"^,:'' ';`. d$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$X[$b `''. |&bmLUXcr}_<iI;I:"' ',z+*czOOUUCdpYvcunn?1+l^'`":Ii~+----_~-[???[[}11}~^ "I>iI^ .. '"l<<>;^ .^ .%$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$@?,r> . U*pbmYn/1-!;,"`. ',>[n?<n?Uh0UU0pCcn?zznvvuf[i,'...'^:IIl>-|ff\|||\tj/1-; .. .`"::,` 'I~~!` `$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$acl' .?< .dkpadJnt|1-<>i<+](fr?n<<nCqdYUuqwYvxnxvcuxzO0Xx([+lI,,:I>]|xXXzvuuvuvnxj)i. `````^`''. . l$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$a0rl' 'I:adqkamUurffjxnvzczzcXnnv008kYUuCCUzx???nuxxCppmCXcvvvcXzzXXYCLCJJUUUXvczr}; ^ . '0$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$1 ^\U",ammh*oqCzzccccXzzzzXZu?XCk$OuCwk*YYuz?<???uLwqm0O0JUYYYUJL000QLLJUYUUXnnf[>` .. ^ `0$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$M&@$$@O. ~1!,b0LmpakqOLYczccvccvx?cv0h$aCqmo$kUXX?zz<*czCwwZQQ0Q0CL00mpdqm0CCCCJUUYunx{-: .` ' [uW$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$B<.^ j$U^wQLmqdpOLUzvcvvcvnn??M@MaZY*wQ0pZuCQOZuUn**?uUQQLQ0QQOwppbpZOLCCLQCJUYvj\}?I ^` . ' . {$n*$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$["i ' LwL00JJUYXcuuuuxf\c?Zwu?<nnn?nnx?znnCdqmOn*c[|xvUJUQ0OmqwpwZOCCL00LJUYcr)-+; ^I!' . !a$f$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$u . )hko-\wCYvvUYzcvnnrft)1)<x~` *_?*?>"..`o*???-({}(txccYCCQ0OwZOOCCLLQ0QJYvr(-i` ';<l'. . `. j$$M$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$cl !bh$$]<qzvcnuxrxrxrft|(//|<> . z:.^` "cuvr|1(\jnczzUUUCJJJUUUCJLLJcr\[~; ;+~"' `^ `. <B$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$&r '$$$$U,0zuxffff/\/t\/tfrjrnvj{-{\f|;.':!>!I!>)QbpwOUf)\tfruucYUXcvcucXYYYcuf({+;` i+ ``::. . ` _$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$Zl }Lw@O'JYn|1(((\||||frnuvXvvf)i`.,i{1~<+>]1rcmaahbpwQx|\\frnuuuvvxnnvvuvnfj\}+i^.. .<! ':<_:. .` ` C8$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$( :!^xzx1]}111{(/jxuzUYf?;' l>^' ;,">/XJqohkdOuttjjtjrrrjjxnnnxxrtf\<l;..` '>lii++<I,:;. .}, .r$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$#\" !;-uf([[}[1(\fttxx\<` . ' ':>!)zpddp0vjnvvrffft/frxxnxnut|l:;,`,'">>II!~]))}! iYW$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@wr(".]r/1[[1()\(-~i,` . ' .. . `:i|ucccrtfjrft///ft/rnrrr/~"l!!"^^I>|\}}|/rxj` `!10$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$X..1/\1{|\/1l'`' .. `i~](1~;` . ^;>+]/t/tfff\\tfjfr(1)?Il~+l^^:I,}nUL0Ow0! lJ$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$f :+\\|\f)" . .^^^":l!i>_/1>!II;,,``, ..ifxf/\f/|tt\}11<_+i_~?I:;;' `l_)/|]` .:;``(%$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$p .?tttfI `^`^",,,,```'.`^^````. .. -nujfrf(|[__>_I_--+~~i~I" ~-`[bczULzfo$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$O0$$W: ^~\tfI ' ',~[11[+>lI>?)ruXx)+I' !nznxjt}-<:iI^?(++~~ll~I^ .^[n}',^"<zo$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$Z$$BI}p "+{([: ^i?11+~-(rX0ZOmZOOpp*aZLvrnt((1[>" >nvv\)[-[!;ll<|?II~-Ii>l^ " +Y$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$B$$$\_$8? .I,I+}{I^_||1fxt)][]1\trunjf|1{{(|/ncYUCLc\+".,|cn|}_I>}_>~_}->>i<_!!;!^ .'`` '.|$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$(r$$$: ;,,I+1!^~txffrxxf|1}})/ftt|111(fnccvcYJUXc|i`+nnf]ll!~?]>?->l>?iI>::I+. ':^` lq$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$u"0$$n `:;lII"'itcvrff1)}~l:`''```,l>-?]1{1jvnnzc(;`<1}-~:!i_-<i+>l""<,,l,"-1 ` '^_*$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$a d$YY} ::;,I` I{rjrft1[~^ ..'",i??1()fvr}:.:i<!,,i;!!l,l>i``:^;,':j) .~i C@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$IO$>YO ";;,,' `~{||\|1[}>^ `^l+-??_+}//(}l''"Il`:II':I'^l,''",`'")C- .' ',M$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$0Q{v1U ;,;i;` ':+1)|)}1)1_i` .;;l-[[[{\/|1?<I,^,"I,';,'",'`^`'.^' `[QJ! '. tQv\nUM$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$+mr` <Z,'`` .:i~[|trxnj|}<I^'^,>_1\xnvcXUr[]_>I^'";;!~,,,```.. ''`. .?nOX^ .' p$$$*X-p$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$8vv$? ||' ` '";;l?[(nvvn\)tfxuvUpooddb*Y1}i!;,::"^>~;!;,l'''. .. iv00u. `' 1$$$$$+>$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$k>n$X '0t`'' '`':l>_?}|/{tcvzj(rrf\]tc?!!lII,::,^I!^'"i,'' .!fU0Q/ ^$$$m+}o$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$1n$j. -! ' . .``,;>]_!>iI_ii~i;I`!i,:ll;:"I,'`^'`.'"'. ^+rcJ0C| p#)fC$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ax; ''^:;;;:'.;lli;:,`:`'^:I;,``. .'.. '. .I!)cJQLJ) i%k$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$B*O{ .``,,` .^":I,^^'`. ''"^ ..:--xJJCJU1 '. .Ia$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$C '^. .^"`.``. '",+/jYUJ0QY{ .'` '' . /Yx$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$q[ '. '. . .^i_?\jcUJLOC\: .'``' . '$Cr$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$n^. '... '^:i[\trvzULCn~ ...'.. 'iz|&$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$*?-!,". ...'. ..':i<+[trrvXXc|l ..'.. . ]}O$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@}[|xj)-I`. ''''..'.. .'^l++[|fxuzv/~^ . <' 'I(a%$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$r{)rrfx/<I"``.... '.'`''''`''''``^,I>?1\\juvr?, . Qahb*@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$h1^|/||ff/t[~;,^. .`^^````'`^"^^^":li>_[|run/_: .. . 8$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@} ]x//jf\jt)+lI,^^^^^``^^^^^^,,Ii><<?|ff|_, . . )$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$&, iujrrx||)]][?>:,:,:,",::,,:;l>~-}()]i` . . . . ,{C%$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$! ^znrxuux)-~_}]~<>I;,";;;;;li<-]-<:. . .. ...'.. '-k$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$o tXnrrnvj(?<+-[]+il,:;;;li>~i:' . .. ...''. Z$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$q ;rcvxnvr\}-?[]->l:,llIII"`. ...... .'''.''.''... t$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$a l)nvuurt\){[_>I"^^"^'. .. .... . .''''''`'`''. !$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$, ,-|fxrrj\1?i;^''. .. .. . '''''''''^````'. .' .I]ud$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$O . ``":,:;"^'.''... .. . ...'''''''''`'...''''. ;/LW$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$c ... '..'..'''''''``.'''`` '`''. X$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$Q^ ..''.''....'.'`''''``' .``^^^^```'' I/o$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$] ....'....'.''..''`''''. .'``^"^,,"^''''. <cW$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$_.' ..''.'..'..'.''''''''. ..'`"^^"^",,,"`''... !cB$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$> "^ ...... ...'.....''''''. . .`^"^`^"^^^,,"^`'`'... '?QB$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$J '` ......'..'....'.'`'''. ...'``'`^^^``' .'^"^^`..''^` '?Z$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$M1 .`' .. .. '''''.'''`.'''`'' ..''``''`^^^`.''..'":``^`'. '""^' "}w$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$#/. .'`''..'... .'.'''''''''``^```'. .'''`````^^^^`''''`''``^^''^^""^""":"'. ,(d$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$b] ''.`^""```''. .. ..'''`''''''```^^^'. .'''`''`'``^^^``''```````'^^'...`'^^",::;;,^. :xM$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$&n~ .`'^,::^^"^^`.''..'.''....''''''`''````^``. .''`'``''..`'''.'''``'`````^^`^^'' ..',:,,;:::,I:``.. ?L@$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@C_ . ``.```",,:,""^^"``^`^^`````'`^`^^^``'. .'''''''`'''.''''''''``''``^^^^``^`^^''.'``,IIIlIII:,,:;,,^'. '}w$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$L]` ... '' '`''' .^`",":;,::",,","^^``'.. .'''''`.'''''''````'''^^^`'.'`^^```'`^`^`'. .^::;III;,:I;I:,,,"^`' ")p$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$m}` '`''.^.'^^. '^,^'. .''''''''. .'''''````''''''''``````'`^^^^`'''````'''````^^... '^:;",""::III!l;I;;lI;"'. lu&$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$p(" ',^"^',".`,,^'.^^^^`.. ...''``'```````''''``''''`'`^^^`'`^'```````'`^``'```'. .`^,",,,,IIllIiii>I::,;;,,^`. .+O$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$af; .":;::,,""^`^^,,^`''^^^```'. ..'`````````````'`''''``''''.'''''`''`'````'.```^```''^`'''.. .`^``",",:I!I:,",IIlI,^"":I:"^. Iu&$$$$
$$$$$$$$$$$$$$$$$$$$$$$$&c> . 'IlI;I,,;"",:"``^"""^^``,,"^`^^`^^````^^",""""^^^^`'`'''`'``''''''''.''''..'.''''''''.'````'`..'''`... ."^",:l;;I"`'.'`'^",II::,,:,;:^'. .{*$$
$$$$$$$$$$$$$$$$$$$$$O)I . ^i!I;:;I::::,,"""`''`^"^^"^^^^"^^",^":;;:II,,,"^^'''''``''''.'''''''.'''''.''..'.''..'''''`'''.''.'.... `,,;::,^^' '`,^`^`^,,:;::,,:,'' 18
$$$$$$$$$$$$$$$$$#z-` .^' `,;;:,";;;:::;,,"^",:`````````^^^^^^",II;I;,"^^``'''`````'....'.'.''''.''.''''''''''''''''```'''''....'. '"^^^``'''. .....^"""^^,";;:l;,::,,^`' "
$$$$$$$$$$$$$$orI ``' ';i:::,,;,:;::;;:^`:,^":,,^'`'``'```",l>"^`''````^"^^^^`''....'.'''`'..'''''''''''''''''''````'''.''.'....``````''..'.....''``^"'',":;,:;IlIII;::"^.
$$$$$$$$$$$$Q~ ',^'. ':>l:,"`^;;::I!:"^'`:,"::,,,^"^``''``",,"`..''^,,^^"^^^^``'....'''```'.''''''''''..'''`'''''''`'''''''`. '^"^``'....'''''''```"^^``'":,,",I!!!!llIII
$$$$$$$$$@x^ ^:"``'',>i,`.`'`II";II``..^:::,^",`":,"^```:;:"`..''`^`"^^^^`^`.. .'''`^`''.''''''''.'..'''''''.'`'`'''`''.. .`^``'`'....''``'""^^`'''``'`^^::,;;II;i+~~i
$$$$$$$$r^ .,l:^'.."!<,`''`,":;;I,^^`.'^,:^^`^"`^,"^^,,,;,^''..''`''``^"^`'. ..''`^^^'''..''''''..'.''.'''''.'''''.''''.. `^``'.'.''.'''`^^""``'.'..'''`^,"",,,:,,;,,"
$$$$$$X^ 'Ii:^'..^Iil`'^"'.,ll;,"^"`'^"^'`^"",,:,""::::`' . ''.`'`""^'.. ...''`,:^`'''..''''''..'''''''''''''''''''''.. .`^``..''..''''`^^^^''````'`^^^`^^""^`'' .^,,
$$$$OI . `!>:^. ',Ii:'.``'':;;;,^``''``^`^^^^"",,"^,^^' .'''^^""`' . .''`^:;"``'...'''''`,..'''`'''''''''''''''''. '^^`''.'`''''''```^`'`''```"`^^``'...'````,I!
$$o- `I>:` ..',!!".'''^"::!l,^``.^''`^``,,^``^'.... . '.``^,"`^' ...''`^:;,^''.....'.'`'...'''''''''''''''''''`' .`^`'.. .''.'.'````^''`'.````'``...''''''`'^!I
@r . .;<I` .':>I^''``.`,:II,^`''.'``^`^^"^`` .. .'.. '.'^::;`.' .'..'`":"`'.. .`''''.''.'.''''..''''`'''''''. '`^`'. . .'.'^`'.''''''^``^`. ''''..'''`';l
; .` ,<I` .^li:''''''`";I;:^'``''````^''`^`'. . ......''`,:,^.. ...'.'^",^`'.. ..'. .'.'`''..'..'.''.''''''''' ```' ''`^`''...'''`^``' .''''.''`````'^l
. ." . "<I` `"!;^''..'^^,!l"^^^```''`'`'''^^'`' .. ''.''^,"`'. ....''^,"^'... ......'''''....'............... .`'`. .'`'''. ...`''`. `'.'. .''''''..^
`. `' .lI' ' .`;!"......``,I:^``.''..'''''.'```'. ..'.'..'`^^'.. . '"^''. ..'.....'... .. . ... . .'.. .... . .... .`. . ...'...
' " ;l` .^!I''' ..``^":^``'''.''.'`.''.'.... . '..'.''`''.. ......'^"^'.. ...'.'. ...'''. .. '..'......'. '`. .'... ..'. . .. .'. ....'.''''
,`:l' 'I-!"'...'`^:>+i::;,,;:I!i>!II;,:,,::;I;;::;;,:,,::::::;:II::,^^^",,::,:!lII::,""""::;I:;I::;:;:,;::;,::,:;;;;::;,:^''^:I:,^''.'"",I:;:,::,:,"` `:,,,,:,^",",,,::;;::;
Toolbox
- Frontend
- HTML · CSS · JavaScript · TypeScript · React · Redux · Zustand · Next.js · Polymer · Web Components · Tailwind CSS · styled-components · Material UI · Accessibility
- Backend
- NodeJS · .NET · Core Java · Python · Go · Rust · Express · NestJS · LoopBack · REST APIs · GraphQL · WebSockets · MCP · JWT · Okta · Prisma · Mongoose
- Data & messaging
- MongoDB · MySQL · Redis · Kafka · Pinecone
- Tools
- Git · Bitbucket · Jenkins · Docker · Linux · Grafana · Visual Studio Code · Postman · Jest · Mocha · Vite · Webpack · esbuild
- Architecture & patterns
- Modular monolith · Micro-frontends · Microservices · Event-driven · Pub-sub · API design · RBAC · Code splitting · Internationalization (i18n) · Contextual logging · Bundle analysis