Skip to content

Instantly share code, notes, and snippets.

@c01nd01r
Last active April 1, 2020 23:34
Show Gist options
  • Save c01nd01r/c550a3b4aff5117db6fb8f5c951e85a9 to your computer and use it in GitHub Desktop.
Save c01nd01r/c550a3b4aff5117db6fb8f5c951e85a9 to your computer and use it in GitHub Desktop.
cheatsheet for event-driven finite state machines
Display the source blob
Display the rendered blob
Raw
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1290.2900752314831 1078.0104166666665">
<defs>
<style>
@font-face {
font-family: "Virgil";
src: url("https://excalidraw.com/FG_Virgil.ttf");
}
@font-face {
font-family: "Cascadia";
src: url("https://excalidraw.com/Cascadia.ttf");
}
</style>
</defs>
<rect x="0" y="0" width="1290.2900752314831" height="1078.0104166666665" fill="#ffffff"></rect><g transform="translate(103.43359375 194.671875)"><path d="M-0.7410531789064407 0.6220010071992874 C28.812818656515443 -1.269855433733028, 54.885657166742014 0.31492764350696234, 87.18970958888531 -0.6964036673307419 M0.5803999081254005 0.48396512120962143 C24.739397362733147 0.9314513627978158, 51.37731480025105 1.1368053380938363, 85.14552465826273 0.45281025022268295 M83.79599086940289 1.10728819668293 C87.9220155950007 10.942838432895952, 86.31867020086618 23.565330197429287, 84.80089609324932 45.85609848797321 M84.95514646917582 0.707244835793972 C84.68084574590205 16.271506469813175, 85.41134763608454 32.51444089435972, 84.7352751865983 44.26931353658438 M84.9844478815794 46.084472969174385 C65.27565101922664 45.707740236197424, 43.37390676917857 42.38306896773429, -0.6127739697694778 45.75645525753498 M86.28262893110514 44.581914626061916 C61.930667392982286 45.261257320868026, 40.952645369019585 44.86396542214061, -0.8020723685622215 44.133447133004665 M0.07382957637310028 44.79623110592365 C0.5306173708918505 34.086120717716405, -1.681340083789546 27.265490920329466, 1.0341486185789108 -0.6120325773954391 M-0.2611273154616356 44.092105351388454 C-0.9326882451283746 30.945329298707655, -0.21160102779744194 15.7618940053042, -0.6498676165938377 0.2402793988585472" style="stroke: rgb(0, 0, 0); stroke-width: 2; fill: none;"></path></g><g transform="translate(74.2734375 70.75)"><text x="0" y="15" font-family="Cascadia" font-size="16px" fill="#000000">A state machine is an abstract concept that describes...</text></g><g transform="translate(126.1484375 204.30859375)"><text x="0" y="18" font-family="Virgil" font-size="20px" fill="#000000">idle</text></g><g transform="translate(289.783203125 195.33984375)"><path d="M-1.5496889799833298 -1.03675277531147 C21.735309327414146 0.5033371332174283, 45.500120256881935 -0.10553194255771814, 86.76844199001789 0.2953314036130905 M0.3952953442931175 -0.6984356269240379 C25.259630089465645 0.3495310720682028, 50.64760832829052 0.3291326936960104, 84.75046249479055 0.4071172848343849 M84.47008307278156 0.21203748881816864 C85.20518384362542 15.588639480018173, 85.1801494159826 28.949051896022866, 85.3691008836031 47.33750240504742 M85.41920372098684 -0.7851529940962791 C85.30314873691212 13.776677156981897, 84.50786947246205 25.74125541597023, 85.98771163076162 46.2968784943223 M84.91729958355427 46.436947748064995 C64.47913214431901 49.1758717838602, 42.34206638965406 47.62831252253818, -1.4968387335538864 44.73421137034893 M85.12868186086416 46.070855773985386 C58.895644129413995 46.81481730158703, 33.361542860366164 46.27816831286327, -0.9119792357087135 46.48703185468912 M-0.21536366641521454 46.81717722117901 C-0.9865597905308823 28.715546067475223, -0.5939001263768295 14.635811276076126, 0.6554864197969437 0.9849700182676315 M0.5391106233000755 46.04561606794596 C1.0533615615448797 29.17560466174327, 0.46842470432136907 12.228360894700742, -0.3707292452454567 0.5286027565598488" style="stroke: rgb(0, 0, 0); stroke-width: 2; fill: none;"></path></g><g transform="translate(298.990234375 204.9765625)"><text x="0" y="18" font-family="Virgil" font-size="20px" fill="#000000">loading</text></g><g transform="translate(500.595703125 193.90234375)"><path d="M-0.1503264158964157 -0.4064217358827591 C34.621965171711054 0.7423735647706781, 65.07133500638884 2.0195518522767815, 96.24892027676105 -0.10369546711444855 M-0.989459790289402 -0.2135370597243309 C21.69472344504902 0.29138465320109386, 41.78829236153979 0.8352868119382765, 94.32075496762991 -0.571332536637783 M95.44030745327473 -0.6532979756593704 C94.75557950529037 11.014586512860843, 93.7829742768663 20.312765801185744, 93.18411286175251 43.54632465541363 M94.0610293969512 0.2156452313065529 C93.91950444282266 9.70191640208941, 94.98912386001321 18.533318493282422, 94.88048335164785 45.04624239355326 M95.33143265545368 44.820086404681206 C60.015674137009775 43.32570974468603, 25.32328292813618 44.32435409664526, 1.0882538110017776 44.06846086680889 M95.1632992848754 44.85415522009134 C75.33090268013765 43.42094041796983, 54.52068472530227 44.46226384135545, 0.8882326707243919 44.8479985371232 M-0.4217750281095505 45.46636812388897 C0.8097973416489549 35.17195204484742, 1.9072299550217577 23.42091670311056, -1.7491060942411423 0.8997248858213425 M0.801480732858181 45.24520579725504 C0.7399503348651342 34.66825451750774, -0.6500097157177516 23.518953689420595, 0.13282128423452377 -0.5837887153029442" style="stroke: rgb(0, 0, 0); stroke-width: 2; fill: none;"></path></g><g transform="translate(509.455078125 204.22265625)"><text x="0" y="18" font-family="Virgil" font-size="20px" fill="#000000">success</text></g><g transform="translate(138.859375 104.6953125)"><text x="0" y="19" font-family="Cascadia" font-size="20px" fill="#e67700">being in only one "finite state"</text><text x="0" y="43" font-family="Cascadia" font-size="20px" fill="#e67700">at any time</text></g><g><g transform="translate(392.140625 135.26171875)"><path d="M-0.22488880455493931 -0.4074846714735031 C-7.566868244608243 8.844370765487353, -37.57434298495452 45.39680451055368, -44.95663919746876 54.51773648560047 M1.4267767526954414 1.7206293616443875 C-6.377192760085066 10.199684183771412, -37.72337170737485 43.46134455857178, -45.544146563783286 52.02965711690486" style="stroke: rgb(230, 119, 0); stroke-width: 1; fill: none;"></path></g></g><g><g transform="translate(472.43359375 132.38671875)"><path d="M0.7753502815961837 -1.0665570706129073 C7.767425406972567 8.091168931126596, 34.68038218518099 46.62520566284657, 41.39864444434643 55.762066796422005 M0.8482110001891852 -0.42680986784398556 C7.218586809063952 8.603209284320473, 33.234942880695066 44.96453882314265, 39.97586930297315 54.42321756698191" style="stroke: rgb(230, 119, 0); stroke-width: 1; fill: none;"></path></g></g><g><g transform="translate(373.12109375 132.6171875)"><path d="M-0.37643284499645235 -0.3898608237504959 C-29.746584650874134 9.384453071157138, -146.27914642989634 49.1833595563968, -175.3218232601881 59.302219960093495 M-0.7101788344234228 -1.4825164530426265 C-29.584235838875177 8.913957073117297, -144.20658816955984 51.24314426047107, -173.32170482061804 61.19941644690931" style="stroke: rgb(230, 119, 0); stroke-width: 1; fill: none;"></path></g></g><g transform="translate(502.32421875 287.28515625)"><path d="M-1.888563796877861 1.1369609087705612 C33.33874248595676 1.1362996283976827, 69.03804889086169 0.27328016199753624, 94.54358084499836 1.4565939158201218 M0.8038074597716331 0.5898906365036964 C25.397214619687297 -0.8982985014712904, 49.330671523255305 -0.4849810595309828, 93.51993652433157 -0.8784089908003807 M94.21592505276203 1.1838468760252 C95.83373998465714 16.515003384766167, 95.88707469763932 29.962782818311826, 95.60005028545856 43.26170437037945 M95.25020118802786 0.7271722927689552 C93.65059721262428 10.86150591026526, 94.7907427528617 22.51968138567172, 95.49998351186514 44.938476242125034 M93.43145211040974 46.859196588397026 C61.71333421213785 42.88353093638434, 25.78850549843628 45.25369628443732, -1.3764850348234177 44.65963403880596 M95.04622717946768 45.66655508428812 C72.22646457938245 45.02700978594483, 50.172044691699554 44.96313911753357, 0.6321529969573021 45.626066125929356 M0.5006931573152542 45.92814676463604 C-1.1507988409954124 33.60374056387227, -1.1016450362163597 23.934043225413188, 0.5910256654024124 1.3998946398496628 M0.8322662934660912 45.29500190168619 C0.7694685460510664 34.493795510125345, 0.20589399351505566 26.486450507724655, -0.13848666101694107 -0.8896139487624168" style="stroke: rgb(0, 0, 0); stroke-width: 2; fill: none;"></path></g><g transform="translate(522.68359375 297.60546875)"><text x="0" y="18" font-family="Virgil" font-size="20px" fill="#000000">error</text></g><g><g transform="translate(432.7265625 134.296875)"><path d="M0.5901649028062821 -0.14997663795948024 C11.49453295369943 24.089010108510653, 53.80367853144805 121.21040194531282, 64.78005280792713 145.26190395057202 M-0.7484585776180028 -0.9840001986175776 C10.171937746380765 22.865757629300152, 55.35150944727162 118.77653966528673, 66.70875628091395 142.7472484972328" style="stroke: rgb(230, 119, 0); stroke-width: 1; fill: none;"></path></g></g><g transform="translate(64.0703125 182.0625)"><path d="M3.260346060510824 -0.35326563552706247 C4.11469256626169 -0.7712598939215087, 5.025676081147342 0.02104289336765608, 5.972787503301202 0.6120276950663852 C6.919898925455062 1.2030124967651143, 8.29906306192359 2.215435510188777, 8.94301459343398 3.1926431746653123 C9.586966124944372 4.169850839141848, 9.840567738665476 5.517578782767782, 9.836496692363543 6.475273681925598 C9.83242564606161 7.432968581083415, 9.567200530243472 8.276430258132645, 8.918588315622383 8.93881256961221 C8.269976101001294 9.601194881091775, 7.006641035705642 10.577053128933324, 5.944823404637008 10.449567550802985 C4.883005773568374 10.322081972672647, 3.4901874827311548 8.899122442249706, 2.5476825292105754 8.173899100830182 C1.605177575689996 7.448675759410658, 0.5961396438488327 7.122199146434389, 0.2897936835135315 6.09822750228584 C-0.01655227682176963 5.074255858137291, -0.07229331494184565 3.0650205517482245, 0.7096067671987685 2.030069235938886 C1.4915068493393826 0.9951179201295475, 4.179694259595545 0.28708246396676845, 4.981194176357216 -0.11148039257019082 C5.782694093118888 -0.51004324910715, 5.428138484963123 -0.30622236942643316, 5.518606267768797 -0.3613079032828699 M3.402192447502475 1.348197367638261 C4.574421600231991 1.1542332419938217, 6.064912175693429 0.8756292436910988, 6.961457256838624 1.234563499175768 C7.8580023379838195 1.593497754660437, 8.404015979184134 2.895847323604773, 8.781462934373646 3.501802900546275 C9.158909889563159 4.107758477487777, 9.043256705812674 4.173070525850132, 9.226138987975695 4.8702969608247795 C9.409021270138716 5.567523395799427, 10.316753901183796 6.867334453797791, 9.87875662735177 7.685161510394158 C9.440759353519743 8.502988566990524, 7.733335110740656 9.513025387236342, 6.598155344983538 9.77725930040298 C5.46297557922642 10.041493213569618, 4.169139920745896 9.897342126758199, 3.06767803280906 9.270564989393986 C1.966216144872224 8.643787852029773, 0.6269823894416214 7.143169604514255, -0.01061598263747765 6.016596476217704 C-0.6482143547165767 4.8900233479211535, -1.1494644711019766 3.2821201101668516, -0.7579121996655349 2.511126219614681 C-0.3663599282290933 1.7401323290625106, 1.7087190400940258 1.7856667113048987, 2.338697645981172 1.3906331329046804 C2.968676251868318 0.995599554504462, 2.8275011184001935 0.2597906310835594, 3.021959435657342 0.1409247492133705" style="stroke: none; stroke-width: 0; fill: rgb(0, 0, 0);"></path><path d="M3.6920081819575152 -0.5528977736280476 C4.826586054741813 -0.7930374418341899, 7.188750152367988 0.7479971254943235, 8.248399001563445 1.268102949806857 C9.308047850758902 1.7882087741193904, 9.94568221750725 1.6435542841170627, 10.049901277130257 2.567737172247153 C10.154120336753264 3.4919200603772436, 9.184773447803227 5.566458200841802, 8.873713359301487 6.813200278587399 C8.562653270799746 8.059942356332996, 9.015290796205791 9.366779245014108, 8.183540746119817 10.048189638720734 C7.351790696033843 10.72960003242736, 5.148770619716374 11.172786737576615, 3.88321305878564 10.901662640827151 C2.617655497854906 10.630538544077687, 1.295406173872986 9.328453346887722, 0.590195380535413 8.421445058223956 C-0.11501541280216021 7.514436769560191, -0.45775496117674436 6.605470230099599, -0.34805170123979945 5.4596129088445595 C-0.23834844130285454 4.31375558758952, 0.2922138271161411 2.562626469541481, 1.2484149401570823 1.546301130693719 C2.2046160531980235 0.5299757918459573, 4.590022689230167 -0.5538754708062629, 5.389154977005848 -0.6383391242420107 C6.188287264781529 -0.7228027776777585, 6.225705852758371 0.8665669666481621, 6.04320866681117 1.0395192100792325 M5.937843142437563 1.7119975331632924 C6.938365153073296 2.0948423211865403, 9.442613008028811 1.4968886581295604, 10.321225258363626 2.1006436277590512 C11.19983750869844 2.704398597388542, 11.36290128473523 3.9608093230750994, 11.209516644446445 5.334527350940237 C11.05613200415766 6.708245378805375, 10.33922804378406 9.729570159575855, 9.400917416630914 10.342951794949881 C8.46260678947777 10.956333430323907, 6.84549350403311 9.243084786586632, 5.579652881527573 9.014817163184395 C4.313812259022036 8.786549539782158, 2.7882721864378586 9.651333169935114, 1.8058736815976921 8.973346054536455 C0.8234751767575257 8.295358939137795, -0.2718266102236817 5.8389803390754995, -0.31473814751342566 4.946894470792437 C-0.3576496848031696 4.054808602509375, 1.001710415102873 4.4289333520074115, 1.5484044578592284 3.620830844838081 C2.095098500615584 2.8127283376687506, 2.0960767989253584 0.8216610541635263, 2.9654261090247074 0.09827942777645404 C3.8347754191240564 -0.6251021986106182, 5.944591188782072 -0.5917504196936147, 6.7645003184553225 -0.7194589134843525 C7.584409448128573 -0.8471674072750903, 8.056328124309745 -1.039265838238305, 7.884880887064211 -0.6679715349679727" style="stroke: rgb(0, 0, 0); stroke-width: 2; fill: none;"></path></g><g><g transform="translate(67.83203125 187.5078125)"><path d="M0.26829633414745335 0.5323456317186355 C2.039569464249041 3.4585795273383457, 5.287424143687645 14.766327154392945, 9.785388144389549 17.276942399144172 C14.283352145091452 19.787557643895397, 24.456523123306656 15.880342713222166, 27.256080338358878 15.596037100225997 M1.8045173981040716 1.5193238816410304 C3.665225473789003 4.319816030835112, 5.544367859125891 12.776415074000706, 9.932490148306647 15.29777348138392 C14.320612437487402 17.819131888767135, 25.530490509418275 16.700037707090637, 28.133251133188605 16.647474325940323" style="stroke: rgb(0, 0, 0); stroke-width: 2; fill: none;"></path></g><g transform="translate(67.83203125 187.5078125)"><path d="M12.153282907229435 23.790945226490987 C15.56909777443951 23.23524702338843, 18.87186496127367 20.591230374172483, 27.889280372490315 15.421680077663076 M11.44644028313646 22.835659622055836 C15.757615154808285 22.485197273664813, 18.127326204383706 20.11970077788891, 28.732884149549562 16.344572259340378" style="stroke: rgb(0, 0, 0); stroke-width: 2; fill: none;"></path></g><g transform="translate(67.83203125 187.5078125)"><path d="M11.543779753078208 11.348538253322221 C15.070585951705635 13.6508973142161, 18.51342454983833 13.866300657845843, 27.889280372490315 15.421680077663076 M10.836937128985232 10.39325264888707 C15.403522640097764 12.747061129949563, 17.90595285448343 13.0908957515946, 28.732884149549562 16.344572259340378" style="stroke: rgb(0, 0, 0); stroke-width: 2; fill: none;"></path></g></g><g transform="translate(78.4765625 304.15625)"><text x="0" y="19" font-family="Cascadia" font-size="20px" fill="#e67700">where there is an</text><text x="0" y="43" font-family="Cascadia" font-size="20px" fill="#e67700">"initial state"</text></g><g><g transform="translate(162.66015625 250.32421875)"><path d="M-0.8919523268938064 0.569228509068489 C-0.8872724244991937 8.527875124414761, -0.4603925098975499 39.4685453603665, -0.09329500496387477 47.28728413879871 M-0.2497150895744562 -1.6170888485759498 C-0.4338474644968907 6.274119395588834, -1.2779480629911026 38.81444198148946, -1.3984658596664667 46.704956789985296" style="stroke: rgb(230, 119, 0); stroke-width: 1; fill: none;"></path></g></g><g><g transform="translate(196.7578125 214.19921875)"><path d="M-1.0711141616106032 -0.551695105433464 C13.558427394429842 -0.4578841020663579, 73.18907521267732 0.5163880219062169, 88.06462812125683 0.6241974383592606 M0.7445704367011787 -0.040449997410178185 C14.96412356796364 0.2121085478613774, 71.88908933502933 0.43808807549377277, 86.75723751328886 0.772160216346383" style="stroke: rgb(0, 0, 0); stroke-width: 2; fill: none;"></path></g><g transform="translate(196.7578125 214.19921875)"><path d="M57.5233429852091 9.895799597575017 C66.5736744843878 7.1327507145936915, 74.86434843515548 6.089457254147774, 85.94500685177744 1.5858983985334634 M59.215729366537204 11.078812686576196 C67.15942896293878 8.459132224927668, 76.38126683233244 4.555147455551726, 87.52031325988472 1.2015241450816392" style="stroke: rgb(0, 0, 0); stroke-width: 2; fill: none;"></path></g><g transform="translate(196.7578125 214.19921875)"><path d="M57.774824916682356 -10.623868022149772 C66.75417679138592 -6.7418515722443475, 74.96338361505165 -1.137834984318598, 85.94500685177744 1.5858983985334634 M59.46721129801046 -9.440854933148593 C67.13622734202434 -5.950642708558311, 76.28317650320427 -3.744083503605646, 87.52031325988472 1.2015241450816392" style="stroke: rgb(0, 0, 0); stroke-width: 2; fill: none;"></path></g></g><g><g transform="translate(380.80078125 216.35546875)"><path d="M-1.180007556080818 -0.9447395771741867 C17.546708072225254 -0.5404529064893722, 92.50333855648836 1.826423791050911, 111.57899522483349 1.9636541873216629 M1.2201919700950383 -0.4934115424007177 C20.563638686562577 -0.28276822946965696, 96.1574272380521 -0.7988284458965065, 114.5145617749542 -0.36340493582189093" style="stroke: rgb(0, 0, 0); stroke-width: 2; fill: none;"></path></g><g transform="translate(380.80078125 216.35546875)"><path d="M84.68578088207846 7.847654436647941 C94.82189941166338 8.58159287323665, 97.98356349484285 3.5717082580655424, 112.73613028489054 0.970138200893998 M85.52803765906697 10.424536448836376 C94.43263591495186 7.40674585070912, 102.17061594911672 3.814211474671178, 114.98829988650978 -0.5510220365971328" style="stroke: rgb(0, 0, 0); stroke-width: 2; fill: none;"></path></g><g transform="translate(380.80078125 216.35546875)"><path d="M84.81374975819226 -12.673155156362403 C94.84079307420129 -7.12030543365201, 97.97239831927273 -7.310020394028458, 112.73613028489054 0.970138200893998 M85.65600653518077 -10.096273144173969 C94.72879097169621 -7.511946666316986, 102.4318306884118 -5.501528017599292, 114.98829988650978 -0.5510220365971328" style="stroke: rgb(0, 0, 0); stroke-width: 2; fill: none;"></path></g></g><g transform="translate(224.83984375 397.56640625)"><text x="0" y="19" font-family="Cascadia" font-size="20px" fill="#5c940d">and "transitions" between states</text><text x="0" y="43" font-family="Cascadia" font-size="20px" fill="#5c940d">triggered by "events"</text></g><g><g transform="translate(371.453125 395.45703125)"><path d="M-1.1404808074235915 -0.9490551441907882 C8.879785439372062 -14.946717529495558, 49.794224354624745 -69.54448520044485, 60.07397851645946 -83.40100073516369 M-1.041654982343316 -0.6476526942104102 C8.98964197419584 -14.871925051038465, 51.081822757944465 -70.77195855441192, 61.59164151929319 -84.53019094847143" style="stroke: rgb(92, 148, 13); stroke-width: 1; fill: none;"></path></g></g><g><g transform="translate(353.4765625 393.765625)"><path d="M0.45734334290027623 -1.1794948607683182 C17.698966235915822 -28.554862565795577, 86.93652876516184 -136.7901591648658, 104.26841960251332 -164.041585829854 M1.2474123106151818 -0.4803542945533992 C18.712268753225604 -27.91904950516919, 86.272822789525 -138.361309130763, 103.38269136287272 -165.90944152094423" style="stroke: rgb(92, 148, 13); stroke-width: 1; fill: none;"></path></g></g><g><g transform="translate(337 391.6015625)"><path d="M0.7127474337816238 1.0313760727643968 C-15.294191278020543 -26.65705112119516, -80.50606925984223 -139.0185908029477, -96.82293533980847 -166.81100664436818 M1.6513121185451745 -0.6527257058769464 C-14.53320038619141 -28.925711637114485, -79.05821891052028 -140.3243786825488, -95.55989213608206 -167.87251956678926" style="stroke: rgb(92, 148, 13); stroke-width: 1; fill: none;"></path></g></g><g transform="translate(196.25 195.6484375)"><text x="0" y="14" font-family="Virgil" font-size="16px" fill="#000000">FETCH</text></g><g transform="translate(379.203125 196.25)"><text x="0" y="14" font-family="Virgil" font-size="16px" fill="#000000">RESOLVE</text></g><g transform="translate(380.53515625 220.84765625)"><text x="0" y="14" font-family="Virgil" font-size="16px" fill="#000000">REJECT</text></g><g><g transform="translate(382.64453125 240.0703125)"><path d="M1.1214445620775224 -1.1495439559221268 C9.985473460952441 0.06352217694123596, 43.797883402307825 -3.9331778238217048, 53.65432868301868 7.744389244914055 C63.51077396372954 19.421956313649815, 51.12899546921253 57.20604956646761, 60.26011624634266 68.91585845649243 C69.39123702347278 80.62566734651725, 100.29857087433338 76.38641973833242, 108.44105334579945 78.00324258506298 M0.18138586141169055 0.9569162037223577 C8.458875665838521 2.1713542328526576, 41.54344489989182 -5.454127947265904, 51.33269488193095 6.1791769387573 C61.12194486397008 17.812481824780505, 49.16558669425547 58.781073614185054, 58.91688575364649 70.75674551986158 C68.66818481303751 82.7324174255381, 101.62437824346125 76.42393490972619, 109.84048923827707 78.03320837281645" style="stroke: rgb(0, 0, 0); stroke-width: 2; fill: none;"></path></g><g transform="translate(382.64453125 240.0703125)"><path d="M79.71937735961309 89.52692817866526 C92.39636229326936 85.61486557027952, 100.21101435353683 80.3989319728623, 108.75214354671537 78.49833099804819 M81.7344019098722 88.77699373632393 C89.0596353162631 84.94144571798783, 97.90351487122295 83.19562390266388, 110.38942461438477 77.69274846725166" style="stroke: rgb(0, 0, 0); stroke-width: 2; fill: none;"></path></g><g transform="translate(382.64453125 240.0703125)"><path d="M79.74828663023544 69.00573994211541 C92.49515545163578 72.05431607271098, 100.300002076841 73.7987510464056, 108.75214354671537 78.49833099804819 M81.76331118049455 68.25580549977408 C89.2669850848851 70.50896796501605, 98.10228690863757 74.85203158194497, 110.38942461438477 77.69274846725166" style="stroke: rgb(0, 0, 0); stroke-width: 2; fill: none;"></path></g></g><g transform="translate(495.65625 189.07421875)"><path d="M1.8288124352693558 -1.3949371129274368 C24.159569292789094 -2.3426553499413423, 48.243087991129144 0.927854846744449, 105.17945988476276 1.5596598833799362 M-0.5841279402375221 -0.43980320543050766 C22.942537169350544 1.895820919572725, 45.719652413215954 1.7224760690325638, 105.30080147832632 0.8397227898240089 M105.27966053783894 -1.6546154767274857 C102.49806499121041 18.488126802651095, 103.98500871298165 36.474542788084364, 105.48023779690266 54.804788038134575 M105.38256760686636 -0.22748645395040512 C102.96961256139184 14.652865421798197, 103.30542918317224 29.830252514831955, 104.33655067533255 53.88374272733927 M104.25902731716633 53.75372068583965 C75.4167352163291 53.745511612081316, 48.492244018812194 55.32244881072023, 1.3373664170503616 54.4088486880064 M103.94328018277884 54.323796667158604 C77.3169244194345 53.98314082909434, 51.194436759117515 53.678799274452615, -0.6921303644776344 54.56970755010843 M1.8064635545015335 54.19677059352398 C2.3326254276253167 36.92873907608737, 1.726521053693432 23.698717202205444, -0.5533534735441208 1.0744785517454147 M-0.28504685312509537 54.89788404852152 C-0.6578684204650926 44.02911236339423, 0.7608492022918654 31.6492704268021, -0.6917357817292213 -0.7779198512434959" style="stroke: rgb(0, 0, 0); stroke-width: 2; fill: none;"></path></g><g><g transform="translate(555.63671875 340.41015625)"><path d="M-0.3825503379106522 -0.4873612850904464 C-2.242595166961352 3.9997633169094726, 18.038228635986645 25.902716878056523, -11.917373850941658 27.913247445225714 C-41.87297633786996 29.923778012394905, -144.72037620842457 31.333975429336228, -180.11616525948048 11.575822117924691 C-215.5119543105364 -8.182331193486846, -216.67374321917694 -73.52976622283458, -224.2921081572771 -90.63567242324352 M-1.3770185349136592 -0.8016988172382116 C-3.4907592930148046 3.7492345907042433, 16.82634267908832 25.445691438689828, -12.924388155713677 27.50574179507792 C-42.67511899051567 29.565792151466013, -144.76535987831653 31.087246074850363, -179.8814035437256 11.55860332109034 C-214.9974472091347 -7.970039432669681, -216.0764136065791 -72.56203651331364, -223.6206501481682 -89.6661147274822" style="stroke: rgb(0, 0, 0); stroke-width: 2; fill: none;"></path></g><g transform="translate(555.63671875 340.41015625)"><path d="M-207.90816519303664 -65.65514863210026 C-213.11981454462563 -69.36682822388147, -216.40562899757313 -75.35753904662437, -222.2777604369074 -91.03686245761811 M-207.84836552931412 -65.06558108257357 C-213.4331863532827 -73.76405324685713, -217.49260081585828 -81.65275530247652, -222.864772496894 -88.69601007036864" style="stroke: rgb(0, 0, 0); stroke-width: 2; fill: none;"></path></g><g transform="translate(555.63671875 340.41015625)"><path d="M-227.86873813835635 -60.8911660460269 C-228.39089223243934 -65.66783817690977, -226.9478887282392 -72.78717423813033, -222.2777604369074 -91.03686245761811 M-227.80893847463383 -60.30159849650021 C-226.76422477097867 -70.60266622643027, -224.20040314926965 -80.07213359652341, -222.864772496894 -88.69601007036864" style="stroke: rgb(0, 0, 0); stroke-width: 2; fill: none;"></path></g></g><g><g transform="translate(387.275390625 393.46875)"><path d="M0.44503888785839085 0.07215581238269797 C6.018215494354566 -3.822736594080925, 27.369988597432773 -19.99473623931408, 32.45743827521801 -24.014204451441763 M1.3377838542312386 -0.8755724038928747 C6.658294499938687 -5.0490580429881815, 27.49519312324623 -20.207070697769524, 32.7487104370445 -23.995680924877526" style="stroke: rgb(92, 148, 13); stroke-width: 1; fill: none;"></path></g></g><g transform="translate(482.16015625 346.2578125)"><text x="0" y="14" font-family="Virgil" font-size="16px" fill="#000000">RETRY</text></g><g transform="translate(10 11.6171875)"><text x="0" y="35" font-family="Cascadia" font-size="36px" fill="#000000">1. What is a state machine?</text></g><g transform="translate(639 10)"><text x="0" y="35" font-family="Cascadia" font-size="36px" fill="#000000">2. States</text></g><g><g transform="translate(644.45703125 153.32421875)"><path d="M-0.8173422306776046 -0.326817038655281 C4.216678733627001 -0.10540638267993921, 25.163582693537077 1.0774132698774337, 30.44988332092762 1.090440747141838 M-0.18151645325124255 0.05928510926663866 C5.003084938700001 -0.21148130394518388, 25.189671766137085 -0.046963255181908775, 30.66666565991938 0.19072621844708904" style="stroke: rgb(230, 119, 0); stroke-width: 2; fill: none;"></path></g></g><g><g transform="translate(675.265625 153.32421875)"><path d="M-0.0409570187330246 0.5637487381696702 C-0.24659771621227264 35.86549488405387, -0.9530761212110519 176.98182385464509, -0.8143473118543625 212.54403447806834 M-0.18679444693028935 1.4852522280067206 C-0.45541146419942385 36.4870657962809, -1.2426643838733435 175.96679688317082, -1.0593893875926734 211.25799651406706" style="stroke: rgb(230, 119, 0); stroke-width: 2; fill: none;"></path></g></g><g><g transform="translate(676.15234375 366.02734375)"><path d="M0.7012670069932938 -1.1403054267168045 C-4.350515251358351 -1.3395368605852127, -24.770078576604526 -1.3521639853715897, -30.13637804687023 -1.2117317229509355 M-0.8869691529124976 -0.2079802391678094 C-6.072329003637035 -0.21117310501635064, -25.56866728606323 -0.6377582667022943, -30.487249869331716 -0.7454737613350153" style="stroke: rgb(230, 119, 0); stroke-width: 2; fill: none;"></path></g></g><g><g transform="translate(675.44140625 167.2109375)"><path d="M-0.403541949391365 -0.9734390705823898 C5.3656134575605385 -4.793883845210075, 29.176402470469473 -18.681816717982294, 34.76559266746044 -22.40291151702404 M0.24770778201520427 -0.1176543440669775 C5.851060707792639 -3.819667891487479, 29.27716757796705 -18.999312702640893, 35.070126292929054 -22.68027652166784" style="stroke: rgb(230, 119, 0); stroke-width: 2; fill: none;"></path></g></g><g transform="translate(716.66796875 132.06640625)"><text x="0" y="19" font-family="Cascadia" font-size="20px" fill="#e67700">These are all finite states!</text></g><g transform="translate(716.5625 162.30859375)"><text x="0" y="15" font-family="Cascadia" font-size="16px" fill="#e67700">(idle, loading, success, error)</text></g><g transform="translate(705.96484375 67.93359375)"><text x="0" y="15" font-family="Cascadia" font-size="16px" fill="#000000">A finite state describes some "mode" or "status"</text><text x="0" y="34" font-family="Cascadia" font-size="16px" fill="#000000">that a system (e.g., an app or component) is in.</text></g><g><g transform="translate(610.275390625 222.408203125)"><path d="M-0.4356236904859543 0.8088365525007248 C16.06636500656605 8.489867366353671, 82.00482068359851 38.02239506741365, 98.28203826248645 45.37678098380566 M-1.8070900764316322 -1.265079431310296 C14.51557617045939 6.301959661866229, 81.99071491338313 37.482761000220975, 98.58358372069895 44.97759435914457" style="stroke: rgb(230, 119, 0); stroke-width: 2; fill: none;"></path></g></g><g transform="translate(725.96875 368.19140625)"><text x="0" y="15" font-family="Cascadia" font-size="16px" fill="#495057">{</text><text x="0" y="34" font-family="Cascadia" font-size="16px" fill="#495057"> user: { name: 'David' },</text><text x="0" y="53" font-family="Cascadia" font-size="16px" fill="#495057"> errors: null,</text><text x="0" y="72" font-family="Cascadia" font-size="16px" fill="#495057"> count: 42</text><text x="0" y="91" font-family="Cascadia" font-size="16px" fill="#495057">}</text></g><g transform="translate(710.69140625 307.12890625)"><text x="0" y="15" font-family="Cascadia" font-size="16px" fill="#000000">Extended state describes contextual data that</text><text x="0" y="34" font-family="Cascadia" font-size="16px" fill="#000000">is not finite, but relevant to the machine:</text></g><g transform="translate(711.81640625 489.37890625)"><text x="0" y="15" font-family="Cascadia" font-size="16px" fill="#000000">Don't confuse finite states with extended states!</text></g><g transform="translate(81.74088541666663 639.6549479166665)"><text x="0" y="15" font-family="Cascadia" font-size="16px" fill="#000000">An event is a "signal" that something happened.</text></g><g transform="translate(845.10546875 532.09375)"><text x="0" y="15" font-family="Cascadia" font-size="16px" fill="#e67700">countable</text></g><g transform="translate(1020.58984375 532.515625)"><text x="0" y="15" font-family="Cascadia" font-size="16px" fill="#e67700">infinite</text></g><g><g transform="translate(869.359375 530.8828125)"><path d="M-0.7855500251054763 0.7147381335496903 C-0.46597449282805126 -3.188467261195183, 2.486299098531405 -18.924834582209588, 2.7728820770978926 -23.011600157618524 M-1.4554279587417842 -1.2629964246600867 C-1.3752234043429297 -5.102674995884299, -0.6118584114064773 -18.655996793732047, 0.16802273295819758 -22.277001124843956" style="stroke: rgb(230, 119, 0); stroke-width: 2; fill: none;"></path></g><g transform="translate(869.359375 530.8828125)"><path d="M3.371758589578079 -10.128333091582451 C1.4007879030369168 -16.002059141965304, -0.28973372993002733 -19.634902125041314, 0.6407933595962898 -23.181101029700983 M3.1839940830347615 -11.290830520982759 C1.8888519364800416 -13.582022299600442, 1.1131882774222253 -16.041793126010884, -0.023848593565189757 -22.743133755426673" style="stroke: rgb(230, 119, 0); stroke-width: 2; fill: none;"></path></g><g transform="translate(869.359375 530.8828125)"><path d="M-4.343677729579553 -11.097270070168994 C-3.446725514708951 -16.560736460548306, -2.2726156622871 -19.83382696023922, 0.6407933595962898 -23.181101029700983 M-4.53144223612287 -12.2597674995693 C-4.052281975833683 -14.343963441757166, -3.0458048203348476 -16.579925521022012, -0.023848593565189702 -22.743133755426673" style="stroke: rgb(230, 119, 0); stroke-width: 2; fill: none;"></path></g></g><g><g transform="translate(1039.046875 532.986328125)"><path d="M-0.36975183784961696 0.509035161137581 C-0.04356009463469185 -3.623052069544792, 1.7532203326622644 -19.769941851496696, 2.084700772166252 -23.811370512843133 M0.01458468697965154 1.2974251947551965 C0.7196445880581938 -2.2098138012737034, 3.3093981307993334 -18.07144797705114, 3.400013528093696 -22.009329139217733" style="stroke: rgb(230, 119, 0); stroke-width: 2; fill: none;"></path></g><g transform="translate(1039.046875 532.986328125)"><path d="M6.6395311309633085 -10.567704071253171 C4.134881106581066 -14.442968599227708, 3.346432654256323 -18.356735874681522, 2.8000073788610114 -22.000269251346626 M5.818713865390475 -10.87354272883415 C5.326886124940555 -15.40482378291105, 4.236463156356299 -19.204457357525918, 3.854382182011931 -22.23232535634153" style="stroke: rgb(230, 119, 0); stroke-width: 2; fill: none;"></path></g><g transform="translate(1039.046875 532.986328125)"><path d="M-1.0944381311157143 -11.37548864443215 C-1.1900868590001112 -14.976001291294779, 0.4238613172285999 -18.638847096874404, 2.8000073788610114 -22.000269251346626 M-1.9152553966885488 -11.681327302013129 C0.46915879916327197 -15.941168719478783, 2.247246094234613 -19.44119697366034, 3.854382182011931 -22.23232535634153" style="stroke: rgb(230, 119, 0); stroke-width: 2; fill: none;"></path></g></g><g transform="translate(720.27734375 261.828125)"><text x="0" y="19" font-family="Cascadia" font-size="20px" fill="#e67700">Final states mark that a machine is "done".</text></g><g><g transform="translate(752.1640625 214.23828125)"><path d="M-41.38870096504682 -4.7694400280714015 C-52.29289178933533 -5.93592534888062, -89.5096937495679 -5.824955321050084, -107.14088458036403 -13.451971547500687 C-124.77207541116016 -21.07898777395129, -72.70059018632105 -45.62995174301901, -147.17584594982355 -50.531537386775014 C-221.65110171332606 -55.43312303053102, -478.4917283418863 -47.315697328189245, -553.9924191613791 -42.86148541003674 C-629.4931099808718 -38.40727349188424, -592.5268656301796 -26.886138418679124, -600.1799908667803 -23.806265877859992 M-41.454124765172544 -4.621695896610616 C-52.780647764239035 -6.174589925515384, -90.7179755256534 -5.9445687440250286, -108.4839148367695 -14.005478496076064 C-126.2498541478856 -22.066388248127097, -74.02013060984841 -48.16573583221175, -148.04976063186913 -52.98715440891683 C-222.07939065388985 -57.80857298562191, -477.7354977650283 -47.589521819317575, -552.6616949688938 -42.93398995630652 C-627.5878921727593 -38.27845809329546, -589.9988768855779 -28.19144775449205, -597.6069438550621 -25.0539632308505" style="stroke: rgb(230, 119, 0); stroke-width: 2; fill: none;"></path></g></g><g transform="translate(726.396484375 203.814453125)"><path d="M4.864357978867435 0.26828390112218514 C5.931093791143387 -0.023901706080577678, 6.484110704579144 0.6868817737296569, 7.32799739992195 1.070142488170708 C8.171884095264756 1.4534032026117591, 9.504752759161377 1.674500510543619, 9.927678150924272 2.567848187768492 C10.350603542687168 3.461195864993365, 10.389562943926084 5.164551113927245, 9.865549750499321 6.430228551519946 C9.341536557072558 7.695905989112647, 7.842754985530262 9.71493547860971, 6.7835989903637 10.161912813324696 C5.724442995197138 10.60889014803968, 4.58611424075416 9.42178135058801, 3.510613779499947 9.112092559809861 C2.4351133182457345 8.802403769031713, 0.7493710515594074 8.85370834519521, 0.3305962228384245 8.3037800686558 C-0.08817860588255849 7.753851792116391, 0.9125032179978755 6.924094952542141, 0.997964807174049 5.812522900573401 C1.0834263963502224 4.700950848604661, 0.3738204676440189 2.5768465635348385, 0.8433657578954654 1.6343477568433578 C1.312911048146912 0.691848950151877, 3.2051505095656285 0.3566202843553544, 3.815236548682728 0.15753006042451645 C4.425322587799828 -0.04156016350632155, 4.24876702899042 0.3809883873467155, 4.503881992598064 0.4398064132583297 M3.634339143966771 -1.047010160244609 C4.430835043449404 -1.7490459195607295, 6.453691127668932 -0.06883512030488098, 7.143939050199906 0.27433748673328484 C7.83418697273088 0.6175100937714506, 7.471358352053021 -0.04629629204734642, 7.775826679152611 1.0120254819843861 C8.0802950062522 2.0703472560161185, 8.639992951153783 5.157292248352815, 8.970749012797445 6.624268130923681 C9.301505074441106 8.091244013494546, 10.117569936114155 9.186550718533637, 9.760363049014586 9.813880777409581 C9.403156161915017 10.441210836285526, 8.111085357171238 10.679139013435945, 6.827507690200037 10.388248484179353 C5.543930023228836 10.097357954922762, 3.0733073216177162 8.645245677680698, 2.0588970471873806 8.068537601870032 C1.0444867727570453 7.491829526059366, 0.9646664218915327 7.553961026337562, 0.7410460436180255 6.928000029315357 C0.5174256653445183 6.302039032293153, 0.3671663564445631 5.410652803286055, 0.7171747775463375 4.312771619736806 C1.067183198648112 3.214890436187556, 2.365505188763505 0.7880554315338519, 2.841096570228672 0.3407129280198573 C3.3166879516938392 -0.10662957549413737, 3.6793423527285656 1.550781648509621, 3.5707230663373415 1.6287165986528374" style="stroke: none; stroke-width: 0; fill: rgb(253, 126, 20);"></path><path d="M3.3133541863767633 -0.8287860203664055 C4.1652136261346335 -1.1490647820531104, 5.719110148299309 -0.5257410612108839, 6.71562349506223 0.07072474535241557 C7.712136841825151 0.6671905519157151, 8.89888172554951 1.6718676150633853, 9.292434266954286 2.7500088190133916 C9.685986808359063 3.828150022963398, 9.372873620871506 5.407805512744923, 9.076938743490892 6.539571969052453 C8.781003866110279 7.671338425359983, 8.318260015944087 8.858462810754279, 7.516825002670603 9.540607556858575 C6.715389989397118 10.22275230296287, 5.2708797587065215 10.667282986682645, 4.268328663849983 10.632440445678233 C3.265777568993445 10.59759790467382, 2.2254161562201062 10.234089278439944, 1.5015184335313738 9.331552310832098 C0.7776207108426413 8.429015343224252, 0.03035612250564819 6.298881538610414, -0.07505767228241211 5.217218640031156 C-0.1804714670704724 4.135555741451898, 0.02212822790183333 3.673363754176861, 0.869035664803012 2.841574919356551 C1.7159431017041906 2.0097860845362407, 4.293135956389034 0.8213062832443706, 5.00638694912466 0.22648563110929576 C5.719637941860285 -0.3683350210257791, 5.134514264711416 -0.9454849871541072, 5.148541621216765 -0.7273489934538979 M1.7737506858135021 0.5295487208873872 C2.437120073038744 -0.28220803954528384, 3.9580684942087982 -1.008873143009351, 4.973554100538177 -0.9521449986015282 C5.989039706867556 -0.8954168541937055, 7.229694388793812 -0.42177320798081586, 7.866664323789772 0.8699175873343234 C8.503634258785732 2.1616083826494625, 8.573149394374777 5.378036887858563, 8.795373710513939 6.797999773289308 C9.0175980266531 8.217962658720053, 9.554111605473953 8.88602052492313, 9.20001022062474 9.389694899918794 C8.845908835775528 9.893369274914459, 7.788673664766059 10.1038482100585, 6.670765401418672 9.820046023263293 C5.552857138071285 9.536243836468087, 3.63145071764927 8.416717494589536, 2.492560640540416 7.686881779147557 C1.353670563431562 6.957046063705577, -0.0677800760137451 6.1724107695995585, -0.16257506123445165 5.4410317306114155 C-0.2573700464551582 4.709652691623273, 1.6504292717830238 4.249632249739304, 1.9237907292161767 3.2986075452186996 C2.1971521866493298 2.347582840698095, 1.2431315370354488 0.08921041763154619, 1.4775936833644656 -0.2651164965122099 C1.7120558296934825 -0.6194434106559661, 3.2964669959721635 0.8563179831743384, 3.3305636071902773 1.172646060356163" style="stroke: rgb(230, 119, 0); stroke-width: 2; fill: none;"></path></g><g transform="translate(772.62109375 197.8046875)"><text x="0" y="19" font-family="Cascadia" font-size="20px" fill="#e67700">State machines always start in an</text><text x="0" y="43" font-family="Cascadia" font-size="20px" fill="#e67700">initial state.</text></g><g><g transform="translate(730.88671875 215.05078125)"><path d="M1.0464482814073561 0.30499181449413304 C1.273463778569011 3.322202878309815, -4.0626576441106685 15.138142408610555, 1.049265541873624 18.409857223114543 C6.161188727857917 21.68157203761853, 26.89280365792285 19.8155400009091, 31.717987397313117 19.93528070151806 M0.562420617118478 -1.2743910739570856 C0.7808315901445434 1.7138354408130334, -3.4108990945247313 14.645089471445653, 1.53785711310034 17.993591907924586 C6.486613320725411 21.34209434440352, 25.374473770905247 18.513563773968347, 30.254957862868906 18.81662354491651" style="stroke: rgb(230, 119, 0); stroke-width: 2; fill: none;"></path></g><g transform="translate(730.88671875 215.05078125)"><path d="M8.380893329114933 29.178633135064093 C14.220489406918514 27.285279225021515, 21.526941262421126 21.885372260663694, 30.325564407482744 19.06513859950006 M8.500152336390038 27.93017331163451 C14.473598264541295 25.276365226840312, 21.5760578850086 23.00908532314108, 30.73317948050797 19.05232860021293" style="stroke: rgb(230, 119, 0); stroke-width: 2; fill: none;"></path></g><g transform="translate(730.88671875 215.05078125)"><path d="M7.663740196016455 12.624567481894228 C13.742081156271713 15.25963223743719, 21.244983520078748 14.394397802528546, 30.325564407482744 19.06513859950006 M7.78299920329156 11.376107658464644 C14.024984489386517 13.751618049019905, 21.345107250199298 16.50866244825767, 30.73317948050797 19.05232860021293" style="stroke: rgb(230, 119, 0); stroke-width: 2; fill: none;"></path></g></g><g transform="translate(84.74381510416663 721.257161458333)"><path d="M1.9786500185728073 -0.5849534720182419 C22.345462690413118 -0.5420901820834843, 43.89481625580812 1.8483416988674435, 84.80765192210674 -1.0020367354154587 M0.14070288091897964 -0.13123515993356705 C19.208733298277366 -1.294616076622333, 39.16217783917091 -1.7873745891192812, 84.73827544599771 0.12608500570058823 M87.52733652293682 0.8933299332857132 C87.77671427809867 15.490016438323075, 85.0481400021282 31.09288275293075, 87.42218010127544 45.85644991695881 M85.75975028425455 -0.2619974985718727 C84.60190675380407 8.368818527576515, 85.80163929584204 18.017906953627246, 86.18975845724344 45.631270848214626 M86.92616645991802 46.78196795284748 C57.13707460059959 42.893344178221014, 25.162359572335838 45.02568890096882, -1.3675428181886673 44.30937321484089 M84.81419960409403 44.029870472848415 C62.623934984745574 43.76406982633489, 40.79222902018227 44.100794346064504, -0.08912809938192368 44.66626473516226 M-1.0284734517335892 43.52676136791706 C1.612277955028694 26.519913142663427, -1.14190056898864 10.778033789480105, 1.5708073824644089 0.44315893948078156 M0.8316387310624123 45.0019371137023 C-0.3775979344802909 31.311057449760845, 0.3884035284561105 20.094993154471737, -0.6801713332533836 -0.5504274740815163" style="stroke: rgb(24, 100, 171); stroke-width: 2; fill: none;"></path></g><g transform="translate(107.19303385416663 731.155598958333)"><text x="0" y="18" font-family="Virgil" font-size="20px" fill="#1864ab">idle</text></g><g stroke-opacity="0.4" fill-opacity="0.4" transform="translate(345.91764322916663 721.815755208333)"><path d="M-0.2890477925539017 -0.6259943693876266 C23.480112791832656 2.0149278411336127, 48.8717556760239 -0.7515464058451471, 84.3292760103941 -0.685671016573906 M-0.8524051532149315 -0.44915083795785904 C33.18791269783105 -0.829513612894516, 67.38976771928719 0.23848074326087954, 85.89384142309427 0.4513654336333275 M87.57374088466167 0.8782747536897659 C85.28420590856608 15.211450676803363, 87.86121940115031 27.571802503237272, 83.80722276866436 45.9190161973238 M84.76327768713236 -0.9907331839203835 C86.01674460612209 12.77700125319243, 86.24349283419521 27.61891629333259, 86.18839541822672 47.50398322194815 M87.48833315074444 44.79826958477497 C62.54108386316511 47.70707531565131, 37.62940281289047 46.753802972969424, -0.7767964154481888 45.89694865047932 M84.99087611585855 46.049738608300686 C66.0097522270662 45.58236415799911, 46.522685039934004 45.53013451513107, 0.7337810173630714 46.98020788282156 M1.7667407244443893 44.97822840511799 C-0.7476146640212391 29.405693455788423, 1.8106305180161144 13.83787347227917, -0.2748323231935501 1.5689271241426468 M-0.02483447641134262 45.85170789808035 C0.3533179705034127 29.597004969554835, -1.0680203492750298 10.263650612806664, 0.31539861112833023 0.6063577756285667" style="stroke: rgb(0, 0, 0); stroke-width: 2; fill: none;"></path></g><g stroke-opacity="0.4" fill-opacity="0.4" transform="translate(355.12467447916663 731.452473958333)"><text x="0" y="18" font-family="Virgil" font-size="20px" fill="#000000">loading</text></g><g transform="translate(45.38053385416663 708.647786458333)"><path d="M5.100215367741374 0.5689604231991439 C6.074459608156566 0.21593512483008276, 6.5544676592946 -0.10474517307799519, 7.491329399057202 0.323092493407243 C8.428191138819804 0.7509301598924811, 10.486118724359848 2.007065729957369, 10.721385806316984 3.135986422110573 C10.956652888274121 4.264907114263777, 9.410930311481255 5.958126378072192, 8.90293189080002 7.096616646326465 C8.394933470118783 8.235106914580738, 8.599142063386275 9.368996916300025, 7.673395282229568 9.966928031636213 C6.747648501072861 10.5648591469724, 4.3568879851738265 10.90799146890802, 3.3484512038597796 10.684203338343591 C2.3400144225457327 10.460415207779162, 2.1683204161917584 9.674074987599552, 1.6227745943452847 8.62419924824964 C1.077228772498811 7.574323508899729, 0.2078631695836517 5.476413049335527, 0.07517627278093819 4.384948902244122 C-0.057510624021775314 3.2934847551527167, -0.18907695454613083 2.9178611408262425, 0.8266532135290037 2.075414365701212 C1.8423833816041382 1.2329675905761812, 5.429360395996967 -0.4056330987031938, 6.169557281231746 -0.6697317485060612 C6.9097541664665245 -0.9338303983089287, 5.3173665726033885 0.37716323916336564, 5.267834524937675 0.49082246688400755 M5.824867257048145 0.9412288543578811 C6.450850282609447 1.0417815407383717, 6.797850662568241 2.289666048695611, 7.5302422798342885 2.861582432537791 C8.262633897100336 3.4334988163799713, 10.026114184946486 3.4026566440407433, 10.219216960644431 4.372727157410961 C10.412319736342376 5.342797670781178, 9.671954710579888 7.744148983985587, 8.688858934021951 8.682005512759096 C7.705763157464014 9.619862041532604, 5.283475660906407 10.094811657178411, 4.320642301296814 9.999866330052013 C3.3578089416872205 9.904921002925615, 3.609437709280854 8.512602698734472, 2.9118587763643915 8.11233355000071 C2.214279843447929 7.712064401266947, 0.6308680125984099 8.195112710777337, 0.13516870379803958 7.598251437649439 C-0.36053060500233075 7.001390164521539, -0.5763272930932046 5.839733461670104, -0.062337076437830596 4.531165911233313 C0.45165314021754344 3.222598360796523, 2.2089822533034527 0.5085917411888942, 3.2191100037302838 -0.25315386497130365 C4.229237754157115 -1.0148994711315016, 5.338899028485729 0.0366505892650788, 5.998429426123156 -0.03930772572787333 C6.657959823760583 -0.11526604072082547, 7.206794422992458 -0.7679944877294856, 7.1762923895548445 -0.7089037549290165" style="stroke: none; stroke-width: 0; fill: rgb(24, 100, 171);"></path><path d="M6.446429974754032 0.14212809862382336 C7.624209817639242 0.6308793536508057, 9.953842554615903 2.1868262624961834, 10.48776206274733 3.087912636583666 C11.021681570878755 3.9889990106711486, 10.170339052611164 4.684915310988382, 9.649947023542591 5.54864634314872 C9.129554994474018 6.412377375309058, 8.377232242821197 7.6608881336017, 7.365409888335897 8.270298829545697 C6.353587533850598 8.879709525489693, 4.545334244572095 9.10331831726882, 3.579012896630795 9.205110518812697 C2.6126915486894955 9.306902720356574, 2.0859349521628 9.524453097930932, 1.5674818006880988 8.881052038808953 C1.0490286492133976 8.237650979686974, 0.4203001742091801 6.393661564188454, 0.46829398778258824 5.344704164080826 C0.5162878013559964 4.295746763973199, 1.1538982277811178 3.3771645380488997, 1.8554446821285477 2.587307638163187 C2.5569911364759776 1.7974507382774747, 3.823211485283538 0.7761435799594297, 4.677572713867167 0.6055627647665505 C5.531933942450795 0.4349819495736712, 6.347116369818383 1.4447497977220818, 6.981612053630321 1.5638227470059114 C7.616107737442259 1.682895696289741, 8.61108844922911 1.4616375685841192, 8.484546816738794 1.3200004604695277 M3.383054080913406 -1.4784443209478901 C4.442218830324119 -1.7095015900818422, 7.231740111304781 -1.1039101421849524, 8.441951427957388 -0.03957552923127139 C9.652162744609996 1.0247590837224096, 10.34529577291497 3.4583728753925396, 10.644321980829051 4.9075633567741965 C10.943348188743133 6.3567538381558535, 10.923368055108732 7.692481038397475, 10.236108675441882 8.65556735905867 C9.548849295775032 9.618653679719866, 7.410895216310252 10.245650734368699, 6.520765702827951 10.686081280741368 C5.63063618934565 11.126511827114037, 6.07688201955864 11.745472232268241, 4.895331594548074 11.298150637294682 C3.7137811695375085 10.850829042321124, 0.20469208608841027 9.312428885742952, -0.5685368472354435 8.00215171090002 C-1.3417657805592973 6.691874536057088, -0.018650644310008124 4.6389228496828885, 0.2559579946049517 3.4364875882370933 C0.5305666335199115 2.234052326791298, 0.43009017692608176 1.5393214098055252, 1.0791149862543157 0.7875401422252462 C1.7281397955825497 0.035758874644966965, 3.752474584891472 -0.7263618568914834, 4.150106850574355 -1.074200017244582 C4.5477391162572385 -1.4220381775976807, 3.531291414783804 -1.4173655430825167, 3.4649085803516138 -1.2994888198933454" style="stroke: rgb(24, 100, 171); stroke-width: 2; fill: none;"></path></g><g><g transform="translate(49.14225260416663 714.093098958333)"><path d="M-0.6012220412492751 -0.7891531437635422 C0.7753336816257502 2.3331165184577305, 4.777543219462792 15.504233896488893, 9.317996844188134 18.231490376591683 C13.858450468913475 20.95874685669447, 23.952870836777116 16.080819645747802, 26.641499707102774 15.574385736853195 M-1.6584481213241817 0.23073556043207644 C0.3319882716214917 3.4968302029122906, 5.539561366797247 15.002223878035892, 10.185637070894995 17.87287374354899 C14.831712774992742 20.743523609062088, 23.367270091918733 17.517264586687347, 26.218006103262304 17.454634753510668" style="stroke: rgb(24, 100, 171); stroke-width: 2; fill: none;"></path></g><g transform="translate(49.14225260416663 714.093098958333)"><path d="M9.210009263040288 25.868379999891715 C18.381180797055954 23.319396841361417, 22.482321609058598 18.00202199614447, 25.400039854959786 15.706160604387243 M10.63465505315937 26.903730889570433 C13.616756975866808 25.469887213803187, 17.40410162329897 23.630892232550195, 26.617871273569435 17.09069616015866" style="stroke: rgb(24, 100, 171); stroke-width: 2; fill: none;"></path></g><g transform="translate(49.14225260416663 714.093098958333)"><path d="M7.0993556630507175 13.591160169582817 C17.038556338950208 15.819037082675111, 21.959099050236613 15.26794754686613, 25.400039854959786 15.706160604387243 M8.524001453169799 14.626511059261537 C11.829232002451686 15.71676929929938, 16.050968293740592 16.404537451563343, 26.617871273569435 17.09069616015866" style="stroke: rgb(24, 100, 171); stroke-width: 2; fill: none;"></path></g></g><g><g stroke-opacity="0.4" fill-opacity="0.4" transform="translate(178.32975260416663 741.046223958333)"><path d="M-0.7891531437635422 -0.4114026099443435 C25.5134550601244 -0.07537606855233508, 131.18675875961782 1.3091688444217044, 157.3135216265917 1.4149372071027755 M-1.7236941113322974 -1.6584481213241817 C24.47323719598353 -1.0818960124005876, 129.91320862628518 1.2606827459981045, 156.35964181043207 1.702331366762519" style="stroke: rgb(0, 0, 0); stroke-width: 2; fill: none;"></path></g><g stroke-opacity="0.4" fill-opacity="0.4" transform="translate(178.32975260416663 741.046223958333)"><path d="M127.2849448396333 13.375309062926718 C135.629411817584 8.821416913617478, 140.97199408757785 5.681828613444913, 154.4394436828047 -0.1814873341470955 M128.42198128984052 11.261797016291567 C134.84372582085916 9.746195670239803, 140.81086383389027 7.708025411844453, 155.95995948977767 2.6370310585945846" style="stroke: rgb(0, 0, 0); stroke-width: 2; fill: none;"></path></g><g stroke-opacity="0.4" fill-opacity="0.4" transform="translate(178.32975260416663 741.046223958333)"><path d="M127.69256326201756 -7.141850818683903 C135.82900634528227 -6.401794963439001, 141.06635946012892 -4.244754647728419, 154.4394436828047 -0.1814873341470955 M128.8295997122248 -9.255362865319054 C135.19186843484488 -6.4741795351284654, 141.0736615772711 -4.216581351475876, 155.95995948977767 2.6370310585945846" style="stroke: rgb(0, 0, 0); stroke-width: 2; fill: none;"></path></g></g><g stroke-opacity="0.4" fill-opacity="0.4" transform="translate(220.78678385416663 719.159505208333)"><text x="0" y="14" font-family="Virgil" font-size="16px" fill="#000000">FETCH</text></g><g transform="translate(82.58463541666663 674.8424479166665)"><text x="0" y="15" font-family="Cascadia" font-size="16px" fill="#000000">Events can trigger "transitions" between states:</text></g><g stroke-opacity="0.3" fill-opacity="0.3" transform="translate(83.30436197916663 797.499348958333)"><path d="M1.223445251584053 0.9257392138242722 C24.604650132750976 -1.2526377285757917, 53.40512076098821 -1.5499223316946882, 84.33045561611652 0.2550768107175827 M-0.6775052919983864 0.14204994589090347 C30.06659210457292 -1.5202263837054488, 58.16148143229657 -0.5699521546557662, 86.14601512998343 -0.8716293200850487 M86.0550459176302 -0.04647882282733917 C86.4267418447393 13.306747107324192, 86.22781825694022 22.67308033728041, 86.36989624798298 43.06256763637066 M86.16656299680471 0.9944500103592873 C85.16522768915864 11.243249040353113, 85.51011566103669 21.833272740757096, 84.68682261556387 45.41525713354349 M85.36291916668415 43.27187626063824 C63.76139372641046 45.32338043767231, 46.02542309570708 42.41943689900654, 0.3040664941072464 46.56248705089092 M85.59366198629141 45.45852152258158 C62.79047328156594 44.740118716501456, 40.2008694767428 45.476876710199576, -0.16809896379709244 44.66366855055094 M-0.047759220004081726 43.583441182971 C1.760897193972487 35.03272800433915, 1.7101364479702896 21.908208063011987, -0.5696703642606735 1.4418467730283737 M-0.2870774641633034 45.452477373182774 C-0.3047553791222163 33.43545535702724, 0.416490624982398 20.59217754253186, -0.7471187487244606 -0.1691196784377098" style="stroke: rgb(0, 0, 0); stroke-width: 2; fill: none;"></path></g><g stroke-opacity="0.3" fill-opacity="0.3" transform="translate(106.01920572916663 807.136067708333)"><text x="0" y="18" font-family="Virgil" font-size="20px" fill="#000000">idle</text></g><g transform="translate(344.47819010416663 798.057942708333)"><path d="M-1.6424094885587692 -0.7484222203493118 C31.646515975633523 -1.4421293286068249, 60.15695328064613 -0.14134569442103384, 86.45726139843464 -0.7030049115419388 M0.8929380998015404 -0.9849844798445702 C30.8599518363626 -0.15636826109403046, 62.593040707201006 -0.9932873303841916, 85.22562142461538 0.8038188591599464 M86.06527455151081 1.6999072283506393 C85.96207624919684 9.440360320036417, 86.46562153346808 18.055737117776882, 84.31565649807453 48.5235685557127 M84.74098130315542 0.7405158653855324 C85.3293277525765 15.11489885719202, 84.9302810931069 29.020692066283665, 84.99037452787161 45.837584890425205 M83.8522585183382 47.83968870341778 C68.99718846201722 44.20910538476164, 51.52866930901655 47.50381602090056, -0.7188164442777634 44.648137018084526 M85.4056977853179 45.90654508024454 C54.72253524667758 47.06276559865364, 24.058865811064607 46.75109982526192, -0.5866463556885719 46.63048330694437 M1.7580931931734085 47.553246423602104 C1.7184691137264598 35.91229391856759, -0.5585336977054249 29.340601057087767, -0.6144191473722458 1.3733371943235397 M0.004030905663967133 47.212566055357456 C0.8591604193250533 31.64863640787371, -0.6132352391679887 16.80801150892512, 0.42400213330984116 -0.9930230006575584" style="stroke: rgb(24, 100, 171); stroke-width: 2; fill: none;"></path></g><g transform="translate(353.68522135416663 807.694661458333)"><text x="0" y="18" font-family="Virgil" font-size="20px" fill="#1864ab">loading</text></g><g stroke-opacity="0.3" fill-opacity="0.3" transform="translate(43.94108072916663 784.889973958333)"><path d="M4.554331016360392 -0.9731869248202143 C5.605658489341115 -1.141886652059568, 6.803928445463735 -0.6340893689073112, 7.823299832889562 0.23296471677471509 C8.842671220315388 1.1000188024567414, 10.251533075278159 3.177198186358515, 10.670559340915352 4.229137589271943 C11.089585606552545 5.281076992185371, 10.985356322493804 5.518471172730063, 10.33745742671272 6.544601134255283 C9.689558530931638 7.570731095780502, 7.944857533767561 9.702916913332032, 6.783165966228853 10.38591735842326 C5.621474398690145 11.068917803514488, 4.319328547810264 11.094934358061877, 3.3673080214804743 10.642603804802645 C2.4152874951506837 10.190273251543413, 1.548245202341526 8.676928579924029, 1.0710428082501107 7.671934038867867 C0.5938404141586953 6.666939497811706, 0.3417068181632982 5.525011115000854, 0.5040936569319818 4.612636558465678 C0.6664804957006655 3.700262001930503, 1.2886579126471656 3.090123334602949, 2.0453638408622123 2.1976866996568134 C2.802069769077259 1.3052500647106777, 4.442794484094481 -0.4757679181753831, 5.0443292262222625 -0.7419832512111366 C5.645863968350044 -1.0081985842468901, 5.797429736304375 0.4270645209473565, 5.6545722936289 0.6003947014422923 M4.242396188818995 -0.21004215421957007 C4.850557723978316 -0.2788588593120989, 5.131853613871826 1.3843122531011791, 6.259870092544169 1.765665690684151 C7.387886571216512 2.147019128267123, 10.194015853523966 1.5197882626498807, 11.010495060853053 2.078078471278262 C11.82697426818214 2.636368679906643, 11.880790550821837 3.9527708473813563, 11.158745336518692 5.115406942454437 C10.436700122215546 6.278043037527518, 7.907391864511895 8.116569446309281, 6.678223775034178 9.053895041716748 C5.449055685556462 9.991220637124215, 4.668081174783362 11.010164120959603, 3.7837367996523934 10.739360514899241 C2.8993924245214253 10.46855690883888, 1.8069112385719521 8.534745473557512, 1.3721575242483697 7.429073405354581 C0.9374038099247872 6.323401337151649, 1.4102179598589546 4.964761337700107, 1.1752145137108982 4.105328105681653 C0.9402110675628418 3.2458948736631985, -0.3597870391231847 2.8915511490684054, -0.03786315263996887 2.272474013243855 C0.284060733843247 1.6533968774193042, 2.717331337529236 0.7645353783347704, 3.1067578326101932 0.3908652907343493 C3.4961843276911506 0.01719520313392825, 2.1151347790286996 0.18796300677335984, 2.2986958178457746 0.030453487641328714" style="stroke: none; stroke-width: 0; fill: rgb(0, 0, 0);"></path><path d="M4.098138310072854 -0.17935720052320026 C5.274317545694936 -0.6425576820683638, 6.786619718329462 -0.8685670478408871, 7.7091661438947785 -0.2020241897251438 C8.631712569460095 0.4645186683905995, 9.451289984714858 2.7539482782139357, 9.633416863464758 3.8198999481712597 C9.815543742214658 4.885851618128584, 9.107856132067612 5.210480841112339, 8.801927416394182 6.193685830018801 C8.495998700720753 7.176890818925262, 8.652977177896735 9.135667760792039, 7.79784456942418 9.719129881610026 C6.942711960951625 10.302592002428014, 4.593992426785272 10.016361602318073, 3.6711317655588522 9.694458554926722 C2.748271104332432 9.372555507535372, 2.8351957756191704 8.489645983968632, 2.2606806020656594 7.787711597261926 C1.6861654285121483 7.08577721055522, 0.41552240415912134 6.27933047831443, 0.22404072423778665 5.482852234686486 C0.032559044316451985 4.686373991058542, 0.385892085231511 3.96325864287955, 1.1117905225376514 3.00884213549426 C1.837688959843792 2.0544256281089694, 3.8288638604720684 0.3984814334883251, 4.579431348074629 -0.24364680962525664 C5.3299988356771895 -0.8857750527388384, 5.735920084726428 -1.1302106478737122, 5.615195448153015 -0.8439273231872306 M3.7811966378903303 1.113326067168659 C4.5259039498858264 1.0397426776212377, 6.678644219025857 1.882025171107522, 7.460078281163188 2.5323359030257233 C8.241512343300519 3.1826466349439246, 8.341876291917691 4.347432221887399, 8.469801010714313 5.015190458677868 C8.597725729510936 5.682948695468337, 8.798238402950062 5.763307290115566, 8.227626593942919 6.538885323768539 C7.657014784935774 7.314463357421511, 6.108153177733044 9.354194103662568, 5.046130156671449 9.6686586605957 C3.984107135609854 9.983123217528831, 2.4477783095568175 8.723608035474811, 1.8554884675733483 8.425672665367333 C1.263198625589879 8.127737295259855, 1.9966705187991711 8.575862787394552, 1.4923911047706326 7.881046439950834 C0.9881116907420942 7.186230092507116, -1.4375131539202792 5.479482413310935, -1.1701880165978826 4.256774580705024 C-0.902862879275486 3.0340667480991126, 2.293796382735267 1.107434157731451, 3.0963419287050127 0.5447994443153661 C3.8988874746747584 -0.017835269100718754, 3.3182993233495646 0.8320184354975892, 3.6450852592205902 0.8809663002085149 C3.971871195091616 0.9299141649194405, 4.870826625831544 1.0830348221909827, 5.057057543931166 0.8384866325809197" style="stroke: rgb(0, 0, 0); stroke-width: 2; fill: none;"></path></g><g><g stroke-opacity="0.3" fill-opacity="0.3" transform="translate(47.70279947916663 790.335286458333)"><path d="M0.15304608643054962 0.48763808906078343 C1.8088828533119228 3.585182981689771, 5.056495871678748 15.22770901298021, 9.307596507207313 17.79682397544384 C13.558697142735877 20.36593893790747, 22.62021898917618 16.4434841009232, 25.659649899601938 15.90232786384256 M0.9177155003696682 -1.595081655755639 C2.468191685376194 1.501815556113919, 4.965891776592294 15.567435094694247, 8.962794473678628 18.517863512262704 C12.959697170764962 21.46829192983116, 21.987909407315282 16.50765809342291, 24.899131682887674 16.107488849655105" style="stroke: rgb(0, 0, 0); stroke-width: 2; fill: none;"></path></g><g stroke-opacity="0.3" fill-opacity="0.3" transform="translate(47.70279947916663 790.335286458333)"><path d="M11.198208996973996 26.562993693634045 C15.24643875007181 23.202326705851142, 17.94423683710138 23.313770281185143, 23.105337724319433 15.769072764501939 M10.07671500931403 27.93506169664389 C13.901731945317382 24.225722772272448, 18.94568975722008 20.940201022656534, 25.673073653227917 16.2084799998939" style="stroke: rgb(0, 0, 0); stroke-width: 2; fill: none;"></path></g><g stroke-opacity="0.3" fill-opacity="0.3" transform="translate(47.70279947916663 790.335286458333)"><path d="M7.444614422989239 14.68463045811076 C12.344619236863933 14.26162089197052, 15.972237723161472 17.315509163610475, 23.105337724319433 15.769072764501939 M6.323120435329274 16.056698461120604 C11.320754999455545 15.902355841576343, 17.477762362649138 16.139112965923633, 25.673073653227917 16.2084799998939" style="stroke: rgb(0, 0, 0); stroke-width: 2; fill: none;"></path></g></g><g><g transform="translate(176.89029947916663 817.288411458333)"><path d="M0.48763808906078343 -0.4218029469251633 C26.765521523356433 -0.3751293947299322, 130.91023387610912 -0.023483003179232187, 156.87885522544383 0.43308739960193643 M-0.06351975895464412 0.9177155003696682 C25.992537939772006 1.0543074013541145, 128.25658884070813 0.6870131557931504, 154.53382459424435 0.47948876954615116" style="stroke: rgb(24, 100, 171); stroke-width: 2; fill: none;"></path></g><g transform="translate(176.89029947916663 817.288411458333)"><path d="M125.69473703316248 12.139055650670132 C131.62163281937023 8.619963291021719, 141.35469736569746 3.9269523603342673, 154.16217143975197 0.4100682679563761 M127.20156080386437 10.02929120137175 C136.54553684111545 7.33884325475068, 146.4024551423803 4.567113440209694, 154.64473445110022 0.20918905921280384" style="stroke: rgb(24, 100, 171); stroke-width: 2; fill: none;"></path></g><g transform="translate(176.89029947916663 817.288411458333)"><path d="M125.58613464124205 -8.381865573931575 C131.56464761287054 -7.0934250166945745, 141.32315728892368 -6.9784617083060825, 154.16217143975197 0.4100682679563761 M127.09295841194394 -10.491630023229957 C136.29609503551353 -5.996255536725409, 146.1910402892421 -1.5826178642311346, 154.64473445110022 0.20918905921280384" style="stroke: rgb(24, 100, 171); stroke-width: 2; fill: none;"></path></g></g><g transform="translate(219.34733072916663 795.401692708333)"><text x="0" y="14" font-family="Virgil" font-size="16px" fill="#1864ab">FETCH</text></g><g transform="translate(468.62369791666663 729.7721354166665)"><text x="0" y="15" font-family="Cascadia" font-size="16px" fill="#1864ab">(initial state)</text></g><g transform="translate(468.64713541666663 789.6549479166665)"><text x="0" y="15" font-family="Cascadia" font-size="16px" fill="#1864ab">{</text><text x="0" y="34" font-family="Cascadia" font-size="16px" fill="#1864ab"> type: 'FETCH',</text><text x="0" y="53" font-family="Cascadia" font-size="16px" fill="#1864ab"> userId: 1</text><text x="0" y="72" font-family="Cascadia" font-size="16px" fill="#1864ab">}</text></g><g transform="translate(79.83854166666663 889.1627604166665)"><text x="0" y="15" font-family="Cascadia" font-size="16px" fill="#000000">Transitions are always zero-time; they happen instantaneously!</text></g><g stroke-opacity="0.4" fill-opacity="0.4" transform="translate(82.54166666666663 922.1666666666665)"><text x="0" y="15" font-family="Cascadia" font-size="16px" fill="#000000">Promises + async/await can still be modeled as a state machine.</text><text x="0" y="34" font-family="Cascadia" font-size="16px" fill="#000000">Just think of "awaiting" as a finite state!</text></g><g stroke-opacity="0.6" fill-opacity="0.6" transform="translate(106.27213541666663 992.0104166666665)"><text x="0" y="15" font-family="Cascadia" font-size="16px" fill="#000000">{</text><text x="0" y="34" font-family="Cascadia" font-size="16px" fill="#000000"> type: 'FETCH',</text><text x="0" y="53" font-family="Cascadia" font-size="16px" fill="#000000"> userId: 1</text><text x="0" y="72" font-family="Cascadia" font-size="16px" fill="#000000">}</text></g><g transform="translate(301.90104166666663 989.6940104166665)"><text x="0" y="15" font-family="Cascadia" font-size="16px" fill="#000000">Events are distinguished by</text><text x="0" y="34" font-family="Cascadia" font-size="16px" fill="#000000">a finite set of "types"...</text></g><g transform="translate(299.10807291666663 1048.6510416666665)"><text x="0" y="15" font-family="Cascadia" font-size="16px" fill="#000000">...and sometimes carry extra data.</text></g><g transform="translate(173.72916666666663 1004.4869791666665)"><path d="M42.3713674227809 0.18206338253201082 C50.26705083753267 0.3799904049469598, 60.17763524379054 2.912872429669153, 65.58968527690539 4.750738945368058 C71.00173531002022 6.588605461066963, 74.29535372238675 8.457536277743442, 74.84366762146996 11.209262476725439 C75.39198152055317 13.960988675707435, 73.41155428195177 18.824484868097, 68.87956867140467 21.261096139260037 C64.34758306085757 23.697707410423074, 55.46427245180166 25.091084653509444, 47.65175395818739 25.82893010370366 C39.83923546457312 26.566775553897873, 29.241684353526868 26.77461077993126, 22.004457709719055 25.68816884042532 C14.767231065911243 24.60172690091938, 7.6144185310181225 22.024238977657802, 4.228394095340512 19.310278466668017 C0.8423696596629022 16.59631795567823, -0.29900522645389604 12.24699006691273, 1.6883110956533969 9.404405774486612 C3.6756274177606896 6.561821482060495, 8.688867196271996 3.701363757270901, 16.15229202798427 2.2547727121113077 C23.615716859696544 0.8081816669517148, 41.126117651561835 0.8945010367282548, 46.468860085927034 0.7248595035290553 C51.81160252029223 0.5552179703298558, 48.40276198169636 1.1580586700992808, 48.20874663417547 1.2369235129161105 M42.76028527906172 1.1488714850659747 C50.48658972747193 1.3459805483164267, 60.26629388545431 2.4946293095455694, 65.83498052390672 4.248263615043733 C71.40366716235914 6.0018979205418965, 75.97099073809748 8.91616857030344, 76.1724051097762 11.670677318054956 C76.3738194814549 14.425186065806471, 72.28388632822278 18.29429575936166, 67.04346675397898 20.775316101552825 C61.803047179735174 23.25633644374399, 52.7672262666557 25.79017276463018, 44.72988766431337 26.556799371201954 C36.692549061971036 27.323425977773727, 26.026055263472163 26.82727558646678, 18.81943513992501 25.37507574098346 C11.612815016377855 23.922875895500137, 4.118617079612937 20.839163101542535, 1.4901669230304506 17.843600298302032 C-1.1382832335520359 14.84803749506153, 0.4076253759978794 10.256844596374352, 3.04873420043009 7.40169892154044 C5.6898430248623 4.546553246706528, 10.55399749769149 1.6831680527584667, 17.336819869623714 0.7127262492985604 C24.119642241555937 -0.25771555416134595, 39.608574720781846 1.493672424746442, 43.745668432023436 1.5790481007810016 C47.882762143265026 1.6644237768155612, 42.48692937972559 1.3648672549643308, 42.15938213707327 1.2249803055059179" style="stroke: rgb(24, 100, 171); stroke-width: 2; fill: none;"></path></g><g><g transform="translate(289.81510416666663 1061.4010416666665)"><path d="M0.04965038001537314 -0.9265062779188156 C-11.247960570454598 -0.08034745554129274, -54.096092862884205 4.772118841608366, -68.02126016914845 3.896468785405159 C-81.94642747541269 3.020818729201953, -80.7685842225949 -4.527706794937452, -83.50135345757008 -6.180406615138054 M0.0029021575301886315 1.0100461397320033 C-11.387368955388666 1.737503392075499, -53.79085332768659 6.689722365712126, -67.55950774647296 5.12766375400126 C-81.32816216525933 3.5656051422903934, -79.90887220996122 -6.39914495450755, -82.60902435518801 -8.362305530533195" style="stroke: rgb(24, 100, 171); stroke-width: 2; fill: none;"></path></g></g><g><g transform="translate(293.76041666666663 1017.5221354166665)"><path d="M-0.017817977070808455 -0.8915711849927902 C-6.941388196746508 -0.8640982757012049, -35.778647076090174 -0.24527557392915095, -42.71704578697681 -0.40390190780162816 M-0.709633533731103 -0.7803067340701819 C-8.141241876060764 -1.0010524541387957, -36.410878744696575 -2.2701508734871947, -43.610735301747916 -2.3904694237560036" style="stroke: rgb(24, 100, 171); stroke-width: 2; fill: none;"></path></g></g><g transform="translate(17.51822916666663 584.6080729166666)"><text x="0" y="35" font-family="Cascadia" font-size="36px" fill="#000000">3. Events &amp; Transitions</text></g><g transform="translate(654.3203125000025 579.4947916666667)"><text x="0" y="35" font-family="Cascadia" font-size="36px" fill="#000000">4. Actions</text></g><g transform="translate(717.149631076388 715.7603443287035)"><path d="M-1.032799407839775 1.7397841662168503 C17.401214807265198 -0.5041289026509428, 34.359963519440484 0.5358667676676607, 62.30043437249128 -1.5440374165773392 M-0.8472040072083473 0.6153680458664894 C18.56820021691641 -0.43747813596888163, 35.81291199719351 -0.545492481137949, 62.4468635610408 0.7393230572342873 M64.17053248650495 1.962024137377739 C63.354623862087024 14.331674819013863, 62.69146687585045 23.921464050454674, 63.71768262154524 43.29196812985117 M63.76184502161209 0.2094062939286232 C63.06809686442233 14.188480742270317, 62.23787497301913 28.374014236022166, 63.444275050527494 45.63510753241951 M64.63746335274641 46.02764394161875 C46.93514576588251 43.980133764946444, 27.953851738588924 44.09315799971817, 0.6919868737459183 43.744158052183934 M63.50492301500503 45.1730008277076 C44.05090001496782 43.62565277979859, 26.41397753983295 43.77677844927796, -0.8405442610383034 44.93375088302071 M1.0481689721345901 45.01022937176401 C-1.3512507661461135 28.85405823532986, -0.17093241058581066 11.581111586200393, 0.8444951325654984 0.6245440691709518 M-0.4463391676545143 45.60781361190254 C0.11602778168030836 33.29531265664693, 0.5020076725036726 20.896790278051466, 0.7753212079405785 -0.46997150033712387" style="stroke: rgb(0, 0, 0); stroke-width: 2; fill: none;"></path></g><g transform="translate(730.4279875578695 725.7696035879629)"><text x="0" y="18" font-family="Virgil" font-size="20px" fill="#000000">idle</text></g><g transform="translate(1073.8334418402799 713.7843605324076)"><path d="M1.1214874535799026 -0.6791282445192337 C53.39834536518906 -1.2883029817603542, 102.62718386761853 -3.193207824137063, 189.3531977285943 -0.8757763653993607 M0.43094202131032944 0.0023106709122657776 C69.67537357254581 -1.2723389278786885, 139.85189588305863 -0.42731219638759965, 189.4466290896139 -0.8505485877394676 M190.45046869417047 1.4910029619932175 C190.407259428281 18.902882952355647, 191.05204006411475 39.77171789877276, 189.7495566954217 95.02659191522343 M189.83454756190395 0.3620273247361183 C189.85491082454206 33.34359767974177, 191.0092699267912 66.03431262703258, 189.43165807177638 95.7421299326752 M191.55666652818536 94.02532925042851 C122.51907785329976 95.25866631392607, 54.34850883173448 95.27737597350249, -0.1740357130765915 94.38077463540776 M189.07891492297267 94.47759402874453 C146.11987917280456 95.249084452219, 101.4713521506638 95.96702072960852, 0.6615016087889671 94.60283840778811 M-1.6453682631254196 95.68725122842534 C-0.964285873989187 67.74602330282674, 0.34525916614142826 41.706086270782826, -0.6332370489835739 1.0144085139036179 M0.3434874638915062 95.7420500624512 C1.1546441566252104 73.88045433677819, 1.2004980098509184 51.79489773464032, 0.0057072266936302185 -0.5064602717757225" style="stroke: rgb(0, 0, 0); stroke-width: 2; fill: none;"></path></g><g transform="translate(677.786349826388 703.1509693287035)"><path d="M2.291394707188081 0.28457420920095355 C3.2633334214544285 -0.29179233719368813, 5.8702082281796795 -0.08297818351627484, 6.868196718433653 0.27655020133350217 C7.866185208687627 0.6360785861832792, 7.807699496515111 1.5916818912750799, 8.279325648711922 2.4417445182996156 C8.750951800908732 3.2918071453241513, 9.60048849761742 4.28084347177582, 9.697953631614514 5.376925963480716 C9.795418765611608 6.473008455185611, 9.644425527790894 8.14319746305986, 8.86411645269448 9.01823946852899 C8.083807377598067 9.893281473998119, 6.274365463915757 10.676381160270514, 5.016099181036033 10.627177996295497 C3.757832898156309 10.57797483232048, 1.9986013013952224 9.387147561892295, 1.3145187554161368 8.723020484678884 C0.6304362094370514 8.058893407465472, 0.9666588817153612 7.499376749877108, 0.9116039051615203 6.642415533015028 C0.8565489286076795 5.785454316152949, 0.5658644814316587 4.509837015334285, 0.9841888960930918 3.5812531835064085 C1.402513310754525 2.652669351678532, 3.0481379095543035 1.6207837478753628, 3.4215503931301194 1.07091254204777 C3.7949628767059354 0.5210413362201775, 3.30092633853952 0.22236238224956484, 3.2246637975479864 0.28202594854085294 M6.40984917008423 0.0061852707713656585 C7.280699007459514 0.4559061539023878, 9.192054163416346 1.888015661405995, 9.545777767598715 2.5842811462880495 C9.899501371781083 3.280546631170104, 8.504772916931861 3.0693719331421816, 8.532190795178444 4.183778180063693 C8.559608673425027 5.2981844269852045, 10.161268090312726 8.19920467396951, 9.710285037078208 9.27071862781712 C9.25930198384369 10.34223258166473, 7.175230696290338 10.640684695684014, 5.826292475771335 10.612861903149351 C4.477354255252331 10.585039110614689, 2.5844654675832563 9.833621865456877, 1.6166557139641875 9.103781872609147 C0.6488459603451185 8.373941879761418, 0.23513614766980706 7.410113636377369, 0.019433954056920832 6.233821946062976 C-0.1962682395559654 5.057530255748583, -0.10569049342445874 2.8089700771763195, 0.32244255228687013 2.0460317307227864 C0.750575597998199 1.2830933842692533, 1.547559710442947 1.8938635472502166, 2.588232228324894 1.6561918673417786 C3.6289047462068416 1.4185201874333406, 6.132193563403843 0.6094229929477941, 6.566477659578553 0.6200016512721582 C7.000761755753262 0.6305803095965223, 5.180497089462625 1.955107504415245, 5.193936805373156 1.7196638172879632" style="stroke: none; stroke-width: 0; fill: rgb(0, 0, 0);"></path><path d="M5.311984827335767 -0.4172842172682749 C6.490927149387663 -0.4013256725115464, 8.334973692921892 -0.267362472212609, 9.208761746230131 0.647297361398274 C10.08254979953837 1.5619571950091569, 10.58108264062313 3.9247235062929926, 10.554713147185202 5.070674784397023 C10.528343653747275 6.216626062501054, 9.78513815303408 6.777789771159339, 9.050544785602565 7.523005030022457 C8.31595141817105 8.268220288885574, 7.0554897629566575 9.209952473555806, 6.147152942596112 9.541966337575726 C5.238816122235566 9.873980201595646, 4.690097430061163 10.044894838956944, 3.60052386343929 9.515088214141983 C2.510950296817417 8.985281589327021, 0.0724212112139615 7.1620241139702525, -0.39028845713512705 6.363126588685962 C-0.8529981254842156 5.564229063401671, 0.331123002506442 5.506691658875836, 0.8242658533447589 4.721703062436235 C1.3174087041830758 3.936714465996634, 1.6216619416554408 2.5514630410627777, 2.5685686478947742 1.653195010048357 C3.5154753541341077 0.7549269790339362, 5.650304606382132 -0.37732198406239076, 6.505706090780759 -0.6679051236502902 C7.3611075751793855 -0.9584882632381897, 7.727877159970561 -0.29852593844785547, 7.700977554286535 -0.09030382747903953 M6.404405845997222 0.6567988790670656 C7.040437725151927 0.9387988120556818, 7.306561941982426 2.0761921312519136, 8.041912013444433 3.040351657367491 C8.777262084906441 4.004511183483068, 10.749961423105495 5.416404012913863, 10.816506274769267 6.4417560357605295 C10.88305112643304 7.467108058607196, 9.154839195699285 8.364103941097275, 8.44118112342707 9.192463794447493 C7.727523051154854 10.02082364779771, 7.40565559388349 11.138119742054187, 6.534557841135976 11.411915155861838 C5.6634600883884625 11.685710569669489, 4.417978434256252 11.521799839104043, 3.2145946069419877 10.8352362772934 C2.0112107796277234 10.148672715482759, -0.0712534598361999 8.486071831257343, -0.6857451227496112 7.292533784997985 C-1.3002367856630226 6.098995738738628, -0.8912564665502436 4.813480688493187, -0.4723553705384802 3.674007999737256 C-0.053454274526716805 2.534535310981325, 0.8540763810594546 1.2236566028096427, 1.8276614533209692 0.45569765246239946 C2.8012465255824837 -0.3122612978848439, 4.513664933347499 -0.975070911309242, 5.3691550630306075 -0.9337457023462044 C6.224645192713716 -0.8924204933831668, 6.994453075293696 0.6417924662579385, 6.960602231419621 0.703648906240625" style="stroke: rgb(0, 0, 0); stroke-width: 2; fill: none;"></path></g><g><g transform="translate(681.548068576388 708.5962818287035)"><path d="M-0.9264224499464035 -0.13808136284351358 C0.5714797466224695 2.8998199750979743, 4.806861319676795 15.118249326700914, 9.20393363489286 17.886314484477044 C13.601005950108924 20.654379642253172, 22.491702601236724 16.828921875581404, 25.456011441349983 16.47030958381326 M-0.772369891628623 1.3529611947387457 C0.94829122990134 3.9669293294598655, 5.191811023265877 12.895391275266753, 9.479230688125648 15.490371084436774 C13.766650352985419 18.085350893606794, 21.820701822934176 16.75035243317511, 24.952148097530007 16.922840049758864" style="stroke: rgb(0, 0, 0); stroke-width: 2; fill: none;"></path></g><g transform="translate(681.548068576388 708.5962818287035)"><path d="M7.802676738026372 22.81074601276815 C14.69280915574807 20.069869339702684, 19.927161492191377 20.271316458401177, 24.95635615116687 16.08219414093209 M7.8877525003187055 22.83371766160142 C12.186788391191577 22.14062178044032, 18.73955512404331 20.007870902721933, 25.63097912486072 17.01570830898629" style="stroke: rgb(0, 0, 0); stroke-width: 2; fill: none;"></path></g><g transform="translate(681.548068576388 708.5962818287035)"><path d="M7.468596980592489 10.357899908501388 C14.429584705645873 11.580147550820064, 19.77018889442319 15.742139826674714, 24.95635615116687 16.08219414093209 M7.553672742884822 10.380871557334656 C11.896842726699454 13.289528419959776, 18.546302040995798 14.761000214703866, 25.63097912486072 17.01570830898629" style="stroke: rgb(0, 0, 0); stroke-width: 2; fill: none;"></path></g></g><g><g transform="translate(781.343352141203 734.6764322916665)"><path d="M-0.13808136284351358 -0.5254658192396163 C47.268406009048554 -0.4853331259371581, 236.74201165124938 -0.9145620840200498, 284.0978306881805 -0.6856262901316541 M-0.19343772388994696 -0.772369891628623 C47.24108292122217 -0.6181055927010122, 237.6287982297705 0.1503697095653697, 284.6113523984422 0.08084975251153526" style="stroke: rgb(0, 0, 0); stroke-width: 2; fill: none;"></path></g><g transform="translate(781.343352141203 734.6764322916665)"><path d="M255.52740646600006 11.692612053894972 C262.44826757264804 8.783222313503423, 272.6652084577969 4.783589018122699, 283.6881436104049 -0.13055759600206795 M255.55263424365995 9.462667474591708 C264.25037917327853 8.680348251177078, 271.30503914012723 5.812065834666029, 284.7133415857424 -0.799090079281773" style="stroke: rgb(0, 0, 0); stroke-width: 2; fill: none;"></path></g><g transform="translate(781.343352141203 734.6764322916665)"><path d="M255.5622697178698 -8.828566931229354 C262.3152354772059 -6.1649465633030704, 272.52270835596937 -4.5915296339881975, 283.6881436104049 -0.13055759600206795 M255.5874974955297 -11.058511510532618 C264.4279726960237 -6.550641680951042, 271.47364512589445 -4.128687384921078, 284.7133415857424 -0.799090079281773" style="stroke: rgb(0, 0, 0); stroke-width: 2; fill: none;"></path></g></g><g transform="translate(807.8610026041656 685.2742332175902)"><text x="0" y="14" font-family="Virgil" font-size="16px" fill="#000000">FETCH</text><text x="0" y="34" font-family="Virgil" font-size="16px" fill="#000000">do /</text></g><g transform="translate(850.2915219907413 704.8844039351842)"><text x="0" y="14" font-family="Virgil" font-size="16px" fill="#c92a2a">fetchUser()</text></g><g transform="translate(1085.4674117476866 722.9617332175928)"><text x="0" y="18" font-family="Virgil" font-size="20px" fill="#000000">loading</text></g><g transform="translate(1150.2194733796298 755.8930844907406)"><text x="0" y="14" font-family="Virgil" font-size="16px" fill="#c92a2a">showSpinner()</text></g><g transform="translate(1087.3619791666652 755.4244791666665)"><text x="0" y="14" font-family="Virgil" font-size="16px" fill="#000000">entry /</text><text x="0" y="34" font-family="Virgil" font-size="16px" fill="#000000">exit /</text></g><g transform="translate(1143.451099537037 775.9777199074052)"><text x="0" y="14" font-family="Virgil" font-size="16px" fill="#c92a2a">hideSpinner()</text></g><g><g transform="translate(943.9971064814815 776.3304398148148)"><path d="M1.1715261429548265 -0.46155342757701867 C-6.866037968684129 -8.927230602981128, -39.783073075060514 -43.56262750268716, -47.83048520916041 -51.80219689000533 M-0.29267726875841626 -0.22444023750722408 C-7.982223518554264 -8.879908384190477, -39.622300600428844 -43.24450455748278, -47.73968735010262 -51.41874231170998" style="stroke: rgb(201, 42, 42); stroke-width: 2; fill: none;"></path></g></g><g><g transform="translate(915.6912615740741 874.3917824074074)"><path d="M-0.2727079421281815 0.11492553055286403 C27.931053268136793 -18.49440866042802, 140.8700787267199 -92.2633569622849, 168.70500753952393 -110.78134899017985 M-0.030933809056878037 0.07410301543772224 C27.962887194203553 -18.028963492037146, 140.5791010850033 -90.70510026425764, 168.7413804165108 -109.06620395740146" style="stroke: rgb(201, 42, 42); stroke-width: 2; fill: none;"></path></g></g><g><g transform="translate(1124.4224537037037 872.2288773148149)"><path d="M-0.57791328728199 1.1477096110582352 C-3.1424070894350127 -11.560729472983054, -12.546097725445787 -64.0238817709097, -14.709306737559746 -77.11422087936505 M-0.5793608520179987 -0.2676877608150243 C-2.9679432681579905 -13.20761260983663, -13.42327405471579 -65.41247196333197, -15.955844431671212 -78.45525333396002" style="stroke: rgb(201, 42, 42); stroke-width: 2; fill: none;"></path></g></g><g transform="translate(715.0865162037023 784.5088252314814)"><text x="0" y="19" font-family="Cascadia" font-size="20px" fill="#c92a2a">Transition ("do") actions</text></g><g transform="translate(715.5295138888896 810.8388310185189)"><text x="0" y="15" font-family="Cascadia" font-size="16px" fill="#000000">are executed due to</text><text x="0" y="34" font-family="Cascadia" font-size="16px" fill="#000000">transitions.</text></g><g transform="translate(859.2984664351861 877.2934027777786)"><text x="0" y="19" font-family="Cascadia" font-size="20px" fill="#c92a2a">Entry actions</text></g><g transform="translate(859.6319444444439 901.9738136574026)"><text x="0" y="15" font-family="Cascadia" font-size="16px" fill="#000000">are executed whenever</text><text x="0" y="34" font-family="Cascadia" font-size="16px" fill="#000000">a state is entered.</text></g><g transform="translate(1082.1306423611118 877.6044560185185)"><text x="0" y="19" font-family="Cascadia" font-size="20px" fill="#c92a2a">Exit actions</text></g><g transform="translate(1083.2900752314831 904.9288194444453)"><text x="0" y="15" font-family="Cascadia" font-size="16px" fill="#000000">are executed whenever</text><text x="0" y="34" font-family="Cascadia" font-size="16px" fill="#000000">a state is exited.</text></g><g transform="translate(715.9654224537026 635.4385127314818)"><text x="0" y="15" font-family="Cascadia" font-size="16px" fill="#000000">Actions are side-effects that are executed due to events.</text></g><g stroke-opacity="0.4" fill-opacity="0.4" transform="translate(717.3192997685196 987.7813946759247)"><text x="0" y="15" font-family="Cascadia" font-size="16px" fill="#000000">These are characteristic of</text><text x="0" y="34" font-family="Cascadia" font-size="16px" fill="#000000">Mealy machines!</text></g><g stroke-opacity="0.4" fill-opacity="0.4" transform="translate(1015.2214988425931 986.4069733796287)"><text x="0" y="15" font-family="Cascadia" font-size="16px" fill="#000000">These are characteristic of</text><text x="0" y="34" font-family="Cascadia" font-size="16px" fill="#000000">Moore machines!</text></g><g><g stroke-opacity="0.5" fill-opacity="0.5" transform="translate(1027.572193287037 981.3423032407409)"><path d="M0.28614082038402566 0.30354075729846963 C-4.233659875576858 -5.518302852688022, -22.421346641506577 -29.83597657470796, -27.2218937974284 -35.97018895910851 M1.1855457832664253 -0.2794959463924169 C-3.2982086389861154 -6.101661380929536, -23.321277620892552 -29.58428251496348, -28.226617660210522 -35.555769314857045" style="stroke: rgb(0, 0, 0); stroke-width: 1; fill: none;"></path></g></g><g><g stroke-opacity="0.5" fill-opacity="0.5" transform="translate(1055.064236111111 981.4074074074074)"><path d="M0.8541316956281662 0.191079667210579 C5.332204564964309 -5.681608187085294, 22.599220068035194 -29.688913769155256, 26.9582652274104 -35.94818914786519 M1.3301864578574896 -1.6094927611202001 C5.8393477151597875 -7.594605101099514, 21.059880538386775 -29.5873494281913, 25.546577272373643 -35.37746672727706" style="stroke: rgb(0, 0, 0); stroke-width: 1; fill: none;"></path></g></g><g><g stroke-opacity="0.5" fill-opacity="0.5" transform="translate(743.0778356481483 982.1235532407409)"><path d="M-0.5429152518510818 0.9378778964281083 C-0.46407104130883 -20.203756815084727, 0.6239650072505581 -105.7377439910616, 0.6735276015818725 -127.1322748207385 M-0.444172746911645 -0.3826661720126867 C-0.3931100061913231 -21.533630657905256, -0.12122361440454829 -106.02769990470962, -0.08920010403090606 -127.56135245517738" style="stroke: rgb(0, 0, 0); stroke-width: 1; fill: none;"></path></g></g></svg>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment