{"version":3,"file":"app-fcd5be8e55d04fde29f1.js","mappings":";6GAEA,MAyBMA,EAAY,CAACC,EAAOC,KACxB,GAAuB,iBAAVD,IAAsBE,MAAMC,QAAQH,GAC/C,MAAM,IAAII,UAAU,gDAEtBH,EAAUI,OAAOC,OAAO,CACtBC,YAAY,GACXN,GAOH,GAJED,EADEE,MAAMC,QAAQH,GACRA,EAAMQ,KAAIC,GAAKA,EAAEC,SAAQC,QAAOF,GAAKA,EAAEG,SAAQC,KAAK,KAEpDb,EAAMU,OAEK,IAAjBV,EAAMY,OACR,MAAO,GAET,GAAqB,IAAjBZ,EAAMY,OACR,OAAOX,EAAQM,WAAaP,EAAMc,cAAgBd,EAAMe,cAO1D,OALqBf,IAAUA,EAAMe,gBAEnCf,EA9CsBgB,KACxB,IAAIC,GAAkB,EAClBC,GAAkB,EAClBC,GAAsB,EAC1B,IAAK,IAAIC,EAAI,EAAGA,EAAIJ,EAAOJ,OAAQQ,IAAK,CACtC,MAAMC,EAAYL,EAAOI,GACrBH,GAAmB,WAAWK,KAAKD,IAAcA,EAAUP,gBAAkBO,GAC/EL,EAASA,EAAOO,MAAM,EAAGH,GAAK,IAAMJ,EAAOO,MAAMH,GACjDH,GAAkB,EAClBE,EAAsBD,EACtBA,GAAkB,EAClBE,KACSF,GAAmBC,GAAuB,WAAWG,KAAKD,IAAcA,EAAUN,gBAAkBM,GAC7GL,EAASA,EAAOO,MAAM,EAAGH,EAAI,GAAK,IAAMJ,EAAOO,MAAMH,EAAI,GACzDD,EAAsBD,EACtBA,GAAkB,EAClBD,GAAkB,IAElBA,EAAkBI,EAAUN,gBAAkBM,GAAaA,EAAUP,gBAAkBO,EACvFF,EAAsBD,EACtBA,EAAkBG,EAAUP,gBAAkBO,GAAaA,EAAUN,gBAAkBM,EAE3F,CACA,OAAOL,CAAM,EAuBHQ,CAAkBxB,IAE5BA,EAAQA,EAAMyB,QAAQ,YAAa,IAAIV,cAAcU,QAAQ,mBAAmB,CAACC,EAAGC,IAAOA,EAAGb,gBAAeW,QAAQ,cAAcG,GAAKA,EAAEd,gBAhBtHL,EAiBDT,EAjBMC,EAAQM,WAAaE,EAAEoB,OAAO,GAAGf,cAAgBL,EAAEc,MAAM,GAAKd,EAAnEA,KAiBK,EAE3BqB,EAAOC,QAAUhC,EAEjB+B,EAAOC,QAAP,QAAyBhC,kBClDzB+B,EAAOC,QALP,SAA2BC,EAAGC,IAC3B,MAAQA,GAAKA,EAAID,EAAEpB,UAAYqB,EAAID,EAAEpB,QACtC,IAAK,IAAIsB,EAAI,EAAGC,EAAIjC,MAAM+B,GAAIC,EAAID,EAAGC,IAAKC,EAAED,GAAKF,EAAEE,GACnD,OAAOC,CACT,EACoCL,EAAOC,QAAQK,YAAa,EAAMN,EAAOC,QAAiB,QAAID,EAAOC,mJCLzG,IAAAM,EAAAC,EAAA,MAEA,MAAMC,GAAU,EAAAF,EAAAG,iBAAhB,YACA,MAAM,SAAEC,EAAF,SAAYC,GAAaH,EAA/B,0BAEA,MAAMI,GAAgB,EAAAN,EAAAG,iBAAtB,kBACA,MAAQC,SAAUG,EAAgBF,SAAUG,GAAmBF,EAA/D,wECJAZ,EAAQK,YAAa,EACrBL,EAAA,aAAkB,GAYlB,SAAiCe,GAC/B,GAAIA,GAAOA,EAAIV,WACb,OAAOU,EAEP,IAAIC,EAAS,CAAC,EACd,GAAW,MAAPD,EACF,IAAK,IAAIE,KAAOF,EACd,GAAIzC,OAAO4C,UAAUC,eAAeC,KAAKL,EAAKE,GAAM,CAClD,IAAII,EAAO/C,OAAOgD,gBAAkBhD,OAAOiD,yBAA2BjD,OAAOiD,yBAAyBR,EAAKE,GAAO,CAAC,EAC/GI,EAAKG,KAAOH,EAAKI,IACnBnD,OAAOgD,eAAeN,EAAQC,EAAKI,GAEnCL,EAAOC,GAAOF,EAAIE,EAEtB,CAGJD,EAAOU,QAAUX,CAGrB,CA/BgBY,CAAwB,EAAQ,OAAhD,IACIC,EAAYC,EAAuB,EAAQ,OAC3CC,EAAeD,EAAuB,EAAQ,MAC9CvB,EAASuB,EAAuB,EAAQ,OACxCE,EAAcF,EAAuB,EAAQ,MAChC,EAAQ,MACzB,SAASA,EAAuBd,GAC9B,OAAOA,GAAOA,EAAIV,WAAaU,EAAM,CACnCW,QAASX,EAEb,CAsBA,SAASiB,IAYP,OAXAA,EAAW1D,OAAOC,QAAU,SAAU0D,GACpC,IAAK,IAAI5C,EAAI,EAAGA,EAAI6C,UAAUrD,OAAQQ,IAAK,CACzC,IAAI8C,EAASD,UAAU7C,GACvB,IAAK,IAAI4B,KAAOkB,EACV7D,OAAO4C,UAAUC,eAAeC,KAAKe,EAAQlB,KAC/CgB,EAAOhB,GAAOkB,EAAOlB,GAG3B,CACA,OAAOgB,CACT,EACOD,EAASI,MAAMC,KAAMH,UAC9B,CAMA,IAAII,EAAW,SAAkBC,EAAMC,GACrC,OAAOD,GAAQC,GAAWA,EAAQC,MAAM,KAAKC,SAAQ,SAAUC,GAC7D,OAAO,EAAIf,EAAUF,SAASa,EAAMI,EACtC,GACF,EACIC,EAAc,SAAqBL,EAAMC,GAC3C,OAAOD,GAAQC,GAAWA,EAAQC,MAAM,KAAKC,SAAQ,SAAUC,GAC7D,OAAO,EAAIb,EAAaJ,SAASa,EAAMI,EACzC,GACF,EA8DIE,EACJ,SAAUC,GA7EV,IAAwBC,EAAUC,EA+EhC,SAASH,IAEP,IADA,IAAII,EACKC,EAAOhB,UAAUrD,OAAQsE,EAAO,IAAIhF,MAAM+E,GAAOE,EAAO,EAAGA,EAAOF,EAAME,IAC/ED,EAAKC,GAAQlB,UAAUkB,GAsEzB,OApEAH,EAAQH,EAAiB1B,KAAKgB,MAAMU,EAAkB,CAACT,MAAMgB,OAAOF,KAAUd,MACxEiB,QAAU,SAAUf,EAAMgB,GAC9B,IACEC,EADwBP,EAAMQ,cAAcF,EAAY,SAAW,SACnCC,UAClCP,EAAMS,cAAcnB,EAAM,QAC1BD,EAASC,EAAMiB,GACXP,EAAMU,MAAML,SACdL,EAAMU,MAAML,QAAQf,EAAMgB,EAE9B,EACAN,EAAMW,WAAa,SAAUrB,EAAMgB,GACjC,IACEM,EADyBZ,EAAMQ,cAAcF,EAAY,SAAW,SAC7BM,gBACzCZ,EAAMa,kBAAkBvB,EAAMsB,GAC1BZ,EAAMU,MAAMC,YACdX,EAAMU,MAAMC,WAAWrB,EAAMgB,EAEjC,EACAN,EAAMc,UAAY,SAAUxB,EAAMgB,GAChC,IAAIS,EAAkBf,EAAMQ,cAAc,UAAUQ,cAChDC,EAAiBjB,EAAMQ,cAAc,SAASQ,cAC9CA,EAAgBV,EAAYS,EAAkB,IAAME,EAAiBA,EACzEjB,EAAMS,cAAcnB,EAAMgB,EAAY,SAAW,SACjDjB,EAASC,EAAM0B,GACXhB,EAAMU,MAAMI,WACdd,EAAMU,MAAMI,UAAUxB,EAAMgB,EAEhC,EACAN,EAAMkB,OAAS,SAAU5B,GACvB,IACEiB,EADyBP,EAAMQ,cAAc,QACZD,UACnCP,EAAMS,cAAcnB,EAAM,UAC1BU,EAAMS,cAAcnB,EAAM,SAC1BD,EAASC,EAAMiB,GACXP,EAAMU,MAAMQ,QACdlB,EAAMU,MAAMQ,OAAO5B,EAEvB,EACAU,EAAMmB,UAAY,SAAU7B,GAC1B,IACEsB,EADyBZ,EAAMQ,cAAc,QACNI,gBACzCZ,EAAMa,kBAAkBvB,EAAMsB,GAC1BZ,EAAMU,MAAMS,WACdnB,EAAMU,MAAMS,UAAU7B,EAE1B,EACAU,EAAMoB,SAAW,SAAU9B,GACzB,IACE0B,EADyBhB,EAAMQ,cAAc,QACRQ,cACvChB,EAAMS,cAAcnB,EAAM,QAC1BD,EAASC,EAAM0B,GACXhB,EAAMU,MAAMU,UACdpB,EAAMU,MAAMU,SAAS9B,EAEzB,EACAU,EAAMQ,cAAgB,SAAUa,GAC9B,IAAIC,EAAatB,EAAMU,MAAMY,WACzBC,EAA2C,iBAAfD,EAE5Bf,EAAYgB,GADHA,GAAsBD,EAAaA,EAAa,IAAM,IACrBD,EAAOC,EAAWD,GAGhE,MAAO,CACLd,UAAWA,EACXK,gBAJoBW,EAAqBhB,EAAY,UAAYe,EAAWD,EAAO,UAKnFL,cAJkBO,EAAqBhB,EAAY,QAAUe,EAAWD,EAAO,QAMnF,EACOrB,CACT,CAzJgCD,EA8EFF,GA9ERC,EA8EPF,GA7EN3B,UAAY5C,OAAOmG,OAAOzB,EAAW9B,WAC9C6B,EAAS7B,UAAUwD,YAAc3B,EACjCA,EAAS4B,UAAY3B,EAuJrB,IAAI4B,EAAS/B,EAAc3B,UAiC3B,OAhCA0D,EAAOlB,cAAgB,SAAuBnB,EAAM+B,GAClD,IAAIO,EAAuBxC,KAAKoB,cAAca,GAC5Cd,EAAYqB,EAAqBrB,UACjCK,EAAkBgB,EAAqBhB,gBACvCI,EAAgBY,EAAqBZ,cACvCT,GAAaZ,EAAYL,EAAMiB,GAC/BK,GAAmBjB,EAAYL,EAAMsB,GACrCI,GAAiBrB,EAAYL,EAAM0B,EACrC,EACAW,EAAOd,kBAAoB,SAA2BvB,EAAMiB,GAGtDA,IAEFjB,GAAQA,EAAKuC,UAGbxC,EAASC,EAAMiB,GAEnB,EACAoB,EAAOG,OAAS,WACd,IAAIpB,EAAQ3B,EAAS,CAAC,EAAGK,KAAKsB,OAE9B,cADOA,EAAMY,WACNjE,EAAOoB,QAAQsD,cAAcjD,EAAYL,QAASM,EAAS,CAAC,EAAG2B,EAAO,CAC3EL,QAASjB,KAAKiB,QACdS,UAAW1B,KAAK0B,UAChBH,WAAYvB,KAAKuB,WACjBO,OAAQ9B,KAAK8B,OACbC,UAAW/B,KAAK+B,UAChBC,SAAUhC,KAAKgC,WAEnB,EACOxB,CACT,CA/GA,CA+GEvC,EAAOoB,QAAQuD,WACjBpC,EAAcqC,aAAe,CAC3BX,WAAY,IAEd1B,EAAcsC,UAqGT,CAAC,EACN,IAAIC,EAAWvC,EACf7C,EAAA,QAAkBoF,EAClBrF,EAAOC,QAAUA,EAAiB,oxBClV3B,MAKMqF,EAA0BA,CACrCC,EACAC,EACArH,KAEA,MAAMsH,EAAYF,EAAY7G,KAAI0B,IAAKsF,EAAAA,EAAAA,IAAStF,EAAGoF,EAAQrH,KAC3D,MAAO,IAAMsH,EAAU9C,SAAQgD,GAAKA,KAAI,EAwC7BC,EAAW,SACtBC,EACAC,EACA3H,QADuC,IAAvC2H,IAAAA,EAA0C,CAAC,GAI3C,MAAMC,EAAO,YAAW5H,SAAAA,EAAS4H,KAAO,IAAI5H,aAAO,EAAPA,EAAS4H,OAAS,IAExDC,GAAIC,EAAAA,EAAAA,KACR,IAAMC,EAAiBL,EAASC,EAAWK,EAAAA,EAAA,GACtChI,GAAO,IACV4H,OACAK,qBAAqB,OAczB,OAVAC,EAAAA,EAAAA,YAAU,MACRC,EAAAA,EAAAA,KAAY,KACNnI,SAAAA,EAASoI,OAAOC,QAAQC,IAAIT,EAAEU,gBAClC,IAAK,IAAIxF,KAAO8E,EAAEU,eACXV,EAAQ9E,KAAS2E,EAAQ3E,KAAO8E,EAAQ9E,GAAO2E,EAAQ3E,GAC9D,GACA,GAED,CAAC2E,IAEGG,CAET,EAMaW,EAAW,SACtBC,EACAd,EACA3H,GAD4C,YAAL,IAAvC2H,IAAAA,EAA0C,CAAC,IAExCe,EAAAA,EAAAA,WACH,IAAMC,EACJF,IACAd,EAAWK,EAAAA,EAAA,GAENhI,GAAO,IACV4H,KAAM,YAAW5H,SAAAA,EAAS4H,KAAO,IAAI5H,aAAO,EAAPA,EAAS4H,OAAS,SAG3D,EAAG,EAiBQe,EAAsB,SACjCC,EACAjB,EACA3H,GAD4C,YAAL,IAAvC2H,IAAAA,EAA0C,CAAC,GAExCI,EAAiBa,EAAQjB,EAAa3H,EAAQ,EA+BtC+H,EAAmB,SAC9B9D,EACA0D,EACA3H,QADuC,IAAvC2H,IAAAA,EAA0C,CAAC,GAI3C,MAAMkB,EAAczI,OAAO0I,0BAA0B7E,GAC/C8E,EAAYf,EAAA,GAAQL,GAE1BvH,OAAO4I,QAAQH,GAAarE,SAAQyE,IAAkB,IAAhBlG,EAAKI,GAAK8F,EAC1ClG,KAAOgG,IAGP5F,EAAKG,IACPyF,EAAahG,GAAyBmG,EAAAA,GAGpC/F,EAAKI,IACPwF,EAAahG,IAAyB,EAGpCoG,EAA6BpG,KAAQqG,EAAAA,EAAAA,IAAWjG,EAAKkG,OACvDN,EAAahG,GAAyBuG,EAAAA,GAAWC,IAInDR,EAAahG,IAAyB,EAAI,IAGxC/C,SAAAA,EAASoI,OACXC,QAAQC,IAAIO,EAAazI,OAAOoJ,KAAKvF,GAAS8E,GAIhD,MAAMlB,GAAK7H,SAAAA,EAASyJ,QAAUC,EAAAA,GAAiBJ,EAAAA,IAAYrF,EAAQ8E,EAAqB/I,GAExF,GAAIA,SAAAA,EAASiI,oBAAqB,CAChC,MAAM0B,EAAe,IACrBC,EAAAA,EAAAA,IAAiB/B,EAAG,CAClB,kBAAIU,GACF,OAAIoB,EAAahJ,OAAS,GAC1BgJ,EAAaE,KAAI3F,MAAjByF,GAAYG,EAAAA,EAAAA,GAAS1J,OAAO4I,QAAQ/E,GAAQvD,QAAOuB,IAAC,IAAA8H,EAAA,OAAuB,KAAf,QAAJA,EAAA9H,EAAE,UAAE,IAAA8H,OAAA,EAAJA,EAAMC,SAAkB,IAAEzJ,KAAI0B,GAAKA,EAAE,OADzD0H,CAGtC,GAEJ,CAEoB,IAADM,EAAfC,EAAAA,KACFN,EAAAA,EAAAA,IAAiB/B,EAAG,CAClBsC,UAAWA,KAAO,IAADC,EAAAC,EACf,MAAMb,EAAOpJ,OAAOoJ,KAAKpJ,OAAO0I,0BAA0B7E,IAC1DoE,QAAQC,IAAI,UAAuB,QAAvB8B,EAAUpK,aAAO,EAAPA,EAAS4H,YAAI,IAAAwC,EAAAA,EAAI,gCAAiC,gBACxE/B,QAAQC,IAAIT,GACZQ,QAAQC,IAAI,eAAgBS,IAC5BuB,EAAAA,EAAAA,IAAM,oBACNjC,QAAQC,IAAI,oBAAoBkB,EAAK5I,KAAK,QAC1CyH,QAAQC,IAAI,oBAAoBkB,EAAK9I,QAAO6J,IAAKC,EAAAA,EAAAA,IAAiB3C,EAAG0C,KAAI3J,KAAK,QAC9EyH,QAAQC,IAAI,oBAAoBkB,EAAK9I,QAAO6J,KAAMC,EAAAA,EAAAA,IAAiB3C,EAAG0C,KAAI3J,KAAK,QAC/EyH,QAAQC,IAAI,oBAAoBkB,EAAK9I,QAAO6J,IAAKE,EAAAA,EAAAA,IAAe5C,EAAG0C,KAAI3J,KAAK,QAC5EyH,QAAQC,IAAI,oBAAoBkB,EAAK9I,QAAO6J,IAAKG,EAAAA,EAAAA,IAAS7C,EAAE0C,MAAK3J,KAAK,QACtEyH,QAAQC,IAAI,oBAAoBkB,EAAK9I,QAAO6J,GAAKI,EAAO9C,EAAE0C,MAAK3J,KAAK,QACpEyH,QAAQC,IAAI,oBAAqC,QAArC+B,EAAoBxC,EAAGU,sBAAc,IAAA8B,OAAA,EAAjBA,EAAmBzJ,KAAK,QACxDyH,QAAQC,IAAI,oBAAoBkB,EAAK9I,QAAO6J,IAAC,IAAAK,EAAA,OAAwD,KAAf,QAArCA,EAAAxK,OAAOiD,yBAAyBwE,EAAG0C,UAAE,IAAAK,OAAA,EAArCA,EAAuCZ,SAAkB,IAAEpJ,KAAK,SACjHiK,EAAAA,EAAAA,KAAU,EAEZC,OAAqB,QAAfb,EAAEjK,aAAO,EAAPA,EAAS4H,YAAI,IAAAqC,EAAAA,EAAI,qBAI7B,OAAOpC,CAET,EAEMsB,EAAgC4B,GAAoB,aAANA,GAAoB,SAAS1J,KAAK0J,GAEzEJ,EAAUK,IAA+B,KAAnBA,aAAE,EAAFA,EAAIC,0CCzLvCpJ,EAAOC,QA5BS,SAASoJ,EAAWC,EAAQnJ,EAAGoJ,EAAG3G,EAAG+C,EAAGvF,EAAGoJ,GAOzD,IAAKH,EAAW,CACd,IAAII,EACJ,QAAeC,IAAXJ,EACFG,EAAQ,IAAIE,MACV,qIAGG,CACL,IAAIvG,EAAO,CAACjD,EAAGoJ,EAAG3G,EAAG+C,EAAGvF,EAAGoJ,GACvBI,EAAW,GACfH,EAAQ,IAAIE,MACVL,EAAO3J,QAAQ,OAAO,WAAa,OAAOyD,EAAKwG,IAAa,MAExD7D,KAAO,qBACf,CAGA,MADA0D,EAAMI,YAAc,EACdJ,CACR,CACF,mBC9CAzJ,EAAOC,QAAU,SAAU6J,GACzB,MAAqB,iBAAPA,EAAyB,OAAPA,EAA4B,mBAAPA,CACvD,wFCFA,IAAMC,EAAUvJ,EAAQ,MAExBP,EAAQ+J,sBAAwB,SAAC7J,EAAGhC,UACnCA,GAAA,EAAA8L,EAAAtI,SAAA,GAAexD,IACA+L,QACfH,EAAQI,KAAKhM,EACb,uBCND,IAAIiM,EAAW,EAAQ,KACvBpK,EAAOC,QAAU,SAAU6J,GACzB,IAAKM,EAASN,GAAK,MAAMxL,UAAUwL,EAAK,sBACxC,OAAOA,CACT,uBCJA,IAAIM,EAAW,EAAQ,KACnBC,EAAW,iBAEXC,EAAKF,EAASC,IAAaD,EAASC,EAASpF,eACjDjF,EAAOC,QAAU,SAAU6J,GACzB,OAAOQ,EAAKD,EAASpF,cAAc6E,GAAM,CAAC,CAC5C,kCCJA7J,EAAQK,YAAa,EACrBL,EAAA,QAEA,SAAkBsK,EAAS9G,GACzB,OAAI8G,EAAQC,YAAoB/G,GAAa8G,EAAQC,UAAUC,SAAShH,IAA0H,KAAlG,KAAO8G,EAAQ9G,UAAUiH,SAAWH,EAAQ9G,WAAa,KAAKkH,QAAQ,IAAMlH,EAAY,IAC1L,EAEAzD,EAAOC,QAAUA,EAAiB,0CCPlCA,EAAQK,YAAa,EACrBL,EAAA,QAAkBA,EAAQ2K,QAAU3K,EAAQ4K,QAAU5K,EAAQ6K,SAAW7K,EAAQ8K,OAAS9K,EAAQ+K,eAAY,EAC9G,IAAIC,EAUJ,SAAiCjK,GAC/B,GAAIA,GAAOA,EAAIV,WACb,OAAOU,EAEP,IAAIC,EAAS,CAAC,EACd,GAAW,MAAPD,EACF,IAAK,IAAIE,KAAOF,EACd,GAAIzC,OAAO4C,UAAUC,eAAeC,KAAKL,EAAKE,GAAM,CAClD,IAAII,EAAO/C,OAAOgD,gBAAkBhD,OAAOiD,yBAA2BjD,OAAOiD,yBAAyBR,EAAKE,GAAO,CAAC,EAC/GI,EAAKG,KAAOH,EAAKI,IACnBnD,OAAOgD,eAAeN,EAAQC,EAAKI,GAEnCL,EAAOC,GAAOF,EAAIE,EAEtB,CAIJ,OADAD,EAAOU,QAAUX,EACVC,CAEX,CA9BgBW,CAAwB,EAAQ,OAC5CrB,EAASuB,EAAuB,EAAQ,OACxCoJ,EAAYpJ,EAAuB,EAAQ,MAC3CqJ,EAAyB,EAAQ,MACpB,EAAQ,MACzB,SAASrJ,EAAuBd,GAC9B,OAAOA,GAAOA,EAAIV,WAAaU,EAAM,CACnCW,QAASX,EAEb,CAuCA,IAAIgK,EAAY,YAChB/K,EAAQ+K,UAAYA,EACpB,IAAID,EAAS,SACb9K,EAAQ8K,OAASA,EACjB,IAAID,EAAW,WACf7K,EAAQ6K,SAAWA,EACnB,IAAID,EAAU,UACd5K,EAAQ4K,QAAUA,EAClB,IAAID,EAAU,UA2Fd3K,EAAQ2K,QAAUA,EAClB,IAAIQ,EACJ,SAAUrI,GA1GV,IAAwBC,EAAUC,EA4GhC,SAASmI,EAAWxH,EAAOyH,GACzB,IAAInI,EACJA,EAAQH,EAAiB1B,KAAKiB,KAAMsB,EAAOyH,IAAY/I,KACvD,IAGIgJ,EAHAC,EAAcF,EAAQG,gBAEtBC,EAASF,IAAgBA,EAAYG,WAAa9H,EAAM+H,MAAQ/H,EAAM6H,OAqB1E,OAnBAvI,EAAM0I,aAAe,KACjBhI,EAAMiI,GACJJ,GACFH,EAAgBP,EAChB7H,EAAM0I,aAAed,GAErBQ,EAAgBT,EAIhBS,EADE1H,EAAMkI,eAAiBlI,EAAMmI,aACff,EAEAD,EAGpB7H,EAAM8I,MAAQ,CACZC,OAAQX,GAEVpI,EAAMgJ,aAAe,KACdhJ,CACT,CAvIgCD,EA2GLF,GA3GLC,EA2GPoI,GA1GNjK,UAAY5C,OAAOmG,OAAOzB,EAAW9B,WAC9C6B,EAAS7B,UAAUwD,YAAc3B,EACjCA,EAAS4B,UAAY3B,EAqIrB,IAAI4B,EAASuG,EAAWjK,UAwNxB,OAvNA0D,EAAOsH,gBAAkB,WACvB,MAAO,CACLX,gBAAiB,KAErB,EACAJ,EAAWgB,yBAA2B,SAAkChF,EAAMiF,GAE5E,OADajF,EAAKyE,IACJQ,EAAUJ,SAAWjB,EAC1B,CACLiB,OAAQlB,GAGL,IACT,EAiBAlG,EAAOyH,kBAAoB,WACzBhK,KAAKiK,cAAa,EAAMjK,KAAKsJ,aAC/B,EACA/G,EAAO2H,mBAAqB,SAA4BC,GACtD,IAAIC,EAAa,KACjB,GAAID,IAAcnK,KAAKsB,MAAO,CAC5B,IAAIqI,EAAS3J,KAAK0J,MAAMC,OACpB3J,KAAKsB,MAAMiI,GACTI,IAAWnB,GAAYmB,IAAWpB,IACpC6B,EAAa5B,GAGXmB,IAAWnB,GAAYmB,IAAWpB,IACpC6B,EAAa9B,EAGnB,CACAtI,KAAKiK,cAAa,EAAOG,EAC3B,EACA7H,EAAO8H,qBAAuB,WAC5BrK,KAAKsK,oBACP,EACA/H,EAAOgI,YAAc,WACnB,IACIC,EAAMnB,EAAOF,EADbsB,EAAUzK,KAAKsB,MAAMmJ,QASzB,OAPAD,EAAOnB,EAAQF,EAASsB,EACT,MAAXA,GAAsC,iBAAZA,IAC5BD,EAAOC,EAAQD,KACfnB,EAAQoB,EAAQpB,MAEhBF,OAA4B/B,IAAnBqD,EAAQtB,OAAuBsB,EAAQtB,OAASE,GAEpD,CACLmB,KAAMA,EACNnB,MAAOA,EACPF,OAAQA,EAEZ,EACA5G,EAAO0H,aAAe,SAAsBS,EAAUN,GAIpD,QAHiB,IAAbM,IACFA,GAAW,GAEM,OAAfN,EAAqB,CAEvBpK,KAAKsK,qBACL,IAAIpK,EAAO0I,EAAUvJ,QAAQsL,YAAY3K,MACrCoK,IAAe5B,EACjBxI,KAAK4K,aAAa1K,EAAMwK,GAExB1K,KAAK6K,YAAY3K,EAErB,MAAWF,KAAKsB,MAAMkI,eAAiBxJ,KAAK0J,MAAMC,SAAWlB,GAC3DzI,KAAK8K,SAAS,CACZnB,OAAQjB,GAGd,EACAnG,EAAOqI,aAAe,SAAsB1K,EAAMwK,GAChD,IAAIK,EAAS/K,KACTqJ,EAAQrJ,KAAKsB,MAAM+H,MACnBnI,EAAYlB,KAAK+I,QAAQG,gBAAkBlJ,KAAK+I,QAAQG,gBAAgBE,WAAasB,EACrFM,EAAWhL,KAAKuK,cAChBU,EAAe/J,EAAY8J,EAAS7B,OAAS6B,EAAS3B,MAGrDqB,GAAarB,GAQlBrJ,KAAKsB,MAAML,QAAQf,EAAMgB,GACzBlB,KAAKkL,aAAa,CAChBvB,OAAQnB,IACP,WACDuC,EAAOzJ,MAAMC,WAAWrB,EAAMgB,GAC9B6J,EAAOI,gBAAgBjL,EAAM+K,GAAc,WACzCF,EAAOG,aAAa,CAClBvB,OAAQpB,IACP,WACDwC,EAAOzJ,MAAMI,UAAUxB,EAAMgB,EAC/B,GACF,GACF,KAnBElB,KAAKkL,aAAa,CAChBvB,OAAQpB,IACP,WACDwC,EAAOzJ,MAAMI,UAAUxB,EACzB,GAgBJ,EACAqC,EAAOsI,YAAc,SAAqB3K,GACxC,IAAIkL,EAASpL,KACTwK,EAAOxK,KAAKsB,MAAMkJ,KAClBQ,EAAWhL,KAAKuK,cAEfC,GAQLxK,KAAKsB,MAAMQ,OAAO5B,GAClBF,KAAKkL,aAAa,CAChBvB,OAAQrB,IACP,WACD8C,EAAO9J,MAAMS,UAAU7B,GACvBkL,EAAOD,gBAAgBjL,EAAM8K,EAASR,MAAM,WAC1CY,EAAOF,aAAa,CAClBvB,OAAQlB,IACP,WACD2C,EAAO9J,MAAMU,SAAS9B,EACxB,GACF,GACF,KAnBEF,KAAKkL,aAAa,CAChBvB,OAAQlB,IACP,WACD2C,EAAO9J,MAAMU,SAAS9B,EACxB,GAgBJ,EACAqC,EAAO+H,mBAAqB,WACA,OAAtBtK,KAAK4J,eACP5J,KAAK4J,aAAayB,SAClBrL,KAAK4J,aAAe,KAExB,EACArH,EAAO2I,aAAe,SAAsBI,EAAWC,GAIrDA,EAAWvL,KAAKwL,gBAAgBD,GAChCvL,KAAK8K,SAASQ,EAAWC,EAC3B,EACAhJ,EAAOiJ,gBAAkB,SAAyBD,GAChD,IAAIE,EAASzL,KACT0L,GAAS,EAWb,OAVA1L,KAAK4J,aAAe,SAAU+B,GACxBD,IACFA,GAAS,EACTD,EAAO7B,aAAe,KACtB2B,EAASI,GAEb,EACA3L,KAAK4J,aAAayB,OAAS,WACzBK,GAAS,CACX,EACO1L,KAAK4J,YACd,EACArH,EAAO4I,gBAAkB,SAAyBjL,EAAMuK,EAASmB,GAC/D5L,KAAKwL,gBAAgBI,GACrB,IAAIC,EAA0C,MAAXpB,IAAoBzK,KAAKsB,MAAMwK,eAC7D5L,IAAQ2L,GAIT7L,KAAKsB,MAAMwK,gBACb9L,KAAKsB,MAAMwK,eAAe5L,EAAMF,KAAK4J,cAExB,MAAXa,GACFsB,WAAW/L,KAAK4J,aAAca,IAP9BsB,WAAW/L,KAAK4J,aAAc,EASlC,EACArH,EAAOG,OAAS,WACd,IAAIiH,EAAS3J,KAAK0J,MAAMC,OACxB,GAAIA,IAAWjB,EACb,OAAO,KAET,IAAIsD,EAAchM,KAAKsB,MACrB2K,EAAWD,EAAYC,SACvBC,EAtVN,SAAuCpM,EAAQqM,GAC7C,GAAc,MAAVrM,EAAgB,MAAO,CAAC,EAC5B,IAEIlB,EAAK5B,EAFL4C,EAAS,CAAC,EACVwM,EAAanQ,OAAOoJ,KAAKvF,GAE7B,IAAK9C,EAAI,EAAGA,EAAIoP,EAAW5P,OAAQQ,IACjC4B,EAAMwN,EAAWpP,GACbmP,EAAS9D,QAAQzJ,IAAQ,IAC7BgB,EAAOhB,GAAOkB,EAAOlB,IAEvB,OAAOgB,CACT,CA2UmByM,CAA8BL,EAAa,CAAC,aAgB3D,UAdOE,EAAW3C,UACX2C,EAAWzC,oBACXyC,EAAW1C,qBACX0C,EAAW/C,cACX+C,EAAW7C,aACX6C,EAAW1B,YACX0B,EAAWzB,eACXyB,EAAWJ,sBACXI,EAAWjL,eACXiL,EAAW3K,kBACX2K,EAAWxK,iBACXwK,EAAWpK,cACXoK,EAAWnK,iBACXmK,EAAWlK,SACM,mBAAbiK,EACT,OAAOA,EAAStC,EAAQuC,GAE1B,IAAII,EAAQrO,EAAOoB,QAAQkN,SAASC,KAAKP,GACzC,OAAOhO,EAAOoB,QAAQoN,aAAaH,EAAOJ,EAC5C,EACOpD,CACT,CAvPA,CAuPE7K,EAAOoB,QAAQuD,WA8IjB,SAAS8J,IAAQ,CA7IjB5D,EAAW6D,aAAe,CACxBzD,gBAAiBP,EAAUlE,QAE7BqE,EAAW8D,kBAAoB,CAC7B1D,gBAAiB,WAA4B,GAE/CJ,EAAWhG,UAsIP,CAAC,EAELgG,EAAWjG,aAAe,CACxB0G,IAAI,EACJE,cAAc,EACdD,eAAe,EACfL,QAAQ,EACRE,OAAO,EACPmB,MAAM,EACNvJ,QAASyL,EACTnL,WAAYmL,EACZhL,UAAWgL,EACX5K,OAAQ4K,EACR3K,UAAW2K,EACX1K,SAAU0K,GAEZ5D,EAAWJ,UAAY,EACvBI,EAAWL,OAAS,EACpBK,EAAWN,SAAW,EACtBM,EAAWP,QAAU,EACrBO,EAAWR,QAAU,EACrB,IAAIvF,GAAW,EAAI8F,EAAuBgE,UAAU/D,GACpDnL,EAAA,QAAkBoF,+pBC9iBlB,IACM+J,EAAY,SAAArM,GAAA,SAAAqM,IAAA,OAAArM,EAAAV,MAAA,KAAAF,YAAA,KAyBf,OAzBekN,EAAAA,EAAAA,GAAAD,EAAArM,GAAAqM,EAAAjO,UAChB6D,OAAA,WACE,MAAMpB,EAAKuC,EAAAA,EAAA,GACN7D,KAAKsB,OAAK,IACb0L,OAAMnJ,EAAAA,EAAA,IACDoJ,EAAAA,EAAAA,IAAgBjN,KAAKsB,MAAM4L,SAASC,WACpCnN,KAAKsB,MAAM8L,cAAcC,KAAKC,YAAYC,YAI3CC,GAAc7K,EAAAA,EAAAA,eAAc3C,KAAKsB,MAAM8L,cAAcK,UAAS5J,EAAAA,EAAA,GAC/DvC,GAAK,IACR1C,IAAKoB,KAAKsB,MAAMoM,MAAQ1N,KAAKsB,MAAM8L,cAAcO,KAAKD,QAYxD,OAToBE,EAAAA,EAAAA,GAClB,kBACA,CAAE3F,QAASuF,EAAalM,SACxBkM,GACA1I,IAAiB,IAAhB,OAAE+I,GAAQ/I,EACT,MAAO,CAAEmD,QAAS4F,EAAQvM,QAAO,IAEnCwM,KAGJ,EAAChB,CAAA,CAzBe,CAASiB,EAAAA,WAmC3B,oCCvCA,SAASC,EAAiBC,EAAWC,GACnC,OAAOD,EAAU5Q,QAAQ,IAAI8Q,OAAO,UAAYD,EAAgB,YAAa,KAAM,MAAM7Q,QAAQ,OAAQ,KAAKA,QAAQ,aAAc,GACtI,CAEAK,EAAOC,QAAU,SAAqBsK,EAAS9G,GACzC8G,EAAQC,UAAWD,EAAQC,UAAUkG,OAAOjN,GAAiD,iBAAtB8G,EAAQ9G,UAAwB8G,EAAQ9G,UAAY6M,EAAiB/F,EAAQ9G,UAAWA,GAAgB8G,EAAQoG,aAAa,QAASL,EAAiB/F,EAAQ9G,WAAa8G,EAAQ9G,UAAUiH,SAAW,GAAIjH,GAC1R,oCCRAxD,EAAQ2Q,gBAAkB,EAA1B3Q,MACAA,EAAQ4Q,gBAAkB,EAA1B5Q,MAEAA,EAAQ6Q,mBAAqB,KAAOC,OAAOC,6GCDpC,MAAMC,EAAgBC,GAAkB,IAAIC,SAAQC,GAAW/C,WAAW+C,EAASF,KAE7EG,EAAOA,CAACC,EAAgBC,KACnC,MAAMC,EAAWF,GAASC,EAAQE,KAAKC,UAAYH,EAAQD,GAASA,EAAQA,EAC5E,OAAOL,EAAaO,EAAS,EAE/B,OAEO,MAAMG,EAAWC,MAAOzI,EAAc0I,KAC3C,IAAIC,GAAQ,EAGZ,aAFMT,EAAKQ,GACPC,GAAO3I,IACJ,KACL2I,GAAQ,CAAK,CACd,qHCPH,SAASC,EAAgB7T,EAAO8T,GAC9B,GAAa,MAAT9T,EACF,OAAOA,EAGT,GAAqB,IAAjBA,EAAMY,UAAkBkT,GAAoBA,GAA8B,KAAV9T,GAClE,OAAO,KAET,IAAI+T,EAAM/T,aAAiBE,MAAQF,EAAM,GAAKA,EAC9C,OAAW,MAAP+T,GAGCD,GAA4B,KAARC,EAFhBA,EAGA,IAGX,CAuKO,SAASC,EAAahU,GAC3B,IAAI+T,EAAMF,EAAgB7T,GAAO,GACjC,OAAW,MAAP+T,EAAoBA,EACjBE,OAAOF,EAChB,CChMO,IAAIG,EAAc,CACvBC,OD6KK,SAAsBJ,GAC3B,OAAW,MAAPA,EACKA,EAEFE,OAAOF,EAChB,ECjLEK,OAAQ,aCNN,EAAoC,WAQtC,OAPA,EAAW/T,OAAOC,QAAU,SAAU+T,GACpC,IAAK,IAAIvM,EAAG1G,EAAI,EAAGe,EAAI8B,UAAUrD,OAAQQ,EAAIe,EAAGf,IAE9C,IAAK,IAAI4J,KADTlD,EAAI7D,UAAU7C,GACOf,OAAO4C,UAAUC,eAAeC,KAAK2E,EAAGkD,KAAIqJ,EAAErJ,GAAKlD,EAAEkD,IAE5E,OAAOqJ,CACT,EACO,EAASlQ,MAAMC,KAAMH,UAC9B,EAMsB,UAAWO,MAAM,IAAIhE,KAAI,SAAUiH,GACvD,MAAO,CAACA,EAAG6M,mBAAmB7M,GAChC,IAeO,SAAS8M,EAAeC,EAAclD,EAAUmD,GACrD,IAAIC,GAAsB,IAAAC,WAAUH,EAAcC,GAC9CA,GAAoBA,EAAiBG,wBACvCF,EAAsBD,EAAiBG,sBAAsBF,IAE/D,IAAIG,EAASH,EAAoB9T,OAAS,IAAM8T,EAAsB,GAClEI,GAAO,IAAAC,UAASzD,EAASwD,MAAQ,IAAIE,IAAMH,EAQ/C,OAPkB,EAAS,EAAS,CAAC,EAAGvD,GAAW,CACjDtO,IAAK,GAAKiS,KAAKC,MAEfJ,KAAMA,EACND,OAAQA,EACRM,MAAOX,GAGX,eCxCI,EAAiBnU,OAAO4C,UAAUC,eAKtC,SAASkJ,EAAG3L,EAAG2U,GAEb,OAAI3U,IAAM2U,EAIK,IAAN3U,GAAiB,IAAN2U,GAAW,EAAI3U,GAAM,EAAI2U,EAGpC3U,GAAMA,GAAK2U,GAAMA,CAE5B,CASe,SAAS,EAAaC,EAAMC,EAAMC,GAC/C,IAAIC,EAAIC,EACR,GAAIrJ,EAAGiJ,EAAMC,GACX,OAAO,EAET,GAAoB,iBAATD,GAA8B,OAATA,GAAiC,iBAATC,GAA8B,OAATA,EAC3E,OAAO,EAET,IAAII,EAAQrV,OAAOoJ,KAAK4L,GACpBM,EAAQtV,OAAOoJ,KAAK6L,GACxB,GAAII,EAAM9U,SAAW+U,EAAM/U,OACzB,OAAO,EAGT,IAAK,IAAIQ,EAAI,EAAGA,EAAIsU,EAAM9U,OAAQQ,IAAK,CACrC,IAAIwU,EAAkJ,QAAvIH,EAAuF,QAAjFD,EAAKD,aAA2C,EAASA,EAASG,EAAMtU,WAAwB,IAAPoU,OAAgB,EAASA,EAAGK,cAA2B,IAAPJ,EAAgBA,EAAKrJ,EACnL,IAAK,EAAejJ,KAAKmS,EAAMI,EAAMtU,MAAQwU,EAAQP,EAAKK,EAAMtU,IAAKkU,EAAKI,EAAMtU,KAC9E,OAAO,CAEX,CACA,OAAO,CACT,CClDO,SAAS,EAAyBoI,EAAKsM,EAAUF,QACtC,IAAZA,IACFA,EAAU,GAEZ,IAAIG,GAAyB,MAAfvM,EAAI7B,SAA+B,MAAZmO,IAAqBtM,EAAI7B,UAAYmO,IAAaF,EAAQpM,EAAI7B,QAASmO,GAC5G,aAAgB,WACVC,IACFvM,EAAI7B,QAAUmO,EAElB,GAAG,CAACtM,EAAKsM,EAAUC,GACrB,CACO,SAAS,EAAuBzE,GAErC,MAAwB,iBAAbA,EAEa,oBAAXuB,OACFvB,EAASuD,QAET,IAAAmB,SAAQ,GAAK1E,EAASC,UAAYD,EAASuD,OAASvD,EAASuD,OAAS,KAG1E,EACT,CCjBO,SAASoB,EAA0BC,EAAmB5E,EAAU6E,EAAY1B,GAIjF,YAHmB,IAAf0B,IACFA,EAAa,UAEPA,GACN,IAAK,UACL,IAAK,OACH,OAAO5B,EAAe2B,EAAmB5E,EAAUmD,GAGrD,QACE,OHiCC,SAA0B2B,EAA0B9E,EAAUmD,GAGnE,IAAI4B,GAAY,IAAAC,OAAiBhF,EAASuD,OAAQ,CAChD0B,cAAc,IAGhB,OAAOhC,EADQ,EAAS,EAAS,CAAC,EAAG8B,GAAYD,GACjB9E,EAAUmD,EAC5C,CGzCa+B,CAAiBN,EAAmB5E,EAAUmD,GAE3D,CCnBA,IAOWgC,EAAkB,gBAPE,CAC7BnF,SAAU,CAAC,EACXoF,YAAa,WACX,MAAO,CAAC,CACV,EACAC,YAAa,WAAa,IAcrB,SAASC,EAAiBpB,GAC/B,IAAIqB,EAAUrB,EAAGqB,QACfvF,EAAWkE,EAAGlE,SACdjB,EAAWmF,EAAGnF,SACdoE,EAAmBe,EAAGf,iBACpBqC,EAAc,SAAaxF,GAC/B,aAAgB,WACdwF,EAAYnP,QAAU2J,CACxB,GAAG,CAACA,IAEJ,IAAIoF,EAAc,eAAkB,WAClC,OAAOI,EAAYnP,OACrB,GAAG,CAACmP,IACAH,EAAc,eAAkB,SAAUT,EAAmBC,GAE/DW,EAAYnP,QAAUsO,EAA0BC,EAA8B,MAAXW,GAAuC,MAApBA,EAAQvF,SAAmBwF,EAAYnP,QAAUkP,EAAQvF,SAAU6E,EAAY1B,GACjKoC,GDZD,SAAwBA,EAASvF,EAAU6E,GAIhD,YAHmB,IAAfA,IACFA,EAAa,UAEPA,GACN,IAAK,SACL,IAAK,OACHU,EAAQ/M,KAAKwH,GACb,MAGF,QACEuF,EAAQpV,QAAQ6P,GAGtB,CCFMyF,CAAeF,EAASC,EAAYnP,QAASwO,EAEjD,GAAG,CAACU,EAASpC,IACb,OAAO,gBAAoBgC,EAAgBhU,SAAU,CACnD6G,MAAO,CACLgI,SAAUA,EACVoF,YAAaA,EACbC,YAAaA,IAEdtG,EACL,CC/CO,IAAwC2G,EACzCC,EACAC,EASK,GAVLD,EAAqBD,EACrBE,GAAoB,IAAAZ,OAAiBW,GAAsB,IACxD,SAAUE,GAKf,OAJIF,IAAuBE,IACzBF,EAAqBE,EACrBD,GAAoB,IAAAZ,OAAiBW,IAEhCC,CACT,GCAF,SAASE,EAAsB9F,EAAUzJ,EAAMwP,EAAaC,EAAgBC,EAAsBC,GAChG,IAAIhC,EAEAiC,GAAqB,EAAaH,EAAe3P,QAAS0P,GAC1DK,EAA6C,QAA7BlC,EAAK6B,EAAYxB,cAA2B,IAAPL,EAAgBA,EAAK,EAE1EmC,EAAc,EAA0B,EAAuBrG,IAK/DsG,GAAsB,EAAaL,EAAqB5P,QAASgQ,EAAY9P,IAC7EgQ,EAAeD,EAAqBD,EAAY9P,GAAQ0P,EAAqB5P,QAGjF,IAAKiQ,IAAuBH,QAAsDjM,IAAjCgM,EAAqB7P,QACpE,OAAO6P,EAAqB7P,QAE9B,IAAImQ,EAAkBT,EAAYjD,OAAOyD,GAGzC,OAF0D,MAAhCL,EAAqB7P,SAAsC,MAAnBmQ,IAA4BN,EAAqB7P,UAAYmQ,IAAoBJ,EAAaF,EAAqB7P,QAASmQ,GAElKA,EAAkBN,EAAqB7P,OACrE,CAeO,IAAIoQ,EAAgB,SAAUlQ,EAAMwP,QACrB,IAAhBA,IACFA,EAAcnD,GAEhB,IAAIsB,EFxCU,aAAiBiB,GEyC7BnF,EAAWkE,EAAGlE,SACdoF,EAAclB,EAAGkB,YACjBC,EAAcnB,EAAGmB,YAEfgB,EAAc,EAA0B,EAAuBrG,IAE/DiG,EAAuB,WACvBD,EAAiB,SAAaD,GAC9BG,EAAuB,WACvBQ,EAAeZ,EAAsB9F,EAAUzJ,EAAMwP,EAAaC,EAAgBC,EAAsBC,GAE5G,EAAyBD,EAAsBI,EAAY9P,IAC3D,EAAyByP,EAAgBD,GACzC,EAAyBG,EAAsBQ,EAAcX,EAAYxB,QAEzE,IAAIoC,EAAe,CACjBZ,YAAaA,EACbxP,KAAMA,EACN8O,YAAaA,EACbD,YAAaA,GAEXwB,EAAkB,SAAaD,GACnCC,EAAgBvQ,QAAUsQ,EAC1B,IAAIE,EAAW,eAAkB,SAA0BrC,EAAUK,GACnE,IAAIX,EAEA4C,EADAC,EAAOH,EAAgBvQ,QAG3B,GAAwB,mBAAbmO,EAAyB,CAElC,IAAIwC,EAAclB,EAAsBiB,EAAK3B,cAAe2B,EAAKxQ,KAAMwQ,EAAKhB,YAAaC,EAAgBC,EAAsBC,GAC/HA,EAAqB7P,QAAU2Q,EAC/BF,EAAkBC,EAAKhB,YAAYlD,OAAO2B,EAASwC,GACrD,MACEF,EAAkBC,EAAKhB,YAAYlD,OAAO2B,GAG5CuC,EAAK1B,cAAanB,EAAK,CAAC,GAAM6C,EAAKxQ,MAAQuQ,EAAiB5C,GAAKW,EACnE,GAAG,IACH,MAAO,CAAC6B,EAAcG,EACxB,EC3FO,ICaHI,EACAC,EA2BAC,EACAC,EA3CA,EAAoC,WAQtC,OAPA,EAAWrY,OAAOC,QAAU,SAAU+T,GACpC,IAAK,IAAIvM,EAAG1G,EAAI,EAAGe,EAAI8B,UAAUrD,OAAQQ,EAAIe,EAAGf,IAE9C,IAAK,IAAI4J,KADTlD,EAAI7D,UAAU7C,GACOf,OAAO4C,UAAUC,eAAeC,KAAK2E,EAAGkD,KAAIqJ,EAAErJ,GAAKlD,EAAEkD,IAE5E,OAAOqJ,CACT,EACO,EAASlQ,MAAMC,KAAMH,UAC9B,EAyCA,SAAS0U,EAAkB9B,GACzB,GAAIA,IAAY4B,GAAmD,MAA7BC,EACpC,OAAOA,EAET,IAAIE,EAAsB,CACxBnX,QAAS,SAAU6P,GACjBuF,EAAQgC,SAASvH,EAASwH,SAAW,KAAOxH,EAASyH,KAAOzH,EAASC,SAAWD,EAASuD,OAAQ,CAC/FpT,SAAS,GAEb,EACAqI,KAAM,SAAUwH,GACduF,EAAQgC,SAASvH,EAASwH,SAAW,KAAOxH,EAASyH,KAAOzH,EAASC,SAAWD,EAASuD,OAAQ,CAC/FpT,SAAS,GAEb,EACA,YAAI6P,GACF,OAAOuF,EAAQvF,QACjB,GAIF,OAFAmH,EAAqB5B,EACrB6B,EAA4BE,EACrBA,CACT,CAKO,SAASI,EAAiBxD,GAC/B,IAAIC,OAAY,IAAPD,EAAgB,CAAC,EAAIA,EAC5BqB,EAAUpB,EAAGoB,QACbvF,EAAWmE,EAAGnE,SAUhB,GATkC,oBAAXuB,SAEhBgE,IACHA,EA9DN,SAA4BA,GAC1B,GAAIA,IAAY0B,GAAqD,MAA9BC,EACrC,OAAOA,EAET,IAAIS,EAAuB,CACzBxX,QAAS,SAAU6P,GACjBuF,EAAQqC,aAAa5H,EAASxD,MAAO,GAAIwD,EAASwH,SAAW,KAAOxH,EAASyH,KAAOzH,EAASC,SAAWD,EAASuD,OACnH,EACA/K,KAAM,SAAUwH,GACduF,EAAQsC,UAAU7H,EAASxD,MAAO,GAAIwD,EAASwH,SAAW,KAAOxH,EAASyH,KAAOzH,EAASC,SAAWD,EAASuD,OAChH,EACA,YAAIvD,GACF,OAAOuB,OAAOvB,QAChB,GAIF,OAFAiH,EAAsB1B,EACtB2B,EAA6BS,EACtBA,CACT,CA4CgBG,CAAmBvG,OAAOgE,UAEjCvF,IACHA,EAAWuB,OAAOvB,YAGjBA,EACH,MAAM,IAAI7F,MAAM,oFAElB,MAAO,CACLoL,QAASA,EACTvF,SAAUA,EAEd,CAKO,SAAS+H,EAAmB7D,GACjC,IAAInF,EAAWmF,EAAGnF,SAChBiJ,EAAmB9D,EAAG8D,iBACtBC,EAAe/D,EAAG+D,aAClB1C,EAAUrB,EAAGqB,QACbvF,EAAWkE,EAAGlE,SACdmD,EAAmBe,EAAGf,iBAGpB+E,EAAsB,SAAa/E,GAEnCgF,GAD0B,EAAaD,EAAoB7R,QAAS8M,GAClBA,EAAmB+E,EAAoB7R,QAK7F,OAJA,aAAgB,WACd6R,EAAoB7R,QAAU8R,CAChC,GAAG,CAACA,IAEAH,EACK,gBAAoBA,EAAkB,MAAM,SAAUI,GAC3D,OAAO,gBAAoB9C,EAAkB,EAAS,CACpDnC,iBAAkBgF,GACjBT,EAAiBU,IAAcrJ,EACpC,IAGEkJ,EACK,gBAAoB3C,EAAkB,EAAS,CACpDnC,iBAAkBgF,GACjBT,EAAiB,CAClBnC,QAAS8B,EAAkBY,GAC3BjI,SAAUA,KACPjB,GAGA,gBAAoBuG,EAAkB,EAAS,CACpDnC,iBAAkBgF,GACjBT,EAAiB,CAClBnC,QAASA,EACTvF,SAAUA,KACPjB,EACP,4KCvIO,MAAMsJ,EAAuBA,KAElC,MAAMjV,GAAI6E,EAAAA,EAAAA,IAAW,CACnBqQ,KAAM,KACNC,GAAIC,EAAAA,GAAY3N,SAAS4N,eAAe,cAAgB,KACxDjT,OAASkT,GACFtV,EAAEmV,GAGAI,EAAAA,aACLD,EACAtV,EAAEmV,IAJK,KAOXK,KAAON,IACLlV,EAAEkV,KAAOA,CAAI,IAIjB,OAAOlV,CAAC,oCCvBH,MAAMyV,EAA6F,CACxGC,KAAM,CACJlH,SAAS,EACTmH,MAAO,MAETC,MAAO,CACLpH,SAAS,EACTmH,MAAO,WAGEE,EAA4B,CACvCJ,EAAwBC,KACxBD,EAAwBG,kDCiC1B,MAjCsF5U,IACpF,MAAMsF,GAAItD,EAAAA,EAAAA,IAAShC,GACboC,GAAIW,EAAAA,EAAAA,KAAS,MACjB+R,QAASA,IAAMxP,EAAEyP,gBAAgB,CAACvH,SAAS,QAE7C,OAAOwH,EAAAA,EAAAA,KAACC,EAAAA,GAAQ,CAACtK,SAAUA,KACzBuK,EAAAA,EAAAA,MAAA,WAASrV,UAAU,cAAa8K,SAAA,EAC9BqK,EAAAA,EAAAA,KAAA,QAAMnV,UAAU,iBAAiBsV,QAAS/S,EAAE0S,WAC5CI,EAAAA,EAAAA,MAAA,OAAKrV,UAAU,SAAQ8K,SAAA,EACrBuK,EAAAA,EAAAA,MAAA,UAAQrV,UAAU,eAAc8K,SAAA,EAC9BqK,EAAAA,EAAAA,KAAA,OAAKnV,UAAU,sBAAqB8K,UACjCyK,EAAAA,EAAAA,IAAS9P,EAAE+P,OAAOC,UAAWN,EAAAA,EAAAA,KAAA,MAAArK,SAAKrF,EAAE+P,OAAOC,UAAgBhQ,EAAE+P,OAAOC,WAEvEN,EAAAA,EAAAA,KAAA,UAAQnV,UAAU,oBAAoBsV,QAAS/S,EAAE0S,QAAQnK,UACvDqK,EAAAA,EAAAA,KAAA,OAAKO,MAAM,KAAKC,OAAO,KAAKC,QAAQ,YAAYC,KAAK,OAAM/K,UAACqK,EAAAA,EAAAA,KAAA,QAAMjT,EAAE,uBAAuB4T,OAAO,wBAGrGrQ,EAAE+P,OAAOO,OAAQZ,EAAAA,EAAAA,KAAA,OAAKnV,UAAU,aAAY8K,UAC1CyK,EAAAA,EAAAA,IAAS9P,EAAE+P,OAAOO,OAAQZ,EAAAA,EAAAA,KAAA,KAAArK,SAAIrF,EAAE+P,OAAOO,OAAYtQ,EAAE+P,OAAOO,QAE/DZ,EAAAA,EAAAA,KAAA,UAAQnV,UAAU,eAAc8K,UAC5BrF,EAAE+P,OAAOQ,SAAWhB,GAA2B/Z,KAAI,CAACgb,EAAQpa,KAAC,IAAAqa,EAAA,OAAKf,EAAAA,EAAAA,KAACgB,EAAAA,EAAU,CAE7EC,MAAOH,EAAOG,MACdtL,SAAUmL,EAAOnB,OAAUmB,EAAOtI,QAAU,GAC5C2H,QAASA,IAAM7P,EAAEyP,gBAAgBe,IAHhB,QAG2CC,EAHvDD,EAAOG,aAAK,IAAAF,EAAAA,EAAIra,EAIrB,aAIL,oDCIP,MA7CE,SAAYnB,QAKX,IALWA,IAAAA,EAKR,CAAC,GAAC,KANN2b,WAAuB,GAOrB,MAAM,MAAEvT,EAAK,iBAAEwT,EAAgB,iBAAEC,EAAgB,kBAAEC,GAAsB9b,EACzE,IAAI+b,EAAgBC,YAAY/G,MAChC,MAAMgH,EAAoBA,KACxB,MAAMC,EAAgBF,YAAY/G,MAClC,GAAI8G,GAAiBG,EAAgBH,EAAgB,GAAI,CAEvD,GADA5X,KAAKwX,WAAW9R,KAAK,SACjBzB,EAAO,CACT,MAAMwR,EAAK1N,SAASpF,cAAc,OAClC8S,EAAGuC,UAAY,8FACfjQ,SAASkQ,KAAKC,QAAQzC,EACxB,CACA1N,SAASoQ,gBAAgBjQ,UAAUkQ,IAAI,SACvCX,GAAoBA,IACpBhJ,OAAO4J,oBAAoB,YAAaP,EAC1C,MAAOF,EAAgBG,CAAa,EAEhCO,EAAsBxa,IAE1B,GADAkC,KAAKwX,WAAW9R,KAAK,SACjBzB,EAAO,CACT,MAAMwR,EAAK1N,SAASpF,cAAc,OAClC8S,EAAGuC,UAAY,6BACfjQ,SAASkQ,KAAKC,QAAQzC,EACxB,CACI3X,EAAEya,QAAQ,IAAiC,WAA3Bza,EAAEya,QAAQ,GAAGC,WAC/BzQ,SAASoQ,gBAAgBjQ,UAAUkQ,IAAI,UACvCT,GAAqBA,MAErB5P,SAASoQ,gBAAgBjQ,UAAUkQ,IAAI,SACvCV,GAAoBA,KAElB1X,KAAKwX,WAAWiB,SAAS,WAAazY,KAAKwX,WAAWiB,SAAS,UACjEhK,OAAO4J,oBAAoB,aAAcC,EAC3C,EAEF7J,OAAOiK,iBAAiB,YAAaZ,GACrCrJ,OAAOiK,iBAAiB,aAAcJ,EACxC,omBC1BK,MAAMK,EAAmBA,KAAO,IAADC,EAAAC,EAEpC,MAAMvY,GAAI6E,EAAAA,EAAAA,IAAW,CACnB2T,OAAO,EACPtD,KAAM,KACNuD,YAAa,CAEXC,MAAMtD,EAAAA,KAAsB,QAAVkD,EAAAnK,OAAOwK,WAAG,IAAAL,OAAA,EAAVA,EAAYM,SAAS,oBAAqBC,EAAAA,GAC5DC,kBAAkB1D,EAAAA,KAAsB,QAAVmD,EAAApK,OAAOwK,WAAG,IAAAJ,OAAA,EAAVA,EAAYK,SAAS,aAAcC,EAAAA,IAEnEE,SAAU,CACRxC,MAAOnB,EAAAA,GAAY3N,SAASkQ,KAAKqB,YAAc,IAC/CxC,OAAQpB,EAAAA,GAAYjH,OAAO8K,YAAc,IACzCC,QAAS9D,EAAAA,IAAY+D,EAAAA,EAAAA,MAAe,GAEtC1R,SAAU,CACR8O,MAAOnB,EAAAA,GAAY3N,SAASoQ,gBAAgBuB,YAAc,IAC1D5C,OAAQpB,EAAAA,GAAY3N,SAASoQ,gBAAgBwB,aAAe,KAE9DC,GAAI,CACFC,aAAa,EACbC,eAAgBpE,EAAAA,GAAYjH,OAAOsL,WAAahS,SAASkQ,KAAKqB,YAAc,EAC5EU,aAAc,IAEhBC,OAAQ,CACN5d,EAAG,EACH2U,EAAG,GAELkJ,UAAUC,EAAAA,EAAAA,KACVC,aAAa,EACbC,QAASlV,EAAAA,GAAWmV,MAAM,GAAI,CAAEC,MAAM,IACtCC,cACE7D,GACG,IAAI9H,SAAWC,IAClB,MAAMzL,GAAI8B,EAAAA,EAAAA,IAAW,CACnBsV,kBAAcrT,IAEVsT,GAAsBC,EAAAA,EAAAA,KAAK,UAAWvD,GAA0B,IAADwD,QACzC,QAA1BA,EAAMxD,EAAOyD,qBAAa,IAAAD,OAAA,EAApBA,EAAA7b,KAAAqY,GACN/T,EAAEoX,aAAerD,EAAOtI,QACxBA,EAAQzL,EAAEoX,cACVK,GACF,IACMC,GAASzE,EAAAA,EAAAA,KAAC0E,EAAW,CAEzBrE,OAAQA,EACRN,gBAAiBqE,IAFZO,EAAAA,EAAAA,OAIPC,EAAAA,EAAAA,IAAgB5a,EAAE+Z,QAASU,GAC3B,MAAMD,EAAUA,UACS1T,IAAnB/D,EAAEoX,eAA4BpX,EAAEoX,cAAe,IACnDU,EAAAA,EAAAA,IAAgB7a,EAAE+Z,QAASU,EAAO,EAEpC,OAAO5V,EAAAA,EAAAA,IAAW,CAChB,gBAAIsV,GAAiB,OAAOpX,EAAEoX,YAAa,EAC3C,YAAIW,GAAa,YAA0BhU,IAAnB/D,EAAEoX,YAA2B,EACrDK,WACA,IAEJO,OACE1E,IAEA,MAAMQ,EAAU,CAACpB,EAAwBC,MACzC,OAAIU,EAAAA,EAAAA,IAASC,GAAgBrW,EAAEka,cAAc,CAAE5D,QAASD,EAAQQ,YACpD7W,EAAEka,cAAa3W,EAAAA,EAAC,CAAC,EAAI8S,GAAM,IAAEQ,YAAU,EAErDrB,MAAMsB,EAAAA,EAAAA,KAAQ5B,IAMZ,GADAlV,EAAEkV,KAAOA,EACLE,EAAAA,GAAW,CACRpV,EAAEyY,YAAYC,OAAMsC,EAAAA,EAAAA,IAAa,UACjChb,EAAEyY,YAAYK,mBACjBkC,EAAAA,EAAAA,IAAa,iBAEfvT,SAASoQ,gBAAgBjQ,UAAUqT,OAAO,YAAaC,EAAAA,GACvD,IAAIC,GAAchC,EAAAA,EAAAA,MAClB,MAAMiC,GAAetE,EAAAA,EAAAA,KAAO,KAC1B9W,EAAE+Y,SAASG,SAAUC,EAAAA,EAAAA,MACrB1R,SAASoQ,gBAAgBjQ,UAAUqT,OAAO,gBAAiB9M,OAAO+K,QAAU,KAC5EzR,SAASoQ,gBAAgBjQ,UAAUqT,OAAO,iBAAkBjb,EAAE+Y,SAASG,QAAUiC,GACjFA,EAAcnb,EAAE+Y,SAASG,SAAW,EAAI,EAAIlZ,EAAE+Y,SAASG,OAAO,IAE1DmC,GAAsBvE,EAAAA,EAAAA,KAAO,KACjC9W,EAAEsZ,GAAGE,eAAiBrL,OAAOsL,WAAahS,SAASkQ,KAAKqB,WAAW,IAE/DsC,EAAqBA,KACzBF,GAAc,EAEVG,GAAqBzE,EAAAA,EAAAA,KAAO,KAChC9W,EAAE+Y,SAASxC,MAAQ9O,SAASkQ,KAAKqB,YACjChZ,EAAE+Y,SAASvC,OAASrI,OAAO8K,YAC3BjZ,EAAEyH,SAAS8O,MAAQ9O,SAASoQ,gBAAgBuB,YAC5CpZ,EAAEyH,SAAS+O,OAAS/O,SAASoQ,gBAAgBwB,aAC7C5R,SAASoQ,gBAAgB2D,MAAMC,YAAY,OAAQzb,EAAE+Y,SAASxC,MAAQ,MACtE9O,SAASoQ,gBAAgB2D,MAAMC,YAAY,OAAQzb,EAAE+Y,SAASvC,OAAS,MACvE4E,IACAC,GAAqB,IAEjBK,EAAoBA,KACxBL,GAAqB,EAElBxC,EAAAA,IAAS8C,EAAAA,IAAWxN,OAAOiK,iBAAiB,SAAUkD,GAC3DnN,OAAOiK,iBAAiB,SAAUmD,GAClCpN,OAAOiK,iBAAiB,QAASsD,GACjCH,KACAxM,EAAAA,EAAAA,IAASwM,EAAoB,MAC7BxM,EAAAA,EAAAA,IAASwM,EAAoB,MAC7BxM,EAAAA,EAAAA,IAASwM,EAAoB,KACDK,MAC1B,IAAIC,EAAgB,CAClB1E,kBAAkBL,EAAAA,EAAAA,KAAO,IAAM9W,EAAEsZ,GAAGI,aAAatU,KAAK,WACtDgS,kBAAkBN,EAAAA,EAAAA,KAAO,IAAM9W,EAAEsZ,GAAGI,aAAatU,KAAK,WACtDiS,mBAAmBP,EAAAA,EAAAA,KAAO,IAAM9W,EAAEsZ,GAAGI,aAAatU,KAAK,aACvD,EAEJwW,IACAE,EAAAA,EAAAA,MACA/M,EAAAA,EAAAA,KAAS+H,EAAAA,EAAAA,KAAO,KACd9W,EAAE8Z,aAAc,CAAK,IACnB,MACJ/K,EAAAA,EAAAA,KAAS,KACH8J,EAAAA,GACF7Y,EAAE+a,OAAO,CACPzE,QAAS,mFACTM,KAAM,2DAECmF,EAAAA,IACT/b,EAAE+a,OAAO,CACPzE,QAAS,oGACTM,KAAM,yGAEV,GACC,KACH5W,EAAEwY,OAAQ,CACZ,OAGJ,OAAOxY,CAAC,EC3HGgc,EAlBaC,MACxB,MAAMjc,GAAmB6E,EAAAA,EAAAA,IAAW,CAClCqX,SAbiB,CACnB/Y,KAAM,eACNgZ,QAASC,GAYPC,OAAQpH,IACRqH,GAAIjE,MAWN,OATArY,EAAEqc,OAAO7G,KAAKxV,GACdA,EAAEsc,GAAG9G,KAAKxV,GACNyF,EAAAA,IAAiB2P,EAAAA,KACnBmH,QAAQzd,IAAIqP,OAAQ,OAAQnO,GAC5Buc,QAAQzd,IAAIqP,OAAQ,KAAMnO,EAAEsc,KAE1BlH,EAAAA,IACF3N,SAASoQ,gBAAgB9J,aAAa,eAAgB/N,EAAEkc,SAASC,SAE5Dnc,CAAC,EAGmBic,GAEhBO,GAAa1e,EAAAA,EAAAA,eAAcke,GAE3BS,EAAgBA,KAAMC,EAAAA,EAAAA,YAAWF,2iBCzB9C,MAAMG,EAAmBC,EAAAA,GAAOC,QAE1BC,EAAqBrP,EAAAA,cAAoB,CAAC,GAEhD,SAASsP,EAAuBvY,GAA4C,IAA3C,gBAAEwY,EAAe,KAAEC,EAAI,MAAExM,EAAK,OAAErO,GAAQoC,EACvE,MAAM0Y,EAAYD,EACdA,EAAKA,KACLD,EAAgBvM,IAAUuM,EAAgBvM,GAAOwM,KAErD,OACE/G,EAAAA,EAAAA,MAACzI,EAAAA,SAAc,CAAA9B,SAAA,CACZuR,GAAa9a,EAAO8a,IACnBA,IAAalH,EAAAA,EAAAA,KAAA,OAAArK,SAAK,4BAG1B,CAEA,MAAMwR,EAAcnc,IAClB,MAAM,KAAEic,EAAI,MAAExM,EAAK,OAAErO,EAAM,SAAEuJ,GAAa3K,EAE1C,OACEgV,EAAAA,EAAAA,KAAC8G,EAAmB9e,SAAQ,CAAA2N,SACzBqR,IACChH,EAAAA,EAAAA,KAAC+G,EAAuB,CACtBE,KAAMA,EACNxM,MAAOA,EACPrO,OAAQA,GAAUuJ,EAClBqR,gBAAiBA,KAGO,EAI5BI,EAAiB3M,IAAU,IAAD4M,EAErB5P,EAAAA,WAQT,MAAMhF,EAAUgF,EAAAA,WAAiBqP,GAKjC,GAAIQ,MAAMC,OAAO9M,IACf,MAAM,IAAI1J,MAAM,iLAIM0J,WAIxB,GAAkB,QAAlB4M,EAAI5U,EAAQgI,UAAM,IAAA4M,GAAdA,EAAgBJ,KAClB,OAAOxU,EAAQgI,GAAOwM,KAEtB,MAAM,IAAIlW,MACR,uMAIJ,EAUF,SAASyW,IACP,MAAM,IAAIzW,MACR,6UAKJ,wBClGsB7J,MAKpBE,EAAOC,SALaH,EAKWU,EAAQ,QALRV,EAAE6B,SAAY7B,wBCA/C,IAAIugB,EAAoB,EAAQ,MAC5BC,EAAkB,EAAQ,MAC1BC,EAA6B,EAAQ,MACrCC,EAAoB,EAAQ,MAIhCxgB,EAAOC,QAHP,SAA4BC,GAC1B,OAAOmgB,EAAkBngB,IAAMogB,EAAgBpgB,IAAMqgB,EAA2BrgB,IAAMsgB,GACxF,EACqCxgB,EAAOC,QAAQK,YAAa,EAAMN,EAAOC,QAAiB,QAAID,EAAOC,0LCHnG,MAEMwG,EAAM,SAACga,GAA6C,IAADC,EAC9D,IAAIC,EAAAA,GAAJ,CAAyB,QAAAxd,EAAAhB,UAAArD,OADW8hB,EAAc,IAAAxiB,MAAA+E,EAAA,EAAAA,EAAA,KAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAdud,EAAcvd,EAAA,GAAAlB,UAAAkB,IAElDqd,EAAAla,SAAQC,IAAGpE,MAAAqe,EAAA,CAACD,GAAOnd,OAAKsd,GADA,CAE1B,EAUanY,EAAQ,WAAsB,IAADoY,EACpCF,EAAAA,KACJE,EAAAra,SAAQiC,MAAKpG,MAAAwe,EAAA1e,UACf,EACa6G,EAAWA,KAClB2X,EAAAA,IACJna,QAAQwC,UAAU,EAGb,SAAS8X,EAAY1gB,GAC1BoG,QAAQiD,MAAMrJ,GACa,iBAANA,GAAiB,IAAIuJ,MAAMvJ,EAElD,CAEO,SAAS2gB,EAAkB5X,GAChC,IACEA,GAAMA,GACR,CAAE,MAAM/I,GACNoG,QAAQwa,KAAK,wBAAyB5gB,EACxC,CACF,wGCxCA,IAAAG,EAAAqB,EAAApB,EAAA,OACA0K,EAAApJ,EAAAtB,EAAA,wIAEA,MAAMygB,EAAkC,oBAAd5W,UAA2BA,SAASkQ,KAExD2G,EAAkBtd,IACvB,MAAMud,EAAU,SAASC,GACxB,OAAQA,GACP,IAAK,SACJ,OAAO,IACR,IAAK,MACJ,OAAO,KACR,QACC,OAAO,KAET,CATe,CASbxd,EAAMwd,OAET,OACC7gB,EAAAoB,QAAAsD,cAAA,OACCxB,UAAU,uCACV2a,MAAO,CACNiD,SAAU,QACVC,IAAK,EACLC,KAAM,EACNJ,OAAQA,GANVK,YAAA,EAAAC,SAAA,CAAAC,SAAAC,EAAAC,WAAA,GAAAC,aAAA,IAQEje,EAAM2K,SATT,EAZD,IA0BqBuT,EAAN,SAAAC,GACd,SAAAD,IAAe,IAAD5e,EAEb,OADAA,EAAA6e,EAAA1gB,KAAA,aAODiL,kBAAoB,KACnB2U,GAAcA,EAAWe,YAAY9e,EAAK6U,GAA1C,EATa7U,EAYdyJ,qBAAuB,KACtBsU,GAAcA,EAAWgB,YAAY/e,EAAK6U,GAA1C,EAXA7U,EAAK6U,GACiB,oBAAd1N,UACJA,SAASpF,cAAc,WAF3B/B,CAIA,CAyBA,OAzBAmM,EAAAyS,EAAAC,GAAAD,EAAA3gB,UAUD6D,OAAA,WACC,OAAO1C,KAAKyV,IAAMkJ,EACf/V,EAAAvJ,QAASugB,aACT3hB,EAAAoB,QAAAsD,cAAA1E,EAAAoB,QAAAwgB,SAAA,KACElB,GACA1gB,EAAAoB,QAAAsD,cAACic,EAAD,CACCkB,OAAQ9f,KAAKsB,MAAMye,IACnBjB,MAAO9e,KAAKsB,MAAMwd,MAFnBI,OAAA,KAAAC,SAAA,CAAAC,SAAAC,EAAAC,WAAA,GAAAC,aAAA,IAGEvf,KAAKsB,MAAM2K,WAIfjM,KAAKyV,IAEL,IACH,EAAA+J,CAAA,CAhCa,CAA+BvhB,EAAA2E,WAA/B,gOC/BR,MAAM8S,EAA8B,oBAAXjH,OACnBuR,GAAetK,EAEf2I,GAAe4B,EACfla,GAAgBka,EAQhBC,GANsBxK,GAAayK,QAAQ1R,OAAO2R,SAMvB,eAFvB1K,EAAYjH,OAAOvB,SAASmT,SAAW,KAI3CC,GAAiB,EACjBC,GAAiB,qHCT9B,iBAAuB5U,IACrBA,EAAM6U,kBACU,IAAjB7U,EAAM8U,UACJ9U,EAAM+U,SAAW/U,EAAMgV,QAAUhV,EAAMiV,SAAWjV,EAAMkV,6ECN3D,MCgBA,SAAcC,GAGb,OAFAA,EAAMA,GAAO7kB,OAAOmG,OAAO,MAEpB,CAQN2e,GAAI,SAAY9e,EAAc2J,IAC5BkV,EAAI7e,KAAU6e,EAAI7e,GAAQ,KAAKyD,KAAKkG,EACtC,EASAoV,IAAK,SAAa/e,EAAc2J,GAC3BkV,EAAI7e,IACP6e,EAAI7e,GAAMgf,OAAOH,EAAI7e,GAAMoG,QAAQuD,KAAa,EAAG,EAErD,EAUAsV,KAAM,SAAcjf,EAAckf,IAChCL,EAAI7e,IAAS,IAAI9E,QAAQf,KAAI,SAAUwP,GAAWA,EAAQuV,EAAM,KAChEL,EAAI,MAAQ,IAAI3jB,QAAQf,KAAI,SAAUwP,GAAWA,EAAQ3J,EAAMkf,EAAM,GACvE,EAEF,CD1DgBC,yBEIhB,IANA,IAAItQ,EAAM,EAAQ,MAChB0E,EAAyB,oBAAX/G,OAAyB,EAAA4S,EAAS5S,OAChD6S,EAAU,CAAC,MAAO,UAClBC,EAAS,iBACTC,EAAMhM,EAAK,UAAY+L,GACvBE,EAAMjM,EAAK,SAAW+L,IAAW/L,EAAK,gBAAkB+L,GACjDvkB,EAAI,GAAIwkB,GAAOxkB,EAAIskB,EAAQ9kB,OAAQQ,IAC1CwkB,EAAMhM,EAAK8L,EAAQtkB,GAAK,UAAYukB,GACpCE,EAAMjM,EAAK8L,EAAQtkB,GAAK,SAAWukB,IAAW/L,EAAK8L,EAAQtkB,GAAK,gBAAkBukB,GAIpF,IAAKC,IAAQC,EAAK,CAChB,IAAIC,EAAO,EACTC,EAAK,EACLC,EAAQ,GACRC,EAAgB,IAAO,GACzBL,EAAM,SAAUjW,GACd,GAAqB,IAAjBqW,EAAMplB,OAAc,CACtB,IAAIslB,EAAOhR,IACTiR,EAAO5S,KAAK6S,IAAI,EAAGH,GAAiBC,EAAOJ,IAC7CA,EAAOK,EAAOD,EACd/V,YAAW,WACT,IAAIkW,EAAKL,EAAMzkB,MAAM,GAIrBykB,EAAMplB,OAAS,EACf,IAAK,IAAIQ,EAAI,EAAGA,EAAIilB,EAAGzlB,OAAQQ,IAC7B,IAAKilB,EAAGjlB,GAAGklB,UACT,IACED,EAAGjlB,GAAGuO,SAASmW,EACjB,CAAE,MAAO5jB,GACPiO,YAAW,WACT,MAAMjO,CACR,GAAG,EACL,CAGN,GAAGqR,KAAKgT,MAAMJ,GAChB,CAMA,OALAH,EAAMlc,KAAK,CACT0c,SAAUT,EACVpW,SAAUA,EACV2W,WAAW,IAENP,CACT,EACAF,EAAM,SAAUW,GACd,IAAK,IAAIplB,EAAI,EAAGA,EAAI4kB,EAAMplB,OAAQQ,IAC5B4kB,EAAM5kB,GAAGolB,SAAWA,IACtBR,EAAM5kB,GAAGklB,WAAY,EAG3B,CACF,CACAxkB,EAAOC,QAAU,SAAUkJ,GAIzB,OAAO2a,EAAIziB,KAAKyW,EAAM3O,EACxB,EACAnJ,EAAOC,QAAQ0N,OAAS,WACtBoW,EAAI1hB,MAAMyV,EAAM3V,UAClB,EACAnC,EAAOC,QAAQkP,SAAW,SAAUpI,GAC7BA,IACHA,EAAS+Q,GAEX/Q,EAAO4d,sBAAwBb,EAC/B/c,EAAO6d,qBAAuBb,CAChC,wBCvEA,IAAIc,EAAW,EAAQ,KACnBC,EAAiB,EAAQ,MACzBC,EAAc,EAAQ,MACtBC,EAAKzmB,OAAOgD,eAEhBtB,EAAQuJ,EAAI,EAAQ,MAAoBjL,OAAOgD,eAAiB,SAAwB0jB,EAAGC,EAAGC,GAI5F,GAHAN,EAASI,GACTC,EAAIH,EAAYG,GAAG,GACnBL,EAASM,GACLL,EAAgB,IAClB,OAAOE,EAAGC,EAAGC,EAAGC,EAClB,CAAE,MAAO/kB,GAAiB,CAC1B,GAAI,QAAS+kB,GAAc,QAASA,EAAY,MAAM7mB,UAAU,4BAEhE,MADI,UAAW6mB,IAAYF,EAAEC,GAAKC,EAAW3d,OACtCyd,CACT,iCCbAjlB,EAAOC,QAAU,CAACf,EAAQkmB,KACxB,GAAwB,iBAAXlmB,GAA4C,iBAAdkmB,EACzC,MAAM,IAAI9mB,UAAU,iDAEtB,GAAkB,KAAd8mB,EACF,MAAO,CAAClmB,GAEV,MAAMmmB,EAAiBnmB,EAAOyL,QAAQya,GACtC,OAAwB,IAApBC,EACK,CAACnmB,GAEH,CAACA,EAAOO,MAAM,EAAG4lB,GAAiBnmB,EAAOO,MAAM4lB,EAAiBD,EAAUtmB,QAAQ,qCCbpF,SAASwmB,EAAiBC,EAAmBC,GAClD,YAD4C,IAAbD,IAAAA,EAAgB,QAAe,IAAZC,IAAAA,EAAe,IAC1D/T,KAAKgT,MAAMhT,KAAKC,UAAY8T,EAAOD,GAASA,EACrD,CAEO,SAAShI,EAAuBze,GACrC,YAD2C,IAANA,IAAAA,EAAS,IACtC2S,KAAKC,UAAW,IAAIyB,MAAOsS,UAAY,IAAI9lB,QAAQ,IAAK,IAAI+lB,OAAO,EAAG5mB,EAChF,8JCNA,IAAA6mB,EAAAnlB,EAAA,gDACA,IAAAolB,EAAAplB,EAAA,0ECDA,IAAIqlB,EAA+B,EAAQ,MAY3C7lB,EAAOC,QAXP,SAAkCG,EAAGmS,GACnC,GAAI,MAAQnS,EAAG,MAAO,CAAC,EACvB,IAAI0lB,EACF5lB,EACAZ,EAAIumB,EAA6BzlB,EAAGmS,GACtC,GAAIhU,OAAOwnB,sBAAuB,CAChC,IAAI1lB,EAAI9B,OAAOwnB,sBAAsB3lB,GACrC,IAAKF,EAAI,EAAGA,EAAIG,EAAEvB,OAAQoB,IAAK4lB,EAAIzlB,EAAEH,IAAK,IAAMqS,EAAE5H,QAAQmb,IAAM,CAAC,EAAEE,qBAAqB3kB,KAAKjB,EAAG0lB,KAAOxmB,EAAEwmB,GAAK1lB,EAAE0lB,GAClH,CACA,OAAOxmB,CACT,EAC2CU,EAAOC,QAAQK,YAAa,EAAMN,EAAOC,QAAiB,QAAID,EAAOC,2CCVhH,IAAIgmB,EAAiBnkB,EAAuB,EAAQ,MAChDokB,EAAqBpkB,EAAuB,EAAQ,OACpDqkB,EAAmBrkB,EAAuB,EAAQ,OAClDE,EAAcF,EAAuB,EAAQ,MACjD,SAASA,EAAuBd,GAC9B,OAAOA,GAAOA,EAAIV,WAAaU,EAAM,CACnCW,QAASX,EAEb,CACAhB,EAAOC,QAAU,CACfmL,WAAYpJ,EAAYL,QACxBykB,gBAAiBD,EAAiBxkB,QAClC0kB,kBAAmBH,EAAmBvkB,QACtCmB,cAAemjB,EAAetkB,2BCZhC3B,EAAOC,QAHP,WACE,MAAM,IAAI3B,UAAU,uIACtB,EACqC0B,EAAOC,QAAQK,YAAa,EAAMN,EAAOC,QAAiB,QAAID,EAAOC,2CCD1GA,EAAQK,YAAa,EACrBL,EAAQqmB,gBAAkBrmB,EAAQsmB,mBAAgB,EAClD,IACgCvlB,KADQ,EAAQ,QAEhCA,EAAIV,WASpBL,EAAQsmB,cADU,KAclBtmB,EAAQqmB,gBADD,qEC3BP,QAAcE,GAAqB,IAAVA,oLCElB,MAAMhJ,EAAkB,SAAUiJ,GACvC,IAAKA,EAAK,OAAOA,EAAI,QAAAtjB,EAAAhB,UAAArD,OADgC4nB,EAAU,IAAAtoB,MAAA+E,EAAA,EAAAA,EAAA,KAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAVqjB,EAAUrjB,EAAA,GAAAlB,UAAAkB,GAE/D,IAAK,IAAIsjB,KAAQD,EAAY,CAC3B,GAAID,EAAI1L,SAAS4L,GAAO,MACxBF,EAAIze,KAAK2e,EACX,CACA,OAAOF,CACT,EAEahJ,EAAkB,SAAUgJ,GACvC,IAAKA,EAAK,OAAOA,EAAI,QAAAG,EAAAzkB,UAAArD,OADgC+nB,EAAa,IAAAzoB,MAAAwoB,EAAA,EAAAA,EAAA,KAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAbD,EAAaC,EAAA,GAAA3kB,UAAA2kB,GAElE,IAAK,IAAIH,KAAQE,EAAe,CAC9B,IAAIvnB,EAAImnB,EAAI9b,QAAQgc,GACpB,KAAOrnB,GAAK,GACVmnB,EAAIlD,OAAOjkB,EAAG,GACdA,EAAImnB,EAAI9b,QAAQgc,EAEpB,CACA,OAAOF,CACT,EAEaM,EAA6B,SAAUN,EAAWO,GAC7D,GAAKP,EAAL,CAAiB,QAAAQ,EAAA9kB,UAAArD,OADgEooB,EAAa,IAAA9oB,MAAA6oB,EAAA,EAAAA,EAAA,KAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAbD,EAAaC,EAAA,GAAAhlB,UAAAglB,GAE1F1E,QAAQuE,GAAYxJ,EAAenb,WAAC,EAAD,CAACokB,GAAGnjB,OAAK4jB,IAC3CzJ,EAAepb,WAAC,EAAD,CAACokB,GAAGnjB,OAAK4jB,GAFb,CAGlB,EAGaE,EAAkBA,CAAOC,EAAWC,IADrBC,EAAOF,EAAWC,KAAcE,EAAAA,EAAAA,IAAKF,EAAKzoB,QAAO0K,GAAK8d,EAAKtM,SAASxR,MACjCge,CAAaF,EAAMC,GAAMxoB,OAAS,EAEpF2oB,EAAmBhB,GAAaroB,MAAMspB,KAAKjB,GAAKkB,MAAK,CAACxnB,EAAGoJ,IAAM,GAAKkI,KAAKC,4CC9BtFzR,EAAQK,YAAa,EACrBL,EAAQ2nB,UAER,SAAmB5X,GACjB,IAAIP,EAAWO,GAAQ,IACnB+C,EAAS,GACT8U,EAAO,GACPC,EAAYrY,EAAS9E,QAAQ,MAEd,IAAfmd,IACFD,EAAOpY,EAASiW,OAAOoC,GACvBrY,EAAWA,EAASiW,OAAO,EAAGoC,IAGhC,IAAIC,EAActY,EAAS9E,QAAQ,MAEd,IAAjBod,IACFhV,EAAStD,EAASiW,OAAOqC,GACzBtY,EAAWA,EAASiW,OAAO,EAAGqC,IAGhC,MAAO,CACLtY,SAAUA,EACVsD,OAAmB,MAAXA,EAAiB,GAAKA,EAC9B8U,KAAe,MAATA,EAAe,GAAKA,EAE9B,qCC1BA,MAAMG,EAAkB,EAAQ,MAC1BC,EAAkB,EAAQ,MAC1BC,EAAe,EAAQ,MACvBC,EAAe,EAAQ,MAiG7B,SAASC,EAA6B5gB,GACpC,GAAqB,iBAAVA,GAAuC,IAAjBA,EAAM1I,OACrC,MAAM,IAAIR,UAAU,uDAExB,CACA,SAAS+T,EAAO7K,EAAOrJ,GACrB,OAAIA,EAAQkU,OACHlU,EAAQkqB,OAASL,EAAgBxgB,GAASgL,mBAAmBhL,GAE/DA,CACT,CACA,SAAS8K,EAAO9K,EAAOrJ,GACrB,OAAIA,EAAQmU,OACH2V,EAAgBzgB,GAElBA,CACT,CACA,SAAS8gB,EAAWpqB,GAClB,OAAIE,MAAMC,QAAQH,GACTA,EAAMypB,OAEM,iBAAVzpB,EACFoqB,EAAW/pB,OAAOoJ,KAAKzJ,IAAQypB,MAAK,CAACxnB,EAAGoJ,IAAM4W,OAAOhgB,GAAKggB,OAAO5W,KAAI7K,KAAIwC,GAAOhD,EAAMgD,KAExFhD,CACT,CACA,SAASqqB,EAAWrqB,GAClB,MAAMsqB,EAAYtqB,EAAMyM,QAAQ,KAIhC,OAHmB,IAAf6d,IACFtqB,EAAQA,EAAMuB,MAAM,EAAG+oB,IAElBtqB,CACT,CASA,SAASgW,EAAQhW,GAEf,MAAMuqB,GADNvqB,EAAQqqB,EAAWrqB,IACMyM,QAAQ,KACjC,OAAoB,IAAhB8d,EACK,GAEFvqB,EAAMuB,MAAMgpB,EAAa,EAClC,CACA,SAASC,EAAWlhB,EAAOrJ,GAMzB,OALIA,EAAQsW,eAAiB0L,OAAOD,MAAMC,OAAO3Y,KAA4B,iBAAVA,GAAuC,KAAjBA,EAAM5I,OAC7F4I,EAAQ2Y,OAAO3Y,IACNrJ,EAAQwqB,eAA2B,OAAVnhB,GAA2C,SAAxBA,EAAMvI,eAAoD,UAAxBuI,EAAMvI,gBAC7FuI,EAAgC,SAAxBA,EAAMvI,eAETuI,CACT,CACA,SAASgN,EAAMnB,EAAOlV,GASpBiqB,GARAjqB,EAAUI,OAAOC,OAAO,CACtB8T,QAAQ,EACRqV,MAAM,EACNiB,YAAa,OACbC,qBAAsB,IACtBpU,cAAc,EACdkU,eAAe,GACdxqB,IACkC0qB,sBACrC,MAAMC,EApHR,SAA8B3qB,GAC5B,IAAIgS,EACJ,OAAQhS,EAAQyqB,aACd,IAAK,QACH,MAAO,CAAC1nB,EAAKsG,EAAOuhB,KAClB5Y,EAAS,aAAa6Y,KAAK9nB,GAC3BA,EAAMA,EAAIvB,QAAQ,WAAY,IACzBwQ,QAIoBzG,IAArBqf,EAAY7nB,KACd6nB,EAAY7nB,GAAO,CAAC,GAEtB6nB,EAAY7nB,GAAKiP,EAAO,IAAM3I,GAN5BuhB,EAAY7nB,GAAOsG,CAMc,EAEvC,IAAK,UACH,MAAO,CAACtG,EAAKsG,EAAOuhB,KAClB5Y,EAAS,UAAU6Y,KAAK9nB,GACxBA,EAAMA,EAAIvB,QAAQ,QAAS,IACtBwQ,OAIoBzG,IAArBqf,EAAY7nB,GAIhB6nB,EAAY7nB,GAAO,GAAGoC,OAAOylB,EAAY7nB,GAAMsG,GAH7CuhB,EAAY7nB,GAAO,CAACsG,GAJpBuhB,EAAY7nB,GAAOsG,CAOgC,EAEzD,IAAK,QACL,IAAK,YACH,MAAO,CAACtG,EAAKsG,EAAOuhB,KAClB,MAAM1qB,EAA2B,iBAAVmJ,GAAsBA,EAAMuT,SAAS5c,EAAQ0qB,sBAC9DI,EAAkC,iBAAVzhB,IAAuBnJ,GAAWiU,EAAO9K,EAAOrJ,GAAS4c,SAAS5c,EAAQ0qB,sBACxGrhB,EAAQyhB,EAAiB3W,EAAO9K,EAAOrJ,GAAWqJ,EAClD,MAAMwM,EAAW3V,GAAW4qB,EAAiBzhB,EAAM9E,MAAMvE,EAAQ0qB,sBAAsBnqB,KAAIioB,GAAQrU,EAAOqU,EAAMxoB,KAAsB,OAAVqJ,EAAiBA,EAAQ8K,EAAO9K,EAAOrJ,GACnK4qB,EAAY7nB,GAAO8S,CAAQ,EAE/B,QACE,MAAO,CAAC9S,EAAKsG,EAAOuhB,UACOrf,IAArBqf,EAAY7nB,GAIhB6nB,EAAY7nB,GAAO,GAAGoC,OAAOylB,EAAY7nB,GAAMsG,GAH7CuhB,EAAY7nB,GAAOsG,CAGgC,EAG7D,CAoEoB0hB,CAAqB/qB,GAGjCgrB,EAAM5qB,OAAOmG,OAAO,MAC1B,GAAqB,iBAAV2O,EACT,OAAO8V,EAGT,KADA9V,EAAQA,EAAMzU,OAAOe,QAAQ,SAAU,KAErC,OAAOwpB,EAET,IAAK,MAAMC,KAAS/V,EAAM3Q,MAAM,KAAM,CACpC,GAAc,KAAV0mB,EACF,SAEF,IAAKloB,EAAKsG,GAAS0gB,EAAa/pB,EAAQmU,OAAS8W,EAAMzpB,QAAQ,MAAO,KAAOypB,EAAO,KAIpF5hB,OAAkBkC,IAAVlC,EAAsB,KAAO,CAAC,QAAS,aAAauT,SAAS5c,EAAQyqB,aAAephB,EAAQ8K,EAAO9K,EAAOrJ,GAClH2qB,EAAUxW,EAAOpR,EAAK/C,GAAUqJ,EAAO2hB,EACzC,CACA,IAAK,MAAMjoB,KAAO3C,OAAOoJ,KAAKwhB,GAAM,CAClC,MAAM3hB,EAAQ2hB,EAAIjoB,GAClB,GAAqB,iBAAVsG,GAAgC,OAAVA,EAC/B,IAAK,MAAMkB,KAAKnK,OAAOoJ,KAAKH,GAC1BA,EAAMkB,GAAKggB,EAAWlhB,EAAMkB,GAAIvK,QAGlCgrB,EAAIjoB,GAAOwnB,EAAWlhB,EAAOrJ,EAEjC,CACA,OAAqB,IAAjBA,EAAQwpB,KACHwB,IAEgB,IAAjBhrB,EAAQwpB,KAAgBppB,OAAOoJ,KAAKwhB,GAAKxB,OAASppB,OAAOoJ,KAAKwhB,GAAKxB,KAAKxpB,EAAQwpB,OAAO0B,QAAO,CAAClZ,EAAQjP,KAC7G,MAAMsG,EAAQ2hB,EAAIjoB,GAOlB,OANIuhB,QAAQjb,IAA2B,iBAAVA,IAAuBpJ,MAAMC,QAAQmJ,GAEhE2I,EAAOjP,GAAOonB,EAAW9gB,GAEzB2I,EAAOjP,GAAOsG,EAET2I,CAAM,GACZ5R,OAAOmG,OAAO,MACnB,CACAzE,EAAQiU,QAAUA,EAClBjU,EAAQuU,MAAQA,EAChBvU,EAAQ4S,UAAY,CAAC9L,EAAQ5I,KAC3B,IAAK4I,EACH,MAAO,GAQTqhB,GANAjqB,EAAUI,OAAOC,OAAO,CACtB6T,QAAQ,EACRgW,QAAQ,EACRO,YAAa,OACbC,qBAAsB,KACrB1qB,IACkC0qB,sBACrC,MAAMS,EAAepoB,GAAO/C,EAAQorB,UA9NH/hB,MA8NiCT,EAAO7F,IAAS/C,EAAQqrB,iBAAmC,KAAhBziB,EAAO7F,GAC9G4nB,EA9NR,SAA+B3qB,GAC7B,OAAQA,EAAQyqB,aACd,IAAK,QACH,OAAO1nB,GAAO,CAACiP,EAAQ3I,KACrB,MAAMiiB,EAAQtZ,EAAOrR,OACrB,YAAc4K,IAAVlC,GAAuBrJ,EAAQorB,UAAsB,OAAV/hB,GAAkBrJ,EAAQqrB,iBAA6B,KAAVhiB,EACnF2I,EAEK,OAAV3I,EACK,IAAI2I,EAAQ,CAACkC,EAAOnR,EAAK/C,GAAU,IAAKsrB,EAAO,KAAK1qB,KAAK,KAE3D,IAAIoR,EAAQ,CAACkC,EAAOnR,EAAK/C,GAAU,IAAKkU,EAAOoX,EAAOtrB,GAAU,KAAMkU,EAAO7K,EAAOrJ,IAAUY,KAAK,IAAI,EAElH,IAAK,UACH,OAAOmC,GAAO,CAACiP,EAAQ3I,SACPkC,IAAVlC,GAAuBrJ,EAAQorB,UAAsB,OAAV/hB,GAAkBrJ,EAAQqrB,iBAA6B,KAAVhiB,EACnF2I,EAEK,OAAV3I,EACK,IAAI2I,EAAQ,CAACkC,EAAOnR,EAAK/C,GAAU,MAAMY,KAAK,KAEhD,IAAIoR,EAAQ,CAACkC,EAAOnR,EAAK/C,GAAU,MAAOkU,EAAO7K,EAAOrJ,IAAUY,KAAK,KAElF,IAAK,QACL,IAAK,YACH,OAAOmC,GAAO,CAACiP,EAAQ3I,IACjBA,SAA0D,IAAjBA,EAAM1I,OAC1CqR,EAEa,IAAlBA,EAAOrR,OACF,CAAC,CAACuT,EAAOnR,EAAK/C,GAAU,IAAKkU,EAAO7K,EAAOrJ,IAAUY,KAAK,KAE5D,CAAC,CAACoR,EAAQkC,EAAO7K,EAAOrJ,IAAUY,KAAKZ,EAAQ0qB,uBAE1D,QACE,OAAO3nB,GAAO,CAACiP,EAAQ3I,SACPkC,IAAVlC,GAAuBrJ,EAAQorB,UAAsB,OAAV/hB,GAAkBrJ,EAAQqrB,iBAA6B,KAAVhiB,EACnF2I,EAEK,OAAV3I,EACK,IAAI2I,EAAQkC,EAAOnR,EAAK/C,IAE1B,IAAIgS,EAAQ,CAACkC,EAAOnR,EAAK/C,GAAU,IAAKkU,EAAO7K,EAAOrJ,IAAUY,KAAK,KAGpF,CAiLoB2qB,CAAsBvrB,GAClCwrB,EAAa,CAAC,EACpB,IAAK,MAAMzoB,KAAO3C,OAAOoJ,KAAKZ,GACvBuiB,EAAapoB,KAChByoB,EAAWzoB,GAAO6F,EAAO7F,IAG7B,MAAMyG,EAAOpJ,OAAOoJ,KAAKgiB,GAIzB,OAHqB,IAAjBxrB,EAAQwpB,MACVhgB,EAAKggB,KAAKxpB,EAAQwpB,MAEbhgB,EAAKjJ,KAAIwC,IACd,MAAMsG,EAAQT,EAAO7F,GACrB,YAAcwI,IAAVlC,EACK,GAEK,OAAVA,EACK6K,EAAOnR,EAAK/C,GAEjBC,MAAMC,QAAQmJ,GACTA,EAAM6hB,OAAOP,EAAU5nB,GAAM,IAAInC,KAAK,KAExCsT,EAAOnR,EAAK/C,GAAW,IAAMkU,EAAO7K,EAAOrJ,EAAQ,IACzDU,QAAOF,GAAKA,EAAEG,OAAS,IAAGC,KAAK,IAAI,EAExCkB,EAAQgT,SAAW,CAACC,EAAK/U,KACvBA,EAAUI,OAAOC,OAAO,CACtB8T,QAAQ,GACPnU,GACH,MAAOyrB,EAAM/B,GAAQK,EAAahV,EAAK,KACvC,OAAO3U,OAAOC,OAAO,CACnB0U,IAAK0W,EAAKlnB,MAAM,KAAK,IAAM,GAC3B2Q,MAAOmB,EAAMN,EAAQhB,GAAM/U,IAC1BA,GAAWA,EAAQ0rB,yBAA2BhC,EAAO,CACtDiC,mBAAoBxX,EAAOuV,EAAM1pB,IAC/B,CAAC,EAAE,EAET8B,EAAQ8pB,aAAe,CAAChjB,EAAQ5I,KAC9BA,EAAUI,OAAOC,OAAO,CACtB6T,QAAQ,EACRgW,QAAQ,GACPlqB,GACH,MAAM+U,EAAMqV,EAAWxhB,EAAOmM,KAAKxQ,MAAM,KAAK,IAAM,GAC9CsnB,EAAe/pB,EAAQiU,QAAQnN,EAAOmM,KACtC+W,EAAqBhqB,EAAQuU,MAAMwV,EAAc,CACrDrC,MAAM,IAEFtU,EAAQ9U,OAAOC,OAAOyrB,EAAoBljB,EAAOsM,OACvD,IAAI6W,EAAcjqB,EAAQ4S,UAAUQ,EAAOlV,GACvC+rB,IACFA,EAAc,IAAIA,KAEpB,IAAIrC,EAlJN,SAAiB3U,GACf,IAAI2U,EAAO,GACX,MAAMW,EAAYtV,EAAIvI,QAAQ,KAI9B,OAHmB,IAAf6d,IACFX,EAAO3U,EAAIzT,MAAM+oB,IAEZX,CACT,CA2IasC,CAAQpjB,EAAOmM,KAI1B,OAHInM,EAAO+iB,qBACTjC,EAAO,IAAIxV,EAAOtL,EAAO+iB,mBAAoB3rB,MAExC,GAAG+U,IAAMgX,IAAcrC,GAAM,EAEtC5nB,EAAQmqB,KAAO,CAAClsB,EAAOW,EAAQV,KAC7BA,EAAUI,OAAOC,OAAO,CACtBqrB,yBAAyB,GACxB1rB,GACH,MAAM,IACJ+U,EAAG,MACHG,EAAK,mBACLyW,GACE7pB,EAAQgT,SAAS/U,EAAOC,GAC5B,OAAO8B,EAAQ8pB,aAAa,CAC1B7W,MACAG,MAAO8U,EAAa9U,EAAOxU,GAC3BirB,sBACC3rB,EAAQ,EAEb8B,EAAQoqB,QAAU,CAACnsB,EAAOW,EAAQV,KAChC,MAAMmsB,EAAkBlsB,MAAMC,QAAQQ,GAAUqC,IAAQrC,EAAOkc,SAAS7Z,GAAO,CAACA,EAAKsG,KAAW3I,EAAOqC,EAAKsG,GAC5G,OAAOvH,EAAQmqB,KAAKlsB,EAAOosB,EAAiBnsB,EAAQ,oBChTtD6B,EAAOC,QAAU,SAAU+oB,GACzB,IACE,QAASA,GACX,CAAE,MAAO5oB,GACP,OAAO,CACT,CACF,oBCFAJ,EAAOC,QAJP,SAAgCG,GAC9B,QAAI,IAAWA,EAAG,MAAM,IAAImqB,eAAe,6DAC3C,OAAOnqB,CACT,EACyCJ,EAAOC,QAAQK,YAAa,EAAMN,EAAOC,QAAiB,QAAID,EAAOC,0BCH9GD,EAAOC,QAAU,gGAEfyC,MAAM,qFCDD,MAAM8nB,EAAwDC,IACpE,MAAM/iB,GAAMf,EAAAA,EAAAA,KAAS,MACpB+jB,SAAUD,GAAgB,KAG1B,WAAI5kB,GAAY,OAAO6B,EAAIgjB,QAAS,EACpC,WAAI7kB,CAAQkS,GAAgBrQ,EAAIgjB,SAAW3S,CAAG,MAE/C,OAAOrQ,CAAG,qCCRX1H,EAAOC,QAAU,EAAjBD,gvBCQA,MAAM2qB,EAAyCvnB,IAAS,IAADgE,EAAAwjB,EAAAC,EAAAC,EAGrD,MAAMtZ,EAAWsM,EAAAA,GAAY/B,EAAAA,EAAAA,MAAoC,IAArBhL,OAAO8K,YAAoB,EAA2C,QAA1CzU,EAAoB,QAApBwjB,EAAY,QAAZC,EAAGznB,EAAK0J,YAAI,IAAA+d,OAAA,EAATA,EAAW/rB,cAAM,IAAA8rB,EAAAA,EAAc,QAAdE,EAAI1nB,EAAK2nB,aAAK,IAAAD,OAAA,EAAVA,EAAYhsB,cAAM,IAAAsI,EAAAA,EAAI,GAAM,EAC3G,IAAboK,GAAgBwZ,EAAAA,GAAUtpB,IAAI0B,EAAKZ,KAAM,CAAEyoB,QAAS,IACxDD,EAAAA,GAAUE,OAAO9nB,EAAKZ,KAAMgP,EAAU,CAAEyZ,QAAS,GAAK,CACpDA,QAAS,EACTE,KAAMC,EAAAA,GAAOC,UACb1sB,GAAI,IACJ,EAkBS2sB,EAAejb,EAAAA,YAAiB,CAACzM,EAAmD8D,KAAS,IAAD6jB,EAAAC,EACvG,MAAMC,ECtC6BviB,KACnC,MAAMwiB,EAAiB,CAAC,EAIxB,OAHAntB,OAAOoJ,KAAKuB,GAAGvG,SAAQ+F,IACjBA,EAAEijB,MAAM,YAAWD,EAAehjB,GAAKQ,EAAER,GAAE,IAE1CgjB,CAAc,EDiCJE,CAAqBhoB,GAChCioB,EAAU1lB,EAAA,CACd1C,WAAWqoB,EAAAA,EAAAA,GAAcloB,EAAMH,WAAoC,QAAzB8nB,EAAC3nB,EAAMmoB,0BAAkB,IAAAR,EAAAA,EAAIS,EAAAA,MAAmB,cAAWtiB,GACrGuiB,GAAIroB,EAAMqoB,GACVpS,MAAOjW,EAAMiW,MACb/a,OAAQ8E,EAAM9E,OACdyP,SAAU3K,EAAM2K,SAChBwK,QAASnV,EAAMmV,QACfjV,gBAAiB,SACjB5B,OAAQ0B,EAAM1B,OACdgqB,IAAKtoB,EAAMsoB,KACRT,GAGH,OAAO7S,EAAAA,EAAAA,KAACuT,EAAAA,GAAchmB,EAAAA,EAAA,GAChB0lB,GAAU,IACdnkB,IAAKA,EACLoF,KAAM,CACJhO,OAAQgf,EAAAA,EAAwB,QAAhB0N,EAAI5nB,EAAM9E,cAAM,IAAA0sB,EAAAA,EAAI,IAAO,EAC3CY,QAASzB,KAEX,qFEzDC,SAAS0B,EAAWljB,IAEzB9C,EAAAA,EAAAA,WAAU8C,EAAI,GAChB,gCCLA,IAiBgCmjB,EAASC,EAjBrCC,EAAe,WACjB,SAASC,EAAiBvqB,EAAQ0B,GAChC,IAAK,IAAItE,EAAI,EAAGA,EAAIsE,EAAM9E,OAAQQ,IAAK,CACrC,IAAIotB,EAAa9oB,EAAMtE,GACvBotB,EAAWC,WAAaD,EAAWC,aAAc,EACjDD,EAAWE,cAAe,EACtB,UAAWF,IAAYA,EAAWvkB,UAAW,GACjD5J,OAAOgD,eAAeW,EAAQwqB,EAAWxrB,IAAKwrB,EAChD,CACF,CACA,OAAO,SAAUG,EAAaC,EAAYC,GAGxC,OAFID,GAAYL,EAAiBI,EAAY1rB,UAAW2rB,GACpDC,GAAaN,EAAiBI,EAAaE,GACxCF,CACT,CACF,CAfmB,GAgBfG,GAC4BV,EADa,CAAC,GAAI,IACTC,EADc,CAAC,GAAI,IAEnDhuB,OAAO0uB,OAAO1uB,OAAOkuB,iBAAiBH,EAAS,CACpDC,IAAK,CACH/kB,MAAOjJ,OAAO0uB,OAAOV,QAc3B,IAAIW,EAAc,WAOhB,SAASA,IAEP,IADA,IAAIhqB,EAAQZ,KACHa,EAAOhB,UAAUrD,OAAQquB,EAAe/uB,MAAM+E,GAAOE,EAAO,EAAGA,EAAOF,EAAME,IACnF8pB,EAAa9pB,GAAQlB,UAAUkB,GAkCjC,OAtDJ,SAAyB+pB,EAAUP,GACjC,KAAMO,aAAoBP,GACxB,MAAM,IAAIvuB,UAAU,oCAExB,CAkBI+uB,CAAgB/qB,KAAM4qB,GACtB5qB,KAAKgrB,IAAM,SAAUhB,GACnB,IAAK,IAAI1F,EAAQzkB,UAAUrD,OAAQyG,EAAcnH,MAAMwoB,EAAQ,EAAIA,EAAQ,EAAI,GAAIE,EAAQ,EAAGA,EAAQF,EAAOE,IAC3GvhB,EAAYuhB,EAAQ,GAAK3kB,UAAU2kB,GAErC,MAAuB,mBAAZwF,EAIFppB,EAAMqqB,WAAWC,KAAKtqB,EAAOopB,GAEf,iBAAZA,EAEFppB,EAAMuqB,mBAAmBnB,IAIlCA,EAAUA,EAAQ5tB,IAAIwE,EAAMwqB,gBAAgBF,KAAKtqB,IAC1CA,EAAMuqB,mBAAmBnB,EAAQjD,OAAOnmB,EAAMyqB,qBAAqBH,KAAKtqB,EAAOqC,KACxF,EAGI4nB,EAAaruB,OAAS,GAAKV,MAAMC,QAAQ8uB,EAAa,MACxDA,EAAeA,EAAa,IAI9B7qB,KAAK6qB,aAAeA,EAAazuB,KAAI,SAAUkvB,GAC7C,MAA8B,mBAAhBA,EAA6BA,IAAgBA,CAC7D,IAGOtrB,KAAKgrB,GACd,CAyFA,OA9EAd,EAAaU,EAAa,CAAC,CACzBhsB,IAAK,aASLsG,MAAO,SAAoBqmB,EAAaC,GACtC,IAAK,IAAI7G,EAAQ9kB,UAAUrD,OAAQivB,EAAgB3vB,MAAM6oB,EAAQ,EAAIA,EAAQ,EAAI,GAAIE,EAAQ,EAAGA,EAAQF,EAAOE,IAC7G4G,EAAc5G,EAAQ,GAAKhlB,UAAUglB,GAEvC,OAAO7kB,KAAKgrB,IAAIN,EAAiBa,EAAYxrB,WAAMqH,EAAW,CAACokB,GAAUxqB,OAAOyqB,IAClF,GAUC,CACD7sB,IAAK,uBACLsG,MAAO,SAA8BumB,EAAeC,EAAaC,GAC/D,IAAIC,EAAe5rB,KAAK6rB,sBAAsBJ,EAAcK,QAASJ,GACrE,MAAO,GAAG1qB,OAAO0qB,EAAaE,EAAcD,EAC9C,GAQC,CACD/sB,IAAK,kBACLsG,MAAO,SAAyByK,GAI9B,OAAO3P,KAAK6qB,aAAa9D,QAHhB,SAAYgF,EAAKC,GACxB,OAAOA,EAAUC,SAAWD,EAAUC,SAASF,GAAOA,CACxD,GACoCpc,EACtC,GASC,CACD/Q,IAAK,wBACLsG,MAAO,SAA+B0mB,EAAcF,GAIlD,OAAO1rB,KAAK6qB,aAAa9D,QAHhB,SAAYgF,EAAKC,GACxB,OAAOA,EAAUE,eAAiBF,EAAUE,eAAeH,EAAKL,GAAeK,CACjF,GACoCH,EACtC,GAQC,CACDhtB,IAAK,qBACLsG,MAAO,SAA4BinB,GAIjC,OAAOnsB,KAAK6qB,aAAa9D,QAHhB,SAAYgF,EAAKC,GACxB,OAAOA,EAAUI,YAAcJ,EAAUI,YAAYL,GAAOA,CAC9D,GACoCI,EACtC,KAEKvB,CACT,CAvIkB,GAwIlB,IC1KIyB,EAAW,CACbvJ,UAAW,GACXwJ,YAAa,GACbC,QAAQ,GAuCV,EA5B6B,WAC3B,IAAIC,EAAO3sB,UAAUrD,OAAS,QAAsB4K,IAAjBvH,UAAU,GAAmBA,UAAU,GAAKwsB,EAC/E,MAAO,CACLH,eAAgB,SAAwBN,EAAcF,GAEpD,GAAI5vB,MAAMC,QAAQ6vB,GAAe,CAC/B,IAAIa,EAAcb,EAAapvB,OAC3BsmB,EAAY0J,EAAK1J,UACjBwJ,EAAcE,EAAKF,YACnBC,EAASC,EAAKD,OAGdG,EAAShB,EAAYrC,MAAM,kBAO/B,GALEuC,EADEc,EACad,EAAanvB,KAAKqmB,EAAY4J,EAAO,IAErCd,EAAanvB,KAAKqmB,EAAY,KAG3CwJ,GAAeG,EAAc,EAAG,CAClC,IAAI1J,EAAiB6I,EAAae,YAAY7J,GAC9C8I,EAAeA,EAAazuB,MAAM,EAAG4lB,IAAmBwJ,EAASzJ,EAAY,IAAM,IAAMwJ,EAAcV,EAAazuB,MAAM4lB,EAAiB,EAC7I,CACF,CACA,OAAO6I,CACT,EAEJ,ECzBA,IAwBA,EAxB6B,WAC3B,IAAI3pB,EAAOpC,UAAUrD,OAAS,QAAsB4K,IAAjBvH,UAAU,GAAmBA,UAAU,GAAK,UAC/E,MAAO,CACLusB,YAAa,SAAqBD,GAChC,GAAa,YAATlqB,EAAoB,CAEtB,IAAIonB,EAAQ8C,EAAU9C,MAAM,qBACxBqD,EAASrD,GAASla,KAAKyd,IAAI7sB,MAAMoP,KAvB7C,SAA4BgV,GAC1B,GAAIroB,MAAMC,QAAQooB,GAAM,CACtB,IAAK,IAAInnB,EAAI,EAAG6vB,EAAO/wB,MAAMqoB,EAAI3nB,QAASQ,EAAImnB,EAAI3nB,OAAQQ,IACxD6vB,EAAK7vB,GAAKmnB,EAAInnB,GAEhB,OAAO6vB,CACT,CACE,OAAO/wB,MAAMspB,KAAKjB,EAEtB,CAcmDxe,CAAmB0jB,EAAMjtB,KAAI,SAAUqZ,GAChF,OAAOA,EAAGjZ,MACZ,MACA,GAAIkwB,EAAQ,CACV,IAAII,EAAS,IAAI3e,OAAO,MAAQue,EAAS,IAAK,MAC9C,OAAOP,EAAU9uB,QAAQyvB,EAAQ,GACnC,CACA,OAAOX,CACT,CACA,GAAa,QAATlqB,EAEF,OAAOkqB,EAAU9uB,QAAQ,cAAe,IAE1C,MAAM,IAAIgK,MAAM,iBAAmBpF,EACrC,EAEJ,EChBA,EAlB4B,WAC1B,IAAI8qB,EAAOltB,UAAUrD,OAAS,QAAsB4K,IAAjBvH,UAAU,GAAmBA,UAAU,GAAK,GAC/E,MAAO,CACLusB,YAAa,SAAqBD,GAChC,GAAa,KAATY,EACF,OAAOZ,EAAU7vB,OAGnB,GAAa,WADbywB,EAAOA,EAAKpwB,gBACqB,SAATowB,EACtB,OAAOZ,EAAU9uB,QAAQ,OAAQ,IAEnC,GAAa,QAAT0vB,GAA2B,UAATA,EACpB,OAAOZ,EAAU9uB,QAAQ,OAAQ,IAEnC,MAAM,IAAIgK,MAAM,uBAAyB0lB,EAC3C,EAEJ,ECRA,GCViB,IAAI,EAAY,EAAuB,CACtDjK,UAAW,MACT,EAAwB,GCFR,IAAI,EAAY,EAAuB,CACzDA,UAAW,IACXwJ,YAAa,QACX,EAAwB,GCHT,IAAI,EAAY,EAAuB,CACxDxJ,UAAW,IACXwJ,YAAa,OACX,EAAwB,GHPC,SAAgCU,GAC3D,MAAO,CACLd,eAAgB,SAAwBN,EAAcF,GACpD,GAAe,MAAXsB,GAAsC,iBAAZA,EAK5B,MAAM,IAAI3lB,MAAM,uDAElB,MAN8B,iBAAjBukB,GAA6BA,EAAanT,SAASuU,KAC5DpB,EAAeA,EAAaxrB,MAAM4sB,IAK/BpB,CACT,EAEJ,GIbIqB,EAAe,SAAsB5wB,GACvC,OAAY,MAALA,IAAcwhB,OAAOD,MAAMvhB,IAAmB,kBAANA,CACjD,EAcA,EAbyC,WACvC,MAAO,CACL6vB,eAAgB,SAAwBN,GACtC,OAAI9vB,MAAMC,QAAQ6vB,GACTA,EAAarvB,OAAO0wB,GAEzBA,EAAarB,GACRA,EAEF,EACT,EAEJ,ECCA,GCVW,IAAI,EAAY,EAAuB,MAAO,EAAoC,EAAwB,EAAwB,GDNxG,SAAwCsB,EAAaC,GACxF,MAAO,CACLjB,eAAgB,SAAwBN,EAAcF,GACpD,GAAmB,MAAfwB,GAAsC,MAAfC,EACzB,MAAM,IAAI9lB,MAAM,iEAIlB,OAAoB,MAAhBukB,EACKA,EAEAA,EAAawB,WAAW/vB,QAAQ6vB,EAAaC,EAExD,EAEJ,GECA,GCVe,IAAI,EAAY,EAAuB,MAAO,EAAwB,EAAwB,EAAuB,EAA+B,KAAM,SAAU,EAA+B,KAAM,QAAS,EAA+B,KAAM,QAAS,EAA+B,KAAM,UAAW,EAA+B,KAAM,UAAW,EAA+B,KAAM,WDArX,SAAkCD,EAAaC,GAC5E,MAAO,CACLf,YAAa,SAAqBD,GAChC,GAAmB,MAAfe,GAAsC,MAAfC,EACzB,MAAM,IAAI9lB,MAAM,2DAElB,OAAO8kB,EAAU9uB,QAAQ6vB,EAAaC,EACxC,EAEJ,GEZc,IAAI,EAAY,EAAyB,kBAAmB,KAAM,GCA9D,IAAI,EAAY,EAAyB,aAAc,IAAK,GCCtD,IAAI,EAAY,EAAuB,CAC7DrK,UAAW,MACT,EAAyB,WAAY,KAAM,GCFrB,IAAI,EAAY,EAAuB,CAC/DA,UAAW,IACXwJ,YAAa,OACX,EAAyB,WAAY,KAAM,GCHpB,IAAI,EAAY,EAAuB,CAChExJ,UAAW,IACXwJ,YAAa,QACX,EAAyB,WAAY,KAAM,GCH7B,IAAI,EAAY,EAAwB,EAAwB,GCAzD,IAAI,EAAY,EAAwB,EAAyB,WAAY,KAAM,GCD1F,IAAI,EAAY,EAAwB,GCAvC,IAAI,EAAY,EAAuB,OAAQ,uBCHlE3uB,EAAQkP,SAAWjK,GAAaA,qCCEhC,IAAIpD,EAAyB,EAAQ,MAErC7B,EAAQK,YAAa,EACrBL,EAAA,QAIA,SAAkBsK,EAAS9G,GACrB8G,EAAQC,UAAWD,EAAQC,UAAUkQ,IAAIjX,IAAqB,EAAIksB,EAAUhuB,SAAS4I,EAAS9G,KAA6C,iBAAtB8G,EAAQ9G,UAAwB8G,EAAQ9G,UAAY8G,EAAQ9G,UAAY,IAAMA,EAAe8G,EAAQoG,aAAa,SAAUpG,EAAQ9G,WAAa8G,EAAQ9G,UAAUiH,SAAW,IAAM,IAAMjH,GACrT,EAJA,IAAIksB,EAAY7tB,EAAuB,EAAQ,MAM/C9B,EAAOC,QAAUA,EAAiB,2CCb3B,SAAS2vB,EAASC,GACvB,MAAoB,iBAANA,CAChB,CAIO,SAAS7W,EAAS6W,GACvB,MAAoB,iBAANA,CAChB,CAcO,SAASzlB,EAA8BylB,GAC5C,OAAU,OAANA,GACGA,aAAatxB,MACtB,CACO,SAASF,EAAWwxB,GACzB,OAAOA,aAAazxB,KACtB,CACO,SAASmJ,EAAWsoB,GACzB,MAAoB,mBAANA,CAChB,oJC/BA,IAAIzuB,EAAiB,CAAC,EAAEA,eACxBpB,EAAOC,QAAU,SAAU6J,EAAI5I,GAC7B,OAAOE,EAAeC,KAAKyI,EAAI5I,EACjC,oBCHA,IAAI+iB,EAAK,EACL6L,EAAKre,KAAKC,SACd1R,EAAOC,QAAU,SAAUiB,GACzB,MAAO,UAAUoC,YAAeoG,IAARxI,EAAoB,GAAKA,EAAK,QAAS+iB,EAAK6L,GAAIJ,SAAS,IACnF,wBCJA1vB,EAAOC,QAAU,CAAC,CACZ8vB,OAAQvvB,EAAQ,MAChBrC,QAAS,CAAC,QAAU,KACpB,CACA4xB,OAAQvvB,EAAQ,MAChBrC,QAAS,CAAC,QAAU,KACpB,CACA4xB,OAAQvvB,EAAQ,MAChBrC,QAAS,CAAC,QAAU,GAAG,KAAO,eAAe,WAAa,OAAO,UAAY,IAAI,YAAc,uNAAuN,iBAAmB,UAAU,YAAc,UAAU,QAAU,aAAa,KAAO,KAAK,KAAO,oCAAoC,MAAQ,CAAC,CAAC,IAAM,gCAAgC,KAAO,YAAY,MAAQ,SAAS,CAAC,IAAM,gCAAgC,KAAO,YAAY,MAAQ,SAAS,CAAC,IAAM,oCAAoC,KAAO,YAAY,MAAQ,YAAY,QAAS,EAAK,qBAAsB,EAAK,mBAAqB,QAAQ,YAAc,YAAY,iBAAkB,EAAK,YAAc,qCAC/yB,CACA4xB,OAAQvvB,EAAQ,MAChBrC,QAAS,CAAC,QAAU,GAAG,WAAa,CAAC,QAAQ,eAAiB,CAAC,EAAE,oBAAsB,GAAG,WAAY,EAAM,cAAgB,GAAG,cAAgB,GAAG,WAAa,CAAC,gBAAgB,mBAAmB,KAAO,6BAA6B,qBAAsB,EAAM,QAAU,CAAC,IAC9Q,CACA4xB,OAAQvvB,EAAQ,KAChBrC,QAAS,CAAC,QAAU,KACpB,CACA4xB,OAAQvvB,EAAQ,MAChBrC,QAAS,CAAC,QAAU,KACpB,CACA4xB,OAAQvvB,EAAQ,KAChBrC,QAAS,CAAC,QAAU,GAAG,QAAU,CAAC,GAAK,aACvC,CACA4xB,OAAQvvB,EAAQ,MAChBrC,QAAS,CAAC,QAAU,CAAC,CAAC,QAAU,iCAAiC,QAAU,CAAC,UAAY,UAAU,sBAAuB,KAAS,UAAY,SAAS,YAAc,mECrB3K8B,EAAQK,YAAa,EACrBL,EAAA,aAAkB,EACD6B,EAAuB,EAAQ,OAAhD,IACIvB,EAASuB,EAAuB,EAAQ,OACxCoJ,EAAY,EAAQ,KACpBib,EAAmBrkB,EAAuB,EAAQ,OACtD,SAASA,EAAuBd,GAC9B,OAAOA,GAAOA,EAAIV,WAAaU,EAAM,CACnCW,QAASX,EAEb,CA8BA,IAAIqlB,EACJ,SAAUtjB,GAlBV,IAAwBC,EAAUC,EAoBhC,SAASojB,IAEP,IADA,IAAInjB,EACKC,EAAOhB,UAAUrD,OAAQkxB,EAAQ,IAAI5xB,MAAM+E,GAAOE,EAAO,EAAGA,EAAOF,EAAME,IAChF2sB,EAAM3sB,GAAQlB,UAAUkB,GAuC1B,OArCAH,EAAQH,EAAiB1B,KAAKgB,MAAMU,EAAkB,CAACT,MAAMgB,OAAO0sB,KAAW1tB,MACzE2tB,YAAc,WAClB,IAAK,IAAIrJ,EAAQzkB,UAAUrD,OAAQsE,EAAO,IAAIhF,MAAMwoB,GAAQE,EAAQ,EAAGA,EAAQF,EAAOE,IACpF1jB,EAAK0jB,GAAS3kB,UAAU2kB,GAE1B,OAAO5jB,EAAMgtB,gBAAgB,UAAW,EAAG9sB,EAC7C,EACAF,EAAMitB,eAAiB,WACrB,IAAK,IAAIlJ,EAAQ9kB,UAAUrD,OAAQsE,EAAO,IAAIhF,MAAM6oB,GAAQE,EAAQ,EAAGA,EAAQF,EAAOE,IACpF/jB,EAAK+jB,GAAShlB,UAAUglB,GAE1B,OAAOjkB,EAAMgtB,gBAAgB,aAAc,EAAG9sB,EAChD,EACAF,EAAMktB,cAAgB,WACpB,IAAK,IAAIC,EAAQluB,UAAUrD,OAAQsE,EAAO,IAAIhF,MAAMiyB,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpFltB,EAAKktB,GAASnuB,UAAUmuB,GAE1B,OAAOptB,EAAMgtB,gBAAgB,YAAa,EAAG9sB,EAC/C,EACAF,EAAMqtB,WAAa,WACjB,IAAK,IAAIC,EAAQruB,UAAUrD,OAAQsE,EAAO,IAAIhF,MAAMoyB,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpFrtB,EAAKqtB,GAAStuB,UAAUsuB,GAE1B,OAAOvtB,EAAMgtB,gBAAgB,SAAU,EAAG9sB,EAC5C,EACAF,EAAMwtB,cAAgB,WACpB,IAAK,IAAIC,EAAQxuB,UAAUrD,OAAQsE,EAAO,IAAIhF,MAAMuyB,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpFxtB,EAAKwtB,GAASzuB,UAAUyuB,GAE1B,OAAO1tB,EAAMgtB,gBAAgB,YAAa,EAAG9sB,EAC/C,EACAF,EAAM2tB,aAAe,WACnB,IAAK,IAAIC,EAAQ3uB,UAAUrD,OAAQsE,EAAO,IAAIhF,MAAM0yB,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpF3tB,EAAK2tB,GAAS5uB,UAAU4uB,GAE1B,OAAO7tB,EAAMgtB,gBAAgB,WAAY,EAAG9sB,EAC9C,EACOF,CACT,CA/DgCD,EAmBEF,GAnBZC,EAmBPqjB,GAlBNllB,UAAY5C,OAAOmG,OAAOzB,EAAW9B,WAC9C6B,EAAS7B,UAAUwD,YAAc3B,EACjCA,EAAS4B,UAAY3B,EA6DrB,IAAI4B,EAASwhB,EAAkBllB,UAkC/B,OAjCA0D,EAAOqrB,gBAAkB,SAAyBhiB,EAAS8iB,EAAKC,GAC9D,IAAIC,EACA3iB,EAAWjM,KAAKsB,MAAM2K,SACtBK,EAAQrO,EAAOoB,QAAQkN,SAASsiB,QAAQ5iB,GAAUyiB,GAClDpiB,EAAMhL,MAAMsK,KAAWgjB,EAAetiB,EAAMhL,OAAOsK,GAAS7L,MAAM6uB,EAAcD,GAChF3uB,KAAKsB,MAAMsK,IAAU5L,KAAKsB,MAAMsK,IAAS,EAAIhD,EAAU+B,aAAa3K,MAC1E,EACAuC,EAAOG,OAAS,WACd,IAAIsJ,EAAchM,KAAKsB,MACrB2K,EAAWD,EAAYC,SACvB6iB,EAAS9iB,EAAYzC,GACrBjI,EAxFN,SAAuCxB,EAAQqM,GAC7C,GAAc,MAAVrM,EAAgB,MAAO,CAAC,EAC5B,IAEIlB,EAAK5B,EAFL4C,EAAS,CAAC,EACVwM,EAAanQ,OAAOoJ,KAAKvF,GAE7B,IAAK9C,EAAI,EAAGA,EAAIoP,EAAW5P,OAAQQ,IACjC4B,EAAMwN,EAAWpP,GACbmP,EAAS9D,QAAQzJ,IAAQ,IAC7BgB,EAAOhB,GAAOkB,EAAOlB,IAEvB,OAAOgB,CACT,CA6EcyM,CAA8BL,EAAa,CAAC,WAAY,OAC9D+iB,EAAwB9wB,EAAOoB,QAAQkN,SAASsiB,QAAQ5iB,GAC1D+iB,EAAQD,EAAsB,GAC9BE,EAASF,EAAsB,GAOjC,cANOztB,EAAML,eACNK,EAAMC,kBACND,EAAMI,iBACNJ,EAAMQ,cACNR,EAAMS,iBACNT,EAAMU,SACN/D,EAAOoB,QAAQsD,cAAckhB,EAAiBxkB,QAASiC,EAAOwtB,EAAS7wB,EAAOoB,QAAQoN,aAAauiB,EAAO,CAC/GpwB,IAAK,QACLqC,QAASjB,KAAK2tB,YACdpsB,WAAYvB,KAAK6tB,eACjBnsB,UAAW1B,KAAK8tB,gBACb7vB,EAAOoB,QAAQoN,aAAawiB,EAAQ,CACvCrwB,IAAK,SACLqC,QAASjB,KAAKiuB,WACd1sB,WAAYvB,KAAKouB,cACjB1sB,UAAW1B,KAAKuuB,eAEpB,EACOxK,CACT,CAjFA,CAiFE9lB,EAAOoB,QAAQuD,WACjBmhB,EAAkBjhB,UAMd,CAAC,EACL,IAAIC,EAAWghB,EACfpmB,EAAA,QAAkBoF,EAClBrF,EAAOC,QAAUA,EAAiB,2CCpIlC,IAAI6B,EAAyB,EAAQ,MAErC7B,EAAQK,YAAa,EACrBL,EAAQuxB,cAAgBvxB,EAAQwxB,mBAAgB,EAEhD,IAAIC,EAA0B5vB,EAAuB,EAAQ,OAEzD6vB,EAAkB7vB,EAAuB,EAAQ,OAEjDuO,EAQJ,SAAiCrP,EAAK4wB,GAAe,IAAKA,GAAe5wB,GAAOA,EAAIV,WAAc,OAAOU,EAAO,GAAY,OAARA,GAA+B,iBAARA,GAAmC,mBAARA,EAAsB,MAAO,CAAEW,QAASX,GAAS,IAAI6wB,EAAQC,EAAyBF,GAAc,GAAIC,GAASA,EAAME,IAAI/wB,GAAQ,OAAO6wB,EAAMpwB,IAAIT,GAAQ,IAAIC,EAAS,CAAC,EAAO+wB,EAAwBzzB,OAAOgD,gBAAkBhD,OAAOiD,yBAA0B,IAAK,IAAIN,KAAOF,EAAO,GAAY,YAARE,GAAqB3C,OAAO4C,UAAUC,eAAeC,KAAKL,EAAKE,GAAM,CAAE,IAAII,EAAO0wB,EAAwBzzB,OAAOiD,yBAAyBR,EAAKE,GAAO,KAAUI,IAASA,EAAKG,KAAOH,EAAKI,KAAQnD,OAAOgD,eAAeN,EAAQC,EAAKI,GAAgBL,EAAOC,GAAOF,EAAIE,EAAQ,CAAID,EAAOU,QAAUX,EAAS6wB,GAASA,EAAMnwB,IAAIV,EAAKC,GAAW,OAAOA,CAAQ,CARvxBW,CAAwB,EAAQ,OAExCqwB,EAAanwB,EAAuB,EAAQ,OAE5CowB,EAAkB,EAAQ,MAE9B,SAASJ,EAAyBF,GAAe,GAAuB,mBAAZO,QAAwB,OAAO,KAAM,IAAIC,EAAoB,IAAID,QAAeE,EAAmB,IAAIF,QAAW,OAAQL,EAA2B,SAAkCF,GAAe,OAAOA,EAAcS,EAAmBD,CAAmB,GAAGR,EAAc,CAI9U,IAAIH,EAA6BphB,EAAM3P,cAAc,IAAIwxB,EAAgBI,gBACzEryB,EAAQwxB,cAAgBA,EACxBA,EAAcc,YAAc,sBAE5B,IAAIf,EAA6B,SAAUzuB,GAGzC,SAASyuB,IAGP,IAFA,IAAItuB,EAEKC,EAAOhB,UAAUrD,OAAQsE,EAAO,IAAIhF,MAAM+E,GAAOE,EAAO,EAAGA,EAAOF,EAAME,IAC/ED,EAAKC,GAAQlB,UAAUkB,GA0CzB,OAvCAH,EAAQH,EAAiB1B,KAAKgB,MAAMU,EAAkB,CAACT,MAAMgB,OAAOF,KAAUd,MACxEkwB,cAAgB,IAAIN,EAAgBI,eAC1CpvB,EAAMuvB,YAAa,EACnBvvB,EAAMwvB,oBAAsB,EAE5BxvB,EAAMyvB,eAAiB,WACrBzvB,EAAMwvB,oBAAsB3hB,OAAO+K,QAE9B5Y,EAAMuvB,aACTvvB,EAAMuvB,YAAa,EACnB9N,sBAAsBzhB,EAAM0vB,YAAYpF,MAAK,EAAIkE,EAAwB/vB,SAASuB,KAEtF,EAEAA,EAAM2vB,aAAe,SAAUxR,EAAU5U,GACnCvJ,EAAM4N,mBAAmBrE,EAAWvJ,EAAMU,QAC5CmN,OAAO+hB,SAAS,EAAGzR,EAEvB,EAEAne,EAAM6vB,aAAe,SAAUlL,EAAMpb,GACnC,IAAIjK,EAAO6H,SAAS4N,eAAe4P,EAAKmL,UAAU,IAE9CxwB,GAAQU,EAAM4N,mBAAmBrE,EAAWvJ,EAAMU,QACpDpB,EAAKywB,gBAET,EAEA/vB,EAAM4N,mBAAqB,SAAUoiB,EAAiBC,GACpD,IAAIriB,EAAqB5N,EAAMU,MAAMkN,mBAErC,OAAKA,GAKEA,EAAmBzP,MAAK,EAAIqwB,EAAwB/vB,SAASuB,GAAQgwB,EAAiBC,EAC/F,EAEOjwB,CACT,EAjDA,EAAIyuB,EAAgBhwB,SAAS6vB,EAAezuB,GAmD5C,IAAI8B,EAAS2sB,EAAcrwB,UAkE3B,OAhEA0D,EAAO+tB,YAAc,WACnB,IAAI1xB,EAAMoB,KAAKsB,MAAM4L,SAAStO,KAAO,KAEjCA,GACFoB,KAAKkwB,cAAcY,KAAK9wB,KAAKsB,MAAM4L,SAAUtO,EAAKoB,KAAKowB,qBAGzDpwB,KAAKmwB,YAAa,CACpB,EAEA5tB,EAAOyH,kBAAoB,WAEzB,IAAI+mB,EADJtiB,OAAOiK,iBAAiB,SAAU1Y,KAAKqwB,gBAEvC,IAAIW,EAAuBhxB,KAAKsB,MAAM4L,SAClCtO,EAAMoyB,EAAqBpyB,IAC3B2mB,EAAOyL,EAAqBzL,KAE5B3mB,IACFmyB,EAAiB/wB,KAAKkwB,cAAce,KAAKjxB,KAAKsB,MAAM4L,SAAUtO,IAG5DmyB,EACF/wB,KAAKuwB,aAAaQ,OAAgB3pB,GACzBme,GACTvlB,KAAKywB,aAAaS,UAAU3L,QAAOne,EAEvC,EAEA7E,EAAO8H,qBAAuB,WAC5BoE,OAAO4J,oBAAoB,SAAUrY,KAAKqwB,eAC5C,EAEA9tB,EAAO2H,mBAAqB,SAA4BC,GACtD,IAGI4mB,EAHAI,EAAwBnxB,KAAKsB,MAAM4L,SACnCqY,EAAO4L,EAAsB5L,KAC7B3mB,EAAMuyB,EAAsBvyB,IAG5BA,IACFmyB,EAAiB/wB,KAAKkwB,cAAce,KAAKjxB,KAAKsB,MAAM4L,SAAUtO,IAY5D2mB,EACFvlB,KAAKywB,aAAaS,UAAU3L,GAAOpb,GAEnCnK,KAAKuwB,aAAaQ,EAAgB5mB,EAEtC,EAEA5H,EAAOG,OAAS,WACd,OAAoBqL,EAAMpL,cAAcwsB,EAAc9wB,SAAU,CAC9D6G,MAAOlF,KAAKkwB,eACXlwB,KAAKsB,MAAM2K,SAChB,EAEOijB,CACT,CAvHiC,CAuH/BnhB,EAAMnL,WAERjF,EAAQuxB,cAAgBA,EACxBA,EAAcpsB,UAAY,CACxB0L,mBAAoBmhB,EAAWtwB,QAAQ+xB,KACvCnlB,SAAU0jB,EAAWtwB,QAAQ4I,QAAQopB,WACrCnkB,SAAUyiB,EAAWtwB,QAAQoF,OAAO4sB,kCCrJtC,IAAIC,EAAM,EAAQ,MAElB5zB,EAAOC,QAAU1B,OAAO,KAAKynB,qBAAqB,GAAKznB,OAAS,SAAUuL,GACxE,MAAkB,UAAX8pB,EAAI9pB,GAAkBA,EAAGpH,MAAM,IAAMnE,OAAOuL,EACrD,mCCFA,IAAI7H,EAAW1D,OAAOC,QAAU,SAAU0D,GACxC,IAAK,IAAI5C,EAAI,EAAGA,EAAI6C,UAAUrD,OAAQQ,IAAK,CACzC,IAAI8C,EAASD,UAAU7C,GACvB,IAAK,IAAI4B,KAAOkB,EACV7D,OAAO4C,UAAUC,eAAeC,KAAKe,EAAQlB,KAC/CgB,EAAOhB,GAAOkB,EAAOlB,GAG3B,CACA,OAAOgB,CACT,EACI0S,EAAc,SAAqBxS,GACrC,IAAIyxB,EAAmBzxB,EAAOoN,SAC5BuD,EAAS8gB,EAAiB9gB,OAC1B8U,EAAOgM,EAAiBhM,KACxB7U,EAAO6gB,EAAiB7gB,KACxB8gB,EAASD,EAAiBC,OAC1B9c,EAAW6c,EAAiB7c,SAC5BC,EAAO4c,EAAiB5c,KACxB0L,EAAWkR,EAAiBlR,SAC5BoR,EAAOF,EAAiBE,KACtBtkB,EAAWrN,EAAOoN,SAASC,UAC1BA,GAAYuD,GAAQghB,IAEvBvkB,EADU,IAAIwkB,IAAIjhB,GACHvD,UAEjB,MAAO,CACLA,SAAUykB,UAAUV,UAAU/jB,IAC9BsD,OAAQA,EACR8U,KAAMA,EACN7U,KAAMA,EACN8gB,OAAQA,EACR9c,SAAUA,EACVC,KAAMA,EACN0L,SAAUA,EACVoR,KAAMA,EACN/nB,MAAO5J,EAAO2S,QAAQ/I,MACtB9K,IAAKkB,EAAO2S,QAAQ/I,OAAS5J,EAAO2S,QAAQ/I,MAAM9K,KAAO,UAE7D,EACIizB,EAAgB,SAAuB/xB,EAAQjE,GACjD,IAAIi2B,EAAY,GACZ5kB,EAAWoF,EAAYxS,GACvBiyB,GAAgB,EAChBC,EAAoB,WAA8B,EACtD,MAAO,CACL,YAAI9kB,GACF,OAAOA,CACT,EACA,iBAAI6kB,GACF,OAAOA,CACT,EACAE,sBAAuB,WACrBF,GAAgB,EAChBC,GACF,EACAE,OAAQ,SAAgBC,GACtBL,EAAUpsB,KAAKysB,GACf,IAAIC,EAAmB,WACrBllB,EAAWoF,EAAYxS,GACvBqyB,EAAS,CACPjlB,SAAUA,EACVkK,OAAQ,OAEZ,EAEA,OADAtX,EAAO4Y,iBAAiB,WAAY0Z,GAC7B,WACLtyB,EAAOuY,oBAAoB,WAAY+Z,GACvCN,EAAYA,EAAUv1B,QAAO,SAAUsK,GACrC,OAAOA,IAAOsrB,CAChB,GACF,CACF,EACA1d,SAAU,SAAkBkV,GAC1B,IAAI7kB,EAAOjF,UAAUrD,OAAS,QAAsB4K,IAAjBvH,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC9E6J,EAAQ5E,EAAK4E,MACb2oB,EAAevtB,EAAKzH,QACpBA,OAA2B+J,IAAjBirB,GAAqCA,EACjD,GAAkB,iBAAP1I,EACT7pB,EAAO2S,QAAQ6f,GAAG3I,OACb,CACLjgB,EAAQ/J,EAAS,CAAC,EAAG+J,EAAO,CAC1B9K,IAAKiS,KAAKC,MAAQ,KAGpB,IACMihB,GAAiB10B,EACnByC,EAAO2S,QAAQqC,aAAapL,EAAO,KAAMigB,GAEzC7pB,EAAO2S,QAAQsC,UAAUrL,EAAO,KAAMigB,EAE1C,CAAE,MAAO7rB,GACPgC,EAAOoN,SAAS7P,EAAU,UAAY,UAAUssB,EAClD,CACF,CACAzc,EAAWoF,EAAYxS,GACvBiyB,GAAgB,EAChB,IAAIQ,EAAa,IAAI1jB,SAAQ,SAAUkd,GACrC,OAAOiG,EAAoBjG,CAC7B,IAOA,OANA+F,EAAUzxB,SAAQ,SAAU8xB,GAC1B,OAAOA,EAAS,CACdjlB,SAAUA,EACVkK,OAAQ,QAEZ,IACOmb,CACT,EAEJ,EAIIC,EAAqB,WACvB,IAAIC,EAAc5yB,UAAUrD,OAAS,QAAsB4K,IAAjBvH,UAAU,GAAmBA,UAAU,GAAK,IAClF4lB,EAAcgN,EAAYpqB,QAAQ,KAClCqqB,EAAkB,CACpBvlB,SAAUsY,GAAe,EAAIgN,EAAYrP,OAAO,EAAGqC,GAAegN,EAClEhiB,OAAQgV,GAAe,EAAIgN,EAAYrP,OAAOqC,GAAe,IAE3D0B,EAAQ,EACRwL,EAAQ,CAACD,GACTE,EAAS,CAAC,MACd,MAAO,CACL,YAAI1lB,GACF,OAAOylB,EAAMxL,EACf,EACAzO,iBAAkB,SAA0BjV,EAAMoD,GAAK,EACvDwR,oBAAqB,SAA6B5U,EAAMoD,GAAK,EAC7D4L,QAAS,CACP,WAAI5N,GACF,OAAO8tB,CACT,EACA,SAAIxL,GACF,OAAOA,CACT,EACA,SAAIzd,GACF,OAAOkpB,EAAOzL,EAChB,EACApS,UAAW,SAAmBrL,EAAOpM,EAAGu1B,GACtC,IAAIC,EAAaD,EAAIzyB,MAAM,KACzB+M,EAAW2lB,EAAW,GACtBC,EAAcD,EAAW,GACzBriB,OAAyBrJ,IAAhB2rB,EAA4B,GAAKA,EAC5C5L,IACAwL,EAAMjtB,KAAK,CACTyH,SAAUA,EACVsD,OAAQA,EAAOjU,OAAS,IAAMiU,EAASA,IAEzCmiB,EAAOltB,KAAKgE,EACd,EACAoL,aAAc,SAAsBpL,EAAOpM,EAAGu1B,GAC5C,IAAIG,EAAcH,EAAIzyB,MAAM,KAC1B+M,EAAW6lB,EAAY,GACvBC,EAAeD,EAAY,GAC3BviB,OAA0BrJ,IAAjB6rB,EAA6B,GAAKA,EAC7CN,EAAMxL,GAAS,CACbha,SAAUA,EACVsD,OAAQA,GAEVmiB,EAAOzL,GAASzd,CAClB,EACA4oB,GAAI,SAAY3I,GACd,IAAIuJ,EAAW/L,EAAQwC,EACnBuJ,EAAW,GAAKA,EAAWN,EAAOp2B,OAAS,IAG/C2qB,EAAQ+L,EACV,GAGN,EAKIxB,IAAiC,oBAAXjjB,SAA0BA,OAAO1G,WAAY0G,OAAO1G,SAASpF,eAInFwwB,EAAgBtB,EAFXH,EAAYjjB,OAAS+jB,KAG1B/d,EAAW0e,EAAc1e,SAI7B9W,EAAQ,GAAgBw1B,0DCzLO,WAA7B1kB,OAAOvB,SAASwH,UACa,cAA7BjG,OAAOvB,SAASmT,SAEhBnc,QAAQiD,MACN,gFAEO,kBAAmBisB,WAC5BA,UAAUC,cACPC,SAAS,UACTC,MAAK,SAAUC,GACdA,EAAI9a,iBAAiB,eAAe,MAClC9K,EAAAA,EAAAA,GAAU,6BAA8B,CAAEylB,cAAeG,IAGzD,MAAMC,EAAmBD,EAAIE,WAC7BxvB,QAAQC,IAAI,mBAAoBsvB,GAChCA,EAAiB/a,iBAAiB,eAAe,KAC/C,OAAQ+a,EAAiB/pB,OACvB,IAAK,YACC0pB,UAAUC,cAAcM,YAK1BllB,OAAOmlB,cAAe,GAEtBhmB,EAAAA,EAAAA,GAAU,6BAA8B,CAAEylB,cAAeG,IAGrD/kB,OAAOolB,qBACT3vB,QAAQC,IAAI,4CACZsK,OAAOvB,SAAS4mB,YAKlB5vB,QAAQC,IAAI,sCAKZyJ,EAAAA,EAAAA,GAAU,2BAA4B,CAAEylB,cAAeG,KAEzD,MAEF,IAAK,YACHtvB,QAAQiD,MAAM,oDACdyG,EAAAA,EAAAA,GAAU,2BAA4B,CAAEylB,cAAeG,IACvD,MAEF,IAAK,aACH5lB,EAAAA,EAAAA,GAAU,wBAAyB,CAAEylB,cAAeG,IAExD,GACA,GAEN,IACCO,OAAM,SAAUj2B,GACfoG,QAAQiD,MAAM,4CAA6CrJ,EAC7D,sBC7DJ,IAAIolB,EAAO/T,KAAK+T,KACZD,EAAQ9T,KAAK8T,MACjBvlB,EAAOC,QAAU,SAAU6J,GACzB,OAAOoW,MAAMpW,GAAMA,GAAM,GAAKA,EAAK,EAAIyb,EAAQC,GAAM1b,EACvD,wBCLA,IAAIwsB,EAAgB,EAAQ,MAS5Bt2B,EAAOC,QARP,SAAyBG,EAAGF,EAAGqS,GAC7B,OAAQrS,EAAIo2B,EAAcp2B,MAAOE,EAAI7B,OAAOgD,eAAenB,EAAGF,EAAG,CAC/DsH,MAAO+K,EACPoa,YAAY,EACZC,cAAc,EACdzkB,UAAU,IACP/H,EAAEF,GAAKqS,EAAGnS,CACjB,EACkCJ,EAAOC,QAAQK,YAAa,EAAMN,EAAOC,QAAiB,QAAID,EAAOC,2CCPvGA,EAAQK,YAAa,EACrBL,EAAQs2B,qBAQR,SAA8BC,GAC5B,IAAIhnB,GAAW,EAAIinB,EAAaC,eAC5B1qB,GAAQ,EAAIzL,EAAO+e,YAAYqX,EAAelF,eAC9C/pB,GAAM,EAAInH,EAAOq2B,QAAQ,MAO7B,OANA,EAAIr2B,EAAOs2B,kBAAiB,WAC1B,GAAInvB,EAAI7B,QAAS,CACf,IAAIwb,EAAWrV,EAAMunB,KAAK/jB,EAAUgnB,GACpC9uB,EAAI7B,QAAQitB,SAAS,EAAGzR,GAAY,EACtC,CACF,GAAG,CAAC7R,EAAStO,MACN,CACLwG,IAAKA,EACLovB,SAAU,WACJpvB,EAAI7B,SACNmG,EAAMonB,KAAK5jB,EAAUgnB,EAAY9uB,EAAI7B,QAAQd,UAEjD,EAEJ,EAxBA,IAAI4xB,EAAiB,EAAQ,MAEzBp2B,EAAS,EAAQ,MAEjBk2B,EAAe,EAAQ,wBCT3B,SAASM,EAAQjR,GAGf,OAAO9lB,EAAOC,QAAU82B,EAAU,mBAAqBC,QAAU,iBAAmBA,OAAOC,SAAW,SAAUnR,GAC9G,cAAcA,CAChB,EAAI,SAAUA,GACZ,OAAOA,GAAK,mBAAqBkR,QAAUlR,EAAEnhB,cAAgBqyB,QAAUlR,IAAMkR,OAAO71B,UAAY,gBAAkB2kB,CACpH,EAAG9lB,EAAOC,QAAQK,YAAa,EAAMN,EAAOC,QAAiB,QAAID,EAAOC,QAAS82B,EAAQjR,EAC3F,CACA9lB,EAAOC,QAAU82B,EAAS/2B,EAAOC,QAAQK,YAAa,EAAMN,EAAOC,QAAiB,QAAID,EAAOC,0BCT/FD,EAAOC,QAAU,CAACiK,QAAS,qCCE3BjK,EAAQK,YAAa,EACrBL,EAAAA,aAAkB,EA2BlBA,EAAAA,QAlBe,SAAkBwP,EAAUynB,GACzC,IAAIC,EAAkB,uBAEtB,IAAK/4B,MAAMC,QAAQ64B,GACjB,OAAOC,EAGT,IAAIC,EAAoBF,EAAmBG,MAAK,SAAUC,GACxD,OAAO7nB,EAAS8nB,WAAWD,EAAIE,UACjC,IAEA,OAAKJ,EAIE,YAAcA,EAAkBK,KAAO,eAHrCN,CAIX,oBC5BAn3B,EAAOC,QAAU,SAAU6J,GACzB,GAAiB,mBAANA,EAAkB,MAAMxL,UAAUwL,EAAK,uBAClD,OAAOA,CACT,wBCFA,IAAI4tB,EAAY,EAAQ,MACxB13B,EAAOC,QAAU,SAAUkJ,EAAIwuB,EAAM74B,GAEnC,GADA44B,EAAUvuB,QACGO,IAATiuB,EAAoB,OAAOxuB,EAC/B,OAAQrK,GACN,KAAK,EAAG,OAAO,SAAUqB,GACvB,OAAOgJ,EAAG9H,KAAKs2B,EAAMx3B,EACvB,EACA,KAAK,EAAG,OAAO,SAAUA,EAAGoJ,GAC1B,OAAOJ,EAAG9H,KAAKs2B,EAAMx3B,EAAGoJ,EAC1B,EACA,KAAK,EAAG,OAAO,SAAUpJ,EAAGoJ,EAAG3G,GAC7B,OAAOuG,EAAG9H,KAAKs2B,EAAMx3B,EAAGoJ,EAAG3G,EAC7B,EAEF,OAAO,WACL,OAAOuG,EAAG9G,MAAMs1B,EAAMx1B,UACxB,CACF,6vBC4lByB,ICvlBnBxD,EAAa,IAAIi5B,IAGVC,EAA2B,qCAC/BC,kBACP,YAAaA,iBAAiB32B,SAAA,EAGkB,SAGlC42B,EAAiBxlB,GAC3BA,GACF5T,EAAW+b,IAAInI,EAAA,UAIHylB,EAAezlB,GAC7B,OAAO5T,EAAWozB,IAAIxf,EAAA,CASxB,IAaa0lB,EAAW,SAAC1lB,GAAA,IAAAnS,EACvB,OAdwB,SAExBmS,GAAA,IAAAnS,EAAAF,EAAA,OAGAuiB,QAAA,MAAQlQ,GAAA,OAAAnS,EAAAmS,EAAM2lB,SAAA,OAAAh4B,EAANE,EAAc+3B,eAAA,EAAdj4B,EAAwBk4B,IAAA,CALR,CAcF7lB,GACbA,EARqB,SAE9BA,GAAA,OACsCkQ,QAAA,MAAQlQ,OAAA,EAAAA,EAAM8lB,gBAAA,CAHtB,CAUF9lB,GACnBA,EAAK8lB,gBAAA,MAEP9lB,GAAA,OAAAnS,EAAAmS,EAAM+lB,sBAAA,EAANl4B,EAAuBi4B,eAAA,EAiJ5B,SAeYE,EACdhmB,EACAnS,EACAF,EACAZ,EACAa,EACAE,EACAylB,EACA9f,GAEA,IAAAwyB,EAAA7yB,EA6DA,YAAO,IA/DPK,IAAAA,EAAuB,CAAC,GAAD,MA6BnB8f,GAAAA,EAAKjgB,WAAa,cAAewE,SAASoQ,gBAAgB2D,SAC5D0H,EAAIjgB,QAAQ4yB,QAAQC,UAAA,OAAAF,EAAYxyB,EAAM0yB,WAAAF,EAAA,QACtC1S,EAAIjgB,QAAQ4yB,QAAQE,eAAA,WAAAhzB,EAAoBK,EAAM2yB,gBAAAhzB,EAAA,oBA1JhD4M,GAAA,QAAAnS,EAAA,WAQE2Q,OAAe6nB,kBAAkBrmB,EAAI1M,QAAA,EAAA3F,EAAA,gBANjC,sBAAuB6Q,QAAA,OAAAI,QAAAC,QACrB,mCAAAykB,MAAA,eAK+B,GAL/B1kB,QAAAC,QAAAlR,GAAAA,EAAA21B,KAAA31B,EAAA21B,KAAAz1B,GAAAA,IAAA,CAJV,MAAAmS,GAAA,OAAApB,QAAA0nB,OAAAtmB,EAAA,EA2JkD,CAChCuT,IAcTljB,EAAA,GAKF1C,EAAA,CACH44B,QAAAx5B,EACAy5B,WAAYxmB,EACZ,kBAAkB,GAClB6L,MAAAxb,EAAA,GACKoD,EAAA,CACHilB,QAAS7qB,EAAW,EAAI,IAE1B44B,OAzDkD,SAAUzmB,GAC5D,IAAInS,EAAJ,CAIA23B,EAAiB13B,GAEjB,IAAMH,EAASqS,EAAE0mB,cACX35B,EAAM,IAAI45B,MAChB55B,EAAI84B,IAAMl4B,EAAOi5B,WAEb75B,EAAIgT,OAENhT,EACGgT,SAAA+jB,OACM,eAGNR,MAAK,WACJ11B,GAAA,EAAa,IAGjBA,GAAA,EAAa,GAoCfuH,IAAAoe,GAAA,UAWYsT,EACd7mB,EACAnS,EACAF,EACAZ,EACAa,EACAE,EACAylB,EACA9f,GAEA,IAAMwyB,EAA8B,CAAC,EAEjCn4B,IACFm4B,EAAaa,gBAAkBh5B,EAAA,UAE3BH,GACFs4B,EAAarf,MAAQ7Z,EACrBk5B,EAAapf,OAASjZ,EACtBq4B,EAAaa,gBAAkBh5B,EAC/Bm4B,EAAanX,SAAA,6BACJnhB,GAAA,cAMAA,KALTs4B,EAAanX,SAAA,WACbmX,EAAalX,IAAM,EACnBkX,EAAajX,KAAO,EACpBiX,EAAac,OAAS,EACtBd,EAAae,MAAQ,IAUrBzT,IACF0S,EAAaE,UAAY5S,GAGvB9f,IACFwyB,EAAaG,eAAiB3yB,GAEhC,IAAML,EAAA/C,EAAA,GACD2P,EAAA,CACH,eAAc,EACd,yBAAyB,GACzB6L,MAAAxb,EAAA,CACEqoB,QAAS7qB,EAAW,EAAI,EACxBy0B,WAAA,wBACG2D,KAeP,OAAO7yB,CAAA,CAkIA,IAAA6zB,EAAAC,EAAA,aCxbHC,EAAgD,SAAAnnB,GAAA,IACpDrS,EAAAqS,EAAAonB,OACAr6B,EAAAiT,EAAA4G,MACAhZ,EAAAoS,EAAA6G,OAEA,oBAAIlZ,EAEAE,EAAAA,cAAA,wBAAiBge,MAAO,CAAEwb,WAAgBz5B,EAASb,EAAS,2BAG5DY,EAEAE,EAAAA,cAAA,OAAKge,MAAO,CAAEyb,SAAUv6B,EAAOw6B,QAAA,UAC7B15B,EAAAA,cAAA,OACE25B,IAAI,GACJC,KAAK,6BACO,OACZ5B,IAAA,mDAAwDj4B,EAAA,YAAkBb,EAAA,kEAC1E8e,MAAO,CACLyb,SAAA,OACAC,QAAA,QACAzY,SAAA,mBAUC4Y,EACX,SAAA1nB,GAAA,IAAyBjT,EAAAiT,EAAAhE,SAAapO,EAAA+I,EAAAqJ,EAAAknB,GACpC,OACEr5B,EAAAA,cAACF,EAAAA,SAAA,KACCE,EAAAA,cAACs5B,EAAA92B,EAAA,GAAUzC,IACVb,GAAA,EApGT,EAAA46B,EAAA,yDAAAC,EAAA,oCC0CMC,EAAuC,SAAA7nB,GAAA,IAC3CrS,EAAAqS,EAAA6lB,IACA94B,EAAAiT,EAAA8nB,OACAl6B,EAAAoS,EAAAumB,QAAAz4B,EAAAkS,EACAwnB,IAAAjU,OAAA,IAAAzlB,EAAA,GAAAA,EACA2F,EAAAuM,EAAAwmB,WACAP,EAAAjmB,EAAA+nB,SACG30B,EAAAuD,EAAAqJ,EAAA2nB,GAEH,OACE95B,EAAAA,cAAA,MAAAwC,EAAA,GACM+C,EAAA,CACJ40B,SAAS,QACTzB,QAAS34B,EACTi4B,IAAKpyB,EAAa9F,OAAA,EAAM,WACb8F,OAAA,EAAa9F,EACxBm6B,OAAQr0B,EAAa1G,OAAA,EAAS,cAChB0G,OAAA,EAAa1G,EAC3By6B,IAAKjU,EACLpe,IAAK8wB,IAAA,EAKEgC,GAAUl7B,EAAAA,EAAAA,aACrB,SAAAiT,EAEErS,GAAA,IADEZ,EAAAiT,EAAA4lB,SAAAh4B,EAAAoS,EAAUkoB,QAAAp6B,OAAA,IAAAF,EAAU,GAAAA,EAAA2lB,EAAAvT,EAAIwmB,WAAA/yB,OAAA,IAAA8f,GAAAA,EAAsB0S,EAAAtvB,EAAAqJ,EAAA4nB,GAG1Cx0B,EAAQ6yB,EAAMkC,QAAA,MAASp7B,OAAA,EAAAA,EAAUo7B,OACjCC,EACJv6B,EAAAA,cAACg6B,EAAAx3B,EAAA,GACK41B,EACAl5B,EAAA,CACJo7B,MAAO/0B,EACPozB,WAAY/yB,EACZs0B,SAAUp6B,KAId,OAAKG,EAAQvB,OAKXsB,EAAAA,cAAA,eACGC,EAAQ3B,KAAI,SAAA6T,GAAA,IAAGrS,EAAAqS,EAAAqoB,MAAOt7B,EAAAiT,EAAA8nB,OAAQl6B,EAAAoS,EAAAhO,KAAA,OAC7BnE,EAAAA,cAAA,UACEc,IAAQhB,EAAA,IAASC,EAAA,IAAQb,EACzBiF,KAAMpE,EACNy6B,MAAO16B,EACPm6B,OAAQr0B,EAAa1G,OAAA,EAAS,cAChB0G,OAAA,EAAa1G,EAC3Bo7B,MAAO/0B,GAAA,IAGVg1B,GAfIA,CAAA,IAqBbP,EAAMh1B,UAAY,CAChBgzB,IAAKI,EAAAA,OAAiB7E,WACtBoG,IAAKvB,EAAAA,OAAiB7E,WACtB+G,MAAOlC,EAAAA,OACP6B,OAAQ7B,EAAAA,OACRO,WAAYP,EAAAA,MAGdgC,EAAQjI,YAAA,UACRiI,EAAQp1B,UAAY,CAClB20B,IAAKvB,EAAAA,OAAiB7E,WACtBoF,WAAYP,EAAAA,KACZL,SAAUK,EAAAA,MAAgB,CACxBJ,IAAKI,EAAAA,OAAiB7E,WACtB0G,OAAQ7B,EAAAA,OACRkC,MAAOlC,EAAAA,SAETiC,QAASjC,EAAAA,QACPA,EAAAA,UAAoB,CAClBA,EAAAA,MAAgB,CACdoC,MAAOpC,EAAAA,OAAiB7E,WACxBpvB,KAAMi0B,EAAAA,OACNkC,MAAOlC,EAAAA,OACP6B,OAAQ7B,EAAAA,OAAiB7E,aAE3B6E,EAAAA,MAAgB,CACdoC,MAAOpC,EAAAA,OACPj0B,KAAMi0B,EAAAA,OAAiB7E,WACvB+G,MAAOlC,EAAAA,OACP6B,OAAQ7B,EAAAA,OAAiB7E,iBAAA,IAAAkH,EAAA,aC5HpBC,EACX,SAAAvoB,GAAA,IAAuBrS,EAAAqS,EAAA4lB,SAAa74B,EAAA4J,EAAAqJ,EAAAsoB,GAClC,OAAI36B,EAEAE,EAAAA,cAACo6B,EAAA53B,EAAA,GACKtD,EAAA,CACJ64B,SAAU,CACRC,IAAKl4B,GAAA,iBAGP65B,IAAI,MAID35B,EAAAA,cAAA,MAAAwC,EAAA,GAAStD,GAAA,EAItBw7B,EAAYvI,YAAA,cACZuI,EAAY11B,UAAY,CACtB+yB,SAAUK,EAAAA,OACViC,QAAA,OAAAjB,EAASgB,EAAQp1B,gBAAA,EAARo0B,EAAmBiB,QAC5BV,IAAK,SAAUxnB,EAAOnS,EAAUF,GAC9B,OAAKqS,EAAMnS,GAAA,IAGAuJ,MAAA,iBACSvJ,EAAA,kBAA4BF,EAAA,gCC/BvC,IAAA66B,GAAYz7B,EAAAA,EAAAA,aACvB,SAAmBiT,EAAOrS,GACxB,OACEE,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAACo6B,EAAA53B,EAAA,CAAQ8E,IAAKxH,GAASqS,IACvBnS,EAAAA,cAAA,gBACEA,EAAAA,cAACo6B,EAAA53B,EAAA,GAAY2P,EAAA,CAAOwmB,YAAA,MAAY,IAO1CgC,EAAUxI,YAAA,YACVwI,EAAU31B,UAAYo1B,EAAQp1B,UAAA,ICoHjB41B,EAA4C,SACvDzoB,EACAnS,EACAF,GAGA,OAAKqS,EAAMwnB,KAAA,KAAOxnB,EAAMwnB,IAKjBp0B,IAAAA,OAAUtD,MAAVsD,IAAA,CAAiB4M,EAAOnS,EAAUF,GAAAoD,OAAA,GAAA7D,MAAA4B,KAAAc,UAAA,SAJ5BwH,MAAA,iCACwBzJ,EAAA,4JAK1B+6B,EAAY,CACvBC,MAAOv1B,IAAAA,OAAiBguB,WACxBoG,IAAKiB,GAAAG,EAAA,sBC9FDC,EAAA,SAAA7oB,GAAA,IAAArS,EAAAZ,EAgBJ,SAAAe,EAAYD,GAAA,IAAAF,EAAA,OACVA,EAAAqS,EAAAlR,KAAA,KAAMjB,IAAA,MAbR0X,MAAgD3X,EAAAA,EAAAA,aAAAD,EAGhDm7B,SAAsC,CAAEx1B,SAAA,GAAS3F,EACjDo7B,YAAyC,CAEvCz1B,SAAA,GAAqB3F,EAEvBq7B,aAAkC,KAAAr7B,EAClCwH,KAAMvH,EAAAA,EAAAA,aAAAD,EACNs7B,kBAAA,EAKEt7B,EAAK8L,MAAQ,CACXyvB,UAAW5D,IACX6D,UAAA,GAAUx7B,CAAA,CAAAZ,EAAAiT,GAAArS,EAAAG,GAAAc,UAAA5C,OAAAmG,OAAApF,EAAA6B,WAAAjB,EAAAiB,UAAAwD,YAAAzE,EAAAy7B,EAAAz7B,EAAAZ,GAAA,IAAAwmB,EAAAzlB,EAAAc,UAAA,OAAA2kB,EAId8V,aAAA,SAAarpB,EAAOnS,GAAA,IAAAF,EAAA,KACZZ,EAAagD,KAAKwV,KAAKjS,QAAQg2B,cAAA,2BAIrC,OAAIhE,KAA8Bv4B,IAAegD,KAAK+4B,SAASx1B,SAC7DvD,KAAK+4B,SAASx1B,SAAA,EACPsL,QAAQC,WAAA,8BAGeykB,MAAK,SAAAv2B,GAAA,IAAGa,EAAAb,EAAAw8B,YAChCz7B,EAAW07B,KAAKlpB,UAAU3S,EAAK0D,MAAMs3B,MAAMhD,QACjDh4B,EAAKq7B,aAAep7B,EAAAyC,EAAA,CAEhBs4B,MAAO3oB,EAAM2oB,MAAMhD,OACnBuD,UAAWr7B,EAAMq7B,WAAazD,EAAe33B,GAC7Cq7B,SAAUt7B,EAAMs7B,UAAY1D,EAAe33B,GAC3C27B,eAAgB,iBACdzpB,EAAMymB,QAANzmB,EAAMymB,SAEN94B,EAAKkN,SAAS,CACZsuB,UAAA,GAAU,EAGdh0B,IAAKxH,EAAKwH,KACP6K,GAELrS,EAAK4X,KACL5X,EAAKm7B,SACLn7B,EAAKo7B,YAAA,KAAAxV,EAQXmW,2BAAA,SAA2B1pB,GAAA,IAAAnS,EAAA,cAAAmS,IAAAA,GAAA,GACzB,6BAAkCsjB,MAAK,SAAA31B,GAAA,IAC/BZ,GAAA,EAAuBY,EADWg8B,6BACgB,WACtD,GAAI97B,EAAK0X,KAAKjS,QAAS,CACrB,IAAM3F,EAAW67B,KAAKlpB,UAAUzS,EAAKwD,MAAMs3B,MAAMhD,QAAA,MACjD93B,EAAKwD,MAAMu4B,aAAX/7B,EAAKwD,MAAMu4B,YAAc,CACvBC,UAAW7pB,GAAYylB,EAAe93B,KAExCE,EAAKgN,SAAS,CACZquB,WAAA,EACAC,SAAUnpB,GAAYylB,EAAe93B,IAAA,KAKvCE,EAAK0X,KAAKjS,UACZzF,EAAKo7B,aAAel8B,EAAqBc,EAAK0X,MAAA,KAAAgO,EAKpDuW,sBAAA,SAAsB9pB,EAAWnS,GAAA,IAAAF,EAAA,KAC3BZ,GAAA,EAmCJ,OAlCKgD,KAAK0J,MAAMyvB,YAAar7B,EAAUq7B,WAAcr7B,EAAUs7B,WAE7Dp5B,KAAKg5B,YAAYz1B,SAAA,GAGfvD,KAAKsB,MAAMs3B,MAAMhD,SAAW3lB,EAAU2oB,MAAMhD,SAE1C51B,KAAKk5B,eAEPl5B,KAAKk5B,eAGDl5B,KAAK+4B,SAASx1B,SAAWvD,KAAKi5B,eAChCZ,EAAAA,EAAAA,QAAO,KAAMr4B,KAAKwV,KAAKjS,UAI3BvD,KAAK8K,SACH,CACEquB,WAAA,EACAC,UAAA,IAEF,WACEx7B,EAAK+7B,4BAAA,EAA2B,IAIpC38B,GAAA,GAGEgD,KAAKwV,KAAKjS,UAAYvG,GACxBgD,KAAKs5B,aAAarpB,EAAWnS,IAAA,GAAA0lB,EAMjCxZ,kBAAA,WACE,GAAIhK,KAAKwV,KAAKjS,QAAS,CACrB,IAAM0M,EAAajQ,KAAKwV,KAAKjS,QAAQg2B,cAAA,2BAG/Bz7B,EAAW27B,KAAKlpB,UAAUvQ,KAAKsB,MAAMs3B,MAAMhD,QAGjD,GACEL,KACAtlB,EAEA,CAAC,IAADrS,EAAAZ,EAIA,UAAAY,GAAAZ,EAAA,KAHKsE,OAAMu4B,cAAAj8B,EAAAmB,KAAA/B,EAAc,CAAE88B,WAAA,IAGvB7pB,EAAW+pB,SAAU,CAAC,IAADn8B,EAAAE,EAAA,OAAAF,GAAAE,EAAA,KAClBuD,OAAMo1B,SAAA74B,EAAAkB,KAAAhB,GACX03B,EAAiB33B,EAAA,KACZ,CAIL,IAAM0lB,EAAQxjB,KAEdiQ,EAAWyI,iBAAA,QAAyB,SAAS9a,IAC3CqS,EAAWoI,oBAAA,OAA4Bza,GAAA,MAEvC4lB,EAAMliB,MAAMo1B,QAAZlT,EAAMliB,MAAMo1B,SACZjB,EAAiB33B,EAAA,IAIrB,OAIFkC,KAAK25B,4BAAA,EAA2B,GAAAnW,EAIpCnZ,qBAAA,WAEMrK,KAAKk5B,eAEPl5B,KAAKk5B,eAGDl5B,KAAK+4B,SAASx1B,SAAWvD,KAAKi5B,cAChCj5B,KAAKi5B,eAAA,EAAAzV,EAOX9gB,OAAA,WACE,IAAMuN,EAAOjQ,KAAKsB,MAAM24B,IAAA,MAAAr8B,EACUoC,KAAKsB,MAAMs3B,MAArC57B,EAAAY,EAAAiZ,MAAOhZ,EAAAD,EAAAkZ,OAAQ/Y,EAAAH,EAAAy5B,OAAA7T,EAAA,SN3JzBvT,EACAnS,EACAF,GAIA,IAAMZ,EAA8B,CAAC,EAEjCa,EAAA,uBAmBJ,MAde,UAGXD,GACFZ,EAAa6Z,MAAQ5G,EACrBjT,EAAa8Z,OAAShZ,GAAA,gBACbF,IAKTC,EAAA,yDAGK,CACLsD,UAAAtD,EACA,4BAA4B,GAC5Bie,MAAO9e,EAAA,CM6HgB,CAKHA,EAAOa,EAAQE,GAH1B2F,EAAA8f,EAAP1H,MACWoa,EAAA1S,EAAXriB,UACGkC,EAAAuD,EAAA4c,EAAAqV,GAGDR,EAAYr4B,KAAKsB,MAAMH,UAEvBnB,KAAKsB,MAAA44B,QACP7B,EAAYr4B,KAAKsB,MAAA44B,OAGnB,IAAMb,EAAA,SLzMRppB,EACAnS,EACAF,GAEA,IAAIZ,EAAuB,KAS3B,MAAM,cARFiT,IACFjT,EAAA,+CACGY,EAASE,EAAS,kCAGnBmS,IACFjT,EAAA,0BAAkCc,EAAA,iIAAqIF,EAAA,YAAkBE,EAAA,yIAEpLd,CAAA,CK4LC,CAAiBe,EAAQf,EAAOa,GAEtC,OACEC,EAAAA,cAACmS,EAAA3P,EAAA,GACK+C,EAAA,CACJyY,MAAAxb,EAAA,GACKoD,EACA1D,KAAKsB,MAAMwa,MAAA,CACdib,gBAAiB/2B,KAAKsB,MAAMy1B,kBAE9B51B,UAAc+0B,GAASmC,EAAA,IAAgBA,EAAA,IACvCjzB,IAAKpF,KAAKwV,KACV2kB,wBAAyB,CACvBC,OAAQf,GAEVgB,0BAAA,MAAAt8B,CAAA,CAhNF,CAA4BA,EAAAA,WAsNrByJ,EACX,SAAqByI,GACnB,IAAKA,EAAM2oB,MAIT,OAFU,KAUZ,IAAsDh7B,EAAUqS,EAAV2oB,MAEhD57B,EAAWy8B,KAAKlpB,UAAU,CADE3S,EAA1BiZ,MAA0BjZ,EAAnBkZ,OAAmBlZ,EAAXy5B,OADyCpnB,EAAxD9O,UAAwD8O,EAAAiqB,MAAAjqB,EAA3B8mB,kBAUrC,OAAOj5B,EAAAA,cAACg7B,EAAAx4B,EAAA,CAAoB1B,IAAK5B,GAAciT,GAAA,EAGnDzI,EAAY1E,UAAY61B,EAExBnxB,EAAYyoB,YAAA,kBCrRVhgB,EDqRUqqB,EAAA,8MCzONC,EAAmD,SACvDtqB,EACAnS,GAGA,oBACEmS,EAAMonB,QAAA,UACLv5B,GAAA,WAAwBA,IACzBmS,EAAMnS,GAMDuF,IAAAA,OAAUtD,MAAVsD,IAAA,CAAiB4M,EAAOnS,GAAAkD,OAAA,GAAA7D,MAAA4B,KAAAc,UAAA,SAJlBwH,MAAA,IACLvJ,EAAA,KAAamS,EAAMnS,GAAA,iDAMvB08B,EAAe,IAAIlF,IAAI,CAAC,QAAD,4BAEhBmF,EAAY,CACvB3E,IAAKzyB,IAAAA,OAAiBguB,WACtBoG,IAAKiB,EACL7hB,MAAO0jB,EACPzjB,OAAQyjB,EACRnC,MAAO/0B,IAAAA,OACPg0B,OAAQ,SAACpnB,GACP,YAAIA,EAAMonB,SAGNmD,EAAa/K,IAAIxf,EAAMonB,QAI3B,OAAO,IAAIhwB,MAAA,iBACQ4I,EAAMonB,OAAA,wHCpFvBqD,GDMJzqB,ECLgBzI,EDOT,SAAP5J,GACE,IAAAZ,EAAAY,EAAAk4B,IACaj4B,EAAAD,EAAb+8B,YACA58B,EAAAH,EAAAg9B,QAiBGpX,EAAA5c,EAAAhJ,EAAA08B,GAMH,OAJIv8B,GACFmG,QAAQwa,KAAK3gB,GAGXF,EACKC,EAAAA,cAACmS,EAAA3P,EAAA,CAAYs4B,MAAO/6B,GAAe2lB,KAE5Ctf,QAAQwa,KAAA,mBAAyB1hB,GAEvB,QCtCI,SChBF69B,EAAA/8B,GAAA,IACdF,EAAAE,EAAAmO,SAOA,OALAgE,EAAAA,WAAgB,WAEd,gCACC,IAEIrS,CAAA,CDUT88B,EAAYzK,YAAA,cACZyK,EAAY53B,UAAY23B,qBEnBxB,WACE,IAAIK,EAAgBC,EAAQC,EAAUC,EAAgBC,EAAcC,EACzC,oBAAhBtjB,aAA+C,OAAhBA,aAAwBA,YAAY/G,IAC5EpT,EAAOC,QAAU,WACf,OAAOka,YAAY/G,KACrB,EAC4B,oBAAZmP,SAAuC,OAAZA,SAAoBA,QAAQ8a,QACvEr9B,EAAOC,QAAU,WACf,OAAQm9B,IAAmBI,GAAgB,GAC7C,EACAH,EAAS9a,QAAQ8a,OAMjBE,GALAH,EAAiB,WACf,IAAIM,EAEJ,OAAe,KADfA,EAAKL,KACK,GAAWK,EAAG,EAC1B,KAEAD,EAA4B,IAAnBlb,QAAQob,SACjBH,EAAeD,EAAiBE,GACvBtqB,KAAKC,KACdpT,EAAOC,QAAU,WACf,OAAOkT,KAAKC,MAAQkqB,CACtB,EACAA,EAAWnqB,KAAKC,QAEhBpT,EAAOC,QAAU,WACf,OAAO,IAAIkT,MAAOsS,UAAY6X,CAChC,EACAA,GAAW,IAAInqB,MAAOsS,UAEzB,GAAEpkB,KAAKiB,yEC3BR,MAAMs7B,EAAc,IAAIC,IAClBC,EAAwB,IAAID,IAU3B,SAASE,EAAwBtuB,GACtC,IAAIuuB,EAAWJ,EAAYn8B,IAAIgO,GAI/B,OAHKuuB,IACHA,EAAWF,EAAsBr8B,IAAIgO,EAASxQ,gBAEzC++B,CACT,IAdUr7B,SAAQq7B,IACZA,EAASC,WACXH,EAAsBp8B,IAAIs8B,EAASE,SAAUF,GAE7CJ,EAAYl8B,IAAIs8B,EAASE,SAAUF,EACrC,wHCZK,MACMhS,EAAgBA,KAAM,EAkC5B,SAASmS,EAAMtO,GACpB,OAAOA,OACT,CACO,MA+BMrI,EAAYf,GAAaroB,MAAMspB,KAAK,IAAIkQ,IAAInR,sBCrEzD,IAAIiJ,EAAW,CAAC,EAAEA,SAElB1vB,EAAOC,QAAU,SAAU6J,GACzB,OAAO4lB,EAASruB,KAAKyI,GAAIrK,MAAM,GAAI,EACrC,mICAA,EAAe2H,IAAA,IAAC,SAAEmH,GAAUnH,EAAA,OAC1BwR,EAAAA,EAAAA,KAACwlB,EAAAA,SAAQ,CAAA7vB,SACN8vB,IAAA,IAAC,SAAE7uB,GAAU6uB,EAAA,OACZzlB,EAAAA,EAAAA,KAACrB,EAAAA,GAAkB,CAAC/H,SAAUA,EAAUiI,aAAcge,EAAAA,cAAclnB,SACjEA,GACkB,GAG1B,ECTM,MAAMsC,EAAkBzJ,IAAA,IAAC,QAAEmD,GAASnD,EAAA,OAAKwR,EAAAA,EAAAA,KAAC0lB,EAAI,CAAA/vB,SAAEhE,GAAe,sBCHtEtK,EAAQuJ,EAAIjL,OAAOwnB,wCCAlB,WACC,SAASxT,IACP,IAAInS,EAAIhC,MAAM+C,UAAU1B,MAAM4B,KAAKc,WACjC9B,EAAIgK,SAASk0B,yBACfn+B,EAAEuC,SAAQ,SAAUvC,GAClB,IAAImS,EAAInS,aAAao+B,KACrBn+B,EAAE2hB,YAAYzP,EAAInS,EAAIiK,SAASo0B,eAAetsB,OAAO/R,IACvD,IAAIkC,KAAKo8B,aAAar+B,EAAGiC,KAAKq8B,WAChC,CACA,CAACC,QAAQz9B,UAAW09B,SAAS19B,UAAW29B,iBAAiB39B,WAAWwB,SAAQ,SAAUvC,GACpFA,EAAEgB,eAAe,YAAc7C,OAAOgD,eAAenB,EAAG,UAAW,CACjEwsB,cAAc,EACdD,YAAY,EACZxkB,UAAU,EACVX,MAAO+K,GAEX,GACF,CAjBC,sCCEDvS,EAAOC,QAAU,EAAjB,+CCAAA,EAAQK,YAAa,EACrBL,EAAQqyB,oBAAiB,EACzB,IACIyM,EAA6B,gCAE7BzM,EAA8B,WAChC,SAASA,IAAkB,CAE3B,IAAIztB,EAASytB,EAAenxB,UA8C5B,OA5CA0D,EAAO0uB,KAAO,SAAc/jB,EAAUtO,GACpC,IAAI89B,EAAW18B,KAAK28B,YAAYzvB,EAAUtO,GAE1C,IACE,IAAIsG,EAAQuJ,OAAOmuB,eAAeC,QAAQH,GAC1C,OAAOx3B,EAAQu0B,KAAKvnB,MAAMhN,GAAS,CACrC,CAAE,MAAOpH,GAKP,OAAI2Q,QAAUA,OAAOguB,IAA+BhuB,OAAOguB,GAA4BC,GAC9EjuB,OAAOguB,GAA4BC,GAGrC,CACT,CACF,EAEAn6B,EAAOuuB,KAAO,SAAc5jB,EAAUtO,EAAKsG,GACzC,IAAIw3B,EAAW18B,KAAK28B,YAAYzvB,EAAUtO,GACtCk+B,EAAcrD,KAAKlpB,UAAUrL,GAEjC,IACEuJ,OAAOmuB,eAAeG,QAAQL,EAAUI,EAC1C,CAAE,MAAOh/B,GACH2Q,QAAUA,OAAOguB,KAGnBhuB,OAAOguB,GAA8B,CAAC,GAFtChuB,OAAOguB,GAA4BC,GAAYjD,KAAKvnB,MAAM4qB,EAS9D,CACF,EAEAv6B,EAAOo6B,YAAc,SAAqBzvB,EAAUtO,GAClD,IAAIo+B,EAhDe,YAgDwB9vB,EAASC,SACpD,OAAOvO,QAA6Co+B,EAAeA,EAAe,IAAMp+B,CAC1F,EAEOoxB,CACT,CAlDkC,GAoDlCryB,EAAQqyB,eAAiBA,2qBC3DzB,IAAA/xB,EAAAqB,EAAApB,EAAA,OACA++B,EAAA/+B,EAAA,MACAg/B,EAAAh/B,EAAA,6IAEqBi/B,EAAN,SAAA1d,GAA2C,SAAA0d,IAAA,QAAAv8B,EAAAC,EAAAhB,UAAArD,OAAAsE,EAAA,IAAAhF,MAAA+E,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAAD,EAAAC,GAAAlB,UAAAkB,GAAA,OAAAH,EAAA6e,EAAA1gB,KAAAgB,MAAA0f,EAAA,OAAAze,OAAAF,KAAA,MACzD4I,MAAQ,CACP0zB,iBAAoBx8B,EAAKU,MAAM+7B,aAFyBz8B,EAczDoJ,kBAAoB,KACnB,MAMMS,GALuB,iBAArB7J,EAAKU,MAAMg8B,MAAqB18B,EAAKU,MAAMg8B,MAAQ,IAExB,iBAA3B18B,EAAKU,MAAM+7B,YACfz8B,EAAKU,MAAM+7B,YACX,GAGJz8B,EAAK28B,eAAgB,EAAAN,EAAAlxB,aACpB,IAAMnL,EAAKkK,SAAS,CAAEsyB,iBAAiB,KACvC3yB,EAFD,EAvBwD7J,EA6BzDyJ,qBAAuB,MACtB,EAAA4yB,EAAAO,cAAa58B,EAAK28B,cAAlB,EA9BwD38B,CAAA,CAAAmM,EAAAowB,EAAA1d,GAAA,IAAAld,EAAA46B,EAAAt+B,UAgExD,OAhEwD0D,EAKzDw3B,sBAAA,SAAsB0D,EAAWnyB,GAEhC,OACCtL,KAAKsB,MAAMo8B,mBAAqBD,EAAUC,kBAC1C19B,KAAK0J,MAAM0zB,kBAAoB9xB,EAAU8xB,iBACzCp9B,KAAKsB,MAAM2K,WAAawxB,EAAUxxB,QAEnC,EAAA1J,EAqBDG,OAAA,WACC,MAAM,MACLi7B,EADK,YAELC,EAFK,WAGLC,EAHK,iBAILH,EAJK,gBAKLI,EALK,SAML7xB,EANK,gBAOL8xB,GACG/9B,KAAKsB,MAET,OACCrD,EAAAoB,QAAAsD,cAAA,OACCxB,UAAY,cACXw8B,EAAQ,oBAAsB,4CACRD,IACvB5hB,MAAO,CACN+C,OAAQ8e,EAAQC,EAAcC,EAC9BlV,QAAS3oB,KAAK0J,MAAM0zB,gBAAkB,EAAI,GAN5Cle,OAAA,KAAAC,SAAA,CAAAC,SAAAC,EAAAC,WAAA,GAAAC,aAAA,IAQCthB,EAAAoB,QAAAsD,cAACu6B,EAAA1+B,eAAD,CAAgB0G,MAAKrB,EAAA,GAAOi6B,GAA5B5e,OAAA,KAAAC,SAAA,CAAAC,SAAAC,EAAAC,WAAA,GAAAC,aAAA,IAGCwe,GACG,EAAA9/B,EAAAwO,cAAaR,EAAbpI,EAAA,GACGi6B,IAEH7xB,GAIN,EAAAkxB,CAAA,CAhEa,CAAiCl/B,EAAA2E,WAAjC,iQCDR,MAAM0Y,EAAgBpW,GAAkBwQ,EAAAA,GAAaxQ,EAAMuT,SAAS,KAAOvT,EAAM9E,MAAM,KAAKC,SAAQC,GAAKyH,SAASoQ,gBAAgBjQ,UAAUkQ,IAAI9X,KAAMyH,SAASoQ,gBAAgBjQ,UAAUkQ,IAAIlT,GAAU,KACjM84B,EAAmB94B,GAAkBwQ,EAAAA,GAAaxQ,EAAMuT,SAAS,KAAOvT,EAAM9E,MAAM,KAAKC,SAAQC,GAAKyH,SAASoQ,gBAAgBjQ,UAAUkG,OAAO9N,KAAMyH,SAASoQ,gBAAgBjQ,UAAUkG,OAAOlJ,GAAU,KAC1M+4B,EAAgB/4B,GAAkBwQ,EAAAA,GAAaxQ,EAAMuT,SAAS,KAAOvT,EAAM9E,MAAM,KAAK89B,MAAK59B,GAAKyH,SAASoQ,gBAAgBjQ,UAAUC,SAAS7H,KAAMyH,SAASoQ,gBAAgBjQ,UAAUC,SAASjD,GAAU,KAE9M,SAASi5B,EACdC,EACAj9B,QAAiB,IAAjBA,IAAAA,EAAoB,IAGpB,MAAMsU,EAAK1N,SAASpF,cAAcy7B,GAClCj9B,EAAUf,MAAM,KAAKC,SAAQC,GAAKA,GAAKmV,EAAGvN,UAAUkQ,IAAI9X,KAAI,QAAAO,EAAAhB,UAAArD,OAHzD6hC,EAAO,IAAAviC,MAAA+E,EAAA,EAAAA,EAAA,KAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAPs9B,EAAOt9B,EAAA,GAAAlB,UAAAkB,GAcV,OAVAs9B,SAAAA,EAASh+B,SAAQC,IACf,GAAIA,QACJ,GAAiB,iBAANA,EAAgB,CACzB,MAAMg+B,EAAOv2B,SAASpF,cAAc,OACpC27B,EAAKtmB,UAAY1X,EACjBmV,EAAG8oB,OAAMx+B,MAAT0V,GAAE9P,EAAAA,EAAAA,GAAW7J,MAAMspB,KAAKkZ,EAAKE,aAC/B,MACE/oB,EAAG8oB,OAAOj+B,EACZ,IAEKmV,CACT,CAEO,MAAMgpB,EAAc3I,GAAgB,IAAIjnB,SAC7C,CAACC,EAASynB,KACR,MAAMmI,EAAS32B,SAASpF,cAAc,UACtC+7B,EAAO5I,IAAMA,EACb4I,EAAOC,OAAS,IAAM7vB,GAAQ,GAC9B4vB,EAAOE,QAAW9gC,GAAMy4B,EAAOz4B,GAC/BiK,SAAS82B,KAAKnf,YAAYgf,EAAO,IAIxBI,EAA0BxvB,MACrCyvB,EACAC,EACA1B,WAEMvuB,EAAAA,EAAAA,IAAKuuB,GACX0B,IAAkB9mB,QAAQ6mB,IAAgB,EAG/BtlB,EAAaA,KAAA,IAAA3U,EAAAm6B,EAAA,OAA0C,QAA1Cn6B,EAAoB,QAApBm6B,EAAMxwB,OAAO+K,eAAO,IAAAylB,EAAAA,EAAIxwB,OAAOywB,mBAAW,IAAAp6B,EAAAA,EAAIiD,SAASoQ,gBAAgB1V,SAAS,qCC9C1G,SAAS08B,EAAkBvhC,EAAGC,IAC3B,MAAQA,GAAKA,EAAID,EAAEpB,UAAYqB,EAAID,EAAEpB,QACtC,IAAK,IAAIsB,EAAI,EAAGC,EAAIjC,MAAM+B,GAAIC,EAAID,EAAGC,IAAKC,EAAED,GAAKF,EAAEE,GACnD,OAAOC,CACT,CCAA,SAAS4H,EAAmB/H,GAC1B,OCJF,SAA4BA,GAC1B,GAAI9B,MAAMC,QAAQ6B,GAAI,OAAO,EAAiBA,EAChD,CDES,CAAkBA,IEL3B,SAA0BA,GACxB,GAAI,oBAAsB82B,QAAU,MAAQ92B,EAAE82B,OAAOC,WAAa,MAAQ/2B,EAAE,cAAe,OAAO9B,MAAMspB,KAAKxnB,EAC/G,CFGiC,CAAgBA,IGJjD,SAAqCA,EAAGC,GACtC,GAAID,EAAG,CACL,GAAI,iBAAmBA,EAAG,OAAO,EAAiBA,EAAGC,GACrD,IAAIoS,EAAI,CAAC,EAAEmd,SAASruB,KAAKnB,GAAGT,MAAM,GAAI,GACtC,MAAO,WAAa8S,GAAKrS,EAAEyE,cAAgB4N,EAAIrS,EAAEyE,YAAYoB,MAAO,QAAUwM,GAAK,QAAUA,EAAInU,MAAMspB,KAAKxnB,GAAK,cAAgBqS,GAAK,2CAA2C/S,KAAK+S,GAAK,EAAiBrS,EAAGC,QAAK,CACtN,CACF,CHFuD,CAA2BD,IILlF,WACE,MAAM,IAAI5B,UAAU,uIACtB,CJGwF,EACxF,uDKNA,IAAI0mB,EAAK,EAAQ,MACb0c,EAAa,EAAQ,MACzB1hC,EAAOC,QAAU,EAAQ,MAAoB,SAAU8G,EAAQ7F,EAAKsG,GAClE,OAAOwd,EAAGxb,EAAEzC,EAAQ7F,EAAKwgC,EAAW,EAAGl6B,GACzC,EAAI,SAAUT,EAAQ7F,EAAKsG,GAEzB,OADAT,EAAO7F,GAAOsG,EACPT,CACT,oBCPA,SAAS9E,IACP,OAAOjC,EAAOC,QAAUgC,EAAW1D,OAAOC,OAASD,OAAOC,OAAOgvB,OAAS,SAAUntB,GAClF,IAAK,IAAID,EAAI,EAAGA,EAAI+B,UAAUrD,OAAQsB,IAAK,CACzC,IAAImS,EAAIpQ,UAAU/B,GAClB,IAAK,IAAIF,KAAKqS,GAAG,CAAG,GAAEnR,eAAeC,KAAKkR,EAAGrS,KAAOG,EAAEH,GAAKqS,EAAErS,GAC/D,CACA,OAAOG,CACT,EAAGL,EAAOC,QAAQK,YAAa,EAAMN,EAAOC,QAAiB,QAAID,EAAOC,QAASgC,EAASI,MAAM,KAAMF,UACxG,CACAnC,EAAOC,QAAUgC,EAAUjC,EAAOC,QAAQK,YAAa,EAAMN,EAAOC,QAAiB,QAAID,EAAOC,2CCThG,SAAS82B,EAAQjR,GAGf,OAAOiR,EAAU,mBAAqBC,QAAU,iBAAmBA,OAAOC,SAAW,SAAUnR,GAC7F,cAAcA,CAChB,EAAI,SAAUA,GACZ,OAAOA,GAAK,mBAAqBkR,QAAUlR,EAAEnhB,cAAgBqyB,QAAUlR,IAAMkR,OAAO71B,UAAY,gBAAkB2kB,CACpH,EAAGiR,EAAQjR,EACb,CCNA,SAASwQ,EAAc/jB,GACrB,IAAIjT,ECFN,SAAqBiT,EAAGrS,GACtB,GAAI,UAAY62B,EAAQxkB,KAAOA,EAAG,OAAOA,EACzC,IAAInS,EAAImS,EAAEykB,OAAOjS,aACjB,QAAI,IAAW3kB,EAAG,CAChB,IAAId,EAAIc,EAAEiB,KAAKkR,EAAGrS,GAAK,WACvB,GAAI,UAAY62B,EAAQz3B,GAAI,OAAOA,EACnC,MAAM,IAAIhB,UAAU,+CACtB,CACA,OAAQ,WAAa4B,EAAIiS,OAASgO,QAAQ5N,EAC5C,CDPUwS,CAAYxS,EAAG,UACvB,MAAO,UAAYwkB,EAAQz3B,GAAKA,EAAIA,EAAI,EAC1C,CEJA,SAASqiC,EAAgBvhC,EAAGF,EAAGqS,GAC7B,OAAQrS,EAAIo2B,EAAcp2B,MAAOE,EAAI7B,OAAOgD,eAAenB,EAAGF,EAAG,CAC/DsH,MAAO+K,EACPoa,YAAY,EACZC,cAAc,EACdzkB,UAAU,IACP/H,EAAEF,GAAKqS,EAAGnS,CACjB,uDCPA,IAAIwhC,EAAQ,EAAQ,MAChBC,EAAc,EAAQ,MAE1B7hC,EAAOC,QAAU1B,OAAOoJ,MAAQ,SAAcsd,GAC5C,OAAO2c,EAAM3c,EAAG4c,EAClB,gqBCNA,IAAAthC,EAAAC,EAAA,MACAshC,EAAAthC,EAAA,MACAg/B,EAAAh/B,EAAA,KACAuhC,EAAAvhC,EAAA,MAEA,uBAA6BwhC,IAC5B,MAAM32B,GAAU,EAAA9K,EAAA+e,YAAWkgB,EAAA/+B,SAiC3B,OAhC0CwhC,KAGxCA,aAAyBC,OACxBD,EAAcE,aACdF,EAAcE,uBAAuBD,SAEtCD,EAAgB,CACfh0B,MAAOg0B,IAIT,MAAM9jC,EAAOgI,EAAAA,EAAA,GACT67B,GACAC,GAGA52B,EAAQ+2B,kBAGPjkC,EAAQ8P,QACX9P,EAAQ8P,MAAMo0B,UACdlkC,EAAQ8P,MAAMq0B,mBAEf,EAAAR,EAAA/qB,UAAS5Y,EAAQ8tB,MAEjB,EAAA8V,EAAAQ,mBAAAp8B,EAAAA,EAAA,GACIkF,GACAlN,GAEJ,CAEF,wBCtCD,IAAIqkC,EAAU,EAAQ,MACtBxiC,EAAOC,QAAU,SAAU6J,GACzB,OAAOvL,OAAOikC,EAAQ14B,GACxB,oBCKA9J,EAAOC,QATP,SAAuCC,EAAGE,GACxC,GAAI,MAAQF,EAAG,MAAO,CAAC,EACvB,IAAIqS,EAAI,CAAC,EACT,IAAK,IAAIlS,KAAKH,EAAG,GAAI,CAAC,EAAEkB,eAAeC,KAAKnB,EAAGG,GAAI,CACjD,IAAK,IAAMD,EAAEuK,QAAQtK,GAAI,SACzBkS,EAAElS,GAAKH,EAAEG,EACX,CACA,OAAOkS,CACT,EACgDvS,EAAOC,QAAQK,YAAa,EAAMN,EAAOC,QAAiB,QAAID,EAAOC,2ECSrH,IAPkC2D,IACzBgV,EAAAA,EAAAA,KAAA,QACLnV,WAAWqoB,EAAAA,EAAAA,GAAc,OAAQloB,EAAM6+B,SAAW,UAAW7+B,EAAMH,WACnE2a,MAAO,CAAEjF,MAAOvV,EAAMuV,MAAOupB,eAAgB9+B,EAAM8+B,wCCdvD1iC,EAAOC,SAAW,EAAQ,QAAsB,EAAQ,KAAR,EAAoB,WAClE,OAA4G,GAArG1B,OAAOgD,eAAe,EAAQ,IAAR,CAAyB,OAAQ,IAAK,CAAEE,IAAK,WAAc,OAAO,CAAG,IAAKtB,CACzG,sBCDAH,EAAOC,QAAU,SAAU6J,GACzB,GAAUJ,MAANI,EAAiB,MAAMxL,UAAU,yBAA2BwL,GAChE,OAAOA,CACT,sHCFI64B,EAAc,KAAKC,eAAe,OAAc,KAElDC,EAAkBF,EAAYG,KAAKC,wBCCrC/iC,EAAOC,QALP,SAAgCG,GAC9B,OAAOA,GAAKA,EAAEE,WAAaF,EAAI,CAC7B,QAAWA,EAEf,EACyCJ,EAAOC,QAAQK,YAAa,EAAMN,EAAOC,QAAiB,QAAID,EAAOC,uGCF/F,SAA+B+iC,GA+B7C,OA9BA,SAAAjhB,GACC,SAAAkhB,EAAYr/B,GAAQ,IAADV,EAGlB,OAFAA,EAAA6e,EAAA1gB,KAAA,KAAMuC,IAAN,MAEKoI,MAAQ,CAIZk3B,cAAiBhgC,EAAKU,MAAMg8B,OAJ7B18B,CAMA,CAAAmM,EAAA4zB,EAAAlhB,GAAA,IAAAld,EAAAo+B,EAAA9hC,UAiBA,OAjBA0D,EAEDyH,kBAAA,WACChK,KAAK6gC,eAAgB,EAAA5D,EAAAlxB,aACpB,IAAM/L,KAAK8K,SAAS,CAAE81B,cAAc,KACpC5gC,KAAKsB,MAAMg8B,MAEZ,EAAA/6B,EAED8H,qBAAA,YACC,EAAA4yB,EAAAO,cAAax9B,KAAK6gC,cAClB,EAAAt+B,EAEDG,OAAA,WACC,OAAO1C,KAAK0J,MAAMk3B,cAAmC,oBAAZnyB,OACxCxQ,EAAAoB,QAAAsD,cAAC+9B,GAAD,EAAAI,EAAAzhC,SAAA,GAAsBW,KAAKsB,MAA3B,CAAA4d,OAAA,KAAAC,SAAA,CAAAC,SAAAC,EAAAC,WAAA,GAAAC,aAAA,MACG,IACJ,EAAAohB,CAAA,CA3BF,CAAuC1iC,EAAA2E,UA+BvC,mBAnCD3E,EAAAqB,EAAApB,EAAA,OACA++B,EAAA/+B,EAAA,mKCDA,OAGA,SAAWuQ,EAAQrH,GACjB,aAEA,IAGE25B,EAAY,WACZC,EAAa,YACbC,EAAW,SACXC,EAAW,SACXC,EAAQ,QACRC,EAAQ,QACRC,EAAO,OACPC,EAAO,OACPC,EAAS,SACTC,EAAU,UACVC,EAAe,eACfC,EAAU,UACVC,EAAS,SACTC,EAAS,SACTC,EAAU,UACVC,EAAW,WACXC,EAAW,WAETC,EAAS,SACXC,EAAQ,QACRC,EAAO,OACPC,EAAa,aACbC,EAAU,UACVC,EAAS,SAETC,EAAU,UACVC,EAAS,SACTC,EAAS,SACTC,EAAK,KACLC,EAAY,YACZC,EAAW,WACXC,EAAQ,QACRC,EAAU,UACVC,EAAQ,QACRC,EAAO,OACPC,EAAS,SACTC,EAAQ,QACRC,EAAW,WACXC,EAAc,cACdC,EAAS,SACTC,EAAiB,WAYjBC,EAAY,SAAUnf,GAEpB,IADA,IAAIof,EAAQ,CAAC,EACJvmC,EAAI,EAAGA,EAAImnB,EAAI3nB,OAAQQ,IAC9BumC,EAAMpf,EAAInnB,GAAGN,eAAiBynB,EAAInnB,GAEpC,OAAOumC,CACT,EACA9T,EAAM,SAAU+T,EAAMC,GACpB,cAAcD,IAAStC,IAAuD,IAA5CwC,EAASD,GAAMp7B,QAAQq7B,EAASF,GACpE,EACAE,EAAW,SAAU/zB,GACnB,OAAOA,EAAIhT,aACb,EAIAL,EAAO,SAAUqT,EAAKg0B,GACpB,UAAWh0B,IAAQuxB,EAEjB,OADAvxB,EAAMA,EAAItS,QAAQ,SAxEd,WAyEUsmC,IAAQ3C,EAAarxB,EAAMA,EAAI+gB,UAAU,EAtD3C,IAwDhB,EACEkT,EAAY,SAAUC,EAAIC,GAQ1B,IAPA,IACEC,EACA39B,EACAQ,EACAkwB,EACAkN,EACA3a,EANErsB,EAAI,EAODA,EAAI8mC,EAAOtnC,SAAWwnC,GAAS,CACpC,IAAIC,EAAQH,EAAO9mC,GACjBsE,EAAQwiC,EAAO9mC,EAAI,GAErB,IADA+mC,EAAI39B,EAAI,EACD29B,EAAIE,EAAMznC,SAAWwnC,GACrBC,EAAMF,IAIX,GADAC,EAAUC,EAAMF,KAAKrd,KAAKmd,GAExB,IAAKj9B,EAAI,EAAGA,EAAItF,EAAM9E,OAAQoK,IAC5ByiB,EAAQ2a,IAAU59B,UAClB0wB,EAAIx1B,EAAMsF,MACOq6B,GAAYnK,EAAEt6B,OAAS,EACrB,IAAbs6B,EAAEt6B,cACOs6B,EAAE,IAAMiK,EACjB/gC,KAAK82B,EAAE,IAAMA,EAAE,GAAG/3B,KAAKiB,KAAMqpB,GAE7BrpB,KAAK82B,EAAE,IAAMA,EAAE,GAEK,IAAbA,EAAEt6B,cACAs6B,EAAE,KAAOiK,GAAejK,EAAE,GAAGpQ,MAAQoQ,EAAE,GAAG55B,KAGnD8C,KAAK82B,EAAE,IAAMzN,EAAQA,EAAMhsB,QAAQy5B,EAAE,GAAIA,EAAE,IAAM1vB,EAFjDpH,KAAK82B,EAAE,IAAMzN,EAAQyN,EAAE,GAAG/3B,KAAKiB,KAAMqpB,EAAOyN,EAAE,IAAM1vB,EAIhC,IAAb0vB,EAAEt6B,SACXwD,KAAK82B,EAAE,IAAMzN,EAAQyN,EAAE,GAAG/3B,KAAKiB,KAAMqpB,EAAMhsB,QAAQy5B,EAAE,GAAIA,EAAE,KAAO1vB,GAGpEpH,KAAK82B,GAAKzN,GAAgBjiB,EAKlCpK,GAAK,CACP,CACF,EACAknC,EAAY,SAAUv0B,EAAKvT,GACzB,IAAK,IAAIY,KAAKZ,EACZ,UAAWA,EAAIY,KAAOikC,GAAY7kC,EAAIY,GAAGR,OAAS,GAChD,IAAK,IAAIunC,EAAI,EAAGA,EAAI3nC,EAAIY,GAAGR,OAAQunC,IACjC,GAAItU,EAAIrzB,EAAIY,GAAG+mC,GAAIp0B,GACjB,MA9HA,MA8HO3S,EAAgBoK,EAAYpK,OAGlC,GAAIyyB,EAAIrzB,EAAIY,GAAI2S,GACrB,MAlII,MAkIG3S,EAAgBoK,EAAYpK,EAGvC,OAAOZ,EAAI0C,eAAe,KAAO1C,EAAI,KAAOuT,CAC9C,EAWAw0B,EAAoB,CAClBC,GAAI,OACJ,UAAW,SACX,SAAU,QACV,IAAK,SACLC,GAAI,CAAC,SAAU,UACfC,MAAO,SACP,EAAG,SACH,EAAG,SACH,IAAK,SACL,GAAI,CAAC,SAAU,WACfC,GAAI,OAEJC,EAAU,CACZC,QAAS,CAAC,CAAC,gCAAiC,CAACjD,EAAS,CAACH,EAAM,WAAY,CAAC,+BAAgC,CAACG,EAAS,CAACH,EAAM,SAAU,CAAC,4BAA6B,mDAAoD,2CAA4C,CAACA,EAAMG,GAAU,CAAC,yBAA0B,CAACA,EAAS,CAACH,EAAMuB,EAAQ,UAAW,CAAC,4BAA6B,CAACpB,EAAS,CAACH,EAAMuB,EAAQ,QAAS,CAAC,qBAAsB,CAACpB,EAAS,CAACH,EAAMuB,IAAS,CAAC,0DAA2D,CAACpB,EAAS,CAACH,EAAM,UAAW,CAAC,+CAAgD,CAACG,EAAS,CAACH,EAAM,YAAa,CAAC,uBAAwB,uEAAwE,4DAA6D,2BAA4B,+NAAgO,sCAAuC,uBAAwB,CAACA,EAAMG,GAAU,CAAC,6BAA8B,CAACA,EAAS,CAACH,EAAM,UAAW,CAAC,qBAAsB,CAACG,EAAS,CAACH,EAAM,eAAgB,CAAC,qDAAsD,CAACG,EAAS,CAACH,EAAM,KAAOe,IAAW,CAAC,+BAAgC,+BAAgC,8BAA+B,CAACZ,EAAS,CAACH,EAAM,WAAY,CAAC,yBAA0B,CAACG,EAAS,CAACH,EAAM,cAAe,CAAC,+CAAgD,CAACG,EAAS,CAACH,EAAM,OAAQ,CAAC,oCAAqC,CAACG,EAAS,CAACH,EAAM,WAAY,CAAC,yBAA0B,CAACG,EAAS,CAACH,EAAM,gBAAkBe,IAAW,CAAC,2BAA4B,CAAC,CAACf,EAAM,OAAQ,aAAee,GAAUZ,GAAU,CAAC,uBAAwB,CAACA,EAAS,CAACH,EAAMiB,EAAU,WAAY,CAAC,qBAAsB,CAACd,EAAS,CAACH,EAAMuB,EAAQ,WAAY,CAAC,0BAA2B,CAACpB,EAAS,CAACH,EAAM,YAAa,CAAC,sBAAuB,CAACG,EAAS,CAACH,EAAM,YAAa,CAAC,qBAAsB,CAACG,EAAS,CAACH,EAAMuB,EAAQ,WAAY,CAAC,2BAA4B,CAACpB,EAAS,CAACH,EAAM,OAASgC,IAAkB,CAAC,sBAAuB,CAAC7B,EAAS,CAACH,EAAMiB,IAAW,CAAC,+BAAgC,CAACd,EAAS,CAACH,EAAM,QAAS,CAAC,sBAAuB,CAAC,CAACA,EAAM,OAAQ,aAAcG,GAAU,CAAC,yDAA0D,CAAC,CAACH,EAAM,OAAQ,KAAOgC,GAAiB7B,GAAU,CAAC,8BAA+B,CAACA,EAAS,CAACH,EAAMwB,EAAU,cAAe,CAAC,0BAA2B,CAACrB,EAAS,CAACH,EAAM,mBAAoB,CAAC,4BAA6B,CAAC,CAACA,EAAM,gBAAiBG,GAAU,CAAC,gCAAiC,iDAAkD,sEAAuE,CAACH,EAAMG,GAAU,CAAC,sBAAuB,sBAAuB,CAACH,GAAO,CAAC,kCAAmC,oCAAqC,CAACG,EAASH,GAAO,CAAC,+DAAgE,CAAC,CAACA,EAAM6B,GAAW1B,GAAU,CAAC,uBAAwB,uCAAwC,kCAAmC,4BAA6B,4BAA6B,6BAA8B,qCAAsC,iDAAkD,CAACH,EAAMG,GAAU,CAAC,gCAAiC,CAACA,EAAS,CAACH,EAAM,QAAS,CAAC,8CAA+C,CAACG,EAAS,CAACH,EAAM,WAAY,CAAC,oCAAqC,CAACG,EAAS,CAACH,EAAMgB,EAAS,cAAe,CAAC,+BAAgC,CAAC,CAAChB,EAAMgB,EAAS,YAAab,GAAU,CAAC,2DAA4D,CAACA,EAAS,CAACH,EAAM,WAAae,IAAW,CAAC,+DAAgE,CAACf,EAAMG,GAAU,CAAC,gDAAiD,CAACA,EAAS,CAACH,EAAM,kBAAmB,CAAC,sDAAuD,CAACG,EAASH,GAAO,CAAC,gDAAiD,CAACA,EAAM,CAACG,EAAS0C,EAxBn8H,CACf,MAAO,KACP,IAAK,KACL,IAAK,KACL,MAAO,OACP,QAAS,OACT,QAAS,OACT,QAAS,OACT,IAAK,OAgBw+H,CAAC,8BAA+B,CAAC7C,EAAMG,GAAU,CAAC,wCAAyC,CAAC,CAACH,EAAM,YAAaG,GAAU,CAAC,kCAAmC,CAACH,EAAMG,GAAU,CAAC,uCAAwC,CAACA,EAAS,CAACH,EAAMiB,EAAU,aAAc,CAAC,6BAA8B,cAAe,8FAA+F,+FAAgG,wBAAyB,2CAA4C,+GAAgH,wBAAyB,CAACjB,EAAM,CAACG,EAAS,KAAM,MAAO,CAAC,wBAAyB,CAACH,EAAM,CAACG,EAAS,eAAgB,MACpwJkD,IAAK,CAAC,CAAC,iDAAkD,CAAC,CAACjD,EAAc,UAAW,CAAC,gBAAiB,CAAC,CAACA,EAAciC,IAAY,CAAC,0BAA2B,CAAC,CAACjC,EAAc,SAAU,CAAC,oCAAqC,CAAC,CAACA,EAAc,UAAW,CAAC,mCAAoC,CAAC,CAACA,EAAc,UAAW,CAAC,8BAA+B,CAAC,CAACA,EAAc,QAAS,CAAC,0CAA2C,CAAC,CAACA,EAAc,OAjKta,GAiKqbiC,IAAY,CAAC,kBAAmB,CAAC,CAACjC,EAAc,UAAW,CAAC,2HAA4H,CAAC,CAACA,EAAciC,KACroBiB,OAAQ,CAAC,CAAC,mFAAoF,CAACvD,EAAO,CAACG,EAAQsB,GAAU,CAACvB,EAAMM,IAAU,CAAC,iEAAkE,kCAAmC,iBAAkB,CAACR,EAAO,CAACG,EAAQsB,GAAU,CAACvB,EAAMK,IAAU,CAAC,4CAA6C,CAACP,EAAO,CAACG,EAAQU,GAAQ,CAACX,EAAMK,IAAU,CAAC,6BAA8B,oCAAqC,kCAAmC,CAACP,EAAO,CAACG,EAAQU,GAAQ,CAACX,EAAMM,IAAU,CAAC,iBAAkB,CAACR,EAAO,CAACG,EAAQU,IAAS,CAAC,iCAAkC,CAACb,EAAO,CAACG,EAAQuB,GAAQ,CAACxB,EAAMK,IAAU,CAAC,4BAA6B,CAACP,EAAO,CAACG,EAAQ,SAAU,CAACD,EAAMK,IAAU,CAAC,+DAAgE,CAACP,EAAO,CAACG,EAAQiB,GAAS,CAAClB,EAAMM,IAAU,CAAC,4BAA6B,sEAAuE,CAACR,EAAO,CAACG,EAAQiB,GAAS,CAAClB,EAAMK,IAAU,CAAC,kDAAmD,yBAA0B,uCAAwC,iDAAkD,4DAA6D,6GAA8G,CAAC,CAACP,EAAO,KAAM,KAAM,CAACG,EAAQyB,GAAS,CAAC1B,EAAMK,IAAU,CAAC,+CAAgD,8CAA+C,CAAC,CAACP,EAAO,KAAM,KAAM,CAACG,EAAQyB,GAAS,CAAC1B,EAAMM,IAAU,CAAC,sBAAuB,mEAAoE,CAACR,EAAO,CAACG,EAAQ,QAAS,CAACD,EAAMK,IAAU,CAAC,wBAAyB,CAACP,EAAO,CAACG,EAAQ,QAAS,CAACD,EAAMM,IAAU,CAAC,yBAA0B,oCAAqC,CAACR,EAAO,CAACG,EAAQ,QAAS,CAACD,EAAMK,IAAU,CAAC,mCAAoC,CAACP,EAAO,CAACG,EAAQ,UAAW,CAACD,EAAMK,IAAU,CAAC,iFAAkF,4BAA6B,sDAAuD,CAACP,EAAO,CAACG,EAAQoB,GAAW,CAACrB,EAAMK,IAAU,CAAC,qCAAsC,CAACP,EAAO,CAACG,EAAQoB,GAAW,CAACrB,EAAMM,IAAU,CAAC,iEAAkE,CAACR,EAAO,CAACG,EAAQkB,GAAK,CAACnB,EAAMM,IAAU,CAAC,sDAAuD,oDAAqD,wBAAyB,CAACR,EAAO,CAACG,EAAQkB,GAAK,CAACnB,EAAMK,IAAU,CAAC,oBAAqB,qEAAsE,CAACP,EAAO,CAACG,EAAQ,UAAW,CAACD,EAAMM,IAAU,CAAC,qCAAsC,0BAA2B,CAAC,CAACR,EAAO,KAAM,KAAM,CAACG,EAAQ,SAAU,CAACD,EAAMK,IAAU,CAAC,gBAAiB,CAACP,EAAO,CAACG,EAAQgB,GAAS,CAACjB,EAAMM,IAAU,CAAC,6CAA8C,CAACR,EAAO,CAACG,EAAQgB,GAAS,CAACjB,EAAMK,IAAU,CAAC,2GAA4G,CAACP,EAAO,CAACG,EAAQwB,GAAO,CAACzB,EAAMK,IAAU,CAAC,oBAAqB,iCAAkC,CAAC,CAACP,EAAO,iBAAkB,CAACG,EAAQwB,GAAO,CAACzB,EAAMM,IAAU,CAAC,sCAAuC,0CAA2C,CAACR,EAAO,CAACG,EAAQ,WAAY,CAACD,EAAMK,IAAU,CAAC,eAAgB,yCAA0C,gCAAiC,CAACP,EAAO,CAACG,EAAQS,GAAS,CAACV,EAAMM,IAAU,CAAC,iDAAkD,CAAC,CAACR,EAAO,QAAS,iBAAkB,CAACG,EAAQS,GAAS,CAACV,EAAMK,IAAU,CAAC,gCAAiC,CAACP,EAAOG,EAAQ,CAACD,EAAMM,IAAU,CAAC,gCAAiC,kBAAmB,CAACR,EAAO,CAACG,EAAQY,GAAa,CAACb,EAAMK,IAAU,CAAC,qFAAsF,CAACP,EAAO,CAACG,EAAQW,GAAO,CAACZ,EAAMM,IAAU,CAAC,iDAAkD,CAACR,EAAO,CAACG,EAAQW,GAAO,CAACZ,EAAMK,IAAU,CAAC,cAAe,CAACP,EAAO,CAACG,EAAQ,OAAQ,CAACD,EAAMM,IAAU,CAAC,2CAA4C,oCAAqC,iFAAkF,CAACL,EAAQ,CAACH,EAAO,KAAM,KAAM,CAACE,EAAMK,IAAU,CAAC,gHAAiH,CAACP,EAAO,CAACG,EAAQ,OAAQ,CAACD,EAAMM,IAAU,CAAC,mBAAoB,CAAC,CAACL,EAAQmC,GAAWtC,EAAO,CAACE,EAAM4C,EAAW,CACr1IU,OAAQ,CAAC,UAAW,SACpB,IAAK,YACF,CAAC,uCAAwC,CAACxD,EAAO,CAACG,EAAQ,QAAS,CAACD,EAAMM,IAAU,CAAC,8BAA+B,qBAAsB,CAACR,EAAO,CAACG,EAAQ,SAAU,CAACD,EAAMK,IAAU,CAAC,kDAAmD,CAACP,EAAO,CAACG,EAAQ,WAAY,CAACD,EAAMK,IAAU,CAAC,8BAA+B,oCAAqC,CAACP,EAAO,CAACG,EAAQ,aAAc,CAACD,EAAMK,IAAU,CAAC,gBAAiB,+CAAgD,CAACP,EAAO,CAACG,EAAQ,OAAQ,CAACD,EAAMK,IAAU,CAAC,0CAA2C,CAACP,EAAO,CAACG,EAAQ,aAAc,CAACD,EAAMK,IAAU,CAAC,qCAAsC,CAACP,EAAO,CAACG,EAAQ,WAAY,CAACD,EAAMK,IAAU,CAAC,+HAAgI,uCAAwC,mBAAoB,iBAAkB,8BAA+B,0BAA2B,WAAY,yBAA0B,CAACJ,EAAQH,EAAO,CAACE,EAAMK,IAAU,CAAC,mBAAoB,2BAA4B,wBAAyB,uCAAwC,uBAAwB,4BAA6B,iCAAkC,kCAAmC,8BAA+B,gCAAiC,mCAAoC,CAACJ,EAAQH,EAAO,CAACE,EAAMM,IAAU,CAAC,kBAAmB,CAACR,EAAO,CAACG,EAAQmB,GAAY,CAACpB,EAAMM,IAAU,CAAC,qCAAsC,CAACR,EAAO,CAACG,EAAQ,aAAc,CAACD,EAAMK,IAAU,CAAC,aAAc,CAACP,EAAO,CAACG,EAAQ,QAAS,CAACD,EAAMK,IAAU,CAAC,gBAAiB,CAACP,EAAO,CAACG,EAAQ,WAAY,CAACD,EAAMK,IAAU,CAAC,iBAAkB,CAACP,EAAO,CAACG,EAAQ,OAAQ,CAACD,EAAMM,IAAU,CAAC,0BAA2B,CAACR,EAAO,CAACG,EAAQ,QAAS,CAACD,EAAMM,IAAU,CAAC,wBAAyB,CAACR,EAAO,CAACG,EAAQ,WAAY,CAACD,EAAMM,IAAU,CAAC,+CAAgD,CAACR,EAAO,CAACG,EAAQ,kBAAmB,CAACD,EAAMM,IAAU,CAAC,qBAAsB,CAACR,EAAO,CAACG,EAAQ,YAAa,CAACD,EAAMM,IAAU,CAAC,cAAe,CAACR,EAAO,CAACG,EAAQ,OAAQ,CAACD,EAAMM,IAAU,CAAC,mBAAoB,CAACR,EAAO,CAACG,EAAQ,OAAQ,CAACD,EAAMK,IAAU,CAAC,wBAAyB,CAACP,EAAO,CAACG,EAAQ,SAAU,CAACD,EAAMK,IAAU,CAAC,mBAAoB,CAACP,EAAO,CAACG,EAAQ,SAAU,CAACD,EAAMM,IAAU,CAAC,wBAAyB,CAACR,EAAO,CAACG,EAAQ,QAAS,CAACD,EAAMM,IAAU,CAAC,mBAAoB,sCAAuC,CAAC,CAACL,EAAQ,gBAAiBH,EAAO,CAACE,EAAMM,IAAU,CAAC,sBAAuB,CAACR,EAAO,CAACG,EAAQ,YAAa,CAACD,EAAMM,IAAU,CAAC,8BAA+B,CAACR,EAAO,CAACG,EAAQ,YAAa,CAACD,EAAMM,IAAU,CAAC,oDAAqD,CAAC,CAACL,EAAQ,SAAUH,EAAO,CAACE,EAAMK,IAAU,CAAC,2BAA4B,CAAC,CAACJ,EAAQ,SAAUH,EAAO,CAACE,EAAMK,IAAU,CAAC,cAAe,CAACP,EAAO,CAACG,EAAQ,aAAc,CAACD,EAAMK,IAAU,CAAC,uCAAwC,CAACP,EAAO,CAACG,EAAQ,WAAY,CAACD,EAAMM,IAAU,CAAC,wBAAyB,CAACR,EAAO,CAACG,EAAQ,aAAc,CAACD,EAAMM,IAAU,CAAC,kBAAmB,CAACR,EAAO,CAACG,EAAQ,SAAU,CAACD,EAAMM,IAAU,CAAC,qBAAsB,CAACR,EAAO,CAACG,EAAQ,UAAW,CAACD,EAAMM,IAAU,CAAC,mBAAoB,CAACL,EAAQH,EAAO,CAACE,EAAMK,IAAU,CAAC,sBAAuB,CAAC,CAACP,EAAO,MAAO,KAAM,CAACG,EAAQmB,GAAY,CAACpB,EAAMK,IAAU,CAAC,yDAA0D,CAACP,EAAO,CAACG,EAAQ0B,GAAQ,CAAC3B,EAAMM,IAAU,CAAC,yCAA0C,CAACR,EAAO,CAACG,EAAQ0B,GAAQ,CAAC3B,EAAMK,IAAU,CAAC,wBAAyB,CAACJ,EAAQ,CAACD,EAAMO,IAAW,CAAC,uBAAwB,CAAC,CAACT,EAAO,IAAK,WAAY,CAACG,EAAQsB,GAAU,CAACvB,EAAMO,IAAW,CAAC,8DAA+D,CAAC,CAACN,EAAQkB,GAAK,CAACnB,EAAMO,IAAW,CAAC,gBAAiB,CAACN,EAAQ,CAACH,EAAOa,EAAQ,OAAQ,CAACX,EAAMO,IAAW,CAAC,UAAW,CAAC,CAACT,EAAOiB,EAAS,QAAS,CAACd,EAAQgB,GAAS,CAACjB,EAAMO,IAAW,CAAC,6BAA8B,CAACT,EAAO,CAACG,EAAQS,GAAS,CAACV,EAAMO,IAAW,CAAC,uBAAwB,uBAAwB,CAACT,EAAO,CAACG,EAAQuB,GAAQ,CAACxB,EAAMO,IAAW,CAAC,4BAA6B,CAACT,EAAO,CAACG,EAAQwB,GAAO,CAACzB,EAAMO,IAAW,CAAC,qBAAsB,CAACT,EAAO,CAACG,EAAQyB,GAAS,CAAC1B,EAAMO,IAAW,CAAC,6BAA8B,CAACN,EAAQH,EAAO,CAACE,EAAMO,IAAW,CAAC,0CAA2C,6DAA8D,CAAC,CAACN,EAAQjlC,GAAO,CAAC8kC,EAAO9kC,GAAO,CAACglC,EAAMO,IAAW,CAAC,mDAAoD,CAAC,CAACP,EAAMO,IAAW,CAAC,UAAW,8BAA+B,CAACN,EAAQH,EAAO,CAACE,EAAMI,IAAW,CAAC,0BAA2B,CAACN,EAAO,CAACG,EAAQ,UAAW,CAACD,EAAMI,IAAW,CAAC,mCAAoC,CAACN,EAAO,CAACG,EAAQwB,GAAO,CAACzB,EAAMI,IAAW,CAAC,sCAAuC,CAACN,EAAO,CAACG,EAAQmB,GAAY,CAACpB,EAAMI,IAAW,CAAC,mCAAoC,CAACN,EAAO,CAACG,EAAQsB,GAAU,CAACvB,EAAMQ,IAAY,CAAC,kBAAmB,CAACP,EAAQH,EAAO,CAACE,EAAMQ,IAAY,CAAC,wCAAyC,CAACV,EAAO,CAACG,EAAQU,GAAQ,CAACX,EAAMQ,IAAY,CAAC,wBAAyB,CAACV,EAAO,CAACG,EAAQgB,GAAS,CAACjB,EAAMQ,IAAY,CAAC,6BAA8B,CAACV,EAAO,CAACG,EAAQ0B,GAAQ,CAAC3B,EAAMQ,IAAY,CAAC,wBAAyB,CAACV,EAAO,CAACG,EAAQgB,GAAS,CAACjB,EAAMQ,IAAY,CAAC,kCAAmC,CAACP,EAAQH,EAAO,CAACE,EAAMQ,IAAY,CAAC,yBAA0B,CAACV,EAAO,CAACG,EAAQ2B,GAAW,CAAC5B,EAAMQ,IAAY,CAAC,wCAAyC,CAACP,EAAQ,CAACD,EAAMS,IAAY,CAAC,cAAe,CAACX,EAAO,CAACG,EAAQS,GAAS,CAACV,EAAMS,IAAY,CAAC,kEAAmE,CAACX,EAAO,CAACE,EAAMK,IAAU,CAAC,+DAAgE,CAACP,EAAO,CAACE,EAAMM,IAAU,CAAC,gDAAiD,CAAC,CAACN,EAAMM,IAAU,CAAC,kEAAmE,CAAC,CAACN,EAAMK,IAAU,CAAC,kCAAmC,CAACP,EAAO,CAACG,EAAQ,aAC9vLsD,OAAQ,CAAC,CAAC,8BAA+B,CAACrD,EAAS,CAACH,EAAMyD,aAAiB,CAAC,wBAAyB,CAACzD,EAAMG,GAAU,CAAC,6CAA8C,CAACA,EAAS,CAACH,EAAM,UAAW,CAAC,uBAAwB,4EAA6E,0BAA2B,yCAA0C,8BAA+B,eAAgB,CAACA,EAAMG,GAAU,CAAC,iCAAkC,CAACA,EAASH,IACzd0D,GAAI,CAAC,CAAC,mCAAoC,CAAC1D,EAAMG,GAAU,CAAC,yDAA0D,CAACH,EAAM,CAACG,EAAS0C,EAAWC,IAAqB,CAAC,0BAA2B,2CAA4C,wCAAyC,CAAC,CAAC3C,EAAS0C,EAAWC,GAAoB,CAAC9C,EAAM,YAAa,CAAC,sDAAuD,4CAA6C,wBAAyB,CAAC,CAACG,EAAS,KAAM,KAAM,CAACH,EAAM,QAAS,CAAC,0BAA2B,yCAA0C,CAAC,CAACA,EAAM+B,GAAS,CAAC5B,EAAS,KAAM,MAAO,CAAC,kDAAmD,CAACA,EAASH,GAAO,CAAC,2FAA4F,8BAA+B,+BAAgC,kBAAmB,CAACA,EAAMG,GAAU,CAAC,cAAe,CAACA,EAAS,CAACH,EAAMc,IAAc,CAAC,6DAA8D,CAACX,EAAS,CAACH,EAAM,YAAa,CAAC,mFAAoF,CAACG,EAAS,CAACH,EAAMiB,EAAU,QAAS,CAAC,kBAAmB,wCAAyC,CAACd,EAAS,CAACH,EAAM,UAAW,CAAC,wCAAyC,CAACG,EAAS,CAACH,EAAM,YAAa,CAAC,qBAAsB,CAACG,EAAS,CAACH,EAAMgB,EAAS,SAAU,CAAC,oCAAqC,CAAC,CAAChB,EAAM8B,GAAc3B,GAAU,CAAC,qBAAsB,iBAAkB,2BAA4B,mDAAoD,2BAA4B,wCAAyC,yBAA0B,4BAA6B,8SAA+S,2BAA4B,oBAAqB,6EAA8E,kBAAmB,CAACH,EAAMG,GAAU,CAAC,yBAA0B,CAAC,CAACH,EAAM,WAAYG,GAAU,CAAC,sCAAuC,kCAAmC,mEAAoE,sBAAuB,CAACH,EAAMG,KAEh0EwD,EAAW,SAAUnB,EAAIoB,GAK3B,UAJWpB,IAAO5C,IAChBgE,EAAapB,EACbA,EAAKz8B,KAEDpH,gBAAgBglC,GACpB,OAAO,IAAIA,EAASnB,EAAIoB,GAAYC,YAEtC,IAAIC,SAAoB12B,IAAWuyB,GAAcvyB,EAAO2kB,UAAY3kB,EAAO2kB,UAAYhsB,EACnFg+B,EAAMvB,IAAOsB,GAAcA,EAAWE,UAAYF,EAAWE,UAlLzD,IAmLJC,EAAQH,GAAcA,EAAWI,cAAgBJ,EAAWI,cAAgBn+B,EAC5Eo+B,EAAUP,EAzIH,SAAUT,EAASS,GAC5B,IAAIQ,EAAgB,CAAC,EACrB,IAAK,IAAIzoC,KAAKwnC,EACRS,EAAWjoC,IAAMioC,EAAWjoC,GAAGR,OAAS,GAAM,EAChDipC,EAAczoC,GAAKioC,EAAWjoC,GAAGgE,OAAOwjC,EAAQxnC,IAEhDyoC,EAAczoC,GAAKwnC,EAAQxnC,GAG/B,OAAOyoC,CACT,CA+H2BC,CAAOlB,EAASS,GAAcT,EACrDmB,EAAaR,GAAcA,EAAWE,WAAaD,EAoEvD,OAnEAplC,KAAK4lC,WAAa,WAChB,IApHmBnpB,EAoHfopB,EAAW,CAAC,EAQhB,OAPAA,EAASxE,GAAQj6B,EACjBy+B,EAASrE,GAAWp6B,EACpBw8B,EAAU7kC,KAAK8mC,EAAUT,EAAKI,EAAQf,SACtCoB,EAAS1E,UAxHU1kB,EAwHQopB,EAASrE,MAvHVN,EAAWzkB,EAAQpf,QAAQ,WApE/C,IAoEkE+C,MAAM,KAAK,GAAKgH,EAwHpFu+B,GAAcR,GAAcA,EAAWW,cAAgBX,EAAWW,MAAMC,SAAWhF,IACrF8E,EAASxE,GAAQ,SAEZwE,CACT,EACA7lC,KAAKgmC,OAAS,WACZ,IAAIC,EAAO,CAAC,EAGZ,OAFAA,EAAKxE,GAAgBr6B,EACrBw8B,EAAU7kC,KAAKknC,EAAMb,EAAKI,EAAQd,KAC3BuB,CACT,EACAjmC,KAAKkmC,UAAY,WACf,IAAIC,EAAU,CAAC,EAYf,OAXAA,EAAQ5E,GAAUn6B,EAClB++B,EAAQ/E,GAASh6B,EACjB++B,EAAQ7E,GAAQl6B,EAChBw8B,EAAU7kC,KAAKonC,EAASf,EAAKI,EAAQb,QACjCgB,IAAeQ,EAAQ7E,IAASgE,GAASA,EAAMc,SACjDD,EAAQ7E,GAAQK,GAEdgE,GAAgC,aAAlBQ,EAAQ/E,IAAyB+D,UAAqBA,EAAWkB,aAAerF,GAAcmE,EAAWmB,gBAAkBnB,EAAWmB,eAAiB,IACvKH,EAAQ/E,GAAS,OACjB+E,EAAQ7E,GAAQM,GAEXuE,CACT,EACAnmC,KAAKumC,UAAY,WACf,IAAIC,EAAU,CAAC,EAIf,OAHAA,EAAQnF,GAAQj6B,EAChBo/B,EAAQhF,GAAWp6B,EACnBw8B,EAAU7kC,KAAKynC,EAASpB,EAAKI,EAAQX,QAC9B2B,CACT,EACAxmC,KAAKymC,MAAQ,WACX,IAAIC,EAAM,CAAC,EAOX,OANAA,EAAIrF,GAAQj6B,EACZs/B,EAAIlF,GAAWp6B,EACfw8B,EAAU7kC,KAAK2nC,EAAKtB,EAAKI,EAAQT,IAC7BY,IAAee,EAAIrF,IAASiE,GAASA,EAAMqB,UAA8B,WAAlBrB,EAAMqB,WAC/DD,EAAIrF,GAAQiE,EAAMqB,SAAStpC,QAAQ,aAAc8lC,GAAa9lC,QAAQ,SAAU+lC,IAE3EsD,CACT,EACA1mC,KAAKklC,UAAY,WACf,MAAO,CACLrB,GAAI7jC,KAAK4mC,QACTnC,QAASzkC,KAAK4lC,aACdf,OAAQ7kC,KAAKumC,YACbxB,GAAI/kC,KAAKymC,QACT9B,OAAQ3kC,KAAKkmC,YACbxB,IAAK1kC,KAAKgmC,SAEd,EACAhmC,KAAK4mC,MAAQ,WACX,OAAOxB,CACT,EACAplC,KAAK6mC,MAAQ,SAAUhD,GAErB,OADAuB,SAAavB,IAAO3C,GAAY2C,EAAGrnC,OAlOrB,IAkO8CF,EAAKunC,EAlOnD,KAkOwEA,EAC/E7jC,IACT,EACAA,KAAK6mC,MAAMzB,GACJplC,IACT,EACAglC,EAASxD,QA5PQ,SA6PjBwD,EAAS5C,QAAUkB,EAAU,CAACjC,EAAMG,EAASL,IAC7C6D,EAAS8B,IAAMxD,EAAU,CAAC7B,IAC1BuD,EAAS+B,OAASzD,EAAU,CAAClC,EAAOG,EAAQD,EAAMI,EAASC,EAAQE,EAASD,EAAQE,EAAUC,IAC9FiD,EAASgC,OAAShC,EAASiC,GAAK3D,EAAU,CAACjC,EAAMG,WACtC7jC,IAAYqjC,GACetjC,EAAOC,UACzCA,EAAUD,EAAOC,QAAUqnC,GAE7BrnC,EAAQqnC,SAAWA,GAEgB,QACjC,aACE,OAAOA,CACR,2CACev2B,IAAWuyB,IAC3BvyB,EAAOu2B,SAAWA,GAGtB,IAAItM,UAAWjqB,IAAWuyB,IAAevyB,EAAOy4B,QAAUz4B,EAAO04B,OACjE,GAAIzO,KAAMA,GAAEmL,GAAI,CACd,IAAIuD,GAAS,IAAIpC,EACjBtM,GAAEmL,GAAKuD,GAAOlC,YACdxM,GAAEmL,GAAG1kC,IAAM,WACT,OAAOioC,GAAOR,OAChB,EACAlO,GAAEmL,GAAGzkC,IAAM,SAAUykC,GACnBuD,GAAOP,MAAMhD,GACb,IAAIh2B,EAASu5B,GAAOlC,YACpB,IAAK,IAAImC,KAAQx5B,EACf6qB,GAAEmL,GAAGwD,GAAQx5B,EAAOw5B,EAExB,CACF,CACD,CAjSD,CAiSqB,iBAAX54B,OAAsBA,OAASzO,gLCpSzC,MAAM+N,EAAQ7P,EAAQ,MAChBopC,EAAoBppC,EAAAA,MAAAA,QACpBqpC,EAASrpC,EAAAA,MAAAA,EAGfR,EAAOC,QAAU,CAAAmH,EAAqB0iC,KAAmB,IAAvC,QAAEv/B,EAAF,MAAW3G,GAAZwD,EAChB,OACCiJ,EAAApL,cAAC4kC,GAAD,EAAAzG,EAAAzhC,SAAA,GAAYiC,EAAZ,CAAA4d,YAAA,EAAAC,SAAA,CAAAC,SAAAC,EAAAC,WAAA,EAAAC,aAAA,KACCxR,EAAApL,cAAC2kC,GAAD,EAAAxG,EAAAzhC,SAAA,GAAuBiC,EAAWkmC,EAAlC,CAAAtoB,YAAA,EAAAC,SAAA,CAAAC,SAAAC,EAAAC,WAAA,EAAAC,aAAA,KACEtX,GAHJ,oBCNDvK,EAAOC,QAAU,SAAU8pC,EAAQviC,GACjC,MAAO,CACLmlB,aAAuB,EAATod,GACdnd,eAAyB,EAATmd,GAChB5hC,WAAqB,EAAT4hC,GACZviC,MAAOA,EAEX,qCCPA,SAASwiC,EAAgBz3B,EAAGnS,GAC1B,OAAO4pC,EAAkBzrC,OAAO0rC,eAAiB1rC,OAAO0rC,eAAezc,OAAS,SAAUjb,EAAGnS,GAC3F,OAAOmS,EAAE3N,UAAYxE,EAAGmS,CAC1B,EAAGy3B,EAAgBz3B,EAAGnS,EACxB,CCHA,SAASiP,EAAekD,EAAGuT,GACzBvT,EAAEpR,UAAY5C,OAAOmG,OAAOohB,EAAE3kB,WAAYoR,EAAEpR,UAAUwD,YAAc4N,EAAG,EAAeA,EAAGuT,EAC3F,mDCHA,SAASkkB,EAAgBz3B,EAAGnS,GAC1B,OAAOJ,EAAOC,QAAU+pC,EAAkBzrC,OAAO0rC,eAAiB1rC,OAAO0rC,eAAezc,OAAS,SAAUjb,EAAGnS,GAC5G,OAAOmS,EAAE3N,UAAYxE,EAAGmS,CAC1B,EAAGvS,EAAOC,QAAQK,YAAa,EAAMN,EAAOC,QAAiB,QAAID,EAAOC,QAAS+pC,EAAgBz3B,EAAGnS,EACtG,CACAJ,EAAOC,QAAU+pC,EAAiBhqC,EAAOC,QAAQK,YAAa,EAAMN,EAAOC,QAAiB,QAAID,EAAOC,wuBCDnGs3B,EAAa,SAAoBr4B,EAAQ6T,GAC3C,OAAO7T,EAAOwmB,OAAO,EAAG3S,EAAOjU,UAAYiU,CAC7C,EAuBIqX,EAAO,SAAc8f,EAAQ/U,GAQ/B,IAPA,IAAIxJ,OAAQ,EACRwe,OAAW,EAEbC,EADejV,EAAIzyB,MAAM,KACA,GACvB2nC,EAAcC,EAAWF,GACzBG,EAA+B,KAAnBF,EAAY,GACxBG,EAASC,EAAWP,GACf5qC,EAAI,EAAGk5B,EAAIgS,EAAO1rC,OAAQQ,EAAIk5B,EAAGl5B,IAAK,CAC7C,IAAIorC,GAAS,EACTC,EAAQH,EAAOlrC,GAAGqrC,MACtB,GAAIA,EAAMhpC,QACRwoC,EAAW,CACTQ,MAAOA,EACPr7B,OAAQ,CAAC,EACT6lB,IAAKA,OAJT,CAYA,IAJA,IAAIyV,EAAgBN,EAAWK,EAAM36B,MACjCV,EAAS,CAAC,EACVgV,EAAM7S,KAAK6S,IAAI+lB,EAAYvrC,OAAQ8rC,EAAc9rC,QACjD2qB,EAAQ,EACLA,EAAQnF,EAAKmF,IAAS,CAC3B,IAAIohB,EAAeD,EAAcnhB,GAC7BqhB,EAAaT,EAAY5gB,GAC7B,GAAIshB,EAAQF,GAAe,CAKzBv7B,EADYu7B,EAAaprC,MAAM,IAAM,KACrB4qC,EAAY5qC,MAAMgqB,GAAO/qB,IAAIssC,oBAAoBjsC,KAAK,KACtE,KACF,CACA,QAAmB2K,IAAfohC,EAA0B,CAI5BJ,GAAS,EACT,KACF,CACA,IAAIO,EAAeC,EAAQliB,KAAK6hB,GAChC,GAAII,IAAiBV,EAAW,EACuC,IAA5CY,EAAcxgC,QAAQsgC,EAAa,KAC6J,KAAU,GACnO,IAAIzjC,EAAQwjC,mBAAmBF,GAC/Bx7B,EAAO27B,EAAa,IAAMzjC,CAC5B,MAAO,GAAIqjC,IAAiBC,EAAY,CAItCJ,GAAS,EACT,KACF,CACF,CACA,IAAKA,EAAQ,CACX/e,EAAQ,CACNgf,MAAOA,EACPr7B,OAAQA,EACR6lB,IAAK,IAAMkV,EAAY5qC,MAAM,EAAGgqB,GAAO1qB,KAAK,MAE9C,KACF,CA5CA,CA6CF,CACA,OAAO4sB,GAASwe,GAAY,IAC9B,EAIIxe,EAAQ,SAAe3b,EAAMmlB,GAC/B,OAAO/K,EAAK,CAAC,CACXpa,KAAMA,IACJmlB,EACN,EA4BI/jB,EAAU,SAAiB6a,EAAImf,GAEjC,GAAI7T,EAAWtL,EAAI,KACjB,OAAOA,EAET,IAAIof,EAAYpf,EAAGvpB,MAAM,KACvB4oC,EAAaD,EAAU,GACvBE,EAAUF,EAAU,GAEpBG,EADgBJ,EAAK1oC,MAAM,KACA,GACzB+oC,EAAanB,EAAWgB,GACxBI,EAAepB,EAAWkB,GAG9B,GAAsB,KAAlBC,EAAW,GACb,OAAOE,EAASH,EAAcD,GAIhC,IAAKhU,EAAWkU,EAAW,GAAI,KAAM,CACnC,IAAIh8B,EAAWi8B,EAAapoC,OAAOmoC,GAAY1sC,KAAK,KACpD,OAAO4sC,GAA2B,MAAjBH,EAAuB,GAAK,KAAO/7B,EAAU87B,EAChE,CASA,IAFA,IAAIK,EAAcF,EAAapoC,OAAOmoC,GAClCI,EAAW,GACNvsC,EAAI,EAAGk5B,EAAIoT,EAAY9sC,OAAQQ,EAAIk5B,EAAGl5B,IAAK,CAClD,IAAIwsC,EAAUF,EAAYtsC,GACV,OAAZwsC,EAAkBD,EAASz7B,MAA2B,MAAZ07B,GAAiBD,EAAS7jC,KAAK8jC,EAC/E,CACA,OAAOH,EAAS,IAAME,EAAS9sC,KAAK,KAAMwsC,EAC5C,EAKIQ,EAAe,SAAsB/7B,EAAMV,GAC7C,IAAI08B,EAAch8B,EAAKtN,MAAM,KAC3BupC,EAAWD,EAAY,GACvBE,EAAeF,EAAY,GAC3B34B,OAAyB3J,IAAjBwiC,EAA6B,GAAKA,EAExCC,EAAkB,IADP7B,EAAW2B,GACWvtC,KAAI,SAAUotC,GACjD,IAAIngB,EAAQuf,EAAQliB,KAAK8iB,GACzB,OAAOngB,EAAQrc,EAAOqc,EAAM,IAAMmgB,CACpC,IAAG/sC,KAAK,KACJqtC,EAAmB98B,EAAOE,SAE1B68B,GADJD,OAAwC1iC,IAArB0iC,EAAiC,CAAC,EAAIA,GACZr5B,OAEzCu5B,QADiC5iC,IAA1B2iC,EAAsC,GAAKA,GAC7B3pC,MAAM,KAAK,IAAM,GAE1C,OADAypC,EAAkBR,EAASQ,EAAiB94B,EAAOi5B,EAErD,EAYIpB,EAAU,SASVqB,EAAY,SAAmBT,GACjC,OAAOZ,EAAQ1rC,KAAKssC,EACtB,EACIf,EAAU,SAAiBe,GAC7B,OAAOA,GAA0B,MAAfA,EAAQ,EAC5B,EACIU,EAAY,SAAmB7B,EAAOlhB,GAMxC,MAAO,CACLkhB,MAAOA,EACP8B,MAPU9B,EAAMhpC,QAAU,EAAI2oC,EAAWK,EAAM36B,MAAMqZ,QAAO,SAAUojB,EAAOX,GAG7E,OAFAW,GAhBiB,GAKD,SAAuBX,GACzC,MAAmB,KAAZA,CACT,CAUQY,CAAcZ,GAAwCS,EAAUT,GAAUW,GAf7D,EAe8F1B,EAAQe,GAAUW,GAASE,EAAoCF,GAhB9J,EAgBYA,GAbd,EAcPA,CACT,GAAG,GAIDhjB,MAAOA,EAEX,EACIghB,EAAa,SAAoBP,GACnC,OAAOA,EAAOxrC,IAAI8tC,GAAW7kB,MAAK,SAAUxnB,EAAGoJ,GAC7C,OAAOpJ,EAAEssC,MAAQljC,EAAEkjC,MAAQ,EAAItsC,EAAEssC,MAAQljC,EAAEkjC,OAAS,EAAItsC,EAAEspB,MAAQlgB,EAAEkgB,KACtE,GACF,EACI6gB,EAAa,SAAoBnV,GACnC,OAAOA,EAENx1B,QAAQ,eAAgB,IAAI+C,MAAM,IACrC,EACIipC,EAAW,SAAkBl8B,GAC/B,IAAK,IAAItM,EAAOhB,UAAUrD,OAAQuU,EAAQjV,MAAM+E,EAAO,EAAIA,EAAO,EAAI,GAAIE,EAAO,EAAGA,EAAOF,EAAME,IAC/FgQ,EAAMhQ,EAAO,GAAKlB,UAAUkB,GAK9B,OAAOoM,IAHP4D,EAAQA,EAAMxU,QAAO,SAAUu6B,GAC7B,OAAOA,GAAKA,EAAEt6B,OAAS,CACzB,MAC4BuU,EAAMvU,OAAS,EAAI,IAAMuU,EAAMtU,KAAK,KAAO,GACzE,EACIosC,EAAgB,CAAC,MAAO,QCtPxBlpC,EAAW1D,OAAOC,QAAU,SAAU0D,GACxC,IAAK,IAAI5C,EAAI,EAAGA,EAAI6C,UAAUrD,OAAQQ,IAAK,CACzC,IAAI8C,EAASD,UAAU7C,GACvB,IAAK,IAAI4B,KAAOkB,EACV7D,OAAO4C,UAAUC,eAAeC,KAAKe,EAAQlB,KAC/CgB,EAAOhB,GAAOkB,EAAOlB,GAG3B,CACA,OAAOgB,CACT,EACI0S,EAAc,SAAqBxS,GACrC,IAAIyxB,EAAmBzxB,EAAOoN,SAC5BuD,EAAS8gB,EAAiB9gB,OAC1B8U,EAAOgM,EAAiBhM,KACxB7U,EAAO6gB,EAAiB7gB,KACxB8gB,EAASD,EAAiBC,OAC1B9c,EAAW6c,EAAiB7c,SAC5BC,EAAO4c,EAAiB5c,KACxB0L,EAAWkR,EAAiBlR,SAC5BoR,EAAOF,EAAiBE,KACtBtkB,EAAWrN,EAAOoN,SAASC,UAC1BA,GAAYuD,GAAQghB,IAEvBvkB,EADU,IAAIwkB,IAAIjhB,GACHvD,UAEjB,MAAO,CACLA,SAAUykB,UAAUV,UAAU/jB,IAC9BsD,OAAQA,EACR8U,KAAMA,EACN7U,KAAMA,EACN8gB,OAAQA,EACR9c,SAAUA,EACVC,KAAMA,EACN0L,SAAUA,EACVoR,KAAMA,EACN/nB,MAAO5J,EAAO2S,QAAQ/I,MACtB9K,IAAKkB,EAAO2S,QAAQ/I,OAAS5J,EAAO2S,QAAQ/I,MAAM9K,KAAO,UAE7D,EACIizB,EAAgB,SAAuB/xB,EAAQjE,GACjD,IAAIi2B,EAAY,GACZ5kB,EAAWoF,EAAYxS,GACvBiyB,GAAgB,EAChBC,EAAoB,WAA8B,EACtD,MAAO,CACL,YAAI9kB,GACF,OAAOA,CACT,EACA,iBAAI6kB,GACF,OAAOA,CACT,EACAE,sBAAuB,WACrBF,GAAgB,EAChBC,GACF,EACAE,OAAQ,SAAgBC,GACtBL,EAAUpsB,KAAKysB,GACf,IAAIC,EAAmB,WACrBllB,EAAWoF,EAAYxS,GACvBqyB,EAAS,CACPjlB,SAAUA,EACVkK,OAAQ,OAEZ,EAEA,OADAtX,EAAO4Y,iBAAiB,WAAY0Z,GAC7B,WACLtyB,EAAOuY,oBAAoB,WAAY+Z,GACvCN,EAAYA,EAAUv1B,QAAO,SAAUsK,GACrC,OAAOA,IAAOsrB,CAChB,GACF,CACF,EACA1d,SAAU,SAAkBkV,GAC1B,IAAI7kB,EAAOjF,UAAUrD,OAAS,QAAsB4K,IAAjBvH,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC9E6J,EAAQ5E,EAAK4E,MACb2oB,EAAevtB,EAAKzH,QACpBA,OAA2B+J,IAAjBirB,GAAqCA,EACjD,GAAkB,iBAAP1I,EACT7pB,EAAO2S,QAAQ6f,GAAG3I,OACb,CACLjgB,EAAQ/J,EAAS,CAAC,EAAG+J,EAAO,CAC1B9K,IAAKiS,KAAKC,MAAQ,KAGpB,IACMihB,GAAiB10B,EACnByC,EAAO2S,QAAQqC,aAAapL,EAAO,KAAMigB,GAEzC7pB,EAAO2S,QAAQsC,UAAUrL,EAAO,KAAMigB,EAE1C,CAAE,MAAO7rB,GACPgC,EAAOoN,SAAS7P,EAAU,UAAY,UAAUssB,EAClD,CACF,CACAzc,EAAWoF,EAAYxS,GACvBiyB,GAAgB,EAChB,IAAIQ,EAAa,IAAI1jB,SAAQ,SAAUkd,GACrC,OAAOiG,EAAoBjG,CAC7B,IAOA,OANA+F,EAAUzxB,SAAQ,SAAU8xB,GAC1B,OAAOA,EAAS,CACdjlB,SAAUA,EACVkK,OAAQ,QAEZ,IACOmb,CACT,EAEJ,EAIIC,EAAqB,WACvB,IAAIC,EAAc5yB,UAAUrD,OAAS,QAAsB4K,IAAjBvH,UAAU,GAAmBA,UAAU,GAAK,IAClF4lB,EAAcgN,EAAYpqB,QAAQ,KAClCqqB,EAAkB,CACpBvlB,SAAUsY,GAAe,EAAIgN,EAAYrP,OAAO,EAAGqC,GAAegN,EAClEhiB,OAAQgV,GAAe,EAAIgN,EAAYrP,OAAOqC,GAAe,IAE3D0B,EAAQ,EACRwL,EAAQ,CAACD,GACTE,EAAS,CAAC,MACd,MAAO,CACL,YAAI1lB,GACF,OAAOylB,EAAMxL,EACf,EACAzO,iBAAkB,SAA0BjV,EAAMoD,GAAK,EACvDwR,oBAAqB,SAA6B5U,EAAMoD,GAAK,EAC7D4L,QAAS,CACP,WAAI5N,GACF,OAAO8tB,CACT,EACA,SAAIxL,GACF,OAAOA,CACT,EACA,SAAIzd,GACF,OAAOkpB,EAAOzL,EAChB,EACApS,UAAW,SAAmBrL,EAAOpM,EAAGu1B,GACtC,IAAIC,EAAaD,EAAIzyB,MAAM,KACzB+M,EAAW2lB,EAAW,GACtBC,EAAcD,EAAW,GACzBriB,OAAyBrJ,IAAhB2rB,EAA4B,GAAKA,EAC5C5L,IACAwL,EAAMjtB,KAAK,CACTyH,SAAUA,EACVsD,OAAQA,EAAOjU,OAAS,IAAMiU,EAASA,IAEzCmiB,EAAOltB,KAAKgE,EACd,EACAoL,aAAc,SAAsBpL,EAAOpM,EAAGu1B,GAC5C,IAAIG,EAAcH,EAAIzyB,MAAM,KAC1B+M,EAAW6lB,EAAY,GACvBC,EAAeD,EAAY,GAC3BviB,OAA0BrJ,IAAjB6rB,EAA6B,GAAKA,EAC7CN,EAAMxL,GAAS,CACbha,SAAUA,EACVsD,OAAQA,GAEVmiB,EAAOzL,GAASzd,CAClB,EACA4oB,GAAI,SAAY3I,GACd,IAAIuJ,EAAW/L,EAAQwC,EACnBuJ,EAAW,GAAKA,EAAWN,EAAOp2B,OAAS,IAG/C2qB,EAAQ+L,EACV,GAGN,EAKIxB,IAAiC,oBAAXjjB,SAA0BA,OAAO1G,WAAY0G,OAAO1G,SAASpF,eAInFwwB,EAAgBtB,EAFXH,EAAYjjB,OAAS+jB,KAG1B,EAAWW,EAAc1e,SCrLzB,EAAWxY,OAAOC,QAAU,SAAU0D,GACxC,IAAK,IAAI5C,EAAI,EAAGA,EAAI6C,UAAUrD,OAAQQ,IAAK,CACzC,IAAI8C,EAASD,UAAU7C,GACvB,IAAK,IAAI4B,KAAOkB,EACV7D,OAAO4C,UAAUC,eAAeC,KAAKe,EAAQlB,KAC/CgB,EAAOhB,GAAOkB,EAAOlB,GAG3B,CACA,OAAOgB,CACT,EACA,SAAS0qC,EAAyB5rC,EAAK2G,GACrC,IAAIzF,EAAS,CAAC,EACd,IAAK,IAAI5C,KAAK0B,EACR2G,EAAKgD,QAAQrL,IAAM,GAClBf,OAAO4C,UAAUC,eAAeC,KAAKL,EAAK1B,KAC/C4C,EAAO5C,GAAK0B,EAAI1B,IAElB,OAAO4C,CACT,CACA,SAASmrB,EAAgBD,EAAUP,GACjC,KAAMO,aAAoBP,GACxB,MAAM,IAAIvuB,UAAU,oCAExB,CACA,SAASuuC,EAA2BC,EAAMzrC,GACxC,IAAKyrC,EACH,MAAM,IAAIviB,eAAe,6DAE3B,OAAOlpB,GAAyB,iBAATA,GAAqC,mBAATA,EAA8ByrC,EAAPzrC,CAC5E,CACA,SAAS0rC,EAAU/pC,EAAUC,GAC3B,GAA0B,mBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAI3E,UAAU,kEAAoE2E,GAE1FD,EAAS7B,UAAY5C,OAAOmG,OAAOzB,GAAcA,EAAW9B,UAAW,CACrEwD,YAAa,CACX6C,MAAOxE,EACP2pB,YAAY,EACZxkB,UAAU,EACVykB,cAAc,KAGd3pB,IAAY1E,OAAO0rC,eAAiB1rC,OAAO0rC,eAAejnC,EAAUC,GAAcD,EAAS4B,UAAY3B,EAC7G,CAWA,IAAI+pC,EAAqB,SAA4BjnC,EAAMknC,GACzD,IAAIC,GAAM,IAAAxsC,eAAcusC,GAExB,OADAC,EAAI3a,YAAcxsB,EACXmnC,CACT,EAIIv4B,EAAkBq4B,EAAmB,YAIrC5O,EAAW,SAAkBh3B,GAC/B,IAAImH,EAAWnH,EAAKmH,SACpB,OAAO,gBAAoBoG,EAAgB/T,SAAU,MAAM,SAAUyK,GACnE,OAAOA,EAAUkD,EAASlD,GAAW,gBAAoByJ,EAAkB,KAAMvG,EACnF,GACF,EACIuG,EAAmB,SAAU/R,GAE/B,SAAS+R,IACP,IAAIq4B,EAAOjqC,EACXmqB,EAAgB/qB,KAAMwS,GACtB,IAAK,IAAI3R,EAAOhB,UAAUrD,OAAQsE,EAAOhF,MAAM+E,GAAOE,EAAO,EAAGA,EAAOF,EAAME,IAC3ED,EAAKC,GAAQlB,UAAUkB,GAEzB,OAAe8pC,EAASjqC,EAAQ2pC,EAA2BvqC,KAAMS,EAAiB1B,KAAKgB,MAAMU,EAAkB,CAACT,MAAMgB,OAAOF,KAAiBF,EAAM8I,MAAQ,CAC1JX,QAASnI,EAAMkqC,aACfC,KAAM,CACJC,SAAU,OAEHT,EAA2B3pC,EAAnCiqC,EACL,CAyDA,OAtEAJ,EAAUj4B,EAAkB/R,GAc5B+R,EAAiB3T,UAAUisC,WAAa,WACtC,IAAIG,EAAiBjrC,KAAKsB,MAAMmR,QAGhC,MAAO,CACLgC,SAHWw2B,EAAex2B,SAI1BvH,SAHW+9B,EAAe/9B,SAK9B,EACAsF,EAAiB3T,UAAUqsC,kBAAoB,SAA2B/jC,EAAOgkC,GAC/E,IAAIC,EAAWjkC,GAMb,MAAMA,GAJNkkC,EADgBrrC,KAAKsB,MAAMmR,QAAQgC,UACzBtN,EAAM0rB,IAAK,CACnBx1B,SAAS,GAKf,EACAmV,EAAiB3T,UAAUqL,mBAAqB,SAA4BC,EAAWJ,GACjFA,EAAUhB,QAAQmE,WAAalN,KAAK0J,MAAMX,QAAQmE,UACpDlN,KAAKsB,MAAMmR,QAAQwf,uBAEvB,EACAzf,EAAiB3T,UAAUmL,kBAAoB,WAC7C,IAAIe,EAAS/K,KACT+qC,EAAO/qC,KAAK0J,MAAMqhC,KACpBt4B,EAAUzS,KAAKsB,MAAMmR,QACvBA,EAAQwf,wBACR8Y,EAAKC,SAAWv4B,EAAQyf,QAAO,WAC7BrjB,QAAQC,UAAUykB,MAAK,WAErBlR,uBAAsB,WACftX,EAAOugC,WACVvgC,EAAOD,UAAS,WACd,MAAO,CACL/B,QAASgC,EAAO+/B,aAEpB,GAEJ,GACF,GACF,GACF,EACAt4B,EAAiB3T,UAAUwL,qBAAuB,WAChD,IAAI0gC,EAAO/qC,KAAK0J,MAAMqhC,KACtB/qC,KAAKsrC,WAAY,EACjBP,EAAKC,UACP,EACAx4B,EAAiB3T,UAAU6D,OAAS,WAClC,IAAIqG,EAAU/I,KAAK0J,MAAMX,QACvBkD,EAAWjM,KAAKsB,MAAM2K,SACxB,OAAO,gBAAoBoG,EAAgBhU,SAAU,CACnD6G,MAAO6D,GACc,mBAAbkD,EAA0BA,EAASlD,GAAWkD,GAAY,KACtE,EACOuG,CACT,CAxEuB,CAwErB,aAIFA,EAAiB3P,aAAe,CAC9B4P,QAAS0gB,GAGX,IAAIoY,EAAiB,SAAwBxP,GAC3C,IAAInrB,EAAMmrB,EAAMnrB,IACd3E,EAAW8vB,EAAM9vB,SACfwZ,EAAc7U,EAAIvI,QAAQ,KAE1B8E,OAAW,EACXsD,EAAS,GAQb,OAVmBgV,GAAe,GAKhCtY,EAAWyD,EAAI8f,UAAU,EAAGjL,GAC5BhV,EAASG,EAAI8f,UAAUjL,IAEvBtY,EAAWyD,EAEN,gBAAoByB,EAAgBhU,SAAU,CACnD6G,MAAO,CACLgI,SAAU,CACRC,SAAUA,EACVsD,OAAQA,EACR8U,KAZK,IAcP9Q,SAAU,WACR,MAAM,IAAIpN,MAAM,yCAClB,IAED4E,EACL,EAGIu/B,EAAcd,EAAmB,OAAQ,CAC3Ce,QAAS,IACTC,SAAU,IACVj3B,SAAU0e,EAAc1e,WAKtBk3B,EAAS,SAAgBrqC,GAC3B,OAAO,gBAAoBkqC,EAAYltC,SAAU,MAAM,SAAUstC,GAC/D,OAAO,gBAAoB9P,EAAU,MAAM,SAAU+P,GACnD,OAAO,gBAAoBC,EAAY,EAAS,CAAC,EAAGF,EAAaC,EAAiBvqC,GACpF,GACF,GACF,EACIwqC,EAAa,SAAUC,GAEzB,SAASD,IAEP,OADA/gB,EAAgB/qB,KAAM8rC,GACfvB,EAA2BvqC,KAAM+rC,EAAqBhsC,MAAMC,KAAMH,WAC3E,CAuEA,OA3EA4qC,EAAUqB,EAAYC,GAKtBD,EAAWjtC,UAAU6D,OAAS,WAC5B,IAAIspC,EAAShsC,KAAKsB,MAChB4L,EAAW8+B,EAAO9+B,SAClB++B,EAAaD,EAAOv3B,SACpBi3B,EAAWM,EAAON,SAClBQ,EAAUF,EAAOE,QACjBjgC,EAAW+/B,EAAO//B,SAElBkgC,GADUH,EAAOP,QACEO,EAAOv+B,WAC1BA,OAAiCrG,IAArB+kC,EAAiC,MAAQA,EACrDC,EAAW9B,EAAyB0B,EAAQ,CAAC,WAAY,WAAY,WAAY,UAAW,WAAY,UAAW,cACjHpE,EAAS,WAAe/Y,QAAQ5iB,GAAU8a,QAAO,SAAUzM,EAAOhO,GACpE,IAAIs7B,EAASyE,GAAYX,EAAZW,CAAsB//B,GACnC,OAAOgO,EAAMtZ,OAAO4mC,EACtB,GAAG,IACCz6B,EAAWD,EAASC,SACpBkc,EAAQvB,EAAK8f,EAAQz6B,GACzB,GAAIkc,EAAO,CACT,IAAIrc,EAASqc,EAAMrc,OACjB6lB,EAAMxJ,EAAMwJ,IACZwV,EAAQhf,EAAMgf,MACdpgC,EAAUohB,EAAMgf,MAAMnjC,MAIxBwmC,EAAWrD,EAAMhpC,QAAUqsC,EAAWrD,EAAM36B,KAAKrQ,QAAQ,MAAO,IAChE,IAAIiE,EAAQ,EAAS,CAAC,EAAG0L,EAAQ,CAC/B6lB,IAAKA,EACL3lB,SAAUA,EACVuH,SAAU,SAAkBkV,EAAI9tB,GAC9B,OAAOowC,EAAWn9B,EAAQ6a,EAAIkJ,GAAMh3B,EACtC,IAEEywC,EAAQ,eAAmBrkC,EAAS3G,EAAO2G,EAAQ3G,MAAM2K,SAAW,gBAAoB0/B,EAAQ,CAClGz+B,SAAUA,EACVg/B,QAASA,GACRjkC,EAAQ3G,MAAM2K,eAAY7E,GAGzBmlC,EAAeL,EAAUM,EAAe/+B,EAExCg/B,EAAeP,EAAU,EAAS,CACpCrZ,IAAKA,EACL3lB,SAAUA,EACVO,UAAWA,GACV2+B,GAAYA,EACf,OAAO,gBAAoBZ,EAAYntC,SAAU,CAC/C6G,MAAO,CACLumC,QAAS5Y,EACT6Y,SAAUA,EACVj3B,SAAUnT,EAAMmT,WAEjB,gBAAoB83B,EAAcE,EAAcH,GACrD,CAcE,OAAO,IAEX,EACOR,CACT,CA7EiB,CA6Ef,iBACFA,EAAWjpC,aAAe,CACxBqpC,SAAS,GAEX,IAAIQ,EAAehC,EAAmB,SAClC8B,EAAe,SAAsBG,GACvC,IAAI9Z,EAAM8Z,EAAM9Z,IACd3lB,EAAWy/B,EAAMz/B,SACjBO,EAAYk/B,EAAMl/B,UAClB2+B,EAAW9B,EAAyBqC,EAAO,CAAC,MAAO,WAAY,cACjE,OAAO,gBAAoBD,EAAapuC,SAAU,MAAM,SAAUsuC,GAChE,OAAO,gBAAoBC,EAAkB,EAAS,CAAC,EAAGT,EAAU,CAClE3+B,UAAWA,EACXm/B,aAAcA,EACd/Z,IAAKA,EACL3lB,SAAUA,IAEd,GACF,EAGI4/B,GAAgB,EAChBC,EAAoB,EACpBF,EAAmB,SAAUG,GAE/B,SAASH,IACP,IAAII,EAAQxhC,EACZsf,EAAgB/qB,KAAM6sC,GACtB,IAAK,IAAIvoB,EAAQzkB,UAAUrD,OAAQsE,EAAOhF,MAAMwoB,GAAQE,EAAQ,EAAGA,EAAQF,EAAOE,IAChF1jB,EAAK0jB,GAAS3kB,UAAU2kB,GAE1B,OAAgByoB,EAAUxhC,EAAS8+B,EAA2BvqC,KAAMgtC,EAAkBjuC,KAAKgB,MAAMitC,EAAmB,CAAChtC,MAAMgB,OAAOF,KAAkB2K,EAAO/B,MAAQ,CAAC,EAAG+B,EAAOmhC,aAAe,SAAU1sC,IAChMuL,EAAO/B,MAAMwjC,aAAehtC,GAC/BA,EAAKitC,OAET,EAAY5C,EAA2B9+B,EAApCwhC,EACL,CA2EA,OAvFAxC,EAAUoC,EAAkBG,GAa5BH,EAAiB/iC,yBAA2B,SAAkC2zB,EAAW1zB,GAEvF,GAD+B,MAAjBA,EAAU8oB,IAEtB,OAAO,EAAS,CACdqa,aAAa,GACZzP,GAEH,IAAI2P,EAAe3P,EAAU5K,MAAQ9oB,EAAU8oB,IAC3Cwa,EAAkBtjC,EAAUmD,SAASC,WAAaswB,EAAUvwB,SAASC,UAAYswB,EAAUvwB,SAASC,WAAaswB,EAAU5K,IAC/H,OAAO,EAAS,CACdqa,YAAaE,GAAgBC,GAC5B5P,EAEP,EACAoP,EAAiBhuC,UAAUmL,kBAAoB,WAC7C+iC,IACA/sC,KAAKmtC,OACP,EACAN,EAAiBhuC,UAAUwL,qBAAuB,WAEtB,MAD1B0iC,IAEED,GAAgB,EAEpB,EACAD,EAAiBhuC,UAAUqL,mBAAqB,SAA4BC,EAAWJ,GACjFI,EAAU+C,WAAalN,KAAKsB,MAAM4L,UAAYlN,KAAK0J,MAAMwjC,aAC3DltC,KAAKmtC,OAET,EACAN,EAAiBhuC,UAAUsuC,MAAQ,WAOjC,IAAIP,EAAe5sC,KAAKsB,MAAMsrC,aAC1BA,EACFA,EAAa5sC,KAAKE,MAEd4sC,EACFA,GAAgB,EACP9sC,KAAKE,OAGTF,KAAKE,KAAKiI,SAASJ,SAASulC,gBAC/BttC,KAAKE,KAAKitC,QAIlB,EACAN,EAAiBhuC,UAAU6D,OAAS,WAClC,IAAI6qC,EAASvtC,KACTwtC,EAAUxtC,KAAKsB,MAEjBwa,GADW0xB,EAAQvhC,SACXuhC,EAAQ1xB,OAEhB2xB,GADeD,EAAQZ,aACHY,EAAQ//B,WAC5BigC,OAA6BtmC,IAAtBqmC,EAAkC,MAAQA,EAGjDrB,GAFMoB,EAAQ3a,IACH2a,EAAQtgC,SACRo9B,EAAyBkD,EAAS,CAAC,WAAY,QAAS,eAAgB,YAAa,MAAO,cACzG,OAAO,gBAAoBE,EAAM,EAAS,CACxC5xB,MAAO,EAAS,CACd6xB,QAAS,QACR7xB,GACH8xB,SAAU,KACVxoC,IAAK,SAAarH,GAChB,OAAOwvC,EAAOrtC,KAAOnC,CACvB,GACCquC,GAAW,gBAAoBM,EAAaruC,SAAU,CACvD6G,MAAOlF,KAAK4sC,cACX5sC,KAAKsB,MAAM2K,UAChB,EACO4gC,CACT,CAzFuB,CAyFrB,cACF,IAAAhgC,UAASggC,GACT,IAAIzmC,EAAI,WAAc,EAGlBynC,EAAa,kBACS,IAAfA,IACTA,EAAa,SAAoB5X,GAC/B,OAAOA,CACT,GAEF,IAAI6X,EAAOD,GAAW,SAAUE,EAAO3oC,GACrC,IAAI4yB,EAAW+V,EAAM/V,SACnB12B,EAAQgpC,EAAyByD,EAAO,CAAC,aAC3C,OAAO,gBAAoBvC,EAAYltC,SAAU,MAAM,SAAU0vC,GAChDA,EAAMtC,SAArB,IACED,EAAUuC,EAAMvC,QAClB,OAAO,gBAAoB3P,EAAU,MAAM,SAAUmS,GACnD,IAAI/gC,EAAW+gC,EAAM/gC,SACnBuH,EAAWw5B,EAAMx5B,SACfkV,EAAKroB,EAAMqoB,GACbjgB,EAAQpI,EAAMoI,MACdrM,EAAUiE,EAAMjE,QAChB6wC,EAAkB5sC,EAAM6sC,SACxBA,OAA+B/mC,IAApB8mC,EAAgC9nC,EAAI8nC,EAC/CE,EAAc9D,EAAyBhpC,EAAO,CAAC,KAAM,QAAS,UAAW,aACvEoP,EAAO5B,EAAQ6a,EAAI8hB,GACnB4C,EAAczc,UAAUlhB,GACxB49B,EAAYphC,EAASC,WAAakhC,EAClCE,EAAqBtZ,EAAW/nB,EAASC,SAAUkhC,GACvD,OAAO,gBAAoB,IAAK,EAAS,CACvCjpC,IAAKA,GAAO4yB,EACZ,eAAgBsW,EAAY,YAASlnC,GACpCgnC,EAAaD,EAAS,CACvBG,UAAWA,EACXC,mBAAoBA,EACpB79B,KAAMA,EACNxD,SAAUA,IACR,CACFwD,KAAMA,EACN+F,QAAS,SAAiB9K,GAExB,GADIyiC,EAAY33B,SAAS23B,EAAY33B,QAAQ9K,GACzC6iC,GAAe7iC,GAAQ,CACzBA,EAAMq0B,iBACN,IAAIyO,EAAgBpxC,EACpB,GAAuB,kBAAZA,GAAyBixC,EAAW,CAC7C,IAAII,EAAkB,EAAS,CAAC,EAAGxhC,EAASxD,OAE1CilC,GADMD,EAAgB9vC,IACV0rC,EAAyBoE,EAAiB,CAAC,SFrL1BE,EEsLA,EAAS,CAAC,EAAGllC,GFtLPmlC,EEsLeF,EAApDF,GFrLRK,EAAW7yC,OAAOoJ,KAAKupC,IACXpyC,SAAWP,OAAOoJ,KAAKwpC,GAAMryC,QAAUsyC,EAASC,OAAM,SAAUnwC,GAC9E,OAAOiwC,EAAK/vC,eAAeF,IAAQgwC,EAAKhwC,KAASiwC,EAAKjwC,EACxD,GEmLU,CACA6V,EAAS/D,EAAM,CACbhH,MAAOA,EACPrM,QAASoxC,GAEb,CF5LW,IAAwBG,EAAMC,EAC7CC,CE4LE,IAEJ,GACF,GACF,IAKA,SAASE,EAAgBnc,GACvB7yB,KAAK6yB,IAAMA,CACb,CANAib,EAAK7d,YAAc,OAOnB,IAAImb,EAAa,SAAoB5nB,GACnC,OAAOA,aAAawrB,CACtB,EACIC,EAAa,SAAoBtlB,GACnC,MAAM,IAAIqlB,EAAgBrlB,EAC5B,EACIulB,EAAe,SAAUC,GAE3B,SAASD,IAEP,OADAnkB,EAAgB/qB,KAAMkvC,GACf3E,EAA2BvqC,KAAMmvC,EAAkBpvC,MAAMC,KAAMH,WACxE,CAoCA,OAxCA4qC,EAAUyE,EAAcC,GAOxBD,EAAarwC,UAAUmL,kBAAoB,WACzC,IAAIolC,EAAUpvC,KAAKsB,MACjBmT,EAAW26B,EAAQ36B,SACnBkV,EAAKylB,EAAQzlB,GAEb0lB,GADOD,EAAQhqB,KACGgqB,EAAQ/xC,SAC1BA,OAA8B+J,IAApBioC,GAAuCA,EACjD3lC,EAAQ0lC,EAAQ1lC,MAEhB+hC,GADU2D,EAAQE,QACRF,EAAQ3D,SAClBnqC,EAAQgpC,EAAyB8E,EAAS,CAAC,WAAY,KAAM,OAAQ,UAAW,QAAS,UAAW,YACtGvgC,QAAQC,UAAUykB,MAAK,WACrB,IAAIgc,EAAazgC,EAAQ6a,EAAI8hB,GAC7Bh3B,EAASg1B,EAAa8F,EAAYjuC,GAAQ,CACxCjE,QAASA,EACTqM,MAAOA,GAEX,GACF,EACAwlC,EAAarwC,UAAU6D,OAAS,WAC9B,IAAI8sC,EAAUxvC,KAAKsB,MAEjBqoB,GADW6lB,EAAQ/6B,SACd+6B,EAAQ7lB,IAIb2lB,GAHOE,EAAQpqB,KACLoqB,EAAQnyC,QACVmyC,EAAQ9lC,MACN8lC,EAAQF,SAClB7D,EAAU+D,EAAQ/D,QAClBnqC,EAAQgpC,EAAyBkF,EAAS,CAAC,WAAY,KAAM,OAAQ,UAAW,QAAS,UAAW,YAClGD,EAAazgC,EAAQ6a,EAAI8hB,GAE7B,OADK6D,GAASL,EAAWxF,EAAa8F,EAAYjuC,IAC3C,IACT,EACO4tC,CACT,CA1CmB,CA0CjB,aACEO,EAAW,SAAkBnuC,GAC/B,OAAO,gBAAoBkqC,EAAYltC,SAAU,MAAM,SAAUoxC,GAC/D,IAAIjE,EAAUiE,EAAMjE,QACpB,OAAO,gBAAoB3P,EAAU,MAAM,SAAU+P,GACnD,OAAO,gBAAoBqD,EAAc,EAAS,CAAC,EAAGrD,EAAiB,CACrEJ,QAASA,GACRnqC,GACL,GACF,GACF,EAIIquC,EAAQ,SAAeC,GACzB,IAAIliC,EAAOkiC,EAAMliC,KACfzB,EAAW2jC,EAAM3jC,SACnB,OAAO,gBAAoBu/B,EAAYltC,SAAU,MAAM,SAAUuxC,GAC/D,IAAIpE,EAAUoE,EAAMpE,QACpB,OAAO,gBAAoB3P,EAAU,MAAM,SAAUgU,GACnD,IAAIr7B,EAAWq7B,EAAOr7B,SACpBvH,EAAW4iC,EAAO5iC,SAChB6iC,EAAejhC,EAAQpB,EAAM+9B,GAC7B59B,EAASwb,EAAM0mB,EAAc7iC,EAASC,UAC1C,OAAOlB,EAAS,CACdwI,SAAUA,EACVvH,SAAUA,EACVmc,MAAOxb,EAAS,EAAS,CAAC,EAAGA,EAAOb,OAAQ,CAC1C6lB,IAAKhlB,EAAOglB,IACZnlB,KAAMA,IACH,MAET,GACF,GACF,EAKI0mB,GAAc,WAChB,IAAIrrB,GAAU,IAAAiU,YAAW3K,GACzB,IAAKtJ,EACH,MAAM,IAAI1B,MAAM,8JAElB,OAAO0B,EAAQmE,QACjB,EACI8iC,GAAc,WAChB,IAAIjnC,GAAU,IAAAiU,YAAWwuB,GACzB,IAAKziC,EACH,MAAM,IAAI1B,MAAM,0JAElB,OAAO0B,EAAQ0L,QACjB,EACIw7B,GAAY,WACd,IAAIlnC,GAAU,IAAAiU,YAAWwuB,GACzB,IAAKziC,EACH,MAAM,IAAI1B,MAAM,4JAElB,IAAI6F,EAAWknB,KACX8b,EAAU7mB,EAAMtgB,EAAQ2iC,SAAUx+B,EAASC,UAC/C,OAAO+iC,EAAUA,EAAQljC,OAAS,IACpC,EACImjC,GAAW,SAAkBziC,GAC/B,IAAKA,EACH,MAAM,IAAIrG,MAAM,4EAElB,IAAI0B,GAAU,IAAAiU,YAAWwuB,GACzB,IAAKziC,EACH,MAAM,IAAI1B,MAAM,2JAElB,IAAI6F,EAAWknB,KACX2b,EAAejhC,EAAQpB,EAAM3E,EAAQ0iC,SACrC59B,EAASwb,EAAM0mB,EAAc7iC,EAASC,UAC1C,OAAOU,EAAS,EAAS,CAAC,EAAGA,EAAOb,OAAQ,CAC1C6lB,IAAKhlB,EAAOglB,IACZnlB,KAAMA,IACH,IACP,EAII0iC,GAAe,SAAsBzgC,GACvC,OAAOA,EAAItS,QAAQ,eAAgB,GACrC,EACIgvC,GAAc,SAASA,EAAYX,GACrC,OAAO,SAAUzjC,GACf,IAAKA,EACH,OAAO,KAET,GAAIA,EAAQhG,OAAS,YAAkBgG,EAAQ3G,MAAM2K,SACnD,OAAO,WAAe7P,IAAI6L,EAAQ3G,MAAM2K,SAAUogC,EAAYX,IFnZ7C,IAA0BtmB,EAAMuE,EACjDptB,EEuZF,GAHE0L,EAAQ3G,MAAMoM,MAAQzF,EAAQ3G,MAAMjC,SAAW4I,EAAQhG,OAASwtC,GAAuN,KAAU,GAChSxnC,EAAQhG,OAASwtC,GAAcxnC,EAAQ3G,MAAM8jB,MAASnd,EAAQ3G,MAAMqoB,IAAqN,KAAU,GACnS1hB,EAAQhG,OAASwtC,IFvZyBrqB,EEuZKnd,EAAQ3G,MAAM8jB,KFvZbuE,EEuZmB1hB,EAAQ3G,MAAMqoB,GFtZlFptB,EAAS,SAAgBitC,GAC3B,OAAOS,EAAUT,EACnB,EACiBxB,EAAW5iB,GAAM7oB,OAAOA,GAAQ8oB,OAAO5oB,KAAK,OAC9CurC,EAAWre,GAAIptB,OAAOA,GAAQ8oB,OAAO5oB,KAAK,OEkZyQ,KAAU,GACtUwL,EAAQ3G,MAAMjC,QAChB,MAAO,CACL6F,MAAO+C,EACP5I,SAAS,GAGb,IAAIgxC,EAAcpoC,EAAQhG,OAASwtC,EAAWxnC,EAAQ3G,MAAM8jB,KAAOnd,EAAQ3G,MAAMoM,KAC7EA,EAAuB,MAAhB2iC,EAAsB3E,EAAW0E,GAAa1E,GAAY,IAAM0E,GAAaC,GACxF,MAAO,CACLnrC,MAAO+C,EACP5I,QAAS4I,EAAQ3G,MAAMjC,QACvBqO,KAAMzF,EAAQ3G,MAAM2K,SAAWmkC,GAAa1iC,GAAQ,KAAOA,EAE/D,CACF,EACI8gC,GAAiB,SAAwB7iC,GAC3C,OAAQA,EAAM6U,kBAAqC,IAAjB7U,EAAM8U,UAAkB9U,EAAM+U,SAAW/U,EAAMgV,QAAUhV,EAAMiV,SAAWjV,EAAMkV,SACpH,qTC9kBA,UAlByB/b,IAAmB,IAAlB,SAAEoI,GAAUpI,EACpC,MAAMsI,EAAgB8P,EAAAA,GAAOozB,aAAapjC,EAASC,UACnD,OAAKC,EAGEW,EAAAA,cAAoBwiC,EAAAA,uWAAoB1sC,CAAA,CAC7CqJ,WACAE,iBACGA,EAAcC,OALV,IAMP,+DCfJ,IAAAmjC,EAAAtyC,EAAA,MACAsB,EAAAtB,EAAA,eACAA,EAAA,oBACAsB,EAAAtB,EAAA,eACAsB,EAAAtB,EAAA,eACAA,EAAA,iCASesyC,EAAA3mB,eAAAA,EAAAA,GAAAA,qCCZf,IAAIrqB,EAAyBtB,EAAQ,MAEvBA,EAAQ,MAEKsB,EAAuBtB,EAAQ,6BCL1DR,EAAOC,SAAW,EAAQ,KAAR,EAAoB,WACpC,OAA+E,GAAxE1B,OAAOgD,eAAe,CAAC,EAAG,IAAK,CAAEE,IAAK,WAAc,OAAO,CAAG,IAAKtB,CAC5E,0BCHA,IAAI4yC,EAAmB,EAAQ,IAI/B/yC,EAAOC,QAHP,SAA4BC,GAC1B,GAAI9B,MAAMC,QAAQ6B,GAAI,OAAO6yC,EAAiB7yC,EAChD,EACqCF,EAAOC,QAAQK,YAAa,EAAMN,EAAOC,QAAiB,QAAID,EAAOC,8BCJ1G,kBACE,SAAS+yC,EAAG7yC,EAAGoJ,EAAG3G,GAChB,OAAOzC,EAAEkB,KAAKgB,MAAMlC,EAAEqtB,KAAMrrB,UAC9B,CACA,SAAS8wC,EAAG9yC,EAAGoJ,EAAG3G,GAChB,IAAKzC,EAAG,MAAMwJ,QACd,GAAI,EAAIxH,UAAUrD,OAAQ,CACxB,IAAI6G,EAAIvH,MAAM+C,UAAU1B,MAAM4B,KAAKc,UAAW,GAC9C,OAAO,WACL,IAAIS,EAAIxE,MAAM+C,UAAU1B,MAAM4B,KAAKc,WAEnC,OADA/D,MAAM+C,UAAU+xC,QAAQ7wC,MAAMO,EAAG+C,GAC1BxF,EAAEkC,MAAMkH,EAAG3G,EACpB,CACF,CACA,OAAO,WACL,OAAOzC,EAAEkC,MAAMkH,EAAGpH,UACpB,CACF,CACA,SAAS+G,EAAE/I,EAAGoJ,EAAG3G,GAEf,OADAsG,EAAIiqC,SAAShyC,UAAUqsB,OAAS,GAAK2lB,SAAShyC,UAAUqsB,KAAKkC,WAAW/kB,QAAQ,eAAiBqoC,EAAKC,GAC7F5wC,MAAM,KAAMF,UACvB,CACA,IAAIi3B,EAAIjmB,KAAKC,KAAO,WAClB,OAAQ,IAAID,IACd,EACA,SAASigC,EAAGjzC,EAAGoJ,GACbjH,KAAKnC,EAAIA,EACTmC,KAAKwjB,EAAIvc,GAAKpJ,EACdmC,KAAKM,EAAIN,KAAKwjB,EAAEzb,QAClB,CACA,IAAIgpC,IAAOtiC,OAAOuiC,SAClB,SAAS/gC,EAAEpS,EAAGoJ,EAAG3G,EAAG+C,GAElB,GADA4D,EAAIpJ,EAAEyC,EAAEqC,cAAcsE,GAClB3G,EAAG,IAAK,IAAIxC,KAAKwC,EAAGA,EAAExB,eAAehB,KAAO,SAAWA,EAAImJ,EAAE6U,MAAMm1B,QAAU3wC,EAAExC,GAAKmJ,EAAEoH,aAAavQ,EAAGwC,EAAExC,KAE5G,OADAuF,GAAK4D,EAAEyY,YAAY7hB,EAAEyC,EAAE67B,eAAe94B,IAC/B4D,CACT,CACA,SAASoxB,EAAEx6B,EAAGoJ,EAAG3G,IACfzC,EAAIA,EAAEyC,EAAE4wC,qBAAqBjqC,GAAG,MAC1BpJ,EAAIkK,SAASoQ,iBACnBta,EAAEu+B,aAAa97B,EAAGzC,EAAEszC,UACtB,CACA,SAAS5jB,EAAE1vB,GACTA,EAAEuzC,YAAcvzC,EAAEuzC,WAAWzxB,YAAY9hB,EAC3C,CACA,SAASwzC,EAAExzC,EAAGoJ,EAAG3G,GACf2G,EAAIA,GAAK,GACT3G,EAAIA,GAAK,GACT,IAAK,IAAI+C,EAAIxF,EAAEsD,UAAUf,MAAM,OAAQtC,EAAI,EAAGA,EAAImJ,EAAEzK,OAAQsB,GAAK,EAAG,CAClE,IAAK,IAAIoJ,GAAI,EAAIma,EAAI,EAAGA,EAAIhe,EAAE7G,OAAQ6kB,GAAK,EAAG,GAAIpa,EAAEnJ,KAAOuF,EAAEge,GAAI,CAC/Dna,GAAI,EACJ,KACF,CACAA,GAAK7D,EAAEqC,KAAKuB,EAAEnJ,GAChB,CAEA,IADAmJ,EAAI,GACCnJ,EAAI,EAAGA,EAAIuF,EAAE7G,OAAQsB,GAAK,EAAG,CAEhC,IADAoJ,GAAI,EACCma,EAAI,EAAGA,EAAI/gB,EAAE9D,OAAQ6kB,GAAK,EAAG,GAAIhe,EAAEvF,KAAOwC,EAAE+gB,GAAI,CACnDna,GAAI,EACJ,KACF,CACAA,GAAKD,EAAEvB,KAAKrC,EAAEvF,GAChB,CACAD,EAAEsD,UAAY8F,EAAExK,KAAK,KAAKY,QAAQ,OAAQ,KAAKA,QAAQ,YAAa,GACtE,CACA,SAAS2T,EAAEnT,EAAGoJ,GACZ,IAAK,IAAI3G,EAAIzC,EAAEsD,UAAUf,MAAM,OAAQiD,EAAI,EAAGvF,EAAIwC,EAAE9D,OAAQ6G,EAAIvF,EAAGuF,IAAK,GAAI/C,EAAE+C,IAAM4D,EAAG,OAAO,EAC9F,OAAO,CACT,CAIA,SAASyuB,EAAE73B,EAAGoJ,EAAG3G,GACf,SAAS+C,IACP7F,GAAKM,GAAKoJ,IAAM1J,EAAE6jB,GAAI7jB,EAAI,KAC5B,CACAyJ,EAAIgJ,EAAEpS,EAAG,OAAQ,CACf+rB,IAAK,aACLlZ,KAAMzJ,EACNqxB,MAAO,QAET,IAAIx6B,GAAI,EACNoJ,GAAI,EACJma,EAAI,KACJ7jB,EAAI8C,GAAK,KACXywC,GAAM9pC,EAAE03B,OAAS,WACf7gC,GAAI,EACJuF,GACF,EAAG4D,EAAE23B,QAAU,WACb9gC,GAAI,EACJujB,EAAIha,MAAM,6BACVhE,GACF,GAAK0I,YAAW,WACdjO,GAAI,EACJuF,GACF,GAAG,GACHg1B,EAAEx6B,EAAG,OAAQoJ,EACf,CACA,SAASqqC,EAAEzzC,EAAGoJ,EAAG3G,EAAG+C,GAClB,IAAIvF,EAAID,EAAEyC,EAAE4wC,qBAAqB,QAAQ,GACzC,GAAIpzC,EAAG,CACL,IAAIoJ,EAAI+I,EAAEpS,EAAG,SAAU,CACnBi4B,IAAK7uB,IAEPoa,GAAI,EAQN,OAPAna,EAAEy3B,OAASz3B,EAAEqqC,mBAAqB,WAChClwB,GAAKrhB,KAAKwxC,YAAc,UAAYxxC,KAAKwxC,YAAc,YAAcxxC,KAAKwxC,aAAenwB,GAAI,EAAI/gB,GAAKA,EAAE,MAAO4G,EAAEy3B,OAASz3B,EAAEqqC,mBAAqB,KAAM,QAAUrqC,EAAEkqC,WAAWhT,SAAWtgC,EAAE6hB,YAAYzY,GACzM,EACApJ,EAAE4hB,YAAYxY,GACd6E,YAAW,WACTsV,IAAMA,GAAI,EAAI/gB,GAAKA,EAAE+G,MAAM,wBAC7B,GAAGhE,GAAK,KACD6D,CACT,CACA,OAAO,IACT,CAEA,SAAS0wB,IACP53B,KAAKnC,EAAI,EACTmC,KAAKM,EAAI,IACX,CACA,SAAS21B,EAAEp4B,GAET,OADAA,EAAEA,IACK,WACLA,EAAEA,IACF4zC,EAAE5zC,EACJ,CACF,CACA,SAAS6zC,EAAE7zC,EAAGoJ,GACZpJ,EAAEyC,EAAI2G,EACNwqC,EAAE5zC,EACJ,CACA,SAAS4zC,EAAE5zC,GACT,GAAKA,EAAEA,GAAKA,EAAEyC,IAAMzC,EAAEyC,IAAKzC,EAAEyC,EAAI,KACnC,CAEA,SAAS42B,EAAEr5B,GACTmC,KAAKnC,EAAIA,GAAK,GAChB,CAKA,SAASu5B,EAAEv5B,EAAGoJ,GACZjH,KAAKM,EAAIzC,EACTmC,KAAKkH,EAAI,EACTlH,KAAKnC,EAAI,IACT,IAAIyC,GAAK2G,GAAK,MAAMoiB,MAAM,qBAC1B/oB,IAAMN,KAAKnC,EAAIyC,EAAE,GAAIN,KAAKkH,EAAIyqC,SAASrxC,EAAE,GAAI,IAC/C,CAIA,SAASi1B,EAAE13B,GACT,IAAIoJ,EAAI,GACRpJ,EAAIA,EAAEuC,MAAM,QACZ,IAAK,IAAIE,EAAI,EAAGA,EAAIzC,EAAErB,OAAQ8D,IAAK,CACjC,IAAI+C,EAAIxF,EAAEyC,GAAGjD,QAAQ,QAAS,KAC7B,GAAKgG,EAAEgF,QAAQ,MAAQ,MAAMnL,KAAKmG,GAAK4D,EAAEvB,KAAK,IAAMrC,EAAI,KAAO4D,EAAEvB,KAAKrC,EACzE,CACA,OAAO4D,EAAExK,KAAK,IAChB,CACA,SAASo7B,EAAEh6B,GACT,OAAOA,EAAEA,EAAIA,EAAEqJ,CACjB,CACA,SAAS0qC,EAAE/zC,GACT,IAAIoJ,EAAI,SAER,MADA,MAAQpJ,EAAEA,EAAIoJ,EAAI,UAAY,MAAQpJ,EAAEA,IAAMoJ,EAAI,UAC3CA,CACT,CACA,SAAS4qC,EAAGh0C,GACV,IAAIoJ,EAAI,EACN3G,EAAI,IACJ+C,EAAI,KAEN,OADAxF,KAAOwF,EAAIxF,EAAEwrB,MAAM,8BAAgChmB,EAAE,KAAO/C,EAAI+C,EAAE,GAAG+f,OAAO,EAAG,GAAGzmB,gBAAiB0G,EAAIxF,EAAEwrB,MAAM,4BAA8BhmB,EAAE,KAAO,QAAQnG,KAAKmG,EAAE,IAAM4D,EAAI,EAAI,UAAU/J,KAAKmG,EAAE,MAAQ4D,EAAI0qC,SAAStuC,EAAE,GAAG+f,OAAO,EAAG,GAAI,OACrO9iB,EAAI2G,CACb,CAEA,SAAS6qC,EAAGj0C,EAAGoJ,GACbjH,KAAKM,EAAIzC,EACTmC,KAAKkH,EAAIrJ,EAAE2lB,EAAEzb,SAASoQ,gBACtBnY,KAAKq5B,EAAIpyB,EACTjH,KAAKnC,EAAI,IAAIq5B,EAAE,KACfl3B,KAAK+jC,GAAI,IAAO98B,EAAE8qC,OAClB/xC,KAAKqhB,GAAI,IAAOpa,EAAE9G,OACpB,CAKA,SAAS6xC,EAAEn0C,GACT,GAAIA,EAAEwjB,EAAG,CACP,IAAIpa,EAAI+J,EAAEnT,EAAEqJ,EAAGrJ,EAAEA,EAAEyC,EAAE,KAAM,WACzBA,EAAI,GACJ+C,EAAI,CAACxF,EAAEA,EAAEyC,EAAE,KAAM,YACnB2G,GAAK3G,EAAEoF,KAAK7H,EAAEA,EAAEyC,EAAE,KAAM,aACxB+wC,EAAExzC,EAAEqJ,EAAG5G,EAAG+C,EACZ,CACAm1B,EAAE36B,EAAG,WACP,CACA,SAAS26B,EAAE36B,EAAGoJ,EAAG3G,GACXzC,EAAEkmC,GAAKlmC,EAAEw7B,EAAEpyB,KAAQ3G,EAAGzC,EAAEw7B,EAAEpyB,GAAG3G,EAAEA,EAAGu3B,EAAEv3B,IAASzC,EAAEw7B,EAAEpyB,KACvD,CAEA,SAASgrC,IACPjyC,KAAKM,EAAI,CAAC,CACZ,CAWA,SAAS4xC,EAAEr0C,EAAGoJ,GACZjH,KAAKM,EAAIzC,EACTmC,KAAKkH,EAAID,EACTjH,KAAKnC,EAAIoS,EAAEjQ,KAAKM,EAAG,OAAQ,CACzB,cAAe,QACdN,KAAKkH,EACV,CACA,SAASirC,EAAEt0C,GACTw6B,EAAEx6B,EAAEyC,EAAG,OAAQzC,EAAEA,EACnB,CACA,SAAS8kB,EAAE9kB,GACT,MAAO,4LAA8L03B,EAAE13B,EAAEyC,GAAlM,eAA8NsxC,EAAE/zC,GAAK,gBAAmBA,EAAEqJ,EAA7C,KACtN,CAEA,SAAS0b,EAAE/kB,EAAGoJ,EAAG3G,EAAG+C,EAAGvF,EAAGoJ,GACxBlH,KAAKqhB,EAAIxjB,EACTmC,KAAK+jC,EAAI98B,EACTjH,KAAKnC,EAAIwF,EACTrD,KAAKM,EAAIA,EACTN,KAAKkH,EAAIpJ,GAAK,IACdkC,KAAKq5B,EAAInyB,QAAK,CAChB,CA0BA,SAASuxB,EAAE56B,EAAGoJ,EAAG3G,EAAG+C,EAAGvF,EAAGoJ,EAAGma,GAC3BrhB,KAAKutB,EAAI1vB,EACTmC,KAAK43B,EAAI3wB,EACTjH,KAAKM,EAAIA,EACTN,KAAKnC,EAAIwF,EACTrD,KAAK0D,EAAI2d,GAAK,UACdrhB,KAAKkH,EAAI,CAAC,EACVlH,KAAKqxC,EAAIvzC,GAAK,IACdkC,KAAKq4B,EAAInxB,GAAK,KACdlH,KAAKxC,EAAIwC,KAAK+jC,EAAI/jC,KAAKq5B,EAAIr5B,KAAKqhB,EAAI,KACpCrhB,KAAKqhB,EAAI,IAAI6wB,EAAElyC,KAAKM,EAAGN,KAAK0D,GAC5B1D,KAAKq5B,EAAI,IAAI6Y,EAAElyC,KAAKM,EAAGN,KAAK0D,GAC5B1D,KAAK+jC,EAAI,IAAImO,EAAElyC,KAAKM,EAAGN,KAAK0D,GAC5B1D,KAAKxC,EAAI,IAAI00C,EAAElyC,KAAKM,EAAGN,KAAK0D,GAE5B7F,EAAI8kB,EADJ9kB,EAAI,IAAIu5B,EAAEp3B,KAAKnC,EAAEyC,EAAI,SAAUu3B,EAAE73B,KAAKnC,KAEtCmC,KAAKqhB,EAAExjB,EAAEie,MAAMm1B,QAAUpzC,EAEzBA,EAAI8kB,EADJ9kB,EAAI,IAAIu5B,EAAEp3B,KAAKnC,EAAEyC,EAAI,cAAeu3B,EAAE73B,KAAKnC,KAE3CmC,KAAKq5B,EAAEx7B,EAAEie,MAAMm1B,QAAUpzC,EAEzBA,EAAI8kB,EADJ9kB,EAAI,IAAIu5B,EAAE,QAASS,EAAE73B,KAAKnC,KAE1BmC,KAAK+jC,EAAElmC,EAAEie,MAAMm1B,QAAUpzC,EAEzBA,EAAI8kB,EADJ9kB,EAAI,IAAIu5B,EAAE,aAAcS,EAAE73B,KAAKnC,KAE/BmC,KAAKxC,EAAEK,EAAEie,MAAMm1B,QAAUpzC,EACzBs0C,EAAEnyC,KAAKqhB,GACP8wB,EAAEnyC,KAAKq5B,GACP8Y,EAAEnyC,KAAK+jC,GACPoO,EAAEnyC,KAAKxC,EACT,CA3JA05B,EAAEr4B,UAAUyB,EAAI,SAAUzC,GACxB,IAAK,IAAIoJ,EAAI,GAAI3G,EAAI,EAAGA,EAAIT,UAAUrD,OAAQ8D,IAAK2G,EAAEvB,KAAK7F,UAAUS,GAAGjD,QAAQ,UAAW,IAAIV,eAC9F,OAAOsK,EAAExK,KAAKuD,KAAKnC,EACrB,EAiGA+kB,EAAE/jB,UAAUuzC,MAAQ,WAClB,IAAIv0C,EAAImC,KAAKM,EAAEkjB,EAAEzb,SACfd,EAAIjH,KACJM,EAAIw2B,IACJzzB,EAAI,IAAIwL,SAAQ,SAAUxL,EAAGvF,IAC3B,SAASoJ,IACP4vB,IAAMx2B,GAAK2G,EAAEC,EAAIpJ,IAAMD,EAAEw0C,MAAMxqC,KA/FvC,SAAYhK,GACV,OAAO+zC,EAAE/zC,GAAK,IAAOA,EAAEqJ,EAAhB0qC,YAAwCrc,EAAE13B,EAAEyC,EACrD,CA6F4CgyC,CAAGrrC,EAAEpJ,GAAIoJ,EAAEoyB,GAAG9F,MAAK,SAAU11B,GAC/D,GAAKA,EAAErB,OAAS6G,IAAM0I,WAAW7E,EAAG,GACtC,IAAG,WACDpJ,GACF,GACF,CACAoJ,EACF,IACApJ,EAAI,KACJoJ,EAAI,IAAI2H,SAAQ,SAAUhR,EAAGwF,GAC3BvF,EAAIiO,WAAW1I,EAAG4D,EAAEC,EACtB,IACF2H,QAAQ0jC,KAAK,CAACrrC,EAAG7D,IAAIkwB,MAAK,WACxBz1B,IAAM0/B,aAAa1/B,GAAIA,EAAI,MAC3BmJ,EAAEoa,EAAEpa,EAAEpJ,EACR,IAAG,WACDoJ,EAAE88B,EAAE98B,EAAEpJ,EACR,GACF,EAgCA,IAAI20C,EAAI,CACJf,EAAG,QACHxb,EAAG,cAELwc,EAAI,KACN,SAAS9c,IACP,GAAI,OAAS8c,EAAG,CACd,IAAI50C,EAAI,sCAAsC6oB,KAAKjY,OAAO2kB,UAAUiS,WACpEoN,IAAM50C,IAAM,IAAM8zC,SAAS9zC,EAAE,GAAI,KAAO,MAAQ8zC,SAAS9zC,EAAE,GAAI,KAAO,IAAM8zC,SAAS9zC,EAAE,GAAI,IAC7F,CACA,OAAO40C,CACT,CAOA,SAASC,EAAG70C,EAAGoJ,EAAG3G,GAChB,IAAK,IAAI+C,KAAKmvC,EAAG,GAAIA,EAAE1zC,eAAeuE,IAAM4D,IAAMpJ,EAAEqJ,EAAEsrC,EAAEnvC,KAAO/C,IAAMzC,EAAEqJ,EAAEsrC,EAAEnvC,IAAK,OAAO,EACvF,OAAO,CACT,CACA,SAASs0B,EAAE95B,GACT,IAEEwF,EAFE4D,EAAIpJ,EAAEwjB,EAAExjB,EAAE80C,YACZryC,EAAIzC,EAAEw7B,EAAEx7B,EAAE80C,aAEXtvC,EAAI4D,IAAMpJ,EAAEqJ,EAAE0rC,OAAStyC,IAAMzC,EAAEqJ,EAAE,iBAAmB7D,EAAIsyB,KAAO+c,EAAG70C,EAAGoJ,EAAG3G,IACzE+C,EAAIyzB,IAAMj5B,EAAEyzC,GAAKzzC,EAAEwzC,EAAI1b,KAAO+c,EAAG70C,EAAGoJ,EAAG3G,KAAO,OAASzC,EAAEw6B,GAAKx6B,EAAEw6B,EAAEv5B,eAAejB,EAAEA,EAAEyC,IAAM62B,EAAEt5B,EAAGA,EAAE0vB,GAAK4J,EAAEt5B,EAAGA,EAAE+5B,GAEhH,SAAY/5B,GACVkO,WAAWnF,GAAE,WACX+wB,EAAE33B,KACJ,GAAGnC,GAAI,GACT,CANqHg1C,CAAGh1C,GAAKs5B,EAAEt5B,EAAGA,EAAE0vB,EACpI,CAMA,SAAS4J,EAAEt5B,EAAGoJ,GACZ8E,WAAWnF,GAAE,WACX2mB,EAAEvtB,KAAKqhB,EAAExjB,GACT0vB,EAAEvtB,KAAKq5B,EAAEx7B,GACT0vB,EAAEvtB,KAAK+jC,EAAElmC,GACT0vB,EAAEvtB,KAAKxC,EAAEK,GACToJ,EAAEjH,KAAKnC,EACT,GAAGA,GAAI,EACT,CAEA,SAAS43B,EAAE53B,EAAGoJ,EAAG3G,GACfN,KAAKM,EAAIzC,EACTmC,KAAKnC,EAAIoJ,EACTjH,KAAKkH,EAAI,EACTlH,KAAKxC,EAAIwC,KAAK+jC,GAAI,EAClB/jC,KAAK0D,EAAIpD,CACX,CAtCAm4B,EAAE55B,UAAUuzC,MAAQ,WAClBpyC,KAAKkH,EAAE0rC,MAAQ5yC,KAAK+jC,EAAElmC,EAAE80C,YACxB3yC,KAAKkH,EAAE,cAAgBlH,KAAKxC,EAAEK,EAAE80C,YAChC3yC,KAAKsxC,EAAIxa,IACTa,EAAE33B,KACJ,EAkCA,IAAIk4B,EAAI,KAoBR,SAAS4a,EAAGj1C,GACV,KAAOA,EAAEqJ,GAAKrJ,EAAEkmC,IAAMlmC,EAAEL,IAAKK,EAAIA,EAAEA,GAAKwjB,GAAKgwB,EAAExzC,EAAEqJ,EAAG,CAACrJ,EAAEA,EAAEyC,EAAE,KAAM,WAAY,CAACzC,EAAEA,EAAEyC,EAAE,KAAM,WAAYzC,EAAEA,EAAEyC,EAAE,KAAM,cAAek4B,EAAE36B,EAAG,WAAam0C,EAAEn0C,EAAEA,GACzJ,CAEA,SAASk1C,EAAGl1C,GACVmC,KAAK+jC,EAAIlmC,EACTmC,KAAKnC,EAAI,IAAIo0C,EACbjyC,KAAKq5B,EAAI,EACTr5B,KAAKkH,EAAIlH,KAAKqhB,GAAI,CACpB,CAOA,SAAS2xB,EAAGn1C,EAAGoJ,EAAG3G,EAAG+C,EAAGvF,GACtB,IAAIoJ,EAAI,KAAOrJ,EAAEw7B,GAChBx7B,EAAEqJ,GAAKrJ,EAAEwjB,IAAMtV,YAAW,WACzB,IAAIlO,EAAIC,GAAK,KACXN,EAAI6F,GAAa,CAAC,EACpB,GAAI,IAAM/C,EAAE9D,QAAU0K,EAAG8qC,EAAE/qC,EAAEpJ,OAAQ,CACnCoJ,EAAEC,GAAK5G,EAAE9D,OACT0K,IAAMD,EAAE88B,EAAI78B,GACZ,IAAImyB,EACFnD,EAAI,GACN,IAAKmD,EAAI,EAAGA,EAAI/4B,EAAE9D,OAAQ68B,IAAK,CAC7B,IAAIjzB,EAAI9F,EAAE+4B,GACRt7B,EAAIP,EAAE4I,EAAE9F,GACR1C,EAAIqJ,EAAEpJ,EACNxB,EAAI+J,EAIN,GAHAxI,EAAEyjB,GAAKgwB,EAAEzzC,EAAEsJ,EAAG,CAACtJ,EAAEC,EAAEyC,EAAE,KAAMjE,EAAEiE,EAAGu3B,EAAEx7B,GAAG+wB,WAAY,aACjDoL,EAAE56B,EAAG,cAAevB,GACpBuB,EAAI,KACA,OAASs6B,EAAG,GAAIzpB,OAAOuiC,SAAU,CAC/B30C,EAAI,wBAAwBqqB,KAAKjY,OAAO2kB,UAAUiS,WAAtD,IACE4N,EAAK,8BAA8BvsB,KAAKjY,OAAO2kB,UAAUiS,YAAc,QAAQ3e,KAAKjY,OAAO2kB,UAAU8f,QACvGhb,EAAI77B,EAAI,GAAKs1C,SAASt1C,EAAE,GAAI,KAAM42C,CACpC,MAAO/a,GAAI,EACPt6B,EAAJs6B,EAAQ,IAAItV,EAAEhc,EAAEK,EAAEoa,EAAGpa,GAAIL,EAAEK,EAAEoyB,EAAGpyB,GAAIA,EAAE3G,EAAG8F,EAAGa,EAAEvD,EAAG3F,GAAS,IAAI06B,EAAE7xB,EAAEK,EAAEoa,EAAGpa,GAAIL,EAAEK,EAAEoyB,EAAGpyB,GAAIA,EAAE3G,EAAG8F,EAAGa,EAAEvD,EAAG7F,EAAGE,GACtGm4B,EAAExwB,KAAK9H,EACT,CACA,IAAKy7B,EAAI,EAAGA,EAAInD,EAAE15B,OAAQ68B,IAAKnD,EAAEmD,GAAG+Y,OACtC,CACF,GAAG,EACL,CAcA,SAASe,EAAGt1C,EAAGoJ,GACbjH,KAAKM,EAAIzC,EACTmC,KAAKnC,EAAIoJ,CACX,CA4BA,SAASmsC,EAAGv1C,EAAGoJ,GACbjH,KAAKM,EAAIzC,EACTmC,KAAKnC,EAAIoJ,CACX,CAiBA,SAASosC,EAAGx1C,EAAGoJ,GACTjH,KAAKM,EAATzC,GAA0BgmC,EAC1B7jC,KAAKnC,EAAI,GACTmC,KAAKkH,EAAI,GACTlH,KAAKqhB,EAAIpa,GAAK,EAChB,CAtIAwuB,EAAE52B,UAAUwiB,EAAI,SAAUxjB,GACxB,IAAIoJ,EAAIjH,KAAKnC,EACboJ,EAAEoa,GAAKgwB,EAAEpqC,EAAEC,EAAG,CAACD,EAAEpJ,EAAEyC,EAAE,KAAMzC,EAAEyC,EAAGu3B,EAAEh6B,GAAGuvB,WAAY,WAAY,CAACnmB,EAAEpJ,EAAEyC,EAAE,KAAMzC,EAAEyC,EAAGu3B,EAAEh6B,GAAGuvB,WAAY,WAAYnmB,EAAEpJ,EAAEyC,EAAE,KAAMzC,EAAEyC,EAAGu3B,EAAEh6B,GAAGuvB,WAAY,cAC9IoL,EAAEvxB,EAAG,aAAcpJ,GACnBmC,KAAKxC,GAAI,EACTs1C,EAAG9yC,KACL,EACAy1B,EAAE52B,UAAUw6B,EAAI,SAAUx7B,GACxB,IAAIoJ,EAAIjH,KAAKnC,EACb,GAAIoJ,EAAEoa,EAAG,CACP,IAAI/gB,EAAI0Q,EAAE/J,EAAEC,EAAGD,EAAEpJ,EAAEyC,EAAE,KAAMzC,EAAEyC,EAAGu3B,EAAEh6B,GAAGuvB,WAAY,WAC/C/pB,EAAI,GACJvF,EAAI,CAACmJ,EAAEpJ,EAAEyC,EAAE,KAAMzC,EAAEyC,EAAGu3B,EAAEh6B,GAAGuvB,WAAY,YACzC9sB,GAAK+C,EAAEqC,KAAKuB,EAAEpJ,EAAEyC,EAAE,KAAMzC,EAAEyC,EAAGu3B,EAAEh6B,GAAGuvB,WAAY,aAC9CikB,EAAEpqC,EAAEC,EAAG7D,EAAGvF,EACZ,CACA06B,EAAEvxB,EAAG,eAAgBpJ,GACrBi1C,EAAG9yC,KACL,EAWA+yC,EAAGl0C,UAAUgJ,KAAO,SAAUhK,GAC5BmC,KAAKM,EAAI,IAAIwwC,EAAG9wC,KAAK+jC,EAAGlmC,EAAEkL,SAAW/I,KAAK+jC,GAC1C/jC,KAAKqhB,GAAI,IAAOxjB,EAAEk0C,OAClB/xC,KAAKkH,GAAI,IAAOrJ,EAAEsC,QAiCpB,SAAYtC,EAAGoJ,EAAG3G,GAChB,IAAI+C,EAAI,GACNvF,EAAIwC,EAAEmK,SApOV,SAAY5M,GACVA,EAAEwjB,GAAKgwB,EAAExzC,EAAEqJ,EAAG,CAACrJ,EAAEA,EAAEyC,EAAE,KAAM,aAC3Bk4B,EAAE36B,EAAG,UACP,CAkOEy1C,CAAGrsC,GACC5D,EAjNN,SAAYxF,EAAGoJ,EAAG3G,GAChB,IACExC,EADEuF,EAAI,GAER,IAAKvF,KAAKmJ,EAAG,GAAIA,EAAEnI,eAAehB,GAAI,CACpC,IAAIoJ,EAAIrJ,EAAEyC,EAAExC,GACZoJ,GAAK7D,EAAEqC,KAAKwB,EAAED,EAAEnJ,GAAIwC,GACtB,CACA,OAAO+C,CACT,CAyMUkwC,CAAG11C,EAAEA,EAAGyC,EAAGzC,EAAEyC,GAArB,IACE4G,EAAI,IAAIuuB,EAAE53B,EAAEyC,EAAG2G,EAAGnJ,GAGpB,IAFAD,EAAEw7B,EAAIh2B,EAAE7G,OACRyK,EAAI,EACC3G,EAAI+C,EAAE7G,OAAQyK,EAAI3G,EAAG2G,IAAK5D,EAAE4D,GAAGY,MAAK,SAAUZ,EAAG5D,EAAG/C,GACvD0yC,EAAGn1C,EAAGqJ,EAAGD,EAAG5D,EAAG/C,EACjB,GACF,CA3CEkzC,CAAGxzC,KAAM,IAAI8xC,EAAG9xC,KAAKM,EAAGzC,GAAIA,EAC9B,EAgDAs1C,EAAGt0C,UAAUgJ,KAAO,SAAUhK,GAC5B,SAASoJ,IACP,GAAIC,EAAE,eAAiB7D,GAAI,CACzB,IAEEg2B,EAFE/4B,EAAI4G,EAAE,eAAiB7D,KACzBvF,EAAI,GAEN,GAAIwC,EAAG,IAAK,IAAI41B,EAAI,EAAGA,EAAI51B,EAAE9D,OAAQ05B,IAAK,CACxC,IAAI9vB,EAAI9F,EAAE41B,GAAGud,WACb,MAAUnzC,EAAE41B,GAAGwd,WAAa,MAAUpzC,EAAE41B,GAAGyd,YAActa,EAAI/4B,EAAE41B,GAAGwd,UAAYpzC,EAAE41B,GAAGyd,WAAY71C,EAAE4H,KAAK,IAAI0xB,EAAEhxB,EAAGizB,KAAOv7B,EAAE4H,KAAK,IAAI0xB,EAAEhxB,GACrI,CACAvI,EAAEC,EACJ,MAAOiO,YAAW,WAChB9E,GACF,GAAG,GACL,CACA,IAAI3G,EAAIN,KACNqD,EAAI/C,EAAEzC,EAAE+1C,UACR91C,EAAIwC,EAAEzC,EAAE4e,QACV,GAAIpZ,EAAG,CACL,IAAI6D,EAAI5G,EAAEA,EAAEkjB,EACZ8tB,EAAEtxC,KAAKM,GAAIA,EAAEzC,EAAEg2C,KAAO,gCAAkC,IAAMxwC,EAAI,OAASvF,EAAI,MAAQA,EAAI,KAAK,SAAUA,GACxGA,EAAID,EAAE,KAAOqJ,EAAE,4BAA8B7D,GAAK,WAChD,OAAO/C,EAAEzC,CACX,EAAGoJ,IACL,IAAG0a,GAAK,wBAA0Bte,CACpC,MAAOxF,EAAE,GACX,EAKAu1C,EAAGv0C,UAAUgJ,KAAO,SAAUhK,GAC5B,IAAIoJ,EACF3G,EACA+C,EAAIrD,KAAKnC,EAAEi2C,MAAQ,GACnBh2C,EAAIkC,KAAKnC,EAAEk2C,UAAY,GACvB7sC,EAAIlH,KAAKnC,EAAEm2C,aAAe,CAAC,EAC3B3yB,EAAI,IAAIuW,EAEV,IADA3wB,EAAI,EACC3G,EAAI+C,EAAE7G,OAAQyK,EAAI3G,EAAG2G,IAAKyuB,EAAE11B,KAAKM,EAAG+C,EAAE4D,GAAIgvB,EAAE5U,IACjD,IAAI7jB,EAAI,GAER,IADAyJ,EAAI,EACC3G,EAAIxC,EAAEtB,OAAQyK,EAAI3G,EAAG2G,IAAK,IAAI5D,EAAIvF,EAAEmJ,GAAG7G,MAAM,MAAQ,GAAI,IAAK,IAAIi5B,EAAIh2B,EAAE,GAAGjD,MAAM,KAAM81B,EAAI,EAAGA,EAAImD,EAAE78B,OAAQ05B,GAAK,EAAG14B,EAAEkI,KAAK,IAAI0xB,EAAE/zB,EAAE,GAAIg2B,EAAEnD,UAAU14B,EAAEkI,KAAK,IAAI0xB,EAAE/zB,EAAE,KACvKquC,EAAErwB,GAAG,WACHxjB,EAAEL,EAAG0J,EACP,GACF,EAOA,IAAI28B,EAAK,mCAoBT,SAASoQ,EAAGp2C,GACVmC,KAAKkH,EAAIrJ,EACTmC,KAAKnC,EAAI,GACTmC,KAAKM,EAAI,CAAC,CACZ,CACA,IAAI4zC,EAAK,CACLC,MAAO,UACP,YAAa,QACbC,SAAU,MACVC,MAAO,MACPC,MAAO,MACPC,QAAS,OAEXC,EAAK,CACHC,KAAM,IACNC,WAAY,IACZ,cAAe,IACfC,WAAY,IACZ,cAAe,IACfC,MAAO,IACPC,QAAS,IACTC,KAAM,IACNC,OAAQ,IACR,YAAa,IACbC,SAAU,IACV,YAAa,IACbC,SAAU,IACVC,KAAM,IACN,aAAc,IACdC,UAAW,IACX,aAAc,IACdC,UAAW,IACXC,MAAO,IACPC,MAAO,IACPpf,EAAG,IACHt4B,EAAG,IACHqJ,EAAG,KAELsuC,GAAK,CACHv4C,EAAG,IACHw4C,OAAQ,IACRz3C,EAAG,IACH03C,OAAQ,KAEVC,GAAK,+IAkCP,SAASC,GAAG93C,EAAGoJ,GACbjH,KAAKM,EAAIzC,EACTmC,KAAKnC,EAAIoJ,CACX,CACA,IAAI2uC,GAAK,CACPC,OAAO,EACPC,SAAS,EACTC,OAAO,GAeT,SAASC,GAAGn4C,EAAGoJ,GACbjH,KAAKM,EAAIzC,EACTmC,KAAKnC,EAAIoJ,CACX,CAmBA,SAASgvC,GAAGp4C,EAAGoJ,GACbjH,KAAKM,EAAIzC,EACTmC,KAAKkH,EAAID,EACTjH,KAAKnC,EAAI,EACX,CAvCA83C,GAAG92C,UAAUgJ,KAAO,SAAUhK,GAC5B,IAAIoJ,EAAI,IAAI2wB,EACVt3B,EAAIN,KAAKM,EACT+C,EAAI,IAAIgwC,EAAGrzC,KAAKnC,EAAEg2C,IAAK7zC,KAAKnC,EAAEq4C,MAC9Bp4C,EAAIkC,KAAKnC,EAAEk2C,UA9Gf,SAAYl2C,EAAGoJ,GACb,IAAK,IAAI3G,EAAI2G,EAAEzK,OAAQ6G,EAAI,EAAGA,EAAI/C,EAAG+C,IAAK,CACxC,IAAIvF,EAAImJ,EAAE5D,GAAGjD,MAAM,KACnB,GAAKtC,EAAEtB,QAAUqB,EAAEqJ,EAAExB,KAAK5H,EAAEgQ,OAC5B,IAAI5G,EAAI,GACR,GAAKpJ,EAAEtB,QAAU,IAAMsB,EAAE,KAAOoJ,EAAI,KACpCrJ,EAAEA,EAAE6H,KAAK5H,EAAErB,KAAKyK,GAClB,CACF,CAuGEivC,CAAG9yC,EAAGvF,GACN,IAAIoJ,EAAI,IAAI+sC,EAAGn2C,IAhDjB,SAAYD,GACV,IAAK,IAAIoJ,EAAIpJ,EAAEqJ,EAAE1K,OAAQ8D,EAAI,EAAGA,EAAI2G,EAAG3G,IAAK,CAC1C,IAAI+C,EAAIxF,EAAEqJ,EAAE5G,GAAGF,MAAM,KACnBtC,EAAIuF,EAAE,GAAGhG,QAAQ,MAAO,KACxB6J,EAAI,CAAC,MACP,GAAI,GAAK7D,EAAE7G,OAAQ,CACjB,IAAI6kB,EAGJ,GADAA,EAAI,GADA7jB,EAAI6F,EAAE,GAEH,IAAK,IAAI7F,EAAkB67B,GAAlB77B,EAAIA,EAAE4C,MAAM,MAAY5D,OAAQ05B,EAAI,EAAGA,EAAImD,EAAGnD,IAAK,CACjE,IAAI9vB,EAEJ,IADAA,EAAI5I,EAAE04B,IACA7M,MAAM,YAEV,GAAI,OADAtrB,EAAI23C,GAAGhvB,KAAKtgB,EAAEzJ,gBACHyJ,EAAI,OAAQ,CAIzB,GAFAA,EAAI,OADJA,EAAIrI,EAAE,KACW,IAAMqI,EAAI,IAAMmvC,GAAGnvC,GAEhC,OADJrI,EAAIA,EAAE,KACW,IAAMA,EAAGA,EAAI,SAAS,IACrCA,EAD6Cy2C,EAAGz2C,KACpC6f,MAAM7f,GAAK,IAAMA,EAAEqlB,OAAO,EAAG,IAC3Chd,EAAI,CAACA,EAAGrI,GAAGtB,KAAK,GAClB,MACK2J,EAAI,GACXA,GAAKib,EAAE3b,KAAKU,EACd,CACA,EAAIib,EAAE7kB,SAAW0K,EAAIma,GACrB,GAAKhe,EAAE7G,SAAqB6kB,EAAI,GAA8B,GAA1Bhe,GAAlBA,EAAIA,EAAE,IAAoBA,EAAEjD,MAAM,KAAOihB,GAAS7kB,SAAW6G,EAAI6wC,EAAG7wC,EAAE,OAASxF,EAAEyC,EAAExC,GAAKuF,GAC5G,CAEA,IADAxF,EAAEyC,EAAExC,KAAOuF,EAAI6wC,EAAGp2C,MAAQD,EAAEyC,EAAExC,GAAKuF,GAC9BA,EAAI,EAAGA,EAAI6D,EAAE1K,OAAQ6G,GAAK,EAAGxF,EAAEA,EAAE6H,KAAK,IAAI0xB,EAAEt5B,EAAGoJ,EAAE7D,IACxD,CACF,CAkBE+yC,CAAGlvC,GACHwuB,EAAEp1B,EAzGJ,SAAYzC,GACV,GAAI,GAAKA,EAAEA,EAAErB,OAAQ,MAAM6K,MAAM,qBACjC,IAAK,GAAKxJ,EAAEyC,EAAE+H,QAAQ,QAAS,OAAOxK,EAAEyC,EACxC,IAAK,IAAI2G,EAAIpJ,EAAEA,EAAErB,OAAQ8D,EAAI,GAAI+C,EAAI,EAAGA,EAAI4D,EAAG5D,IAAK/C,EAAEoF,KAAK7H,EAAEA,EAAEwF,GAAGhG,QAAQ,KAAM,MAIhF,OAHA4J,EAAIpJ,EAAEyC,EAAI,WAAaA,EAAE7D,KAAK,OAC9B,EAAIoB,EAAEqJ,EAAE1K,SAAWyK,GAAK,WAAapJ,EAAEqJ,EAAEzK,KAAK,MAC9C,EAAIoB,EAAEwjB,EAAE7kB,SAAWyK,GAAK,SAAWiJ,mBAAmBrS,EAAEwjB,IACjDpa,CACT,CAiGOovC,CAAGhzC,GAAI4yB,EAAEhvB,IACdyqC,EAAEzqC,GAAG,WACHpJ,EAAEqJ,EAAErJ,EAAGqJ,EAAE5G,EAAGs1C,GACd,GACF,EAKAI,GAAGn3C,UAAUgJ,KAAO,SAAUhK,GAC5B,IAAIoJ,EAAIjH,KAAKnC,EAAE8jB,GACbrhB,EAAIN,KAAKM,EAAEkjB,EACbvc,EAAIqqC,EAAEtxC,KAAKM,GAAIN,KAAKnC,EAAEg2C,KAAO,2BAA6B,IAAM5sC,EAAI,OAAO,SAAUA,GACnF,GAAIA,EAAGpJ,EAAE,SAAS,GAAIyC,EAAEg2C,SAAWh2C,EAAEg2C,QAAQ3/B,QAAUrW,EAAEg2C,QAAQ3/B,OAAO9P,GAAI,CAC1EI,EAAI3G,EAAEg2C,QAAQ3/B,OAAO9P,GACrB,IAAK,IAAI/I,EAAI,GAAIoJ,EAAI,EAAGA,EAAID,EAAEzK,OAAQ0K,GAAK,EAAG,IAAK,IAAIma,EAAIpa,EAAEC,GAAI1J,EAAIyJ,EAAEC,EAAI,GAAImyB,EAAI,EAAGA,EAAI77B,EAAEhB,OAAQ68B,IAAKv7B,EAAE4H,KAAK,IAAI0xB,EAAE/V,EAAG7jB,EAAE67B,KAC3H,IACE/4B,EAAEg2C,QAAQzuC,KAAK,CACbkqC,QAAQ,EACR5xC,SAAS,EACTmP,OAAO,GAEX,CAAE,MAAO4mB,GAAI,CACbr4B,EAAEC,EACJ,CACF,GAAG,KAAOD,EAAE,GACd,EAMAo4C,GAAGp3C,UAAUgJ,KAAO,SAAUhK,GAC5B,IAAIoJ,EAAIjH,KAAKkH,EAAEya,GACbrhB,EAAIN,KAAKM,EAAEkjB,EACXngB,EAAIrD,KACNiH,GAAK3G,EAAEi2C,4BAA8Bj2C,EAAEi2C,0BAA4B,CAAC,GAAIj2C,EAAEi2C,0BAA0BtvC,GAAK,SAAUA,EAAG3G,GACpH,IAAK,IAAI+gB,EAAI,EAAG7jB,EAAI8C,EAAE+xC,MAAM71C,OAAQ6kB,EAAI7jB,IAAK6jB,EAAG,CAC9C,IAAIgY,EAAI/4B,EAAE+xC,MAAMhxB,GAChBhe,EAAExF,EAAE6H,KAAK,IAAI0xB,EAAEiC,EAAE51B,KAAMouC,EAAG,eAAiBxY,EAAEmd,OAAS,eAAiBnd,EAAEvd,QAC3E,CACAje,EAAEwF,EAAExF,EACN,EAAGyzC,EAAEtxC,KAAKM,GAAIN,KAAKkH,EAAE2sC,KAAO,oCA1jB9B,SAAYh2C,GACV,OAAOA,EAAE2lB,EAAEtW,SAASmT,UAAYxiB,EAAEA,EAAEqP,SAASmT,QAC/C,CAwjBoEo2B,CAAGz2C,KAAKM,GAAK,IAAM2G,EAAI,OAAO,SAAUA,GACxGA,GAAKpJ,EAAE,GACT,KAAMA,EAAE,GACV,EACA,IAAIi6B,GAAI,IAAIib,EAAGtkC,QACfqpB,GAAEj6B,EAAEyC,EAAEo2C,OAAS,SAAU74C,EAAGoJ,GAC1B,OAAO,IAAImsC,EAAGnsC,EAAGpJ,EACnB,EACAi6B,GAAEj6B,EAAEyC,EAAEq2C,SAAW,SAAU94C,EAAGoJ,GAC5B,OAAO,IAAIgvC,GAAGhvC,EAAGpJ,EACnB,EACAi6B,GAAEj6B,EAAEyC,EAAEs2C,SAAW,SAAU/4C,EAAGoJ,GAC5B,OAAO,IAAIksC,EAAGlsC,EAAGpJ,EACnB,EACAi6B,GAAEj6B,EAAEyC,EAAEu2C,QAAU,SAAUh5C,EAAGoJ,GAC3B,OAAO,IAAI+uC,GAAG/uC,EAAGpJ,EACnB,EACAi6B,GAAEj6B,EAAEyC,EAAEw2C,OAAS,SAAUj5C,EAAGoJ,GAC1B,OAAO,IAAI0uC,GAAG1uC,EAAGpJ,EACnB,EACA,IAAI06B,GAAI,CACN1wB,KAAMjB,EAAEkxB,GAAEjwB,KAAMiwB,UAIjB,KAF4C,aAC3C,OAAOS,EACR,+BACF,CA1pBD,uHCEA,IAAK,EAAAh0B,SACH,MAAM,IAAI8C,MAAM,qDAElB,IAAK,KACH,MAAM,IAAIA,MAAM,mFCLX,SAAS0vC,EAAiBxrC,GAC/BA,GACF,CCFO,SAASyrC,EAAgBzpB,GAC9B,OAAO,QAAkBA,EAC3B,CCHO,IAEH0pB,EAA8C,WAChD,SAASA,EAA+BC,GACtC,IAAIt2C,EAAQZ,KACZ/D,OAAOgD,eAAee,KAAM,WAAY,CACtCqqB,YAAY,EACZC,cAAc,EACdzkB,UAAU,EACVX,MAAOgyC,IAETj7C,OAAOgD,eAAee,KAAM,gBAAiB,CAC3CqqB,YAAY,EACZC,cAAc,EACdzkB,UAAU,EACVX,MAAO,IAAIq2B,MAEbt/B,OAAOgD,eAAee,KAAM,eAAgB,CAC1CqqB,YAAY,EACZC,cAAc,EACdzkB,UAAU,EACVX,WAAO,IAGTjJ,OAAOgD,eAAee,KAAM,QAAS,CACnCqqB,YAAY,EACZC,cAAc,EACdzkB,UAAU,EACVX,MAAO,SAAUiyC,QACA,IAAXA,IACFA,EA9B2B,KAiC7B3Z,aAAa58B,EAAMw2C,cACnBx2C,EAAMw2C,kBAAehwC,EACrB,IAAI0J,EAAMD,KAAKC,MACflQ,EAAMy2C,cAAch3C,SAAQ,SAAUi3C,EAAcC,GAC9CzmC,EAAMwmC,EAAaE,cAAgBL,IACrCv2C,EAAMs2C,SAASI,EAAapyC,OAC5BtE,EAAMy2C,cAAcI,OAAOF,GAE/B,IACI32C,EAAMy2C,cAAcK,KAAO,GAC7B92C,EAAM+2C,eAEV,IAGF17C,OAAOgD,eAAee,KAAM,yBAA0B,CACpDqqB,YAAY,EACZC,cAAc,EACdzkB,UAAU,EACVX,MAAO,WACLtE,EAAMg3C,MAAM,EACd,GAEJ,CAgCA,OA9BA37C,OAAOgD,eAAeg4C,EAA+Bp4C,UAAW,WAAY,CAC1EwrB,YAAY,EACZC,cAAc,EACdzkB,UAAU,EACVX,MAAO,SAAUtF,EAAQsF,EAAOqyC,GAC9Bv3C,KAAKq3C,cAAcj4C,IAAIm4C,EAAO,CAC5BryC,MAAOA,EACPsyC,aAAc3mC,KAAKC,QAErB9Q,KAAK23C,eACP,IAEF17C,OAAOgD,eAAeg4C,EAA+Bp4C,UAAW,aAAc,CAC5EwrB,YAAY,EACZC,cAAc,EACdzkB,UAAU,EACVX,MAAO,SAAUqyC,GACfv3C,KAAKq3C,cAAcI,OAAOF,EAC5B,IAEFt7C,OAAOgD,eAAeg4C,EAA+Bp4C,UAAW,gBAAiB,CAC/EwrB,YAAY,EACZC,cAAc,EACdzkB,UAAU,EACVX,MAAO,gBACqBkC,IAAtBpH,KAAKo3C,eACPp3C,KAAKo3C,aAAerrC,WAAW/L,KAAK43C,MAnFP,KAqFjC,IAEKX,CACT,CAvFkD,GCDvCY,EAA+B,ID0FiC,oBAAzBC,qBAAuCA,qBAAuBb,IC1FpC,SAAUc,GACpF,IAAI3mC,EACoB,QAAvBA,EAAK2mC,EAAI30C,gBAA6B,IAAPgO,GAAyBA,EAAG0J,UAC5Di9B,EAAI30C,SAAW,IACjB,ICLI40C,GAA+B,ECAnC,IAAIC,EAAgC,SAAUz0B,EAAGzlB,GAC/C,IAAIP,EAAsB,mBAAXk3B,QAAyBlR,EAAEkR,OAAOC,UACjD,IAAKn3B,EAAG,OAAOgmB,EACf,IACE5lB,EAEAE,EAHEd,EAAIQ,EAAEuB,KAAKykB,GAEb00B,EAAK,GAEP,IACE,WAAc,IAANn6C,GAAgBA,KAAM,MAAQH,EAAIZ,EAAE+kB,QAAQo2B,MAAMD,EAAGxyC,KAAK9H,EAAEsH,MACtE,CAAE,MAAOiC,GACPrJ,EAAI,CACFqJ,MAAOA,EAEX,CAAE,QACA,IACMvJ,IAAMA,EAAEu6C,OAAS36C,EAAIR,EAAU,SAAIQ,EAAEuB,KAAK/B,EAChD,CAAE,QACA,GAAIc,EAAG,MAAMA,EAAEqJ,KACjB,CACF,CACA,OAAO+wC,CACT,EAMA,SAASE,EAAyBC,GAChC,MAAO,WAAWr3C,OAAOq3C,EAC3B,CAIA,IAAIC,EACF,WAAsC,EAGxC,SAASC,IACP,OAAO,IAAID,CACb,CACO,SAAS,EAAYzxC,EAAIwxC,GAI9B,QAH0B,IAAtBA,IACFA,EAAoB,YDrCfL,ECwCL,OAAOnxC,IAET,IACE2xC,EADOP,EAAO,WAAeM,GAAmC,GACrC,GAG3BztC,EADOmtC,EAAO,aAAkB,GAClB,GACZQ,EAAc,WAChB,OAAO3tC,EAAS,GAClB,EAII4tC,EAAS,SAAa,MACrBA,EAAOn1C,UAEVm1C,EAAOn1C,QAAU,CACfH,SAAU,KACVu1C,SAAS,EACTC,oBAAoB,IAGxB,IAoDIC,EACAC,EArDAf,EAAMW,EAAOn1C,QA6DjB,GA5DKw0C,EAAI30C,WAEP20C,EAAI30C,SAAW,IAAI,KAASg1C,EAAyBC,IAAoB,WAMnEN,EAAIY,QAENF,IAIAV,EAAIa,oBAAqB,CAE7B,IACAf,EAA6BvkB,SAASklB,EAAuBT,EAAKA,IAEpE,gBAAoBA,EAAI30C,SAAU4zC,GAClC,aAAgB,WAqBd,OApBAa,EAA6BkB,WAAWhB,GACxCA,EAAIY,SAAU,EACVZ,EAAI30C,SACF20C,EAAIa,qBAENb,EAAIa,oBAAqB,EACzBH,MAQFV,EAAI30C,SAAW,IAAI,KAASg1C,EAAyBC,IAAoB,WAEvEI,GACF,IACAA,KAEK,WACLV,EAAI30C,SAAS0X,UACbi9B,EAAI30C,SAAW,KACf20C,EAAIY,SAAU,EACdZ,EAAIa,oBAAqB,CAC3B,CACF,GAAG,IAMHb,EAAI30C,SAAS41C,OAAM,WACjB,IACEH,EAAYhyC,GACd,CAAE,MAAO/I,GACPg7C,EAAYh7C,CACd,CACF,IACIg7C,EACF,MAAMA,EAER,OAAOD,CACT,CCjIA,IACII,EAA8B,mBAAXvkB,QAAyBA,OAAOwkB,IAE3BD,EAAYvkB,OAAOwkB,IAAI,qBAA6C,mBAAf,EAAArL,aAA6B,IAAAA,aAAW,SAAUvsC,GACjI,OAAO,IACT,IAAa,SACS23C,EAAYvkB,OAAOwkB,IAAI,cAAgC,mBAAT,EAAAC,OAAuB,IAAAA,OAAK,SAAU73C,GACxG,OAAO,IACT,IAAa,SCVb,SAAS83C,EAAkBhoC,GACzB,IAAInF,EAAWmF,EAAGnF,SAChBvJ,EAAS0O,EAAG1O,OACV+K,EAAYxB,GAAYvJ,EAC5B,MAAyB,mBAAd+K,EACF,KAEF,EAAYA,EACrB,CCPO,SAAS9J,EAAmBW,EAAad,GAC9C,OAAO,IAAAe,WAAS,WACd,OAAO,QAAWD,IAAed,EAAa,CAC5C61C,UAAU,GAEd,IAAG,EACL,CDQAD,EAAkBnpB,YAAc,WEhBhC,ICAI7e,EVI6BkoC,KUIhB,6BVFbA,EAAoBvC,IAKtB,QAAU,CACRuC,kBAAmBA,IUGGloC,EAAKymC,EAAqD,6CCfpF,IAAI0B,EAAS,EAAQ,KAAR,CAAqB,QAC9BC,EAAM,EAAQ,MAClB97C,EAAOC,QAAU,SAAUiB,GACzB,OAAO26C,EAAO36C,KAAS26C,EAAO36C,GAAO46C,EAAI56C,GAC3C,wBCJA,IAAI+oC,EAAiB,EAAQ,MAI7BjqC,EAAOC,QAHP,SAAwBsS,EAAGuT,GACzBvT,EAAEpR,UAAY5C,OAAOmG,OAAOohB,EAAE3kB,WAAYoR,EAAEpR,UAAUwD,YAAc4N,EAAG03B,EAAe13B,EAAGuT,EAC3F,EACiC9lB,EAAOC,QAAQK,YAAa,EAAMN,EAAOC,QAAiB,QAAID,EAAOC,2CCCtG,IAEgCe,EAF5B+6C,EAAO,EAAQ,MACfC,GAC4Bh7C,EADG+6C,IAEnB/6C,EAAIV,WAAaU,EAAM,CACnCW,QAASX,GAab,IAEIi7C,EAAW,IAAIpe,IACfqe,EAAW,IAAItkB,IACfukB,GAAa,EACbC,EAAU,EACd,SAASC,IACP,OAAO,IAAIlpC,MAAOsS,SACpB,CACA,SAAS62B,EAAU90C,GACjB,IAAI2B,EAAK3B,EAAM2B,GACb/F,EAAOoE,EAAMpE,KACf+F,EAAG9G,WAAMqH,EAtBX,SAA4B+c,GAC1B,GAAIroB,MAAMC,QAAQooB,GAAM,CACtB,IAAK,IAAInnB,EAAI,EAAG6vB,EAAO/wB,MAAMqoB,EAAI3nB,QAASQ,EAAImnB,EAAI3nB,OAAQQ,IACxD6vB,EAAK7vB,GAAKmnB,EAAInnB,GAEhB,OAAO6vB,CACT,CACE,OAAO/wB,MAAMspB,KAAKjB,EAEtB,CAasBxe,CAAmB7E,GACzC,CAuBA,SAASm5C,IACP,IAAIC,EAAkBH,IACtBJ,EAASt5C,QAnBK,SAAmB65C,GACjC,OAAO,SAAUh1C,EAAOyc,GACtB,IAAIw4B,EAAWj1C,EAAMi1C,SACnBC,EAAKl1C,EAAMk1C,GACXC,EAAOn1C,EAAMm1C,KACXH,EAAkBC,GAAY,IAChCP,EAASxhC,IAAIlT,GAzBA,IA0BTm1C,EACFV,EAASlC,OAAO91B,GAEhBg4B,EAASv6C,IAAIuiB,EAAI1lB,OAAOC,OAAO,CAAC,EAAGgJ,EAAO,CACxCi1C,SAAUA,EAAWC,KAI7B,CACF,CAGmBE,CAAUJ,IAvBL,IAAlBN,EAASlC,OACbkC,EAASv5C,QAAQ25C,GACjBJ,EAASW,SAuBa,IAAlBZ,EAASjC,MAIb,EAAIgC,EAAMr6C,SAAS46C,GAHjBJ,GAAa,CAIjB,CACA,SAASW,EAAM11C,GACb,IAAI+B,EAAK/B,EAAK+B,GACZ4zC,EAAU31C,EAAKs1C,GACfA,OAAiBhzC,IAAZqzC,EAAwB,EAAIA,EACjC35C,EAAOgE,EAAKhE,KACZu5C,EAAOv1C,EAAKu1C,KACd,IAAKxzC,EAAI,OAAO,KAChB,IAAI6zC,EAAYZ,EAahB,OAZAH,EAASv6C,IAAIs7C,EAAW,CACtB7zC,GAAIA,EACJuzC,GAAIA,EACJD,SAAUJ,IAAiBK,EAC3Bt5C,KAAMA,EACNu5C,KAAMA,IAEHR,IACHA,GAAa,GACb,EAAIH,EAAMr6C,SAAS46C,IAErBH,GAAW,EACJY,CACT,CACA,SAASC,EAASh5B,GACZg4B,EAASlqB,IAAI9N,IACfg4B,EAASlC,OAAO91B,GAEI,IAAlBg4B,EAASjC,OACXmC,GAAa,EAEjB,CACAl8C,EAAA,QAAkB,CAChBoO,WAAY,SAAoBlF,GAC9B,IAAK,IAAIhG,EAAOhB,UAAUrD,OAAQsE,EAAOhF,MAAM+E,EAAO,EAAIA,EAAO,EAAI,GAAIE,EAAO,EAAGA,EAAOF,EAAME,IAC9FD,EAAKC,EAAO,GAAKlB,UAAUkB,GAG7B,OAAOy5C,EAAM,CACX3zC,GAAIA,EACJuzC,GAHOv6C,UAAUrD,OAAS,QAAsB4K,IAAjBvH,UAAU,GAAmBA,UAAU,GAAK,EAI3EiB,KAAMA,EACNu5C,KAtFa,GAwFjB,EACA7c,aAAcmd,EACdC,YAAa,SAAqB/zC,GAChC,IAAK,IAAIyd,EAAQzkB,UAAUrD,OAAQsE,EAAOhF,MAAMwoB,EAAQ,EAAIA,EAAQ,EAAI,GAAIE,EAAQ,EAAGA,EAAQF,EAAOE,IACpG1jB,EAAK0jB,EAAQ,GAAK3kB,UAAU2kB,GAG9B,OAAOg2B,EAAM,CACX3zC,GAAIA,EACJuzC,GAHOv6C,UAAUrD,OAAS,QAAsB4K,IAAjBvH,UAAU,GAAmBA,UAAU,GAAK,EAI3EiB,KAAMA,EACNu5C,KAlGc,GAoGlB,EACAQ,cAAeF,yBC5HjB,IAAIlmB,EAAU,gBACd,SAASjF,EAAyB1xB,GAChC,GAAI,mBAAqB+xB,QAAS,OAAO,KACzC,IAAIjyB,EAAI,IAAIiyB,QACV5f,EAAI,IAAI4f,QACV,OAAQL,EAA2B,SAAkC1xB,GACnE,OAAOA,EAAImS,EAAIrS,CACjB,GAAGE,EACL,CAkBAJ,EAAOC,QAjBP,SAAiCG,EAAGF,GAClC,IAAKA,GAAKE,GAAKA,EAAEE,WAAY,OAAOF,EACpC,GAAI,OAASA,GAAK,UAAY22B,EAAQ32B,IAAM,mBAAqBA,EAAG,MAAO,CACzE,QAAWA,GAEb,IAAImS,EAAIuf,EAAyB5xB,GACjC,GAAIqS,GAAKA,EAAEwf,IAAI3xB,GAAI,OAAOmS,EAAE9Q,IAAIrB,GAChC,IAAIC,EAAI,CACJuE,UAAW,MAEbzE,EAAI5B,OAAOgD,gBAAkBhD,OAAOiD,yBACtC,IAAK,IAAIm5B,KAAKv6B,EAAG,GAAI,YAAcu6B,GAAK,CAAC,EAAEv5B,eAAeC,KAAKjB,EAAGu6B,GAAI,CACpE,IAAIr7B,EAAIa,EAAI5B,OAAOiD,yBAAyBpB,EAAGu6B,GAAK,KACpDr7B,IAAMA,EAAEmC,KAAOnC,EAAEoC,KAAOnD,OAAOgD,eAAelB,EAAGs6B,EAAGr7B,GAAKe,EAAEs6B,GAAKv6B,EAAEu6B,EACpE,CACA,OAAOt6B,EAAW,QAAID,EAAGmS,GAAKA,EAAE7Q,IAAItB,EAAGC,GAAIA,CAC7C,EAC0CL,EAAOC,QAAQK,YAAa,EAAMN,EAAOC,QAAiB,QAAID,EAAOC,uFCI/G,IAlB8C2D,IACrCgV,EAAAA,EAAAA,KAACC,EAAAA,GAAQ,CAACtK,SAAUA,KACzBqK,EAAAA,EAAAA,KAAA,UACEnV,WACEqoB,EAAAA,EAAAA,GACE,aACAloB,EAAMH,UACNG,EAAMw5C,OAAS,SAGnBrkC,QAASnV,EAAMmV,QACfc,MAAOjW,EAAMiW,MAAMtL,SAElB3K,EAAM2K,mCCzBbvO,EAAOC,QAAU,CACf,QAAW,EAAQ,MACnBK,YAAY,irBCFd,SAAe8G,IAQR,IARS,KACf5E,EADe,aAEf66C,EAFe,YAGfC,EAHe,WAIfC,EAJe,UAKfC,EALe,eAMfC,EANe,EAOfr9C,GAPcgH,EASd,IAAKi2C,EAAc,OAEnB,MAAQjxB,QAASsxB,GAAiCF,EAArBG,EAAA/Q,EAAqB4Q,EAAlDI,GAOA,OALAH,EAAe3wC,KAAf3G,EAAAA,EAAA,GACIw3C,GADgB,IAEnBn7C,UAIA86C,GACuB,mBAAhBA,GACPA,EAAY,CACXvyB,MAAOwyB,EACPzwC,KAAM0wC,EACNh7C,OACApC,KAPF,kFClBD,IAAAG,EAAAqB,EAAApB,EAAA,OACAyxB,EAAAnwB,EAAAtB,EAAA,OACAg/B,EAAAh/B,EAAA,KACAq9C,EAAA/7C,EAAAtB,EAAA,WAEMs9C,EAAN,SAAA/7B,GACC,SAAA+7B,EAAYl6C,GAAQ,IAADV,EAClBA,EAAA6e,EAAA1gB,KAAA,KAAMuC,IAAN,KACA,MAAMm6C,EACc,oBAAZhtC,QACPA,OAAOitC,WAAW,oCAEbC,EAAuBF,EAkD5B,OA/CAA,EAA4BzX,QAQ7BpjC,EAAK8I,MAAQ,CACZqxC,cAAc,EACdjb,iBAAkB6b,EAAqB3X,QAEvClmC,GAAG,EAEH89C,UAAW,EACXC,WAAY,EACZC,UAAW,CAAC,EACZZ,UAAW,CAAC,EACZF,aAAa,EAEbe,WAAY,EACZC,YAAa,EACbC,WAAY,CAAC,EACbhB,WAAY,CAAC,EACbiB,cAAc,EAEdC,cAAez9C,GAAOkC,EAAKkK,SAASpM,IAIpCi9C,GACkD,mBAA3CA,EAAqBjjC,iBAE5BijC,EAAqBjjC,iBAAiB,UAAU,KAC/C9X,EAAKkK,SAAS,CACbg1B,iBAAkB6b,EAAqB3X,SADxC,IAKD2X,GAC6C,mBAAtCA,EAAqBS,aAE5BT,EAAqBS,aAAY,KAChCx7C,EAAKkK,SAAS,CACbg1B,iBAAkB6b,EAAqB3X,SADxC,IAIDpjC,CACD,CAAAmM,EAAAyuC,EAAA/7B,GAAA,IAAAld,EAAAi5C,EAAA38C,UAQA,OARA0D,EAEDyH,kBAAA,WACChK,KAAK0J,MAAMyyC,eAAc,EAAAZ,EAAAl8C,WACzB,EAAAkD,EAEDG,OAAA,WACC,OAAOzE,EAAAoB,QAAAsD,cAACu6B,EAAA7+B,SAAD,CAAU6G,MAAOlF,KAAK0J,MAAtBwV,OAAA,KAAAC,SAAA,CAAAC,SAnET,6HAmESE,WAAA,GAAAC,aAAA,KAA8Bvf,KAAKsB,MAAM2K,SAChD,EAAAuvC,CAAA,CAlEF,CAA+Bv9C,EAAA2E,WAqE/B44C,EAAiB14C,UAAY,CAC5BmJ,SAAU0jB,EAAAtwB,QAAUa,KAAKmxB,YAD1B,MAIemqB,EAAAA,EAAAA,EAAAA,iCC5Ef99C,EAAOC,QAAUgS,GAAOO,mBAAmBP,GAAKtS,QAAQ,YAAYhB,GAAK,IAAIA,EAAEggD,WAAW,GAAGjvB,SAAS,IAAI1wB,oCCF1G,IAAI8jC,EAAO9iC,EAAOC,QAAU,CAAE8e,QAAS,UACrB,iBAAP6/B,MAAiBA,IAAM9b,uJCC3B,MAAM+b,EAAsB,CACjC56B,GAAI,mBACJ7F,MAAO,CACLiD,SAAU,WACVC,IAAK,EACLnI,MAAO,EACPC,OAAQ,EACR0lC,QAAS,EACTC,SAAU,SACVC,KAAM,mBACNC,WAAY,SACZC,OAAQ,GAEV,YAAa,YACb,cAAe,+mBCLjB,SAASC,EAAc1vC,GACrB,MAAMuuB,GAAWD,EAAAA,EAAAA,GAAwBtuB,IACnC,KAAEoY,EAAI,OAAE9U,GAAWhC,OAAOvB,SAEhC,OAAgB,MAAZwuB,IACFjtB,OAAOquC,WAAWphB,EAASqhB,OAAStsC,EAAS8U,IACtC,EAIX,CAGA,IAAIy3B,EAAY,GAEhBvuC,OAAOiK,iBAAiB,sBAAsB/M,IACxC,6BAA6BzO,KAAKyO,EAAMsxC,SACtCD,IACFvuC,OAAOvB,SAASC,SAAW6vC,EAE/B,IAGF,MAAME,EAAmBA,CAAChwC,EAAUiwC,KAC7BN,EAAc3vC,EAASC,YAC1B6vC,EAAY9vC,EAASC,UACrBS,EAAAA,EAAAA,GAAU,mBAAoB,CAAEV,WAAUiwC,iBAC5C,EAGIC,EAAgBA,CAAClwC,EAAUiwC,KAC1BN,EAAc3vC,EAASC,YAC1BS,EAAAA,EAAAA,GAAU,gBAAiB,CAAEV,WAAUiwC,gBAOzC,EAGI1oC,EAAW,SAACkV,EAAI9tB,GAIpB,QAJ2B,IAAPA,IAAAA,EAAU,CAAC,GAIb,iBAAP8tB,EAET,YADAwJ,EAAAA,GAAc1e,SAASkV,GAIzB,MAAM,SAAExc,EAAQ,OAAEsD,EAAM,KAAE8U,IAASD,EAAAA,EAAAA,IAAUqE,GACvC+R,GAAWD,EAAAA,EAAAA,GAAwBtuB,GAUzC,GANIuuB,IACF/R,EAAK+R,EAASqhB,OAAStsC,EAAS8U,GAK9B9W,OAAOmlB,aAET,YADAnlB,OAAOvB,SAAWC,EAAWsD,EAAS8U,GAMxC,MAAM83B,EAAYtxC,YAAW,KAC3BuxC,EAAAA,EAAQp8B,KAAK,6BAA8B,CAAE/T,cAC7CS,EAAAA,EAAAA,GAAU,uBAAwB,CAChCV,SAAUuB,OAAOvB,UACjB,GACD,KAEHgQ,EAAAA,GAAOqgC,SAASpwC,GAAUomB,MAAKnmB,IAO7B,IAAKA,GAAiBA,EAAczD,SAAW6zC,EAAAA,GAAmBn2C,MAIhE,OAHAoH,OAAOgE,QAAQqC,aAAa,CAAC,EAAG,GAAI5H,SAASwD,MAC7CjC,OAAOvB,SAAWC,OAClBqwB,aAAa6f,GAM8BjwC,GAMzCA,EAAcO,KAAK8vC,yBACnBhvC,OAAOivC,4BAIL,kBAAmBtqB,WACoB,OAAvCA,UAAUC,cAAcM,YACqB,cAA7CP,UAAUC,cAAcM,WAAWjqB,OAEnC0pB,UAAUC,cAAcM,WAAWgqB,YAAY,CAC7CC,UAAW,uBAIfnvC,OAAOvB,SAAWC,EAAWsD,EAAS8U,IAG1Cs4B,EAAAA,EAAAA,UAAcl0B,EAAI9tB,GAClB2hC,aAAa6f,EAAU,GAE3B,EAEA,SAAS7uC,EAAmBoiB,EAAe9rB,GAAiB,IAAf,SAAEoI,GAAUpI,EACvD,MAAM,SAAEqI,EAAQ,KAAEoY,GAASrY,EACrBgjC,GAAUtiC,EAAAA,EAAAA,GAAU,qBAAsB,CAC9CgjB,kBAEAzjB,WACA0jB,YAAa,CAAE3jB,YACf4wC,uBAAwBh9C,GAAQ,CAC9B,EAGAd,KAAKkwB,cAAce,KAAKnwB,EAAMA,EAAKlC,QAGvC,GAAIsxC,EAAQ1zC,OAAS,EAGnB,OAAO0zC,EAAQA,EAAQ1zC,OAAS,GAGlC,GAAIo0B,EAAiB,CACnB,MACE1jB,UAAYC,SAAU4wC,IACpBntB,EACJ,GAAImtB,IAAgB5wC,EAGlB,OAAOoY,EAAO2L,UAAU3L,EAAKpoB,MAAM,IAAM,CAAC,EAAG,EAEjD,CACA,OAAO,CACT,CAeC,IAEK6gD,EAAc,SAAAv9C,GAClB,SAAAu9C,EAAY18C,GAAQ,IAADV,EAEuB,OADxCA,EAAAH,EAAA1B,KAAA,KAAMuC,IAAM,MACP28C,gBAAkBlwC,EAAAA,YAAiBnN,CAC1C,EAACmM,EAAAA,EAAAA,GAAAixC,EAAAv9C,GAAA,IAAA8B,EAAAy7C,EAAAn/C,UAwBA,OAxBA0D,EAED2H,mBAAA,SAAmBC,EAAWszB,GAC5Bpb,uBAAsB,KACpB,IAAI67B,EAAW,eAAel+C,KAAKsB,MAAM4L,SAASC,WAC9CpF,SAASwP,QACX2mC,EAAWn2C,SAASwP,OAEtB,MAAM4mC,EAAep2C,SAASq2C,iBAAiB,4BAC3CD,GAAgBA,EAAa3hD,SAC/B0hD,EAAWC,EAAa,GAAGE,aAE7B,MAAMC,EAAkB,gBAAgBJ,IACxC,GAAIl+C,KAAKi+C,gBAAgB16C,QAAS,CACRvD,KAAKi+C,gBAAgB16C,QAAQg7C,YAC7BD,IACtBt+C,KAAKi+C,gBAAgB16C,QAAQg7C,UAAYD,EAE7C,IAEJ,EAAC/7C,EAEDG,OAAA,WACE,OAAO4T,EAAAA,EAAAA,KAAA,MAAAzS,EAAAA,EAAA,GAAS04C,GAAmB,IAAEn3C,IAAKpF,KAAKi+C,kBACjD,EAACD,CAAA,CA5BiB,CAASjwC,EAAAA,WA+B7B,MAAMywC,EAAuBA,CAACrB,EAAcsB,KAAkB,IAADC,EAAAC,EAC3D,OAAIxB,EAAazsC,OAAS+tC,EAAa/tC,OAInCysC,SAAmB,QAAPuB,EAAZvB,EAAczzC,aAAK,IAAAg1C,OAAP,EAAZA,EAAqB9/C,QAAQ6/C,SAAmB,QAAPE,EAAZF,EAAc/0C,aAAK,IAAAi1C,OAAP,EAAZA,EAAqB//C,IAI1C,EAGd,IACMggD,EAAY,SAAA5R,GAChB,SAAA4R,EAAYt9C,GAAQ,IAADyJ,EAEqB,OADtCA,EAAAiiC,EAAAjuC,KAAA,KAAMuC,IAAM,KACZ47C,EAAiB57C,EAAM4L,SAAU,MAAKnC,CACxC,EAACgC,EAAAA,EAAAA,GAAA6xC,EAAA5R,GAAA,IAAA6R,EAAAD,EAAA//C,UA2BA,OA3BAggD,EAED70C,kBAAA,WACEozC,EAAcp9C,KAAKsB,MAAM4L,SAAU,KACrC,EAAC2xC,EAED9kB,sBAAA,SAAsB5vB,GACpB,QAAIq0C,EAAqBr0C,EAAU+C,SAAUlN,KAAKsB,MAAM4L,YACtDgwC,EAAiBl9C,KAAKsB,MAAM4L,SAAU/C,EAAU+C,WACzC,EAGX,EAAC2xC,EAED30C,mBAAA,SAAmBC,GACbq0C,EAAqBr0C,EAAU+C,SAAUlN,KAAKsB,MAAM4L,WACtDkwC,EAAcp9C,KAAKsB,MAAM4L,SAAU/C,EAAU+C,SAEjD,EAAC2xC,EAEDn8C,OAAA,WACE,OACE8T,EAAAA,EAAAA,MAACzI,EAAAA,SAAc,CAAA9B,SAAA,CACZjM,KAAKsB,MAAM2K,UACZqK,EAAAA,EAAAA,KAAC0nC,EAAc,CAAC9wC,SAAUA,aAGhC,EAAC0xC,CAAA,CA/Be,CAAS7wC,EAAAA,kCC7N3B,SAAS+wC,EAAejhD,EAAGoJ,GACzB,IAAK,IAAIjK,KAAKa,EACZ,KAAMb,KAAKiK,GAAI,OAAO,EACvB,IAAK,IAAI83C,KAAM93C,EACd,GAAIpJ,EAAEkhD,KAAQ93C,EAAE83C,GAAK,OAAO,EAC7B,OAAO,CACV,skBCqGA,MAzGqB,SAAAt+C,GACnB,SAAAu+C,EAAY19C,GAAQ,IAADV,EACjBA,EAAAH,EAAA1B,KAAA,OAAO,KACP,MAAM,SAAEmO,EAAQ,cAAEE,GAAkB9L,EAMnC,OALDV,EAAK8I,MAAQ,CACXwD,SAAQrJ,EAAA,GAAOqJ,GACfE,cACEA,GACA8P,EAAAA,GAAOozB,aAAapjC,EAASC,SAAU,CAAE8xC,kBAAkB,KAC9Dr+C,CACH,EAACmM,EAAAA,EAAAA,GAAAiyC,EAAAv+C,GAAAu+C,EAEMl1C,yBAAP,SAA+BhF,EAAeiF,GAAY,IAA1B,SAAEmD,GAAUpI,EAC1C,GAAIiF,EAAUmD,SAASwD,OAASxD,EAASwD,KAAM,CAK7C,MAAO,CACLtD,cALoB8P,EAAAA,GAAOozB,aAAapjC,EAASC,SAAU,CAC3D8xC,kBAAkB,IAKlB/xC,SAAQrJ,EAAA,GAAOqJ,GAEnB,CAEA,MAAO,CACLA,SAAQrJ,EAAA,GAAOqJ,GAEnB,EAAC,IAAA3K,EAAAy8C,EAAAngD,UA2EA,OA3EA0D,EAED28C,cAAA,SAAcC,GACZjiC,EAAAA,GAAOqgC,SAAS4B,GAAS5rB,MAAKnmB,IACxBA,GAAiBA,EAAczD,SAAW6zC,EAAAA,GAAmBn2C,MAC/DrH,KAAK8K,SAAS,CACZoC,SAAQrJ,EAAA,GAAO4K,OAAOvB,UACtBE,mBAGFqB,OAAOgE,QAAQqC,aAAa,CAAC,EAAG,GAAI5H,SAASwD,MAC7CjC,OAAOvB,SAAWiyC,EACpB,GAEJ,EAAC58C,EAEDw3B,sBAAA,SAAsB0D,EAAWnyB,GAE/B,OAAKA,EAAU8B,cAcXpN,KAAK0J,MAAM0D,gBAAkB9B,EAAU8B,gBAIzCpN,KAAK0J,MAAM0D,cAAcK,YAAcnC,EAAU8B,cAAcK,YAK7DzN,KAAK0J,MAAM0D,cAAcC,OAAS/B,EAAU8B,cAAcC,SAM5DrN,KAAK0J,MAAMwD,SAAStO,MAAQ0M,EAAU4B,SAAStO,MAC/C0M,EAAU8B,cAAcO,OACvBrC,EAAU8B,cAAcO,KAAKyxC,YAC5B9zC,EAAU8B,cAAcO,KAAKD,ODvErC,SAA0Bod,EAAU2S,EAAWnyB,GAC7C,OAAOwzC,EAAeh0B,EAASxpB,MAAOm8B,IAAcqhB,EAAeh0B,EAASphB,MAAO4B,EACpF,CCyEU+zC,CAAer/C,KAAMy9B,EAAWnyB,OAnCrCtL,KAAKk/C,cAAczhB,EAAUvwB,SAASC,WAC/B,EAmCX,EAAC5K,EAEDG,OAAA,WAiBE,OAAO1C,KAAKsB,MAAM2K,SAASjM,KAAK0J,MAClC,EAACs1C,CAAA,CAtGkB,CAASjxC,EAAAA,0lBCuB9B,MAAMmP,EAAS,IAAIoiC,EAAAA,GAAWC,KAA2B9wC,OAAO+wC,WAChEC,EAAAA,EAAAA,IAAUviC,GACVA,EAAOwiC,aAAa9xC,EAAAA,GAEpBa,OAAO8wC,cAAgBA,EACvB9wC,OAAOkxC,WAAarC,EAAAA,EACpB7uC,OAAOmxC,UAAYC,EAAAA,GHsIjB1sB,EAAAA,GAAcjB,QAAOpxB,IACnBA,EAAKoM,SAASkK,OAAStW,EAAKsW,MAAM,IAGpC3I,OAAOqxC,QAAUn2B,GAAMlV,EAASkV,EAAI,CAAEtsB,SAAS,IAC/CoR,OAAOquC,WAAanzB,GAAMlV,EAASkV,EAAI,CAAEtsB,SAAS,IAClDoR,OAAOsxC,YAAc,CAACp2B,EAAI9tB,IAAY4Y,EAASkV,EAAI9tB,GAGnDghD,EAAcpuC,OAAOvB,SAASC,WG3IhC6yC,EAAAA,EAAAA,GAAe,iBAAiBzsB,MAAK,MAG/B3lB,EAAAA,EAAAA,GAAU,yBAAyBrR,OAAO4jB,SAAS3jB,OAAS,GAC9D0B,EAAQ,MAWV,MAAM+hD,EAAe3+C,IACnBgV,EAAAA,EAAAA,KAACk1B,EAAAA,YAAYntC,SAAQ,CACnB6G,MAAO,CACLumC,QAAS,IACTC,SAAU,KACVz/B,UAEFqK,EAAAA,EAAAA,KAACxJ,EAAAA,EAAYjJ,EAAA,GAAKvC,MAIhB4+C,EAAcnyC,EAAAA,cAAoB,CAAC,GAAE,IAErCoyC,EAAU,SAAA1/C,GAAA,SAAA0/C,IAAA,OAAA1/C,EAAAV,MAAA,KAAAF,YAAA,KAqBb,OArBakN,EAAAA,EAAAA,GAAAozC,EAAA1/C,GAAA0/C,EAAAthD,UACd6D,OAAA,WACE,MAAM,SAAEuJ,GAAajM,KAAKsB,MAC1B,OACEgV,EAAAA,EAAAA,KAACwlB,EAAAA,SAAQ,CAAA7vB,SACNnH,IAAA,IAAC,SAAEoI,GAAUpI,EAAA,OACZwR,EAAAA,EAAAA,KAAC0oC,EAAe,CAAC9xC,SAAUA,EAASjB,SACjC8vB,IAAkC,IAAjC,cAAE3uB,EAAa,SAAEF,GAAU6uB,EAC3B,MAAMqkB,GAAqBC,EAAAA,EAAAA,MAC3B,OACE/pC,EAAAA,EAAAA,KAAC8G,EAAAA,mBAAmB/e,SAAQ,CAAC6G,MAAOk7C,EAAmBn0C,UACrDqK,EAAAA,EAAAA,KAAC4pC,EAAY7hD,SAAQ,CAAC6G,MAAO,CAAEkI,gBAAeF,YAAWjB,SACtDA,KAEyB,GAGlB,GAI1B,EAACk0C,CAAA,CArBa,CAASpyC,EAAAA,WAwBnBuyC,EAAe,SAAAtT,GAAA,SAAAsT,IAAA,OAAAtT,EAAAjtC,MAAA,KAAAF,YAAA,KAmClB,OAnCkBkN,EAAAA,EAAAA,GAAAuzC,EAAAtT,GAAAsT,EAAAzhD,UACnB6D,OAAA,WACE,OACE4T,EAAAA,EAAAA,KAAC4pC,EAAY5hD,SAAQ,CAAA2N,SAClB0gC,IAAA,IAAC,cAAEv/B,EAAa,SAAEF,GAAUy/B,EAAA,OAC3Br2B,EAAAA,EAAAA,KAACsoC,EAAY,CAAC1xC,SAAUA,EAASjB,UAC/BqK,EAAAA,EAAAA,KAAC6Y,EAAAA,GAAa,CACZjiB,SAAUA,EACVsB,mBAAoBA,EAAmBvC,UAEvCqK,EAAAA,EAAAA,KAACq1B,EAAAA,OAAM,CACLD,SAAU6U,GACVrzC,SAAUA,EACVyU,GAAG,uBAAsB1V,UAEzBqK,EAAAA,EAAAA,KAAC2pC,EAAYp8C,EAAAA,EAAA,CACX6J,KAC8B,cAA5BN,EAAcO,KAAKD,MACf8yC,EAAAA,EAAAA,GAAYtzC,EAASC,SAAUozC,IAC/B3uB,UACExkB,EAAcO,KAAKyxC,WACjBhyC,EAAcO,KAAKD,OAGzB1N,KAAKsB,OAAK,IACd4L,SAAUA,EACVE,cAAeA,GACXA,EAAcC,YAIX,GAIvB,EAACizC,CAAA,CAnCkB,CAASvyC,EAAAA,WAsC9B,MAAM,SAAE0yC,EAAUvzC,SAAUwzC,GAAejyC,OAUzCgyC,GACAF,GAAgBE,IAAaC,EAAWvzC,YAEtC+P,EAAOyjC,eAAcH,EAAAA,EAAAA,GAAYE,EAAWvzC,SAAUozC,MACzC,cAAbE,GACAA,EAASp3B,MAAM,eACfo3B,EAASp3B,MAAM,+CAGjB5U,EAAAA,EAAAA,UAAS8rC,GAAgBE,EAAWC,EAAWjwC,OAASiwC,EAAWn7B,KAAM,CACvEloB,SAAS,IAIbwiD,EAAAA,GAAatC,SAASmD,EAAWvzC,UAAUomB,MAAK5lB,IAC9C,IAAKA,GAAQA,EAAKhE,SAAW6zC,EAAAA,GAAmBn2C,MAAO,CACrD,MAAM8W,EAAU,sBAAsBuiC,EAAWvzC,0CAIjD,GAAIQ,GAAQA,EAAKxG,MAEf,MADAjD,QAAQiD,MAAMgX,GACRxQ,EAAKxG,MAGb,MAAM,IAAIE,MAAM8W,EAClB,CAEA1P,OAAOivC,0BAA4B/vC,EAAKA,KAAK8vC,uBAE7C,MAAMmD,GAAWhzC,EAAAA,EAAAA,GACf,kBACA,CAAE3F,SAASqO,EAAAA,EAAAA,KAACgqC,EAAe,MAC3BhqC,EAAAA,EAAAA,KAACgqC,EAAe,KAChBvS,IAAiB,IAAhB,OAAElgC,GAAQkgC,EACT,MAAO,CAAE9lC,QAAS4F,EAAQ,IAE5BC,MAEI+yC,EAAM,WACV,MAAMC,EAAsB/yC,EAAAA,QAAa,GAazC,OAXAA,EAAAA,WAAgB,KACT+yC,EAAoBv9C,UACvBu9C,EAAoBv9C,SAAU,EAC1BsU,YAAYkpC,MACdlpC,YAAYkpC,KAAK,0BAGnBnzC,EAAAA,EAAAA,GAAU,yBACZ,GACC,KAEI0I,EAAAA,EAAAA,KAAC6pC,EAAU,CAAAl0C,SAAE20C,GACtB,EAEMI,GAAWpzC,EAAAA,EAAAA,GACf,8BACAxG,EACAyO,EAASorC,YAAcprC,EAASorC,YAAcprC,EAAAA,SAC9C,GAEF,SAASqrC,IACP,MAAMC,EACc,oBAAX1yC,OACH1G,SAAS4N,eAAe,aACxB,KAEFqrC,IAAanrC,EAASorC,YACxBD,EAASG,GAAa7qC,EAAAA,EAAAA,KAACuqC,EAAG,KAE1BG,GAAS1qC,EAAAA,EAAAA,KAACuqC,EAAG,IAAKM,EAEtB,CAIA,MAAMC,EAAMr5C,SACZ,GACqB,aAAnBq5C,EAAI5P,YACgB,YAAnB4P,EAAI5P,aAA6B4P,EAAIjpC,gBAAgBkpC,SAEtDt1C,YAAW,WACTm1C,GACF,GAAG,OACE,CACL,MAAMt1C,EAAU,WACdw1C,EAAI/oC,oBAAoB,mBAAoBzM,GAAS,GACrD6C,OAAO4J,oBAAoB,OAAQzM,GAAS,GAE5Cs1C,GACF,EAEAE,EAAI1oC,iBAAiB,mBAAoB9M,GAAS,GAClD6C,OAAOiK,iBAAiB,OAAQ9M,GAAS,EAC3C,IACA,0BCzOJ,MAAMhE,EAAU1J,EAAQ,OAClB,2BAAEojD,EAA0B,SAAE/D,EAAQ,aAAEjN,GAC5CpyC,EAAAA,MAAAA,GAEFP,EAAQ,EAAY,SAACk2C,EAAK/yC,EAAWygD,EAAeC,QAAtB,IAAJ1gD,IAAAA,EAAO,CAAC,GAYhC,IAAIovC,EAAUtoC,EAAQxL,KAAIqxB,IACxB,IAAKA,EAAOA,OAAOomB,GACjB,OAGF/yC,EAAKwgD,2BAA6BA,EAClCxgD,EAAKy8C,SAAWA,EAChBz8C,EAAKwvC,aAAeA,EAEpB,MAAMziC,EAAS4f,EAAOA,OAAOomB,GAAK/yC,EAAM2sB,EAAO5xB,SAI/C,OAHIgS,GAAU2zC,IACZ1gD,EAAO0gD,EAAa,CAAE1gD,OAAM+M,SAAQ4f,YAE/B5f,CAAM,IAMf,OAFAqiC,EAAUA,EAAQ3zC,QAAOsR,QAA4B,IAAXA,IAEtCqiC,EAAQ1zC,OAAS,EACZ0zC,EACEqR,EACF,CAACA,GAED,EAEX,EAEA5jD,EAAQ,EAAiB,CAACk2C,EAAK/yC,EAAMygD,IACnC35C,EAAQmf,QACN,CAAC06B,EAAU1/B,IACTA,EAAK0L,OAAOomB,GACR4N,EAASluB,MAAK,IAAMxR,EAAK0L,OAAOomB,GAAK/yC,EAAMihB,EAAKlmB,WAChD4lD,GACN5yC,QAAQC,6BCjDZ,IAAI4yC,EAAShkD,EAAOC,QAA2B,oBAAV8Q,QAAyBA,OAAOU,MAAQA,KACzEV,OAAwB,oBAAR+7B,MAAuBA,KAAKr7B,MAAQA,KAAOq7B,KAE3DqG,SAAS,cAATA,GACc,iBAAP8Q,MAAiBA,IAAMD,sCCFlC/jD,EAAQ,GAAuBA,EAAQ,QAAgB,EAEvD,IAAI02B,EAAiB,EAAQ,MAE7B12B,EAAQ,GAAgB02B,EAAenF,cAEvC,IAAI0yB,EAAwB,EAAQ,MAEpCjkD,EAAQ,GAAuBikD,EAAsB3tB,2CCXrD,IAAIwc,EAAmB,EAAQ,IAQ/B/yC,EAAOC,QAPP,SAAqCC,EAAGC,GACtC,GAAID,EAAG,CACL,GAAI,iBAAmBA,EAAG,OAAO6yC,EAAiB7yC,EAAGC,GACrD,IAAIoS,EAAI,CAAC,EAAEmd,SAASruB,KAAKnB,GAAGT,MAAM,GAAI,GACtC,MAAO,WAAa8S,GAAKrS,EAAEyE,cAAgB4N,EAAIrS,EAAEyE,YAAYoB,MAAO,QAAUwM,GAAK,QAAUA,EAAInU,MAAMspB,KAAKxnB,GAAK,cAAgBqS,GAAK,2CAA2C/S,KAAK+S,GAAKwgC,EAAiB7yC,EAAGC,QAAK,CACtN,CACF,EAC8CH,EAAOC,QAAQK,YAAa,EAAMN,EAAOC,QAAiB,QAAID,EAAOC,2ECR5G,MAAMkkD,EAAyBA,KACpC,MAAM1+C,EAAwB,GAC9B,MAAO,CACLiV,IAAMvR,GAAiB1D,EAAUuC,KAAKmB,GACtCi7C,SAAUA,IAAM3+C,EAAU9C,SAAQgD,GAAKA,MACxC,0HCFI,SAASkL,EAAezJ,GAAe,IAAd,QAAEmD,GAASnD,EACzC,OAAOwR,EAAAA,EAAAA,KAACyrC,EAAAA,EAAa,CAAA91C,SAAEhE,GACzB,qCCLA,MAAM8F,EAAQ7P,EAAQ,OAChB,SAAEuW,GAAavW,EAAQ,MAEvBs9C,EAAmBt9C,EAAAA,MAAAA,EAEzBR,EAAOC,QAAUmH,IAAkB,IAAjB,QAAEmD,GAAHnD,EAWhB,MAVuB,oBAAZ2J,QACVA,OAAOiK,iBAAiB,YAAY,SAAS/M,GAExC8C,OAAOC,oBACVD,OAAOuzC,0BAA2B,EAClCvtC,EAAShG,OAAOwzC,sBAEjB,IAGKl0C,EAAApL,cAAC64C,EAAD,CAAAt8B,YAAA,EAAAC,SAAA,CAAAC,uHAAAE,WAAA,GAAAC,aAAA,IAAmBtX,EAA1B,0JCXDi6C,EAAAA,EAAAA,IAAU,CAGRC,WAAY,6JCsDd,MA9CqB7gD,IACnB,MAAMsF,GAAItD,EAAAA,EAAAA,IAAShC,GACboC,GAAIW,EAAAA,EAAAA,KAAS,MACjB,SAAIa,GACF,OAAO0B,EAAEw7C,QACX,EACA,SAAIl9C,CAAMqoB,GAAI,IAAD80B,EACH,QAARA,EAAAz7C,EAAE07C,cAAM,IAAAD,GAARA,EAAAtjD,KAAA6H,EAAW2mB,EACb,EACA,YAAIg1B,GACF,OAAO37C,EAAE27C,WAAa37C,EAAE07C,MAC1B,EACAE,wBAAwBprC,EAAAA,EAAAA,KAAQtZ,IAC9B4F,EAAEwB,MAAQpH,EAAE64B,cAAc8rB,QAC1B77C,EAAE87C,UAAY97C,EAAE87C,SAASh/C,EAAEwB,MAAM,QAGrC,OAAOoR,EAAAA,EAAAA,KAACC,EAAAA,GAAQ,CAACtK,SAAUA,KACzBuK,EAAAA,EAAAA,MAAA,SAAOrV,WACLqoB,EAAAA,EAAAA,GACE,cACAloB,EAAMH,UACNuC,EAAE6+C,UAAY,WACd7+C,EAAEwB,MAAQ,KAAO,OAEnBy9C,QAAS/7C,EAAE+a,GAAG1V,SAAA,EACdqK,EAAAA,EAAAA,KAAA,OAAKnV,UAAU,mBAAkB8K,SAC9B3K,EAAM2K,YAETuK,EAAAA,EAAAA,MAAA,OAAKrV,UAAU,0BAAyB8K,SAAA,EACtCqK,EAAAA,EAAAA,KAAA,SACErU,KAAK,WACLwgD,QAAS/+C,EAAEwB,MACXw9C,SAAUh/C,EAAE8+C,uBACZ7gC,GAAI/a,EAAE+a,GACNle,KAAMmD,EAAE+a,GACR4gC,SAAU7+C,EAAE6+C,YAEdjsC,EAAAA,EAAAA,KAAA,QAAMnV,UAAU,oBAAmB8K,UACjCqK,EAAAA,EAAAA,KAAA,QAAMnV,UAAU,mCAInB,EC6GP,MA9I0DG,IACxD,MAAMoC,GAAIW,EAAAA,EAAAA,KAAS,MACjB,oBAAIu+C,GACF,OAAQl/C,EAAEm/C,aAAaC,WACzB,EACAD,aAAc,CACZE,wBAAwB,EACxBC,uBAAuB,EACvBC,0BAA0B,EAC1BH,aAAa,GAEfI,oBAAoB,EACpBC,UAAW,CACTC,iBAAiB,EACjBC,oBAAoB,QAIxBC,EAAAA,EAAAA,IACE,oBACA,KAAMC,EAAAA,EAAAA,IAAK7/C,EAAEm/C,gBACb39C,GAASjJ,OAAOC,OAAOwH,EAAEm/C,aAAc39C,KAEzC,MAAMs+C,GAASpsC,EAAAA,EAAAA,KAAO,KACpB1T,EAAEm/C,aAAaC,aAAc,EAC7Bp/C,EAAEw/C,oBAAqB,CAAI,IAEvBO,GAAYrsC,EAAAA,EAAAA,KAAO,KACvB1T,EAAEm/C,aAAaC,aAAc,EAC7Bp/C,EAAEm/C,aAAaG,uBAAwB,EACvCt/C,EAAEm/C,aAAaI,0BAA2B,EAC1CS,GAAc,IAEVA,GAAetsC,EAAAA,EAAAA,KAAO,KAC1B1T,EAAEw/C,oBAAqB,EACvBx/C,EAAEm/C,aAAaC,aAAc,EAC7Ba,GAAgB,IAEZA,EAAiBr0C,UACjB5L,EAAEm/C,aAAaG,6BAA6BY,IAC5ClgD,EAAEm/C,aAAaI,gCAAgCY,GAAQ,EAGvDA,EAASA,IAAM,IAAIh1C,SAAcuI,EAAAA,EAAAA,KAAQtI,IACzCpL,EAAEy/C,UAAUE,qBAChB3/C,EAAEy/C,UAAUE,oBAAqB,EAE9BpjC,CAAAA,EAAY6jC,qBCrEkBx0C,YAEnCnL,EAAAA,EAAAA,IAAI,wBAAyBwd,GAE7B,MAAMoiC,GAAW5lB,EAAAA,EAAAA,IAAY,YACvB6lB,GAAM7lB,EAAAA,EAAAA,IAAY,OACxB6lB,EAAI31C,aAAa,SAAU,GAC3B21C,EAAI31C,aAAa,QAAS,GAC1B21C,EAAI31C,aAAa,MAAO,4DAGxBI,OAAOw1C,2BAA6Bx1C,OAAOw1C,4BAA8B,GACzEx1C,OAAOw1C,2BAA2Bv+C,KAFL,WAI7B,WAOmC+I,OAAOy1C,SANlCz1C,OAAOy1C,OAAS,SAASrmD,EAAEoJ,GAAGwH,OAAOy1C,OAAOptB,EAAEpxB,KAAK,CAAC7H,EAAEoJ,GAAG,EACjEwH,OAAOy1C,OAAOptB,EAAE,IAChB,IAAIpzB,EAAIqE,SAASmpC,qBAAqB,UAAU,GAC5CjqC,EAAIc,SAASpF,cAAc,UAC/BsE,EAAEhF,KAAO,kBAAkBgF,EAAEqI,OAAQ,EACrCrI,EAAE6uB,IAAM,yDACRpyB,EAAE0tC,WAAWhV,aAAan1B,EAAGvD,EAAI,CAPjC,IASAo7B,EAAAA,EAAAA,KAAwB,IAAMilB,IAAU,IAAMh8C,SAASkQ,MAAK,ED8CtBksC,CAAsBlkC,CAAAA,EAAYmkC,sBAA8B,KAGhGR,EAASA,IAAM,IAAI/0C,SAAcuI,EAAAA,EAAAA,KAAQtI,IACzCpL,EAAEy/C,UAAUC,kBAChB1/C,EAAEy/C,UAAUC,iBAAkB,EEvETiB,EAAC1iC,EAAY+U,KACpCxyB,QAAQC,IAAI,YAAawd,GAGzB,MAAM2iC,EAAiBv8C,SAASpF,cAAc,UAC9C2hD,EAAeh1C,OAAQ,EACvBg1C,EAAexuB,IAAM,+CAA+CnU,IAGpE,MAAM4iC,EAAex8C,SAASpF,cAAc,UAC5C4hD,EAAavsC,UAAY,yJAIL2J,WAIpB5Z,SAAS82B,KAAKnf,YAAY4kC,GAC1Bv8C,SAAS82B,KAAKnf,YAAY6kC,GAG1BD,EAAe3lB,OAAS,IAAMjI,aAAM,EAANA,GAAU,EFuDb2tB,CAAUpkC,eAAqBnR,GACnDA,KAGD0iB,GAAS7d,EAAAA,EAAAA,IAAc,IAAK7D,EAAAA,IAAa,GAe/C,OAbAia,EAAAA,EAAAA,IAAW,MACTpP,EAAAA,EAAAA,KAAK,YACCqF,EAAAA,KACJvR,OAAO+1C,wBAA0BhB,EACjC9/C,EAAEm/C,aAAaE,wBAAyB,QAClCY,IACFnyB,GAAU/iB,OAAOg2C,WAEnBh2C,OAAOg2C,UAAU/+C,KAAK,CAAE8rB,WAE5B,GATA7W,EASI,KAGCrE,EAAAA,EAAAA,KAACC,EAAAA,GAAQ,CAACtK,SAAUA,KACzBuK,EAAAA,EAAAA,MAAA,OAAKrV,UAAU,mBAAkB8K,SAAA,CAC9BvI,EAAEk/C,mBAAoBpsC,EAAAA,EAAAA,MAAA,WAASrV,UAAU,yBAAwB8K,SAAA,EAChEuK,EAAAA,EAAAA,MAAA,OAAKrV,UAAU,gCAA+B8K,SAAA,EAC5CqK,EAAAA,EAAAA,KAAA,MAAArK,SAAI,qCAEJuK,EAAAA,EAAAA,MAAA,KAAAvK,SAAA,CAAG,+EAA2EqK,EAAAA,EAAAA,KAAC0S,EAAAA,EAAY,CAACW,GAAG,0BAA0BpS,MAAM,yBAAwBtL,SAAC,+CAAyD,WAEnNuK,EAAAA,EAAAA,MAACc,EAAAA,EAAU,CAACnW,UAAU,qCAAqCsV,QAASgtC,EAAW3I,OAAK,EAAA7uC,SAAA,EAClFqK,EAAAA,EAAAA,KAAA,OAAKnV,UAAU,+CAA8C8K,SAAC,QAC9DqK,EAAAA,EAAAA,KAAA,OAAArK,SAAK,iBAIPvI,EAAEw/C,qBAAsB1sC,EAAAA,EAAAA,MAAA,OAAKrV,UAAU,mCAAkC8K,SAAA,EACvEqK,EAAAA,EAAAA,KAAA,QAAMnV,UAAU,qCAChBqV,EAAAA,EAAAA,MAAA,OAAKrV,UAAU,0BAAyB8K,SAAA,EACtCuK,EAAAA,EAAAA,MAAA,UAAAvK,SAAA,EACEqK,EAAAA,EAAAA,KAAA,MAAArK,SAAI,sBACJqK,EAAAA,EAAAA,KAACouC,EAAAA,EAAI,QAEPluC,EAAAA,EAAAA,MAAA,OAAKrV,UAAU,8BAA6B8K,SAAA,EAC1CqK,EAAAA,EAAAA,KAAA,KAAArK,SAAG,6IACHuK,EAAAA,EAAAA,MAACmuC,EAAW,CACVhjC,GAAG,2BACHygC,OAAQA,IAAM1+C,EAAEm/C,aAAaE,uBAAuB92C,SAAA,EAEpDqK,EAAAA,EAAAA,KAAA,MAAArK,SAAI,uBACJqK,EAAAA,EAAAA,KAAA,KAAArK,SAAG,6HAELuK,EAAAA,EAAAA,MAACmuC,EAAW,CACVhjC,GAAG,0BACHygC,OAAQA,IAAM1+C,EAAEm/C,aAAaG,sBAC7BV,OAAQ/0B,GAAK7pB,EAAEm/C,aAAaG,sBAAwBz1B,EAAEthB,SAAA,EAEtDqK,EAAAA,EAAAA,KAAA,MAAArK,SAAI,sBACJqK,EAAAA,EAAAA,KAAA,KAAArK,SAAG,qRACHqK,EAAAA,EAAAA,KAAA,KAAArK,UAAGqK,EAAAA,EAAAA,KAAA,KAAG5F,KAAK,wDAAwD9Q,OAAO,SAASgqB,IAAI,aAAY3d,SAAC,6CAEtGuK,EAAAA,EAAAA,MAACmuC,EAAW,CACVhjC,GAAG,0BACHygC,OAAQA,IAAM1+C,EAAEm/C,aAAaI,yBAC7BX,OAAQ/0B,GAAK7pB,EAAEm/C,aAAaI,yBAA2B11B,EAAEthB,SAAA,EAEzDqK,EAAAA,EAAAA,KAAA,MAAArK,SAAI,sBACJqK,EAAAA,EAAAA,KAAA,KAAArK,SAAG,qHAGHqK,EAAAA,EAAAA,KAAA,KAAArK,UAAGqK,EAAAA,EAAAA,KAAA,KAAG5F,KAAK,gEAAgE9Q,OAAO,SAASgqB,IAAI,aAAY3d,SAAC,oDAGhHuK,EAAAA,EAAAA,MAAA,UAAAvK,SAAA,EACEqK,EAAAA,EAAAA,KAACouC,EAAAA,EAAI,KACLluC,EAAAA,EAAAA,MAAA,OAAKrV,UAAU,2CAA0C8K,SAAA,EACvDqK,EAAAA,EAAAA,KAACgB,EAAAA,EAAU,CAACb,QAASitC,EAAaz3C,SAAC,8BACnCqK,EAAAA,EAAAA,KAACgB,EAAAA,EAAU,CAACb,QAASgtC,EAAUx3C,SAAC,+BAOzC,2FG7JP,MAAM24C,EAA0CtjD,IACvCgV,EAAAA,EAAAA,KAACC,EAAAA,GAAQ,CAACtK,SAAUA,KACzBuK,EAAAA,EAAAA,MAAA,QAAMrV,UAAU,gBAAe8K,SAAA,CAC5B2R,OAAOtc,EAAMxD,EAAE,MAAO0Y,EAAAA,EAAAA,MAAAquC,EAAAA,SAAA,CAAA54C,SAAA,EAAEqK,EAAAA,EAAAA,KAAA,UAAArK,SAAS3K,EAAMxD,EAAE,KAAY,SACrD4Y,EAAAA,EAAAA,IAASpV,EAAMxD,EAAE,KAAMwY,EAAAA,EAAAA,KAAA,QAAArK,SAAO3K,EAAMxD,EAAE,MAAagK,EAAAA,EAAAA,IAASxG,EAAMxD,EAAE,KAAMwY,EAAAA,EAAAA,KAACwuC,EAAS,CAACC,OAAQzjD,EAAMxD,EAAE,KAASwD,EAAMxD,EAAE,GAAK,QAK5HgnD,EAAsCxjD,IACnCgV,EAAAA,EAAAA,KAACC,EAAAA,GAAQ,CAACtK,SAAUA,KACzB,MAAMqO,EAAQre,OAAO4I,QAAQvD,EAAMyjD,QACnC,OACmB,IAAjBzqC,EAAM9d,QAAe8Z,EAAAA,EAAAA,KAACsuC,EAAa,CAAC9mD,EAAGwc,EAAM,MAC3ChE,EAAAA,EAAAA,KAAA,MAAInV,UAAU,YAAW8K,SACrBqO,EAAMle,KAAI,CAACiH,EAAGrG,KAAMsZ,EAAAA,EAAAA,KAAA,MAAArK,UACpBqK,EAAAA,EAAAA,KAACsuC,EAAa,CAAC9mD,EAAGuF,KADWrG,EAAIqG,EAAE,OAGlC,IAKb,QCuBA,MAnCoD/B,IAElD,MAAMsF,GAAItD,EAAAA,EAAAA,IAAShC,GAEboC,GAAIW,EAAAA,EAAAA,KAAS,MACjB2gD,aAPmB,4BAQnBC,QAAS,CAAC,EACV,iBAAIC,GACF,OAAOt+C,EAAEO,OAASP,EAAE9I,CACtB,EACA,gBAAIqnD,GACF,OAAOzhD,EAAEwhD,yBAAyBjpD,QAAS,aAAcyH,EAAEwhD,cAAgBxhD,EAAEwhD,cAAcE,SAA6B1hD,EAAEwhD,aAC5H,EACA,uBAAIG,GACF,OAAOppD,OAAOoJ,KAAK3B,EAAEuhD,SAASzoD,OAAS,CACzC,MAWF,OARAiiB,EAAAA,EAAAA,KAAkBrH,EAAAA,EAAAA,KAAO,KAAO,IAADkuC,EAAAC,EAAAzgD,EAAAi3B,EAAAypB,EAC7B,MAAM1nD,GAAKgK,EAAAA,EAAAA,IAASpE,EAAEyhD,eAA+B,QAAlBG,EAAI5hD,EAAEyhD,oBAAY,IAAAG,GAAdA,EAAgB/nC,KAAqB,QAAjBgoC,EAAG7hD,EAAEyhD,oBAAY,IAAAI,OAAA,EAAdA,EAAgBhoC,KAAO7Z,EAAEyhD,aACvFzhD,EAAEshD,aAAuF,QAA3ElgD,EAA8C,QAA9Ci3B,GAAIrlB,EAAAA,EAAAA,IAAS5Y,GAAKA,GAAKA,aAAC,EAADA,EAAGqgB,WAAWrgB,aAAC,EAADA,EAAGqJ,cAAM,IAAA40B,EAAAA,EAAoB,QAApBypB,EAAK9hD,EAAEwhD,qBAAa,IAAAM,OAAA,EAAfA,EAAiBrnC,eAAO,IAAArZ,EAAAA,EAAI,iBACzFgD,EAAAA,EAAAA,IAAShK,IAAM,WAAYA,GAC7B7B,OAAOC,OAAOwH,EAAEuhD,QAASnnD,aAAC,EAADA,EAAGinD,OAC9B,MAGKzuC,EAAAA,EAAAA,KAACC,EAAAA,GAAQ,CAACtK,SAAUA,KACzBuK,EAAAA,EAAAA,MAAA,OAAKrV,UAAU,gBAAe8K,SAAA,EAC5BqK,EAAAA,EAAAA,KAAA,KAAArK,SAAIvI,EAAEshD,eACJthD,EAAE2hD,sBAAuB/uC,EAAAA,EAAAA,KAACwuC,EAAS,CAACC,OAAQrhD,EAAEuhD,cAE/C,ECLP,MAhCmB,SAAAxkD,GACjB,SAAAglD,EAAYnkD,GAA4B,IAADV,EAER,OAD7BA,EAAAH,EAAA1B,KAAA,KAAMuC,IAAM,MACPoI,MAAQ,CAAEvC,MAAO,MAAOvG,CAC/B,EAACmM,EAAAA,EAAAA,GAAA04C,EAAAhlD,GAAAglD,EAEMC,yBAAP,SAAgCv+C,GAE9B,MAAO,CAAEA,QACX,EAAC,IAAA5E,EAAAkjD,EAAA5mD,UAoBA,OApBA0D,EAED2oC,kBAAA,SAAkB/jC,EAAgBw+C,IAChCnnC,EAAAA,EAAAA,IAAYrX,EACd,EAAC5E,EAEDG,OAAA,WACE,GAAM1C,KAAK0J,MAAMvC,MAAO,CACtB,MAAQ0uB,SAAU+vB,GAAa5lD,KAAKsB,MAEpC,OAAOgV,EAAAA,EAAAA,KAAA,OAAKnV,WAAWqoB,EAAAA,EAAAA,GAAc,gBAAiBxpB,KAAKsB,MAAMH,WAAW8K,SAExE25C,EACsB,iBAAbA,EAAwBA,EAAWA,EAAS5lD,KAAK0J,MAAMvC,QAC5DmP,EAAAA,EAAAA,KAACuvC,EAAa,CAAC1+C,MAAOnH,KAAK0J,MAAMvC,SAG3C,CAEA,OAAOnH,KAAKsB,MAAM2K,QACpB,EAACw5C,CAAA,CA7BgB,CAAS13C,EAAAA,WCO5B,IAAI4qC,GAAU,EAqJd,MA/I0Dr3C,IACxD,MAAM,GAAEsb,IAAOG,EAAAA,EAAAA,MACT+oC,GAA8B59B,EAAAA,EAAAA,KAC9BxkB,GAAIW,EAAAA,EAAAA,KAAS,MACjBy9C,UAAUD,EAAAA,EAAAA,KACVkE,uBAAuB,EACvB,KAAI1pD,GAAM,OAAOugB,EAAG3C,OAAO5d,CAAE,EAC7B,KAAIA,CAAEkxB,GAAK3Q,EAAG3C,OAAO5d,EAAIkxB,CAAE,EAC3B,KAAIvc,GAAM,OAAO4L,EAAG3C,OAAOjJ,CAAE,EAC7B,KAAIA,CAAEuc,GAAK3Q,EAAG3C,OAAOjJ,EAAIuc,CAAE,EAC3B,QAAIy4B,GAAS,OAAO72C,KAAKgT,MAAMze,EAAErH,EAAG,EACpC,QAAI4pD,GAAS,OAAO92C,KAAKgT,MAAMze,EAAEsN,EAAG,EACpC,MAAIk1C,GAAO,OAAOtpC,EAAGvD,SAASxC,KAAM,EACpC,MAAIsvC,GAAO,OAAOvpC,EAAGvD,SAASvC,MAAO,EACrC,kBAAIgD,GAAmB,OAAO8C,EAAGhD,GAAGE,cAAe,EACnD,WAAIN,GAAY,OAAOoD,EAAGvD,SAASG,OAAQ,EAC3C5Z,OAAQ,KACRwmD,KAAM,CACJpnC,IAAK,KACLC,KAAM,KACNpI,MAAO,KACPC,OAAQ,KACRuvC,OAAQ,MAEVC,sBAAwB7wC,IACtB,MAAM0B,EAAyB,KAAf1B,EAAG8wC,UAAmC,WAAhB9wC,EAAG8wC,SACzC,GAAIC,EAAAA,GAAQ,OAAOrvC,EACnB,MAAMsvC,EAA0B,UAAhBhxC,EAAG8wC,UAAyC,aAAhB9wC,EAAG8wC,UAA4C,UAAhB9wC,EAAG8wC,YAA0B9wC,EAAGixC,aAAa,OACxH,OAAOvvC,GAAWsvC,CAAM,EAE1BE,qBAAsBA,KACpB7qD,MAAMspB,KAAKrd,SAASq2C,iBAAiC,gCAAgC/9C,SAAQ,CAACqN,EAAM1Q,KAClG,MAAM4pD,GAAmD,IAAzChqC,EAAG3C,OAAO5d,EAAIugB,EAAGvD,SAASxC,MAAQ,MAAc7Z,EAAI,GAAK,GACnE6pD,GAAoD,IAA1CjqC,EAAG3C,OAAOjJ,EAAI4L,EAAGvD,SAASvC,OAAS,MAAc9Z,EAAI,GAAK,GAC1E0rB,EAAAA,GAAUiB,GAAGjc,EAAM,EAAG,CAAErR,EAAGuqD,EAAQ51C,EAAG61C,GAAS,IAEjD/qD,MAAMspB,KAAKrd,SAASq2C,iBAAiC,wBAAwB/9C,SAAQ,CAACqN,EAAM1Q,KAC1F,MAAM4pD,GAAmD,GAAzChqC,EAAG3C,OAAO5d,EAAIugB,EAAGvD,SAASxC,MAAQ,MAAa7Z,EAAI,GAAK,GAClE6pD,GAAoD,GAA1CjqC,EAAG3C,OAAOjJ,EAAI4L,EAAGvD,SAASvC,OAAS,MAAa9Z,EAAI,GAAK,GACzE0rB,EAAAA,GAAUiB,GAAGjc,EAAM,EAAG,CAAErR,EAAGuqD,EAAQ51C,EAAG61C,GAAS,GAC/C,EAEJC,iBAAiBnsC,EAAAA,EAAAA,KAAK,UAAY7c,GAChC,IAEE4F,EAAErH,EAAIyB,EAAEipD,QACRrjD,EAAEsN,EAAIlT,EAAEkpD,QACR,MAAMpnD,EAAS9B,EAAE8B,OACjB,IAAKA,EAAQ,OACT8D,EAAE4iD,sBAAsB1mD,KAAYA,EAAOsI,UAAUC,SAAS,kBAC1D4G,EAAAA,EAAAA,IAAK,IACXrL,EAAE9D,OAAS9B,EAAE8B,QAEV8D,EAAE9D,OAAS,KACZqnD,EAAAA,IAAUvjD,EAAEijD,sBAClB,CAAE,MAAM7oD,GACNopD,EAAYppD,EACd,CACF,IACAqpD,yBAAyB/vC,EAAAA,EAAAA,KAAO,KAC9B,IAAK,IAADgwC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EACF,IAAKhkD,EAAE9D,OAML,OALA8D,EAAE0iD,KAAKpnC,IAAM,KACbtb,EAAE0iD,KAAKnnC,KAAO,KACdvb,EAAE0iD,KAAKvvC,MAAQ,KACfnT,EAAE0iD,KAAKtvC,OAAS,UAChBpT,EAAE0iD,KAAKC,OAAS,MAGlB,MAAMsB,EAAKjkD,EAAE9D,OAAOgoD,wBACpBlkD,EAAE0iD,KAAKpnC,IAAM2oC,EAAG3oC,IAChBtb,EAAE0iD,KAAKnnC,KAAO0oC,EAAG1oC,KACjBvb,EAAE0iD,KAAKvvC,MAAQ8wC,EAAG9wC,MAClBnT,EAAE0iD,KAAKtvC,OAAS6wC,EAAG7wC,OACnB,MAAMuvC,EAAS3iD,EAAE9D,OAAO8mD,aAAa,oBACrChjD,EAAE0iD,KAAKC,OAASA,GAAUA,EAAS,EACA,QAAnCe,EAAAtB,EAA4BviD,eAAO,IAAA6jD,GAAnCA,EAAqCtrC,MAAMC,YACzC,YACA,cAA8B,OAAhBrY,EAAE0iD,KAAKnnC,KAAgBvb,EAAErH,EAAIqH,EAAE0iD,KAAKnnC,MAAqB,QAAjBooC,EAAI3jD,EAAE0iD,KAAKC,cAAM,IAAAgB,EAAAA,EAAI,IAAM,UAAyB,OAAf3jD,EAAE0iD,KAAKpnC,IAAetb,EAAEsN,EAAItN,EAAE0iD,KAAKpnC,KAAoB,QAAjBsoC,EAAI5jD,EAAE0iD,KAAKC,cAAM,IAAAiB,EAAAA,EAAI,IAAM,iBAA6B,QAAbC,EAAC7jD,EAAE0iD,KAAKvvC,aAAK,IAAA0wC,EAAAA,EAAI,GAA4B,GAAT,QAAdC,EAAC9jD,EAAE0iD,KAAKC,cAAM,IAAAmB,EAAAA,EAAI,IAAU9jD,EAAEwiD,QAAqB,QAAduB,EAAC/jD,EAAE0iD,KAAKtvC,cAAM,IAAA2wC,EAAAA,EAAI,GAA4B,GAAT,QAAdC,EAAChkD,EAAE0iD,KAAKC,cAAM,IAAAqB,EAAAA,EAAI,IAAUhkD,EAAEyiD,MAEhS,CAAE,MAAMroD,GACNopD,EAAYppD,EACd,KAEF+pD,aAAazwC,EAAAA,EAAAA,KAAQtZ,IACnB,IACE,MAAM8B,EAAS9B,EAAE8B,OACb8D,EAAE4iD,sBAAsB1mD,KAAS8D,EAAE9D,OAAS,KAClD,CAAE,MAAM9B,GACNopD,EAAYppD,EACd,KAEFgqD,mBAAmB1wC,EAAAA,EAAAA,KAAO,KACxB,IAAK,IAAD2wC,EAAAC,EACuC,OAAf,QAAtBD,EAAAhgD,SAASulC,qBAAa,IAAAya,OAAA,EAAtBA,EAAwBxB,WAAyD,YAAf,QAAtByB,EAAAjgD,SAASulC,qBAAa,IAAA0a,OAAA,EAAtBA,EAAwBzB,YACtE7iD,EAAE9D,OAASmI,SAASulC,cAExB,CAAE,MAAMxvC,GACNopD,EAAYppD,EACd,SAGEopD,EAAeppD,IACnBoG,QAAQwa,KAAK,2HACbsf,EAAAA,EAAAA,IAAgB,2BAChBxf,EAAAA,EAAAA,IAAY1gB,GACZ4F,EAAEo+C,SAASA,UAAU,EA4BvB,OA1BA/3B,EAAAA,EAAAA,IAAW,KACT,WACE,IAAI4uB,IACEn9B,EAAAA,IAAYS,EAAAA,IAAe9C,EAAAA,OAC7B8kB,EAAAA,EAAAA,IAAa,0BAAjB,OACMgqB,EAAAA,EAAAA,KAAK,IAAMvkD,EAAEwiD,IAAM,MACzB,IAcE,OAbAvN,GAAU,EACVlqC,OAAOiK,iBAAiB,QAAShV,EAAEmkD,aACnCp5C,OAAOiK,iBAAiB,YAAahV,EAAEojD,iBACvCpjD,EAAEo+C,SAAS1pC,KAAIhV,EAAAA,EAAAA,KAAS,IAAMM,EAAE9D,QAAQ8D,EAAEyjD,0BAC1Cp/C,SAAS2Q,iBAAiB,UAAWhV,EAAEokD,mBAAmB,GAC1DpkD,EAAEo+C,SAAS1pC,KAAI,KACb3J,OAAO4J,oBAAoB,QAAS3U,EAAEmkD,aACtCp5C,OAAO4J,oBAAoB,YAAa3U,EAAEojD,iBAC1C/+C,SAASsQ,oBAAoB,UAAW3U,EAAEokD,oBAC1CxsC,EAAAA,EAAAA,IAAa,yBAAyB,IAExC5X,EAAEo+C,SAAS1pC,KAAIhV,EAAAA,EAAAA,KAAS,IAAMM,EAAE8V,UAAS,IAAM9V,EAAE9D,OAAS,SAC1D0b,EAAAA,EAAAA,IAAa,0BACN5X,EAAEo+C,SAASA,QACpB,CAAE,MAAOhkD,GACPopD,EAAYppD,EACd,CAnBkD,CAoBnD,EAvBD,EAuBI,KAECwY,EAAAA,EAAAA,KAACC,EAAAA,GAAQ,CAACtK,SAAUA,IACzBuP,EAAAA,GAAWlF,EAAAA,EAAAA,KAACmvC,EAAa,CAAC5vB,SAAUA,IAAM,KAAK5pB,UAC7CqK,EAAAA,EAAAA,KAAA,OAAKnV,WAAWqoB,EAAAA,EAAAA,GAAc,mBAAoB9lB,EAAE9D,QAAU,gBAAgBqM,UAC5EqK,EAAAA,EAAAA,KAAA,OAAKnV,UAAU,2BAA2BiE,IAAK0gD,QAEhC,MAChB,ECtJP,MATgDxkD,IAC9C,MAAM,OAAEqb,EAAM,GAAEC,IAAOG,EAAAA,EAAAA,MACvB,OAAOzG,EAAAA,EAAAA,KAACC,EAAAA,GAAQ,CAACtK,SAAUA,IACzB2Q,EAAGvC,QAAQ7d,OAAS,EAAImgB,EAAOja,QAAO4T,EAAAA,EAAAA,KAAA,OAAKnV,UAAU,cAAa8K,SAC9D2Q,EAAGvC,WACG,MACP,ECXP,MAAMyB,EAAuB,CAC3BiD,SAAU,QACVC,KAAM,GACNC,MAAO,GACP0J,QAAS,GAiBX,MAd0Bu/B,KACjB5xC,EAAAA,EAAAA,KAAA,OAAKnV,UAAU,UAAS8K,UAC7BqK,EAAAA,EAAAA,KAAA,OAAKO,MAAM,KAAKC,OAAO,KAAKC,QAAQ,YAAY+E,MAAOA,EAAOqsC,MAAM,6BAA4Bl8C,UAC9FuK,EAAAA,EAAAA,MAAA,OAAKmL,GAAG,WAAW9K,MAAM,KAAKC,OAAO,KAAKC,QAAQ,YAAW9K,SAAA,EAC3DqK,EAAAA,EAAAA,KAAA,QAAMjT,EAAE,gIAAgI2T,KAAK,aAC7IV,EAAAA,EAAAA,KAAA,QAAMjT,EAAE,6KAA6K2T,KAAK,aAC1LV,EAAAA,EAAAA,KAAA,QAAMjT,EAAE,kHAAkH2T,KAAK,aAC/HV,EAAAA,EAAAA,KAAA,QAAMjT,EAAE,0bAA0b2T,KAAK,aACvcV,EAAAA,EAAAA,KAAA,QAAMjT,EAAE,sNAAsN2T,KAAK,ylBCG3OoxC,EAAAA,EAAAA,MACAC,MAYO,MAAM/5C,EAAmBxN,IAC9B,MAAM,MAAEQ,EAAK,QAAE2G,GAAYnH,EAC3B,OAAOwV,EAAAA,EAAAA,KAACC,EAAAA,GAAQ,CAACtK,SAAUA,KACzBuK,EAAAA,EAAAA,MAACsG,EAAAA,GAAWze,SAAQwF,EAAAA,EAAA,CAACqB,MAAOoX,EAAAA,IAAmBhb,GAAK,IAAA2K,SAAA,EAClDqK,EAAAA,EAAAA,KAAC4xC,EAAO,IACNjgD,GACFqO,EAAAA,EAAAA,KAACgyC,EAAgB,KACjBhyC,EAAAA,EAAAA,KAACiyC,EAAgB,KACjBjyC,EAAAA,EAAAA,KAACkyC,EAAW,SAEX,2qBC3CP,IAAAhpB,EAAAthC,EAAA,MACA++B,EAAA/+B,EAAA,MACAuqD,EAAAvqD,EAAA,MACAq9C,EAAA/7C,EAAAtB,EAAA,OAEA,oBAA0B4G,IAYnB,IAQFygB,GApBsB,GAC1BoE,EAD0B,MAE1Bhe,EAAQ,KAFkB,KAG1BnB,EAAO,CAAC,EAHkB,MAI1Bie,EAAQ,CAAC,EAJiB,aAK1BsyB,EAL0B,MAM1B2N,EAN0B,QAO1B5+B,EAP0B,cAQ1BqyB,EAR0B,UAS1BwM,EAT0B,QAU1BtrD,EAV0B,kBAW1BurD,GAXyB9jD,EAkBzB,GALI6G,IACHA,EAAMo0B,UACNp0B,EAAMq0B,kBAGH+a,EAAc,OAAO,EAKzB,GAAIpxB,EAAGlR,SAAS,KAAM,CACrB,MAAMowC,EAAUl/B,EAAGvpB,MAAM,KACzBupB,EAAKk/B,EAAQ,GACbtjC,EAAOsjC,EAAQ,EACf,CAGDp6C,OAAOC,mBAAoB,EAC3BD,OAAOwzC,sBAAuB,EAAAziB,EAAAspB,YAAWn/B,GAEzCwyB,EAAc,CACbpB,cAAc,EACda,UAAW,EACXC,WAAY,EACZxe,YAAa,EACbye,UAAW,CAAC,IAGThyB,GAA8B,mBAAZA,GACrBA,EAAQ4+B,GAGT,MACClsD,OAAQq/C,EAAa,EACrBve,MAAOse,EAAY,EACnBlyC,MAAOoyC,EAAY,CAAC,EACpBhyB,QAASkxB,EAAcA,QACpBxwC,GAEHhO,OAAQw/C,EAAc,EACtB1e,MAAOye,EAAa,EACpBryC,MAAOuyC,EAAa,CAAC,EACrBnyB,QAASoyB,EAAeA,OAJnB,YAKL7e,EAAc,GACX5U,EAEJ0zB,EAAc,CACbH,YAAaA,EACbD,WAAYA,EACZF,WAAYA,EACZD,UAAWA,EACXX,WAAYxyB,EACZyyB,UAAW1wC,EACX6yB,cACAurB,oBACA5N,YAAaA,CAACxwC,EAAMtK,EAAMpC,IAAMk9C,EAAYxwC,EAAMtK,EAAMpC,GACxDo+C,aAAcA,CAACzzB,EAAOvoB,EAAMpC,IAAMo+C,EAAazzB,EAAOvoB,EAAMpC,GAC5DA,EAAG6N,KAIJ,EAAAsxB,EAAAlxB,aAAW,MACV,EAAAyzB,EAAA/qB,UAASkV,EAAI,CACZjgB,MAAK7F,EAAA,GACD8kD,GAEJtrD,YAGD8+C,EAAc,CACbL,UAAWA,EACXv2B,QAFD,IAIE,EAAAkjC,EAAAM,OAAMnN,KAET,EAAA3e,EAAAlxB,aAAW,KAEVowC,EAAc,CAAEF,WAAYA,GAA5B,IACE,EAAAwM,EAAAM,OAAMnN,EAAYG,KAIrB,EAAA9e,EAAAlxB,aACC,IACCowC,EAAc,CACbJ,WAAY,EACZ1e,YAAa,EACb2e,YAAa,MAEf,EAAAyM,EAAAM,OAAMnN,EAAYG,EAAaC,IAGhC,MAAMgN,EACLpN,EAAYzsC,KAAK6S,IAAI65B,EAAYE,EAAaC,IAI/C,EAAA/e,EAAAlxB,aAAW,KAEV0C,OAAOC,mBAAoB,EAC3BD,OAAOwzC,sBAAuB,EAC9BxzC,OAAOuzC,0BAA2B,EAElC7F,EAAat4C,EAAC,CACb+3C,UAAW,EACXC,WAAY,EAEZd,cAAc,IAEX,EAAAQ,EAAAl8C,YANJ,IAQE,EAAAopD,EAAAM,OAAMC,GAAqB,EAd9B,sCCjHD,WACE,IA+LMj7C,EAAQ,EAAQ,MACpBrQ,EAAOC,QAhMmB,SAAUoQ,GACpC,OAAO,WACL,IAAIk7C,EAAwBl7C,EAAMpL,cAK9BumD,EAAmB,CAAC,UAAW,UAAW,QAAS,QAAS,UAAW,UAAW,UAAW,WAC7FC,EAAc,CAChBC,QAAS,CAAC,EACVC,QAAS,CAAC,GAERC,EAAa,SAAUrhD,GACzB,IAAKA,EACH,OAAO,EAET,IAAIs6C,EAAWt6C,EAAQy+C,aAAa,YACpC,OAAoB,IAAbnE,GAAmC,OAAbA,CAC/B,EACIpV,EAAQ,SAAUxhC,EAAO/L,GAC3B,IAAI2pD,EAAW3pD,GAAU+L,EAAMgrB,cAC1B4yB,IAAYD,EAAWC,IAG5BA,EAASpc,OACX,EACIqc,EAAa,CACf5tD,MAAO,SAAU+P,GACfwhC,EAAMxhC,GACNA,EAAM89C,iBACR,EACAC,SAAU,SAAU/9C,GAClBwhC,EAAMxhC,GACNA,EAAM89C,iBACR,EACAE,OAAQ,SAAUh+C,GAChBwhC,EAAMxhC,GACNA,EAAM89C,iBACR,EACAG,MAAO,SAAUj+C,GACf,IAAI/P,EACAiuD,EAAYl+C,EAAMgrB,cAAc+vB,aAAa,QAE/C9qD,EADEiuD,EACM9hD,SAAS4N,eAAek0C,GAExBl+C,EAAMgrB,cAAcynB,iBAAiB,2BAA2B,KAGxEjR,EAAMxhC,EAAO/P,EAEjB,GAUEkuD,EAAgB,SAAUC,EAAOnqD,GAInC,GAH8B,mBAAnBA,EAAOmgC,SAChBngC,EAAOmgC,UAELgqB,EACF,IAAK,IAAI/sD,EAAI,EAAGA,EAAIksD,EAAiB1sD,OAAQQ,GAAK,EAAG,CACnD,IAAI4B,EAAMsqD,EAAiBlsD,GAC3B4C,EAAOhB,GAAOmrD,EAAMnrD,EACtB,CAEJ,EAIIorD,EAA+B,SAAUr+C,GAC3Cw9C,EAAYc,QAAUt+C,EAAM4M,SAAW5M,EAAM4M,QAAQ/b,OAAS,GAAK2sD,EAAYc,OACjF,EACIC,EAAe,SAAU3+C,EAAUI,GACrC,IAAIw+C,KANIhB,EAAYgB,WAAahB,EAAYiB,gBAAiB,IAAIv5C,MAAOsS,UAAYgmC,EAAYiB,cAlEjF,MA2EZD,GAAWx+C,EAAM/L,SAAWupD,EAAYvpD,QAC1C+L,EAAMq0B,iBAIgB,mBAAbz0B,GAA4B4+C,GACrC5+C,EAASI,GAEQ,UAAfA,EAAM1J,OACRknD,EAAYc,SAAU,EACtBd,EAAYgB,SAAU,EACtBhB,EAAYkB,OAAQ,EAExB,EACIC,EAAe,SAAU/+C,EAAUI,GACrCw9C,EAAYc,SAAU,EACtBd,EAAYkB,OAAQ,EACpBlB,EAAYgB,SAAU,EACtBhB,EAAYvpD,OAAS+L,EAAM/L,OAC3BupD,EAAYiB,eAAgB,IAAIv5C,MAAOsS,UACvC2mC,EAAcn+C,EAAM4M,QAAQ,GAAI4wC,EAAYC,SAC5CU,EAAcn+C,EAAM4M,QAAQ,GAAI4wC,EAAYE,SAC5CW,EAA6Br+C,GACL,mBAAbJ,GACTA,EAASI,EAEb,EACI4+C,EAAc,SAAUh/C,EAAUI,GACpCw9C,EAAYgB,SAAU,EACtBhB,EAAYiB,eAAgB,IAAIv5C,MAAOsS,UACvC2mC,EAAcn+C,EAAM4M,QAAQ,GAAI4wC,EAAYE,SAC5CW,EAA6Br+C,IACzBwD,KAAKq7C,IAAIrB,EAAYC,QAAQrC,QAAUoC,EAAYE,QAAQtC,SA5G5C,GA4GyE53C,KAAKq7C,IAAIrB,EAAYC,QAAQpC,QAAUmC,EAAYE,QAAQrC,SA5GpI,KA6GjBmC,EAAYkB,OAAQ,GAEE,mBAAb9+C,GACTA,EAASI,EAEb,EACI8+C,EAAa,SAAUl/C,EAAUkL,EAASxU,EAAM0J,GAOlD,GANAw9C,EAAYgB,SAAU,EACtBhB,EAAYiB,eAAgB,IAAIv5C,MAAOsS,UACvC6mC,EAA6Br+C,GACL,mBAAbJ,GACTA,EAASI,IAENw9C,EAAYc,UAAYd,EAAYkB,MAAO,CAC9C,IAAIK,EAAM/+C,EAAMgrB,cAAcixB,wBAC1BuB,EAAYE,QAAQtC,SAAWoC,EAAYE,QAAQsB,SAAW,IAAMD,EAAIzzB,OAASkyB,EAAYE,QAAQtC,SAAWoC,EAAYE,QAAQsB,SAAW,IAAMD,EAAIzrC,MAAQkqC,EAAYE,QAAQrC,SAAWmC,EAAYE,QAAQuB,SAAW,IAAMF,EAAI1zB,QAAUmyB,EAAYE,QAAQrC,SAAWmC,EAAYE,QAAQuB,SAAW,IAAMF,EAAI1rC,MACxTsqC,EAAW39C,EAAMgrB,iBACG,mBAAZlgB,IACTqzC,EAAcX,EAAYE,QAAS19C,GAhFxB,SAAUA,GACA,mBAAlBA,EAAMo0B,SACfp0B,EAAMo0B,UAERp0B,EAAMk/C,WAAY,EAClBl/C,EAAM1J,KAAO,QACb0J,EAAM8U,OAAS,CACjB,CA0EUqqC,CAAen/C,GACf8K,EAAQ9K,KAELA,EAAM6U,kBAAoBgpC,EAAWvnD,IACxCunD,EAAWvnD,GAAM0J,IAIzB,CACF,EACIo/C,EAA2B,SAAU9oD,EAAMX,GAC7C,IAAI0pD,EAAW,CAAC,EAGhB,IAAK,IAAIpsD,KAAO0C,EAEd0pD,EAASpsD,GAAO0C,EAAM1C,GAcxB,OAVAosD,EAASv0C,QAAUyzC,EAAah/B,KAAK,KAAM5pB,EAAMmV,SACjDu0C,EAASC,YAAcf,EAAah/B,KAAK,KAAM5pB,EAAM2pD,aACrDD,EAASE,YAAchB,EAAah/B,KAAK,KAAM5pB,EAAM4pD,aACrDF,EAASG,UAAYjB,EAAah/B,KAAK,KAAM5pB,EAAM6pD,WACnDH,EAASV,aAAeA,EAAap/B,KAAK,KAAM5pB,EAAMgpD,cACtDU,EAAST,YAAcA,EAAYr/B,KAAK,KAAM5pB,EAAMipD,aACpDS,EAASP,WAAaA,EAAWv/B,KAAK,KAAM5pB,EAAMmpD,WAAYnpD,EAAMmV,QAASxU,GAChD,mBAAlBhG,OAAO0uB,QAChB1uB,OAAO0uB,OAAOqgC,GAETA,CACT,EAgBA,GAfAj9C,EAAMpL,cAAgB,WAEpB,IAAI7B,EAAOhF,MAAM+C,UAAU1B,MAAM4B,KAAKc,WAClCoC,EAAOnB,EAAK,GACZQ,EAAQR,EAAK,GASjB,OANImB,GAAwB,iBAATA,IAAsBX,GAAkC,mBAAlBA,EAAMmV,SAA0B+yC,EAAWvnD,MAElGnB,EAAK,GAAKiqD,EAAyB9oD,EAAMX,GAAS,CAAC,IAI9C2nD,EAAsBlpD,MAAM,KAAMe,EAC3C,EACyB,iBAAdiN,EAAMq9C,IACf,IAAK,IAAIxsD,KAAOmP,EAAMq9C,IACpBr9C,EAAMq9C,IAAIxsD,GAAOmP,EAAMpL,cAAcuoB,KAAK,KAAMtsB,EAGtD,CACF,CAMmBysD,CAAsBt9C,EAsB1C,CAvND,uKCeA,MAAMu9C,EAAmB,IAAIh2B,IAEhBlZ,EAAeA,KAC1B,GAAI4D,EAAAA,GAAa,OACjB,GAAI7G,EAAAA,GAAM,OACV,IAAKqC,EAAAA,EAAU,OACf,MAAM5P,EAAUA,KACd0/C,EAAiBjrD,SAAQC,IACvB,GAAIA,EAAEiiD,SAAU,OAChB,GAAIjiD,EAAEirD,eAEJ,YADAjrD,EAAEirD,iBAGJ,IACGjrD,EAAEmV,GAEH,OACF,MAAM4wC,GAAS5sC,EAAAA,EAAAA,MAAenZ,EAAEkrD,MAAQ/8C,OAAO8K,YAAc,IACzC,MAAhBjZ,EAAEmrD,UACJnrD,EAAEmV,GAAGqG,MAAMkQ,UAAY,cAAcq6B,MACZ,MAAhB/lD,EAAEmrD,YACXnrD,EAAEmV,GAAGqG,MAAMkQ,UAAY,cAAcq6B,MACvC,GACA,EAIJ,OAFA53C,OAAOiK,iBAAiB,SAAU9M,GAClCA,IACO,KACL6C,OAAO4J,oBAAoB,SAAUzM,EAAQ,CAC9C,EAGU8/C,EAAyBA,CAACtmD,EAAyEvJ,KAO9G,GAAImkB,EAAAA,GAAa,OAAO2rC,EAAAA,GACxB,IAAKnwC,EAAAA,GAAYrC,EAAAA,GAAM,OAAOwyC,EAAAA,GAC9B,GAAIvmD,aAAek3B,SAAWl3B,EAAI7B,QAAS,CACzC,MAAMkS,EAAKrQ,aAAek3B,QAAUl3B,EAAMA,EAAI7B,QAC9C,IAAKkS,EAAI,OAAOk2C,EAAAA,GAChB,MAAMrrD,GAAI6E,EAAAA,EAAAA,IAAW,CACnBsQ,KACA,SAAI+1C,GAAS,IAADI,EAAE,OAAqB,QAArBA,EAAO/vD,aAAO,EAAPA,EAAS2vD,aAAK,IAAAI,EAAAA,EAAI,EAAG,EAC1C,aAAIH,GAAa,IAADI,EAAE,OAAyB,QAAzBA,EAAOhwD,aAAO,EAAPA,EAAS4vD,iBAAS,IAAAI,EAAAA,EAAI,GAAI,EACnD,kBAAIN,GAAmB,OAAO1vD,aAAO,EAAPA,EAAS0vD,cAAe,EACtD,YAAIhJ,GAAY,IAADuJ,EAAAC,EAAE,OAAiC,QAAjCD,EAAOjwD,SAAsB,QAAfkwD,EAAPlwD,EAASmwD,qBAAa,IAAAD,OAAf,EAAPA,EAAAhtD,KAAAlD,UAA0B,IAAAiwD,GAAAA,CAAU,IAI9D,OAFAR,EAAiBlzC,IAAI9X,IACrB2rD,EAAAA,EAAAA,GAAkB7mD,EAAKvJ,GAChB,KACLyvD,EAAiB7T,OAAOn3C,EAAE,CAE9B,CACA,OAAOqrD,EAAAA,EAAI,iCCxEbjuD,EAAOC,QAAU1B,OAAOC,sCCAxBwB,EAAOC,QAAU,SAAUe,EAAKgmB,GAI9B,IAHA,IAAImC,EAAM,CAAC,EACPxhB,EAAOpJ,OAAOoJ,KAAK3G,GACnBwtD,EAAQpwD,MAAMC,QAAQ2oB,GACjB1nB,EAAI,EAAGA,EAAIqI,EAAK7I,OAAQQ,IAAK,CACpC,IAAI4B,EAAMyG,EAAKrI,GACXmvD,EAAMztD,EAAIE,IACVstD,GAAoC,IAA5BxnC,EAAUrc,QAAQzJ,GAAc8lB,EAAU9lB,EAAKutD,EAAKztD,MAC9DmoB,EAAIjoB,GAAOutD,EAEf,CACA,OAAOtlC,CACT,oBCdC,WACC,SAAS5W,IACP,IAAInS,EAAIhC,MAAM+C,UAAU1B,MAAM4B,KAAKc,WACjC9B,EAAIgK,SAASk0B,yBACfn+B,EAAEuC,SAAQ,SAAUvC,GAClB,IAAImS,EAAInS,aAAao+B,KACrBn+B,EAAE2hB,YAAYzP,EAAInS,EAAIiK,SAASo0B,eAAetsB,OAAO/R,IACvD,IAAIkC,KAAK0f,YAAY3hB,EACvB,CACA,CAACu+B,QAAQz9B,UAAW09B,SAAS19B,UAAW29B,iBAAiB39B,WAAWwB,SAAQ,SAAUvC,GACpFA,EAAEgB,eAAe,WAAa7C,OAAOgD,eAAenB,EAAG,SAAU,CAC/DwsB,cAAc,EACdD,YAAY,EACZxkB,UAAU,EACVX,MAAO+K,GAEX,GACF,CAjBC,yBCAD,IAAIuwB,EAAO,EAAQ,MACfkhB,EAAS,EAAQ,MACjB0K,EAAS,qBACTC,EAAQ3K,EAAO0K,KAAY1K,EAAO0K,GAAU,CAAC,IAEhD1uD,EAAOC,QAAU,SAAUiB,EAAKsG,GAC/B,OAAOmnD,EAAMztD,KAASytD,EAAMztD,QAAiBwI,IAAVlC,EAAsBA,EAAQ,CAAC,EACpE,GAAG,WAAY,IAAIQ,KAAK,CACtB+W,QAAS+jB,EAAK/jB,QACd49B,KAAM,EAAQ,MAAgB,OAAS,SACvCiS,UAAW,gFCRT9sD,EAAyB,EAAQ,MAGrC7B,EAAQ,GAAamrD,EACrBnrD,EAAQ,GA6DR,SAAyB+P,GACvB,OAAOo7C,EAAWp7C,EAAM6+C,IAC1B,EA9DA5uD,EAAQ,GAAWA,EAAQ,QAAU,EAErC,IAAI6uD,EAAiChtD,EAAuB,EAAQ,OAEhE4vB,EAA0B5vB,EAAuB,EAAQ,OAEzD6vB,EAAkB7vB,EAAuB,EAAQ,OAEjDshC,EAAYthC,EAAuB,EAAQ,OAE3CmwB,EAAanwB,EAAuB,EAAQ,OAE5CvB,EAASuB,EAAuB,EAAQ,OAExC20B,EAAe,EAAQ,MAEvBs4B,EAAS,EAAQ,MAEjBC,EAAa,EAAQ,MAEzB/uD,EAAQ,GAAY+uD,EAAWpnC,UAC/B,IAAIg2B,EAAY,CAAC,KAAM,WAAY,UAAW,eAAgB,kBAAmB,cAAe,WAAY,kBAAmB,QAAS,UAAW,aAE/IqR,EAAiB,SAAwBj/C,GAC3C,OAAOA,aAAmC,EAASA,EAAKunB,WAAW,IACrE,EAEA,SAAS6zB,EAAWp7C,EAAMk/C,GACxB,IAAI9nD,EAAM+nD,EAMV,QAJe,IAAXD,IACFA,EAASE,MAGNC,EAAYr/C,GACf,OAAOA,EAGT,GAAIA,EAAKunB,WAAW,OAASvnB,EAAKunB,WAAW,OAC3C,OAAOvnB,EAGT,IAAIo7B,EAAwG,QAAhGhkC,EAA8B,QAAtB+nD,EAAUD,SAAgC,IAAZC,EAAqBA,EAAUN,WAA4C,IAATznD,EAAkBA,EAAO,IAC7I,MAAO,IAAMgkC,SAAoCA,EAAKkkB,SAAS,KAAOlkB,EAAK3rC,MAAM,GAAI,GAAK2rC,IAASp7B,EAAKunB,WAAW,KAAOvnB,EAAO,IAAMA,EACzI,CAIA,IAAI6+C,EAAsB,WACxB,MAAsH,EACxH,EAEIO,EAAsB,WACxB,MAAkH,EACpH,EAEIC,EAAc,SAAqBr/C,GACrC,OAAOA,IAASA,EAAKunB,WAAW,aAAevnB,EAAKunB,WAAW,cAAgBvnB,EAAKunB,WAAW,KACjG,EAeA,IAAIg4B,EAAkB,SAAyBv/C,EAAMw/C,GACnD,MAAoB,iBAATx/C,EACFA,EAGJq/C,EAAYr/C,GAIVi/C,EAAej/C,GAAQo7C,EAAWp7C,GAlB3C,SAAoBA,EAAMnK,GAExB,OAAIopD,EAAej/C,GACVA,GAGF,EAAI++C,EAAO39C,SAASpB,EAAMnK,EACnC,CAWmD4pD,CAAWz/C,EAAMw/C,GAHzDx/C,CAIX,EAEI0/C,EAAmB,CACrB5rD,gBAAiBmuB,EAAWtwB,QAAQzC,OACpCywD,YAAa19B,EAAWtwB,QAAQoF,OAChC6oD,gBAAiB39B,EAAWtwB,QAAQkuD,MAyBtC,SAASC,EAA0BlsD,GACjC,OAAoBrD,EAAOoB,QAAQsD,cAAcwxB,EAAa2H,SAAU,MAAM,SAAUC,GACtF,IAAI7uB,EAAW6uB,EAAM7uB,SACrB,OAAoBjP,EAAOoB,QAAQsD,cAAc8qD,GAAY,EAAI3sB,EAAUzhC,SAAS,CAAC,EAAGiC,EAAO,CAC7FosD,UAAWxgD,IAEf,GACF,CAEA,IAAIugD,EAA0B,SAAUhtD,GAGtC,SAASgtD,EAAWnsD,GAClB,IAAIV,GAEJA,EAAQH,EAAiB1B,KAAKiB,KAAMsB,IAAUtB,MAExC2tD,gBAAkB,SAAUhhB,GAChC,IAAI4B,EAAqB5B,EAAM4B,mBAC3BD,EAAY3B,EAAM2B,UAEtB,OAAI1tC,EAAMU,MAAMgsD,gBAAkB/e,EAAqBD,GAC9C,CACLntC,UAAW,CAACP,EAAMU,MAAMH,UAAWP,EAAMU,MAAME,iBAAiBjF,OAAO4jB,SAAS1jB,KAAK,KACrFqf,OAAO,EAAIglB,EAAUzhC,SAAS,CAAC,EAAGuB,EAAMU,MAAMwa,MAAOlb,EAAMU,MAAM+rD,cAI9D,IACT,EAEA,IAAIO,GAAc,EAUlB,MARsB,oBAAXn/C,QAA0BA,OAAOo/C,uBAC1CD,GAAc,GAGhBhtD,EAAM8I,MAAQ,CACZkkD,YAAaA,GAEfhtD,EAAMktD,UAAYltD,EAAMktD,UAAU5iC,MAAK,EAAIkE,EAAwB/vB,SAASuB,IACrEA,CACT,EAhCA,EAAIyuB,EAAgBhwB,SAASouD,EAAYhtD,GAkCzC,IAAI8B,EAASkrD,EAAW5uD,UAuIxB,OArIA0D,EAAOwrD,UAAY,WACjB,IAAIC,EAAcv/C,OAAOvB,SAASC,SAE9BnN,KAAKsB,MAAMosD,WAAa1tD,KAAKsB,MAAMosD,UAAUvgD,WAC/C6gD,EAAchuD,KAAKsB,MAAMosD,UAAUvgD,UAGrC,IAAI8gD,EAAgBhB,EAAgBjtD,KAAKsB,MAAMqoB,GAAIqkC,GAC/CE,GAAc,EAAIxB,EAAWpnC,WAAW2oC,GAAe9gD,SAGvD6gD,IAAgBE,GAClBtO,UAAUziC,QAAQ+wC,EAEtB,EAEA3rD,EAAO2H,mBAAqB,SAA4BC,EAAWJ,GAE7D/J,KAAKsB,MAAMqoB,KAAOxf,EAAUwf,IAAO3pB,KAAK0J,MAAMkkD,aAChD5tD,KAAK+tD,WAET,EAEAxrD,EAAOyH,kBAAoB,WAEpBhK,KAAK0J,MAAMkkD,aACd5tD,KAAK+tD,WAET,EAEAxrD,EAAO8H,qBAAuB,WAC5B,GAAKrK,KAAKmuD,GAAV,CAIA,IAAIC,EAAWpuD,KAAKmuD,GAChBrjC,EAAWsjC,EAAStjC,SACpBrV,EAAK24C,EAAS34C,GAClBqV,EAASujC,UAAU54C,GACnBqV,EAASwjC,YANT,CAOF,EAEA/rD,EAAOurD,UAAY,SAAmB1oD,GACpC,IA/GiEqQ,EAAI84C,EACnEJ,EA8GEpjD,EAAS/K,KAETA,KAAKsB,MAAM02B,UAAYh4B,KAAKsB,MAAM02B,SAASl5B,eAAe,WAC5DkB,KAAKsB,MAAM02B,SAASz0B,QAAU6B,EACrBpF,KAAKsB,MAAM02B,UACpBh4B,KAAKsB,MAAM02B,SAAS5yB,GAGlBpF,KAAK0J,MAAMkkD,aAAexoD,IAE5BpF,KAAKmuD,IAzH0D14C,EAyH1BrQ,EAzH8BmpD,EAyHzB,WACxCxjD,EAAOgjD,WACT,GA1HAI,EAAK,IAAI1/C,OAAOo/C,sBAAqB,SAAUhpD,GACjDA,EAAQxE,SAAQ,SAAUooB,GACpBhT,IAAOgT,EAAM7oB,SAGX6oB,EAAM+lC,gBAAkB/lC,EAAMgmC,kBAAoB,KACpDN,EAAGE,UAAU54C,GACb04C,EAAGG,aACHC,IAGN,GACF,KAEGG,QAAQj5C,GACJ,CACLqV,SAAUqjC,EACV14C,GAAIA,IA2GN,EAEAlT,EAAOG,OAAS,WACd,IAAI0I,EAASpL,KAETgM,EAAchM,KAAKsB,MACnBqoB,EAAK3d,EAAY2d,GACjBglC,EAAuB3iD,EAAYmiC,SACnCA,OAAoC,IAAzBwgB,EAAkC3uD,KAAK2tD,gBAAkBgB,EACpEC,EAAW5iD,EAAYyK,QACvBo4C,EAAgB7iD,EAAY8iD,aAK5BplD,GAJmBsC,EAAYxK,gBAChBwK,EAAYqhD,YACfrhD,EAAYgsB,SACNhsB,EAAYshD,gBACtBthD,EAAYtC,OACpBrM,EAAU2O,EAAY3O,QACtBqwD,EAAY1hD,EAAY0hD,UACxBqB,GAAO,EAAIvC,EAA+BntD,SAAS2M,EAAasvC,GAMpE,IAAI0T,EAAa/B,EAAgBtjC,EAAI+jC,EAAUvgD,UAE/C,OAAK4/C,EAAYiC,GAMG/wD,EAAOoB,QAAQsD,cAAcwxB,EAAa2Z,MAAM,EAAIhN,EAAUzhC,SAAS,CACzFsqB,GAAIqlC,EACJtlD,MAAOA,EACPykC,SAAUA,EACVnW,SAAUh4B,KAAK8tD,UACfgB,aAAc,SAAsBhxD,GAC9B+wD,GACFA,EAAc/wD,GAGhB8hD,UAAUqP,UAAS,EAAIvC,EAAWpnC,WAAW0pC,GAAY7hD,SAC3D,EACAsJ,QAAS,SAAiB3Y,GAKxB,GAJI8wD,GACFA,EAAS9wD,KAGM,IAAbA,EAAE2iB,QACLrV,EAAO9J,MAAM1B,QACb9B,EAAE0iB,kBACF1iB,EAAE4iB,SACF5iB,EAAE6iB,QAAW7iB,EAAE8iB,SAAY9iB,EAAE+iB,UAAU,CACtC/iB,EAAEkiC,iBACF,IAAIyO,EAAgBpxC,EAEhBixC,EAAY1c,UAAUo9B,KAAgBtB,EAAUvgD,SAE7B,kBAAZ9P,GAAyBixC,IAClCG,GAAgB,GAKlBhgC,OAAOsxC,YAAYiP,EAAY,CAC7BtlD,MAAOA,EACPrM,QAASoxC,GAEb,CAEA,OAAO,CACT,GACCsgB,IA9CmB9wD,EAAOoB,QAAQsD,cAAc,KAAK,EAAIm+B,EAAUzhC,SAAS,CAC3EqR,KAAMs+C,GACLD,GA6CP,EAEOtB,CACT,CA3K8B,CA2K5BxvD,EAAOoB,QAAQuD,WAEjB6qD,EAAW3qD,WAAY,EAAIg+B,EAAUzhC,SAAS,CAAC,EAAG+tD,EAAkB,CAClE32C,QAASkZ,EAAWtwB,QAAQ+xB,KAC5BzH,GAAIgG,EAAWtwB,QAAQzC,OAAOy0B,WAC9Bh0B,QAASsyB,EAAWtwB,QAAQkuD,KAC5B7jD,MAAOimB,EAAWtwB,QAAQoF,SAG5B,IAAI1B,EAAwB9E,EAAOoB,QAAQwuC,YAAW,SAAUvsC,EAAO8D,GACrE,OAAoBnH,EAAOoB,QAAQsD,cAAc6qD,GAA2B,EAAI1sB,EAAUzhC,SAAS,CACjG24B,SAAU5yB,GACT9D,GACL,IAEA3D,EAAQ,GAAUoF,EAMlBpF,EAAQ,GAJO,SAAkBgsB,EAAI9tB,GACnC4S,OAAOsxC,YAAYkN,EAAgBtjC,EAAIlb,OAAOvB,SAASC,UAAWtR,EACpE,oBCvTA,WACE,aAGA,GAAsB,iBAAX4S,OAMX,GAAI,yBAA0BA,QAAU,8BAA+BA,QAAU,sBAAuBA,OAAOygD,0BAA0BrwD,UAGjI,mBAAoB4P,OAAOygD,0BAA0BrwD,WACzD5C,OAAOgD,eAAewP,OAAOygD,0BAA0BrwD,UAAW,iBAAkB,CAClFM,IAAK,WACH,OAAOa,KAAKyuD,kBAAoB,CAClC,QAPN,CA8BA,IAAI1mD,EAAW,WAGb,IAFA,IAAIq5C,EAOJ3yC,OAAO1G,SANHonD,EAAQC,EAAgBhO,GACrB+N,GAELA,EAAQC,EADRhO,EAAM+N,EAAME,eAGd,OAAOjO,CACT,CARe,GAgBXkO,EAAW,GAOXC,EAAqB,KAMrBC,EAAkB,KA6EtB3B,EAAqBhvD,UAAU4wD,iBAAmB,IAOlD5B,EAAqBhvD,UAAU6wD,cAAgB,KAM/C7B,EAAqBhvD,UAAU8wD,uBAAwB,EAWvD9B,EAAqB+B,yBAA2B,WAiB9C,OAhBKL,IAKHA,EAAqB,SAAUM,EAAoBC,GAI/CN,EAHGK,GAAuBC,EAGRC,EAAsBF,EAAoBC,GA6mB3D,CACL9wC,IAAK,EACLgY,OAAQ,EACR/X,KAAM,EACNgY,MAAO,EACPpgB,MAAO,EACPC,OAAQ,GAjnBNw4C,EAASjvD,SAAQ,SAAU2vD,GACzBA,EAASC,wBACX,GACF,GAEKV,CACT,EAKA1B,EAAqBqC,yBAA2B,WAC9CX,EAAqB,KACrBC,EAAkB,IACpB,EAOA3B,EAAqBhvD,UAAU6vD,QAAU,SAAU9uD,GAIjD,IAH8BI,KAAKmwD,oBAAoBjyB,MAAK,SAAU7Z,GACpE,OAAOA,EAAKpc,SAAWrI,CACzB,IACA,CAGA,IAAMA,GAA6B,GAAnBA,EAAOwwD,SACrB,MAAM,IAAI/oD,MAAM,6BAElBrH,KAAKqwD,oBACLrwD,KAAKmwD,oBAAoBzqD,KAAK,CAC5BuC,QAASrI,EACT6oB,MAAO,OAETzoB,KAAKswD,sBAAsB1wD,EAAOyvD,eAClCrvD,KAAKiwD,wBAVL,CAWF,EAMApC,EAAqBhvD,UAAUwvD,UAAY,SAAUzuD,GACnDI,KAAKmwD,oBAAsBnwD,KAAKmwD,oBAAoB5zD,QAAO,SAAU8nB,GACnE,OAAOA,EAAKpc,SAAWrI,CACzB,IACAI,KAAKuwD,wBAAwB3wD,EAAOyvD,eACG,GAAnCrvD,KAAKmwD,oBAAoB3zD,QAC3BwD,KAAKwwD,qBAET,EAKA3C,EAAqBhvD,UAAUyvD,WAAa,WAC1CtuD,KAAKmwD,oBAAsB,GAC3BnwD,KAAKywD,6BACLzwD,KAAKwwD,qBACP,EAQA3C,EAAqBhvD,UAAU6xD,YAAc,WAC3C,IAAIC,EAAU3wD,KAAK4wD,eAAezzD,QAElC,OADA6C,KAAK4wD,eAAiB,GACfD,CACT,EAWA9C,EAAqBhvD,UAAUgyD,gBAAkB,SAAUC,GACzD,IAAIC,EAAYD,GAAiB,CAAC,GAElC,OADKh1D,MAAMC,QAAQg1D,KAAYA,EAAY,CAACA,IACrCA,EAAU1rC,OAAO9oB,QAAO,SAAU0T,EAAGjT,EAAGa,GAC7C,GAAgB,iBAALoS,GAAiB2N,MAAM3N,IAAMA,EAAI,GAAKA,EAAI,EACnD,MAAM,IAAI5I,MAAM,0DAElB,OAAO4I,IAAMpS,EAAEb,EAAI,EACrB,GACF,EAaA6wD,EAAqBhvD,UAAUmyD,iBAAmB,SAAUC,GAC1D,IACIC,GADeD,GAAkB,OACV7wD,MAAM,OAAOhE,KAAI,SAAU+0D,GACpD,IAAIC,EAAQ,wBAAwB1qC,KAAKyqC,GACzC,IAAKC,EACH,MAAM,IAAI/pD,MAAM,qDAElB,MAAO,CACLnC,MAAOmsD,WAAWD,EAAM,IACxBE,KAAMF,EAAM,GAEhB,IAMA,OAHAF,EAAQ,GAAKA,EAAQ,IAAMA,EAAQ,GACnCA,EAAQ,GAAKA,EAAQ,IAAMA,EAAQ,GACnCA,EAAQ,GAAKA,EAAQ,IAAMA,EAAQ,GAC5BA,CACT,EAQArD,EAAqBhvD,UAAUyxD,sBAAwB,SAAUlP,GAC/D,IAAImQ,EAAMnQ,EAAIoQ,YACd,GAAKD,IAI0C,GAA3CvxD,KAAKyxD,qBAAqBppD,QAAQ+4C,GAAtC,CAMA,IAAI71C,EAAWvL,KAAKiwD,uBAChByB,EAAqB,KACrBC,EAAc,KAId3xD,KAAK0vD,cACPgC,EAAqBH,EAAI3W,YAAYrvC,EAAUvL,KAAK0vD,gBAEpDkC,EAASL,EAAK,SAAUhmD,GAAU,GAClCqmD,EAASxQ,EAAK,SAAU71C,GAAU,GAC9BvL,KAAK2vD,uBAAyB,qBAAsB4B,IACtDI,EAAc,IAAIJ,EAAIM,iBAAiBtmD,IAC3BmjD,QAAQtN,EAAK,CACvB0Q,YAAY,EACZC,WAAW,EACXC,eAAe,EACfC,SAAS,KAIfjyD,KAAKyxD,qBAAqB/rD,KAAK07C,GAC/BphD,KAAKkyD,wBAAwBxsD,MAAK,WAGhC,IAAI6rD,EAAMnQ,EAAIoQ,YACVD,IACEG,GACFH,EAAI1W,cAAc6W,GAEpBS,EAAYZ,EAAK,SAAUhmD,GAAU,IAEvC4mD,EAAY/Q,EAAK,SAAU71C,GAAU,GACjComD,GACFA,EAAYrD,YAEhB,IAGA,IAAI8D,EAAUpyD,KAAKwV,OAASxV,KAAKwV,KAAK65C,eAAiBrvD,KAAKwV,OAASzN,EACrE,GAAIq5C,GAAOgR,EAAS,CAClB,IAAIjD,EAAQC,EAAgBhO,GACxB+N,GACFnvD,KAAKswD,sBAAsBnB,EAAME,cAErC,CAhDA,CAiDF,EAOAxB,EAAqBhvD,UAAU0xD,wBAA0B,SAAUnP,GACjE,IAAIj6B,EAAQnnB,KAAKyxD,qBAAqBppD,QAAQ+4C,GAC9C,IAAc,GAAVj6B,EAAJ,CAGA,IAAIirC,EAAUpyD,KAAKwV,OAASxV,KAAKwV,KAAK65C,eAAiBrvD,KAAKwV,OAASzN,EAGjEsqD,EAAsBryD,KAAKmwD,oBAAoBjyB,MAAK,SAAU7Z,GAChE,IAAIiuC,EAAUjuC,EAAKpc,QAAQonD,cAE3B,GAAIiD,GAAWlR,EACb,OAAO,EAGT,KAAOkR,GAAWA,GAAWF,GAAS,CACpC,IAAIjD,EAAQC,EAAgBkD,GAE5B,IADAA,EAAUnD,GAASA,EAAME,gBACVjO,EACb,OAAO,CAEX,CACA,OAAO,CACT,IACA,IAAIiR,EAAJ,CAKA,IAAIE,EAAcvyD,KAAKkyD,wBAAwB/qC,GAM/C,GALAnnB,KAAKyxD,qBAAqBxwC,OAAOkG,EAAO,GACxCnnB,KAAKkyD,wBAAwBjxC,OAAOkG,EAAO,GAC3CorC,IAGInR,GAAOgR,EAAS,CAClB,IAAIjD,EAAQC,EAAgBhO,GACxB+N,GACFnvD,KAAKuwD,wBAAwBpB,EAAME,cAEvC,CAdA,CAtBA,CAqCF,EAOAxB,EAAqBhvD,UAAU4xD,2BAA6B,WAC1D,IAAI+B,EAAexyD,KAAKkyD,wBAAwB/0D,MAAM,GACtD6C,KAAKyxD,qBAAqBj1D,OAAS,EACnCwD,KAAKkyD,wBAAwB11D,OAAS,EACtC,IAAK,IAAIQ,EAAI,EAAGA,EAAIw1D,EAAah2D,OAAQQ,IACvCw1D,EAAax1D,IAEjB,EAQA6wD,EAAqBhvD,UAAUoxD,uBAAyB,WACtD,GAAKjwD,KAAKwV,OAAQ+5C,GAAuBC,EAAzC,CAIA,IAAIiD,EAAczyD,KAAK0yD,eACnBC,EAAWF,EAAczyD,KAAK4yD,eAiW3B,CACL5zC,IAAK,EACLgY,OAAQ,EACR/X,KAAM,EACNgY,MAAO,EACPpgB,MAAO,EACPC,OAAQ,GAtWV9W,KAAKmwD,oBAAoB9vD,SAAQ,SAAUgkB,GACzC,IAAIzkB,EAASykB,EAAKpc,QACd4qD,EAAajL,EAAsBhoD,GACnCkzD,EAAqB9yD,KAAK+yD,oBAAoBnzD,GAC9CozD,EAAW3uC,EAAKoE,MAChBqnC,EAAmB2C,GAAeK,GAAsB9yD,KAAKizD,kCAAkCrzD,EAAQizD,EAAYF,GACnHO,EAAa,KACZlzD,KAAK+yD,oBAAoBnzD,GAElB2vD,IAAsBvvD,KAAKwV,OACrC09C,EAAaP,GAFbO,EAwVG,CACLl0C,IAAK,EACLgY,OAAQ,EACR/X,KAAM,EACNgY,MAAO,EACPpgB,MAAO,EACPC,OAAQ,GA1VR,IAAIq8C,EAAW9uC,EAAKoE,MAAQ,IAAIymC,EAA0B,CACxDkE,KAiOG3kD,OAAOoJ,aAAeA,YAAY/G,KAAO+G,YAAY/G,MAhOxDlR,OAAQA,EACRiwD,mBAAoBgD,EACpBK,WAAYA,EACZpD,iBAAkBA,IAEfkD,EAEMP,GAAeK,EAGpB9yD,KAAKqzD,qBAAqBL,EAAUG,IACtCnzD,KAAK4wD,eAAelrD,KAAKytD,GAMvBH,GAAYA,EAASxE,gBACvBxuD,KAAK4wD,eAAelrD,KAAKytD,GAZ3BnzD,KAAK4wD,eAAelrD,KAAKytD,EAe7B,GAAGnzD,MACCA,KAAK4wD,eAAep0D,QACtBwD,KAAKszD,UAAUtzD,KAAK0wD,cAAe1wD,KAxCrC,CA0CF,EAeA6tD,EAAqBhvD,UAAUo0D,kCAAoC,SAAUrzD,EAAQizD,EAAYF,GAE/F,GAA+C,QAA3ClkD,OAAO8kD,iBAAiB3zD,GAAQ43B,QAApC,CAIA,IAHA,IAmP+Bg8B,EAAOC,EAClCz0C,EACAgY,EACA/X,EACAgY,EACApgB,EACAC,EAzPAg5C,EAAmB+C,EACnBa,EAASC,EAAc/zD,GACvBg0D,GAAS,GACLA,GAAUF,GAAQ,CACxB,IAAIG,EAAa,KACbC,EAAyC,GAAnBJ,EAAOtD,SAAgB3hD,OAAO8kD,iBAAiBG,GAAU,CAAC,EAGpF,GAAmC,QAA/BI,EAAoBt8B,QAAmB,OAAO,KAClD,GAAIk8B,GAAU1zD,KAAKwV,MAAyC,GAAjCk+C,EAAOtD,SAEhC,GADAwD,GAAS,EACLF,GAAU1zD,KAAKwV,MAAQk+C,GAAU3rD,EAC/BwnD,IAAuBvvD,KAAKwV,MACzBg6C,GAA4C,GAAzBA,EAAgB34C,OAAwC,GAA1B24C,EAAgB14C,QAEpE48C,EAAS,KACTG,EAAa,KACb/D,EAAmB,MAEnB+D,EAAarE,EAGfqE,EAAalB,MAEV,CAEL,IAAIxD,EAAQwE,EAAcD,GACtBK,EAAY5E,GAASvH,EAAsBuH,GAC3C6E,EAAiB7E,GAASnvD,KAAKizD,kCAAkC9D,EAAO4E,EAAWpB,GACnFoB,GAAaC,GACfN,EAASvE,EACT0E,EAAa9D,EAAsBgE,EAAWC,KAE9CN,EAAS,KACT5D,EAAmB,KAEvB,KACK,CAKL,IAAI1O,EAAMsS,EAAOrE,cACbqE,GAAUtS,EAAInpC,MAAQy7C,GAAUtS,EAAIjpC,iBAAmD,WAAhC27C,EAAoBrX,WAC7EoX,EAAajM,EAAsB8L,GAEvC,CAOA,GAHIG,IAiMyBL,EAhMgBK,EAgMTJ,EAhMqB3D,EAiMvD9wC,SACAgY,SACA/X,SACAgY,SACApgB,SACAC,SALAkI,EAAM7P,KAAK6S,IAAIwxC,EAAMx0C,IAAKy0C,EAAMz0C,KAChCgY,EAAS7nB,KAAKyd,IAAI4mC,EAAMx8B,OAAQy8B,EAAMz8B,QACtC/X,EAAO9P,KAAK6S,IAAIwxC,EAAMv0C,KAAMw0C,EAAMx0C,MAClCgY,EAAQ9nB,KAAKyd,IAAI4mC,EAAMv8B,MAAOw8B,EAAMx8B,OAEpCngB,EAASkgB,EAAShY,EAtMlB8wC,GAqMAj5C,EAAQogB,EAAQhY,IAEJ,GAAKnI,GAAU,GAAK,CAClCkI,IAAKA,EACLgY,OAAQA,EACR/X,KAAMA,EACNgY,MAAOA,EACPpgB,MAAOA,EACPC,OAAQA,IACL,OA5MEg5C,EAAkB,MACvB4D,EAASA,GAAUC,EAAcD,EACnC,CACA,OAAO5D,CAzDsD,CA0D/D,EAOAjC,EAAqBhvD,UAAU+zD,aAAe,WAC5C,IAAID,EACJ,GAAI3yD,KAAKwV,OAASy+C,EAAMj0D,KAAKwV,MAC3Bm9C,EAAW/K,EAAsB5nD,KAAKwV,UACjC,CAEL,IAAI4rC,EAAM6S,EAAMj0D,KAAKwV,MAAQxV,KAAKwV,KAAOzN,EACrCmsD,EAAO9S,EAAIjpC,gBACXF,EAAOmpC,EAAInpC,KACf06C,EAAW,CACT3zC,IAAK,EACLC,KAAM,EACNgY,MAAOi9B,EAAK56C,aAAerB,EAAKqB,YAChCzC,MAAOq9C,EAAK56C,aAAerB,EAAKqB,YAChC0d,OAAQk9B,EAAKC,cAAgBl8C,EAAKk8C,aAClCr9C,OAAQo9C,EAAKC,cAAgBl8C,EAAKk8C,aAEtC,CACA,OAAOn0D,KAAKo0D,wBAAwBzB,EACtC,EAQA9E,EAAqBhvD,UAAUu1D,wBAA0B,SAAUhO,GACjE,IAAI8K,EAAUlxD,KAAKq0D,kBAAkBj4D,KAAI,SAAU+0D,EAAQn0D,GACzD,MAAsB,MAAfm0D,EAAOG,KAAeH,EAAOjsD,MAAQisD,EAAOjsD,OAASlI,EAAI,EAAIopD,EAAKvvC,MAAQuvC,EAAKtvC,QAAU,GAClG,IACIw9C,EAAU,CACZt1C,IAAKonC,EAAKpnC,IAAMkyC,EAAQ,GACxBj6B,MAAOmvB,EAAKnvB,MAAQi6B,EAAQ,GAC5Bl6B,OAAQovB,EAAKpvB,OAASk6B,EAAQ,GAC9BjyC,KAAMmnC,EAAKnnC,KAAOiyC,EAAQ,IAI5B,OAFAoD,EAAQz9C,MAAQy9C,EAAQr9B,MAAQq9B,EAAQr1C,KACxCq1C,EAAQx9C,OAASw9C,EAAQt9B,OAASs9B,EAAQt1C,IACnCs1C,CACT,EAYAzG,EAAqBhvD,UAAUw0D,qBAAuB,SAAUL,EAAUG,GAGxE,IAAIoB,EAAWvB,GAAYA,EAASxE,eAAiBwE,EAASvE,mBAAqB,GAAK,EACpF+F,EAAWrB,EAAS3E,eAAiB2E,EAAS1E,mBAAqB,GAAK,EAG5E,GAAI8F,IAAaC,EACjB,IAAK,IAAIx3D,EAAI,EAAGA,EAAIgD,KAAKy0D,WAAWj4D,OAAQQ,IAAK,CAC/C,IAAI+zD,EAAY/wD,KAAKy0D,WAAWz3D,GAIhC,GAAI+zD,GAAawD,GAAYxD,GAAayD,GAAYzD,EAAYwD,GAAaxD,EAAYyD,EACzF,OAAO,CAEX,CACF,EAOA3G,EAAqBhvD,UAAU6zD,aAAe,WAC5C,OAAQ1yD,KAAKwV,MAAQk/C,EAAa3sD,EAAU/H,KAAKwV,KACnD,EAQAq4C,EAAqBhvD,UAAUk0D,oBAAsB,SAAUnzD,GAC7D,IAAIwyD,EAAUpyD,KAAKwV,OAASxV,KAAKwV,KAAK65C,eAAiBrvD,KAAKwV,OAASzN,EACrE,OAAO2sD,EAAatC,EAASxyD,MAAaI,KAAKwV,MAAQ48C,GAAWxyD,EAAOyvD,cAC3E,EAOAxB,EAAqBhvD,UAAUwxD,kBAAoB,WAC7Cf,EAASjnD,QAAQrI,MAAQ,GAC3BsvD,EAAS5pD,KAAK1F,KAElB,EAMA6tD,EAAqBhvD,UAAU2xD,oBAAsB,WACnD,IAAIrpC,EAAQmoC,EAASjnD,QAAQrI,OACf,GAAVmnB,GAAamoC,EAASruC,OAAOkG,EAAO,EAC1C,EAsOA1Y,OAAOo/C,qBAAuBA,EAC9Bp/C,OAAOygD,0BAA4BA,CAz3BnC,CAOA,SAASE,EAAgBhO,GACvB,IACE,OAAOA,EAAIoQ,aAAepQ,EAAIoQ,YAAYmD,cAAgB,IAC5D,CAAE,MAAO72D,GAEP,OAAO,IACT,CACF,CA0CA,SAASoxD,EAA0BzmC,GACjCzoB,KAAKozD,KAAO3qC,EAAM2qC,KAClBpzD,KAAKJ,OAAS6oB,EAAM7oB,OACpBI,KAAKkzD,WAAa0B,EAAcnsC,EAAMyqC,YACtClzD,KAAK6vD,mBAAqB+E,EAAcnsC,EAAMonC,oBAC9C7vD,KAAK8vD,iBAAmB8E,EAAcnsC,EAAMqnC,kBA+sBrC,CACL9wC,IAAK,EACLgY,OAAQ,EACR/X,KAAM,EACNgY,MAAO,EACPpgB,MAAO,EACPC,OAAQ,IAptBV9W,KAAKwuD,iBAAmB/lC,EAAMqnC,iBAG9B,IAAI+C,EAAa7yD,KAAK6vD,mBAClBgF,EAAahC,EAAWh8C,MAAQg8C,EAAW/7C,OAC3Cg5C,EAAmB9vD,KAAK8vD,iBACxBgF,EAAmBhF,EAAiBj5C,MAAQi5C,EAAiBh5C,OAM/D9W,KAAKyuD,kBAHHoG,EAGuBh3C,QAAQi3C,EAAmBD,GAAYE,QAAQ,IAG/C/0D,KAAKwuD,eAAiB,EAAI,CAEvD,CAWA,SAASX,EAAqBtiD,EAAUypD,GACtC,IA0kBgBnuD,EAAI4D,EAChBwqD,EA3kBAp5D,EAAUm5D,GAAe,CAAC,EAC9B,GAAuB,mBAAZzpD,EACT,MAAM,IAAIlE,MAAM,+BAElB,GAAIxL,EAAQ2Z,MAAiC,GAAzB3Z,EAAQ2Z,KAAK46C,UAA0C,GAAzBv0D,EAAQ2Z,KAAK46C,SAC7D,MAAM,IAAI/oD,MAAM,sCAIlBrH,KAAKiwD,wBAikBWppD,EAjkBuB7G,KAAKiwD,uBAAuB/kC,KAAKlrB,MAikBpDyK,EAjkB2DzK,KAAKyvD,iBAkkBhFwF,EAAQ,KACL,WACAA,IACHA,EAAQlpD,YAAW,WACjBlF,IACAouD,EAAQ,IACV,GAAGxqD,GAEP,GAvkBAzK,KAAKszD,UAAY/nD,EACjBvL,KAAKmwD,oBAAsB,GAC3BnwD,KAAK4wD,eAAiB,GACtB5wD,KAAKq0D,kBAAoBr0D,KAAKgxD,iBAAiBn1D,EAAQq5D,YAGvDl1D,KAAKy0D,WAAaz0D,KAAK6wD,gBAAgBh1D,EAAQk1D,WAC/C/wD,KAAKwV,KAAO3Z,EAAQ2Z,MAAQ,KAC5BxV,KAAKk1D,WAAal1D,KAAKq0D,kBAAkBj4D,KAAI,SAAU+0D,GACrD,OAAOA,EAAOjsD,MAAQisD,EAAOG,IAC/B,IAAG70D,KAAK,KAGRuD,KAAKyxD,qBAAuB,GAE5BzxD,KAAKkyD,wBAA0B,EACjC,CAkkBA,SAASN,EAAS1xD,EAAMyL,EAAO9E,EAAIsuD,GACG,mBAAzBj1D,EAAKwY,iBACdxY,EAAKwY,iBAAiB/M,EAAO9E,EAAIsuD,IAAkB,GACf,mBAApBj1D,EAAKk1D,aACrBl1D,EAAKk1D,YAAY,KAAOzpD,EAAO9E,EAEnC,CAUA,SAASsrD,EAAYjyD,EAAMyL,EAAO9E,EAAIsuD,GACG,mBAA5Bj1D,EAAKmY,oBACdnY,EAAKmY,oBAAoB1M,EAAO9E,EAAIsuD,IAAkB,GAClB,mBAApBj1D,EAAKm1D,aACrBn1D,EAAKm1D,YAAY,KAAO1pD,EAAO9E,EAEnC,CA+BA,SAAS+gD,EAAsBnyC,GAC7B,IAAI2wC,EACJ,IACEA,EAAO3wC,EAAGmyC,uBACZ,CAAE,MAAO0N,GAGT,CACA,OAAKlP,GAGCA,EAAKvvC,OAASuvC,EAAKtvC,SACvBsvC,EAAO,CACLpnC,IAAKonC,EAAKpnC,IACViY,MAAOmvB,EAAKnvB,MACZD,OAAQovB,EAAKpvB,OACb/X,KAAMmnC,EAAKnnC,KACXpI,MAAOuvC,EAAKnvB,MAAQmvB,EAAKnnC,KACzBnI,OAAQsvC,EAAKpvB,OAASovB,EAAKpnC,MAGxBonC,GASA,CACLpnC,IAAK,EACLgY,OAAQ,EACR/X,KAAM,EACNgY,MAAO,EACPpgB,MAAO,EACPC,OAAQ,EAdZ,CAyBA,SAAS89C,EAAcxO,GAErB,OAAKA,GAAQ,MAAOA,EACXA,EAMF,CACLpnC,IAAKonC,EAAKpnC,IACVhO,EAAGo1C,EAAKpnC,IACRgY,OAAQovB,EAAKpvB,OACb/X,KAAMmnC,EAAKnnC,KACX5iB,EAAG+pD,EAAKnnC,KACRgY,MAAOmvB,EAAKnvB,MACZpgB,MAAOuvC,EAAKvvC,MACZC,OAAQsvC,EAAKtvC,OAEjB,CASA,SAASi5C,EAAsBwF,EAAoBC,GACjD,IAAIx2C,EAAMw2C,EAAuBx2C,IAAMu2C,EAAmBv2C,IACtDC,EAAOu2C,EAAuBv2C,KAAOs2C,EAAmBt2C,KAC5D,MAAO,CACLD,IAAKA,EACLC,KAAMA,EACNnI,OAAQ0+C,EAAuB1+C,OAC/BD,MAAO2+C,EAAuB3+C,MAC9BmgB,OAAQhY,EAAMw2C,EAAuB1+C,OACrCmgB,MAAOhY,EAAOu2C,EAAuB3+C,MAEzC,CASA,SAAS69C,EAAahB,EAAQpnD,GAE5B,IADA,IAAIpM,EAAOoM,EACJpM,GAAM,CACX,GAAIA,GAAQwzD,EAAQ,OAAO,EAC3BxzD,EAAOyzD,EAAczzD,EACvB,CACA,OAAO,CACT,CAQA,SAASyzD,EAAczzD,GACrB,IAAIwzD,EAASxzD,EAAKkxC,WAClB,OAAmC,GAA/BlxC,EAAKkwD,UAA+BlwD,GAAQ6H,EAEvCqnD,EAAgBlvD,IAIrBwzD,GAAUA,EAAO+B,eACnB/B,EAASA,EAAO+B,aAAarkB,YAE3BsiB,GAA6B,IAAnBA,EAAOtD,UAAkBsD,EAAO/+C,KAErC++C,EAAO/+C,KAET++C,EACT,CAOA,SAASO,EAAM/zD,GACb,OAAOA,GAA0B,IAAlBA,EAAKkwD,QACtB,CAKD,CA/4BD,wGCJA,MAaa50C,EAbiCk6C,MAE5C,GAAIv8C,EAAAA,GAAM,OAAO,EACjB,GAAI8C,EAAAA,KAAc05C,EAAAA,GAAO,OAAO,EAChC,GAAI31C,EAAAA,GAAa,OAAO,EACxB,MAAM41C,IAAiBC,EAAAA,IAAa,IAAIz1D,MAAM,KAAK,GAC7C01D,IAAwBC,EAAAA,IAAkB,IAAI31D,MAAM,KAAK,GAE/D,SAAIu1D,EAAAA,MAAUC,GAAgB,IAAoBE,GAAuB,QACrEE,EAAAA,IAAaJ,EAAe,EACrB,EAGWF,2ICZjB,MAAMO,EACXC,GAEe,mBAARA,EAA2Bt5B,eAAiBu5B,aAcxCC,EAAkBA,CAC7Bx3D,EACAs3D,KAEA,GAAIl2C,EAAAA,GAAa,OACjB,MAAMq2C,EAAUJ,EAAiBC,GACjC,IAAKG,EAAS,OACd,MAAMnxD,EAAQmxD,EAAQx5B,QAAQj+B,GAC9B,OAAIsG,EAAcu0B,KAAKvnB,MAAMhN,QAA7B,CACM,EAGKo+C,EAAkCA,CAC7C1kD,EACAwjD,EACAE,MAEAv4B,EAAAA,EAAAA,IAAW,KACT,GAAI/J,EAAAA,GAAa,OACjB,MAAM3c,GAAIw+C,EAAAA,EAAAA,KASV,OARAzqC,EAAAA,EAAAA,IAAOkrC,EAAPlrC,CAAeg/C,EAAgBx3D,IAC/ByE,EAAE+U,KACAhV,EAAAA,EAAAA,IACEg/C,GACAl9C,GAnCqBoxD,EAC3B13D,EACAsG,EACAgxD,KAEA,GAAIl2C,EAAAA,GAAa,OACjB,MAAMq2C,EAAUJ,EAAiBC,GAC5BG,GACLA,EAAQt5B,QAAQn+B,EAAK66B,KAAKlpB,UAAUrL,GAAO,EA2B5BoxD,CAAc13D,EAAKsG,IAC5B,CAAEqxD,iBAAiB,KAGhBlzD,EAAEy+C,QAAQ,GACjB,wBCnDJ,IAAIrtB,EAAU,gBACVhS,EAAc,EAAQ,MAK1B/kB,EAAOC,QAJP,SAAuBsS,GACrB,IAAIjT,EAAIylB,EAAYxS,EAAG,UACvB,MAAO,UAAYwkB,EAAQz3B,GAAKA,EAAIA,EAAI,EAC1C,EACgCU,EAAOC,QAAQK,YAAa,EAAMN,EAAOC,QAAiB,QAAID,EAAOC,8BCNrGD,EAAOC,QAAU,EAAjBD,uCCEAC,EAAQ64D,sBAAwB,WAC9B,MAAyC,SAAlCv2C,CAAAA,EAAYw2C,iBACrB,EAGA,IAAIC,EAAoB,yBACpBC,EAAsB,GAsD1B,SAASC,EAAiBlpD,EAAM4zC,GAG9B,IAAI7yC,OAAOmlB,cAEP,kBAAmBR,UAAW,CAChC,IACIC,EADaD,UACcC,cAE/B,GAAiC,OAA7BA,EAAcM,WAGhBgjC,EAAoBjxD,KAAKgI,OACpB,CACL,IAAImpD,EAAYvV,EAA2B5zC,GAC3C2lB,EAAcM,WAAWgqB,YAAY,CACnCC,UAAW,mBACXlwC,KAAMA,EACNmpD,UAAWA,GAEf,CACF,CACF,CA1EAl5D,EAAQm5D,sBAAwB,SAAUhyD,GACxC,IAAIw8C,EAA6Bx8C,EAAKw8C,2BAClCjuB,EAAgBvuB,EAAKuuB,cAEzB,GAAsC,SAAlCpT,CAAAA,EAAYw2C,kBAMhB,GAAIhoD,OAAOmlB,aACTP,EAAc3nB,OAAOiyC,YAAY,CAC/BC,UAAW,2BAFf,CAQA,IAAImZ,EAAQhvD,SAASq2C,iBAAiB,sFAElC4Y,EAAkB,GAAG75D,MAAM4B,KAAKg4D,GACnCx6D,QAAO,SAAU2D,GAChB,MAAwB,SAAjBA,EAAKk+B,SAAsBs4B,EAAkBx5D,KAAKgD,EAAKwmD,aAAa,OAC7E,IAAGtqD,KAAI,SAAU8D,GACf,OAAOA,EAAK41B,KAAO51B,EAAKwQ,MAAQxQ,EAAKwmD,aAAa,YACpD,IAGIuQ,EAAsB,GAC1BN,EAAoBt2D,SAAQ,SAAUqN,GACpC,IAAImpD,EAAYvV,EAA2B5zC,GAC3CupD,EAAoBvxD,KAAK3F,MAAMk3D,EAAqBJ,GACpDxjC,EAAc3nB,OAAOiyC,YAAY,CAC/BC,UAAW,mBACXlwC,KAAMA,EACNmpD,UAAWA,GAEf,IAGgB,GAAG71D,OAAOg2D,EAAiBC,GACjC52D,SAAQ,SAAU62D,GAE1B,IAAIC,EAAOpvD,SAASpF,cAAc,QAClCw0D,EAAKvtC,IAAM,WACXutC,EAAKzmD,KAAOwmD,EACZC,EAAKx4B,OAASw4B,EAAK/oD,OACnB+oD,EAAKv4B,QAAUu4B,EAAK/oD,OACpBrG,SAAS82B,KAAKnf,YAAYy3C,EAC5B,GAlCA,CAmCF,EA0BAx5D,EAAQy/C,cAAgB,SAAUrhB,GAChC,IAAI7uB,EAAW6uB,EAAM7uB,SACjBo0C,EAA6BvlB,EAAMulB,2BAEvCsV,EADe1pD,EAASC,SAAS9P,QAAQkjD,GAAe,IAC7Be,GAEvB,kBAAmBluB,WAAoD,OAAvCA,UAAUC,cAAcM,YAC1DP,UAAUC,cAAcM,WAAWgqB,YAAY,CAC7CC,UAAW,sBAGjB,EAEAjgD,EAAQy5D,uBAAyB,SAAUzqB,GAGzCiqB,EAFejqB,EAAMx/B,SACYw/B,EAAM2U,2BAEzC,ujBCvGArjD,EAAAqB,EAAApB,EAAA,OACAyxB,EAAAnwB,EAAAtB,EAAA,OACAshC,EAAAthC,EAAA,MAEAm5D,EAAAn5D,EAAA,MACAuhC,EAAAvhC,EAAA,MACAg/B,EAAAh/B,EAAA,0IAE0B,IAAfD,EAAA4vC,aACV5vC,EAAA4vC,WAAA,qBAAAxmC,MAAA,kCAGD,MAAMwiB,GAAiB,EAAA5rB,EAAA4vC,aACtB,CAAA/oC,EAmBCM,KACK,IAnBL,GACCukB,EADD,SAEC1d,EAFD,KAGCzB,EAHD,MAICie,EAJD,YAKC4kC,EALD,gBAMCC,EAND,MAOCxxC,EAPD,UAQC3a,EARD,gBASCK,EATD,MAUCkI,EAVD,QAWC+M,EAXD,QAYCqT,EAZD,QAaCzsB,EAbD,SAcC26B,EAdD,kBAeC4wB,GAhBF9jD,EAiBKiqD,EAAAzkB,EAAAxlC,EAAAw2C,GAIJ,OACCr9C,EAAAoB,QAAAsD,cAACu6B,EAAA5+B,SAAD,CAAA4gB,YAAA,EAAAC,SAAA,CAAAC,SAAAC,EAAAC,WAAA,GAAAC,aAAA,KACEwc,IAAA,IAAC,iBAAE+D,GAAH/D,EAAwBhzB,EAAAuhC,EAAAvO,EAAAu7B,GAAA,OACxBr5D,EAAAoB,QAAAsD,cAAC68B,EAAAsO,MAAD,EAAAhN,EAAAzhC,SAAA,CACCyc,MAAOA,EACPuxC,YAAaA,EACblsD,UAAWA,EACXK,gBAAiBA,EACjB8rD,gBAAiBA,EACjB72C,QAAS9K,IAGR,GAAIm0B,EACH,OAGD,MAAMy3B,GAAmB,EAAAF,EAAA7oB,gBAAe7iC,GAEpC4rD,IACH,EAAA93B,EAAAQ,kXAAAp8B,CAAA,CACC8H,QACAge,KACAnf,OACAie,QACAqB,UACAzsB,UACAurD,oBACAD,UAAWj/C,GACRX,IAIkB,mBAAZ0N,GACVA,EAAQ9K,EAAO4rD,EACf,EAEF5tC,GAAIA,EACJvkB,IAAKA,GAAO4yB,GACR+2B,EAnCL,CAAA7vC,YAAA,EAAAC,SAAA,CAAAC,SAAAC,EAAAC,WAAA,GAAAC,aAAA,KAoCEtT,EAtCJ,GADD,IAtBF,mBAqEA4d,EAAe/mB,UAAY,CAC1B6mB,GAAIgG,EAAAtwB,QAAUzC,OAAOy0B,WACrBwqB,WAAYlsB,EAAAtwB,QAAUm4D,OACtBzb,WAAYpsB,EAAAtwB,QAAUm4D,OACtBC,OAAQ9nC,EAAAtwB,QAAU+xB,KAClB6qB,WAAYtsB,EAAAtwB,QAAUoF,iFCzEnBizD,EACFC,EACAC,EACAC,EACAC,EAEAC,EA6DAC,YAzDAC,EAAkB,CAAC,EACnBC,EAAW,IAAM/oD,KAAKgpD,GACtBC,EAAWjpD,KAAKgpD,GAAK,IACrBE,EAASlpD,KAAKmpD,MAEdC,EAAW,WACXC,EAAiB,yCACjBC,EAAc,YACdC,EAAmB,CACjBC,UAAW,qBACXC,MAAO,gBACPC,MAAO,WAETC,EAAiB,SAAwBC,EAAOx7C,GAC9C,OAAOA,EAAKne,IAAIme,EAAKtN,EAAGsN,EAAK3W,EAAGuI,KAAKgT,MAAkC,KAA3B5E,EAAK7Z,EAAI6Z,EAAKjd,EAAIy4D,IAAkB,IAAQx7C,EAAK8a,EAAG9a,EAClG,EACAy7C,EAAqB,SAA4BD,EAAOx7C,GACtD,OAAOA,EAAKne,IAAIme,EAAKtN,EAAGsN,EAAK3W,EAAa,IAAVmyD,EAAcx7C,EAAKzf,EAAIqR,KAAKgT,MAAkC,KAA3B5E,EAAK7Z,EAAI6Z,EAAKjd,EAAIy4D,IAAkB,IAAQx7C,EAAK8a,EAAG9a,EACzH,EACA07C,EAA8B,SAAqCF,EAAOx7C,GACxE,OAAOA,EAAKne,IAAIme,EAAKtN,EAAGsN,EAAK3W,EAAGmyD,EAAQ5pD,KAAKgT,MAAkC,KAA3B5E,EAAK7Z,EAAI6Z,EAAKjd,EAAIy4D,IAAkB,IAAQx7C,EAAK8a,EAAI9a,EAAKtW,EAAGsW,EACnH,EAEA27C,EAAwB,SAA+BH,EAAOx7C,GAC5D,IAAIrY,EAAQqY,EAAK7Z,EAAI6Z,EAAKjd,EAAIy4D,EAC9Bx7C,EAAKne,IAAIme,EAAKtN,EAAGsN,EAAK3W,KAAM1B,GAASA,EAAQ,GAAK,GAAK,KAAOqY,EAAK8a,EAAG9a,EACxE,EACA47C,EAA0B,SAAiCJ,EAAOx7C,GAChE,OAAOA,EAAKne,IAAIme,EAAKtN,EAAGsN,EAAK3W,EAAGmyD,EAAQx7C,EAAKzf,EAAIyf,EAAKtW,EAAGsW,EAC3D,EACA67C,EAAmC,SAA0CL,EAAOx7C,GAClF,OAAOA,EAAKne,IAAIme,EAAKtN,EAAGsN,EAAK3W,EAAa,IAAVmyD,EAAcx7C,EAAKtW,EAAIsW,EAAKzf,EAAGyf,EACjE,EACA87C,EAAkB,SAAyBz5D,EAAQ05D,EAAUp0D,GAC3D,OAAOtF,EAAOkc,MAAMw9C,GAAYp0D,CAClC,EACAq0D,EAAiB,SAAwB35D,EAAQ05D,EAAUp0D,GACzD,OAAOtF,EAAOkc,MAAMC,YAAYu9C,EAAUp0D,EAC5C,EACAs0D,EAAmB,SAA0B55D,EAAQ05D,EAAUp0D,GAC7D,OAAOtF,EAAO65D,MAAMH,GAAYp0D,CAClC,EACAw0D,EAAe,SAAsB95D,EAAQ05D,EAAUp0D,GACrD,OAAOtF,EAAO65D,MAAME,OAAS/5D,EAAO65D,MAAMG,OAAS10D,CACrD,EACA20D,EAAyB,SAAgCj6D,EAAQ05D,EAAUp0D,EAAOqY,EAAMw7C,GACtF,IAAIxpC,EAAQ3vB,EAAO65D,MACnBlqC,EAAMoqC,OAASpqC,EAAMqqC,OAAS10D,EAC9BqqB,EAAMuqC,gBAAgBf,EAAOxpC,EAC/B,EACAwqC,EAA6B,SAAoCn6D,EAAQ05D,EAAUp0D,EAAOqY,EAAMw7C,GAC9F,IAAIxpC,EAAQ3vB,EAAO65D,MACnBlqC,EAAM+pC,GAAYp0D,EAClBqqB,EAAMuqC,gBAAgBf,EAAOxpC,EAC/B,EACAyqC,EAAiB,YACjBC,EAAuBD,EAAiB,SAExCE,EAAiB,SAAwBj4D,EAAMk4D,GAC7C,IAAIr8D,EAAI65D,EAAKyC,gBAAkBzC,EAAKyC,iBAAiBD,GAAM,gCAAgC98D,QAAQ,SAAU,QAAS4E,GAAQ01D,EAAKh1D,cAAcV,GAEjJ,OAAOnE,EAAEge,MAAQhe,EAAI65D,EAAKh1D,cAAcV,EAC1C,EACAo4D,EAAuB,SAASA,EAAqBz6D,EAAQ05D,EAAUgB,GACrE,IAAIC,EAAKhH,iBAAiB3zD,GAC1B,OAAO26D,EAAGjB,IAAaiB,EAAGC,iBAAiBlB,EAASj8D,QAAQk7D,EAAU,OAAO57D,gBAAkB49D,EAAGC,iBAAiBlB,KAAcgB,GAAsBD,EAAqBz6D,EAAQ66D,EAAiBnB,IAAaA,EAAU,IAAM,EACpO,EACAoB,EAAY,qBAAqBt6D,MAAM,KACvCq6D,EAAmB,SAA0BnB,EAAUrxD,EAAS0yD,GAC9D,IACEj3D,GADMuE,GAAW6vD,GACXh8C,MACN9e,EAAI,EACN,GAAIs8D,KAAY51D,IAAMi3D,EACpB,OAAOrB,EAGT,IADAA,EAAWA,EAAS77D,OAAO,GAAGf,cAAgB48D,EAASl2C,OAAO,GACvDpmB,OAAS09D,EAAU19D,GAAKs8D,KAAY51D,KAC3C,OAAO1G,EAAI,EAAI,MAAc,IAANA,EAAU,KAAOA,GAAK,EAAI09D,EAAU19D,GAAK,IAAMs8D,CACxE,EACAsB,EAAY,WAjFe,oBAAXnsD,QAkFSA,OAAO1G,WAC5B2vD,EAAOjpD,OACPkpD,EAAOD,EAAK3vD,SACZ6vD,EAAcD,EAAKx/C,gBACnB2/C,EAAWoC,EAAe,QAAU,CAClCp+C,MAAO,CAAC,GAEOo+C,EAAe,OAChCF,EAAiBS,EAAiBT,GAClCC,EAAuBD,EAAiB,SACxClC,EAASh8C,MAAMm1B,QAAU,2DAEzB+mB,IAAgByC,EAAiB,eACjC5C,EAAiB,EAErB,EACAgD,EAAe,SAASA,EAAaC,GAEnC,IAIEC,EAJEC,EAAMd,EAAe,MAAOl6D,KAAKi7D,iBAAmBj7D,KAAKi7D,gBAAgBvU,aAAa,UAAY,8BACpGwU,EAAYl7D,KAAKoxC,WACjB+pB,EAAan7D,KAAKo7D,YAClBC,EAASr7D,KAAK8b,MAAMm1B,QAKtB,GAHA2mB,EAAYl4C,YAAYs7C,GACxBA,EAAIt7C,YAAY1f,MAChBA,KAAK8b,MAAM0b,QAAU,QACjBsjC,EACF,IACEC,EAAO/6D,KAAKs7D,UACZt7D,KAAKu7D,UAAYv7D,KAAKs7D,QAEtBt7D,KAAKs7D,QAAUT,CACjB,CAAE,MAAO/8D,GAAI,MACJkC,KAAKu7D,YACdR,EAAO/6D,KAAKu7D,aAWd,OATIL,IACEC,EACFD,EAAU9+B,aAAap8B,KAAMm7D,GAE7BD,EAAUx7C,YAAY1f,OAG1B43D,EAAYj4C,YAAYq7C,GACxBh7D,KAAK8b,MAAMm1B,QAAUoqB,EACdN,CACT,EACAS,EAAyB,SAAgC57D,EAAQ67D,GAE/D,IADA,IAAIz+D,EAAIy+D,EAAgBj/D,OACjBQ,KACL,GAAI4C,EAAO87D,aAAaD,EAAgBz+D,IACtC,OAAO4C,EAAO8mD,aAAa+U,EAAgBz+D,GAGjD,EACA2+D,EAAW,SAAkB/7D,GAC3B,IAAIg8D,EACJ,IACEA,EAASh8D,EAAO07D,SAClB,CAAE,MAAOn0D,GACPy0D,EAASf,EAAa97D,KAAKa,GAAQ,EACrC,CAGA,OAFAg8D,IAAWA,EAAO/kD,OAAS+kD,EAAO9kD,SAAWlX,EAAO07D,UAAYT,IAAiBe,EAASf,EAAa97D,KAAKa,GAAQ,KAE7Gg8D,GAAWA,EAAO/kD,OAAU+kD,EAAOv/D,GAAMu/D,EAAO5qD,EAKnD4qD,EALuD,CACzDv/D,GAAIm/D,EAAuB57D,EAAQ,CAAC,IAAK,KAAM,QAAU,EACzDoR,GAAIwqD,EAAuB57D,EAAQ,CAAC,IAAK,KAAM,QAAU,EACzDiX,MAAO,EACPC,OAAQ,EAEZ,EACA+kD,EAAS,SAAgB/9D,GACvB,SAAUA,EAAEg+D,QAAYh+D,EAAEszC,aAActzC,EAAEm9D,kBAAoBU,EAAS79D,GACzE,EAEAi+D,EAAkB,SAAyBn8D,EAAQ05D,GACjD,GAAIA,EAAU,CACZ,IAAIx9C,EAAQlc,EAAOkc,MACfw9C,KAAYrB,GAAmBqB,IAAaW,IAC9CX,EAAWU,GAETl+C,EAAMkgD,gBACsB,OAA1B1C,EAASl2C,OAAO,EAAG,IAAyC,WAA1Bk2C,EAASl2C,OAAO,EAAG,KAEvDk2C,EAAW,IAAMA,GAEnBx9C,EAAMkgD,eAAe1C,EAASj8D,QAAQk7D,EAAU,OAAO57D,gBAGvDmf,EAAMmgD,gBAAgB3C,EAE1B,CACF,EACA4C,EAAoB,SAA2BzuC,EAAQ7tB,EAAQ05D,EAAU6C,EAAWC,EAAKC,GACvF,IAAIC,EAAK,IAAI,KAAU7uC,EAAO8uC,IAAK38D,EAAQ05D,EAAU,EAAG,EAAG+C,EAAejD,EAAmCD,GAK7G,OAJA1rC,EAAO8uC,IAAMD,EACbA,EAAGr1D,EAAIk1D,EACPG,EAAGx+D,EAAIs+D,EACP3uC,EAAOue,OAAOtmC,KAAK4zD,GACZgD,CACT,EACAE,EAAuB,CACrBC,IAAK,EACLC,IAAK,EACLC,KAAM,GAGRC,EAAiB,SAASA,EAAeh9D,EAAQ05D,EAAUp0D,EAAOosD,GAChE,IAUE9jC,EACAkmC,EACAnkC,EACAstC,EAbEC,EAAWzL,WAAWnsD,IAAU,EAClC63D,GAAW73D,EAAQ,IAAI5I,OAAO8mB,QAAQ05C,EAAW,IAAItgE,SAAW,KAEhEsf,EAAQg8C,EAASh8C,MACjBkhD,EAAaxE,EAAet7D,KAAKo8D,GACjC2D,EAA6C,QAAjCr9D,EAAOw+B,QAAQzhC,cAC3BugE,GAAmBD,EAAY,SAAW,WAAaD,EAAa,QAAU,UAC9EG,EAAS,IACTC,EAAoB,OAAT9L,EACX+L,EAAqB,MAAT/L,EAKd,OAAIA,IAASyL,IAAYD,GAAYN,EAAqBlL,IAASkL,EAAqBO,GAC/ED,GAEG,OAAZC,IAAqBK,IAAaN,EAAWF,EAAeh9D,EAAQ05D,EAAUp0D,EAAO,OACrF23D,EAAQj9D,EAAOk8D,QAAUD,EAAOj8D,IAC3By9D,GAAyB,MAAZN,IAAqB9E,EAAgBqB,MAAcA,EAASjxD,QAAQ,UAItFyT,EAAMkhD,EAAa,QAAU,UAAYG,GAAUC,EAAWL,EAAUzL,GACxEoC,GAAU4F,EAASjxD,QAAQ,UAAqB,OAATipD,GAAiB1xD,EAAO8f,cAAgBu9C,EAAYr9D,EAASA,EAAOwxC,WACvGyrB,IACFnJ,GAAU9zD,EAAOq7D,iBAAmB,CAAC,GAAG7pB,YAErCsiB,GAAUA,IAAWiE,GAASjE,EAAOh0C,cACxCg0C,EAASiE,EAAK1/C,OAEhBsX,EAAQmkC,EAAO+F,QACF4D,GAAa9tC,EAAM1Y,OAASmmD,GAAcztC,EAAM6jC,OAAS,KAAQA,MACrE,QAAO0J,EAAWvtC,EAAM1Y,MAAQsmD,KAEtCE,GAAyB,MAAZN,KAAqBjhD,EAAMiD,SAAWs7C,EAAqBz6D,EAAQ,aACjF8zD,IAAW9zD,IAAWkc,EAAMiD,SAAW,UAEvC20C,EAAOh0C,YAAYo4C,GACnBtqC,EAAKsqC,EAASoF,GACdxJ,EAAO/zC,YAAYm4C,GACnBh8C,EAAMiD,SAAW,WACbi+C,GAAcK,KAChB9tC,GAAQ,QAAUmkC,IACZN,KAAO,KAAQA,KACrB7jC,EAAM1Y,MAAQ68C,EAAOwJ,KAGlB,QAAOE,EAAW5vC,EAAKsvC,EAAWK,EAAS3vC,GAAMsvC,EAAWK,EAAS3vC,EAAKsvC,EAAW,MA5B1FtvC,EAAKqvC,EAAQj9D,EAAO07D,UAAU0B,EAAa,QAAU,UAAYp9D,EAAOs9D,IACjE,QAAOG,EAAYP,EAAWtvC,EAAK2vC,EAASL,EAAW,IAAMtvC,IA4BxE,EACA8vC,EAAO,SAAc19D,EAAQ05D,EAAUhI,EAAMiM,GAC3C,IAAIr4D,EAiBJ,OAhBA2yD,GAAkB+C,IACdtB,KAAYZ,GAAiC,cAAbY,KAClCA,EAAWZ,EAAiBY,IACdjxD,QAAQ,OACpBixD,EAAWA,EAASl5D,MAAM,KAAK,IAG/B63D,EAAgBqB,IAA0B,cAAbA,GAC/Bp0D,EAAQs4D,GAAgB59D,EAAQ29D,GAChCr4D,EAAqB,oBAAbo0D,EAAiCp0D,EAAMo0D,GAAYmE,GAAcpD,EAAqBz6D,EAAQq6D,IAAyB,IAAM/0D,EAAMw4D,QAAU,SAErJx4D,EAAQtF,EAAOkc,MAAMw9C,KACG,SAAVp0D,GAAoBq4D,KAAar4D,EAAQ,IAAImD,QAAQ,YACjEnD,EAAQy4D,EAAcrE,IAAaqE,EAAcrE,GAAU15D,EAAQ05D,EAAUhI,IAAS+I,EAAqBz6D,EAAQ05D,KAAa,OAAa15D,EAAQ05D,KAA2B,YAAbA,EAAyB,EAAI,IAG7LhI,MAAWpsD,EAAQ,IAAI5I,OAAO+L,QAAQ,KAAOu0D,EAAeh9D,EAAQ05D,EAAUp0D,EAAOosD,GAAQA,EAAOpsD,CAC7G,EACA04D,EAAyB,SAAgCh+D,EAAQynC,EAAM+K,EAAOgqB,GAE5E,IAAKhqB,GAAmB,SAAVA,EAAkB,CAE9B,IAAIxrC,EAAI6zD,EAAiBpzB,EAAMznC,EAAQ,GACrC8D,EAAIkD,GAAKyzD,EAAqBz6D,EAAQgH,EAAG,GACvClD,GAAKA,IAAM0uC,GACb/K,EAAOzgC,EACPwrC,EAAQ1uC,GACU,gBAAT2jC,IACT+K,EAAQioB,EAAqBz6D,EAAQ,kBAEzC,CACA,IAGE/B,EACAgQ,EACAgwD,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAdEhC,EAAK,IAAI,KAAUt8D,KAAKu8D,IAAK38D,EAAOkc,MAAOurB,EAAM,EAAG,EAAG,MACzDlgB,EAAQ,EACRo3C,EAAa,EA+Bf,GAjBAjC,EAAGr1D,EAAImrC,EACPkqB,EAAGx+D,EAAIs+D,EACPhqB,GAAS,GAGG,UADZgqB,GAAO,MAELx8D,EAAOkc,MAAMurB,GAAQ+0B,EACrBA,EAAM/B,EAAqBz6D,EAAQynC,IAAS+0B,EAC5Cx8D,EAAOkc,MAAMurB,GAAQ+K,GAEvBv0C,EAAI,CAACu0C,EAAOgqB,IACZ,QAAmBv+D,GAGnBu+D,EAAMv+D,EAAE,GACRggE,GAFAzrB,EAAQv0C,EAAE,IAEUwrB,MAAM,OAAoB,IAClC+yC,EAAI/yC,MAAM,OAAoB,IAC5B7sB,OAAQ,CACpB,KAAOqR,EAAS,KAAgB6Y,KAAK01C,IACnC6B,EAAWpwD,EAAO,GAClBswD,EAAQ/B,EAAI1rC,UAAUvJ,EAAOtZ,EAAOsZ,OAChC42C,EACFA,GAASA,EAAQ,GAAK,EACQ,UAArBI,EAAM/6C,QAAQ,IAAuC,UAArB+6C,EAAM/6C,QAAQ,KACvD26C,EAAQ,GAENE,KAAcD,EAAaH,EAAYU,MAAiB,MAC1DT,EAAWzM,WAAW2M,IAAe,EACrCK,EAAYL,EAAW56C,QAAQ06C,EAAW,IAAIthE,SAC9C8hE,EAAkC,MAAvBL,EAASxgE,OAAO,KAAewgE,EAASxgE,OAAO,GAAK,KAAO,KAEpEwgE,EAAWA,EAAS76C,OAAO,IAE7B86C,EAAS7M,WAAW4M,GACpBG,EAAUH,EAAS76C,QAAQ86C,EAAS,IAAI1hE,QACxC2qB,EAAQ,KAAgBq3C,UAAYJ,EAAQ5hE,OACvC4hE,IAEHA,EAAUA,GAAW,KAAQK,MAAMp3B,IAASg3B,EACxCl3C,IAAUi1C,EAAI5/D,SAChB4/D,GAAOgC,EACP9B,EAAGx+D,GAAKsgE,IAGRC,IAAcD,IAChBN,EAAWlB,EAAeh9D,EAAQynC,EAAM22B,EAAYI,IAAY,GAGlE9B,EAAGC,IAAM,CACPmC,MAAOpC,EAAGC,IACV31D,EAAGu3D,GAAwB,IAAfI,EAAmBJ,EAAQ,IAEvCz6D,EAAGo6D,EACHx9D,EAAGg+D,EAAWA,EAAWJ,EAASA,EAASJ,EAC3CtgE,EAAGugE,GAASA,EAAQ,GAAc,WAAT12B,EAAoBl4B,KAAKgT,MAAQ,IAIhEm6C,EAAGh8D,EAAI6mB,EAAQi1C,EAAI5/D,OAAS4/D,EAAI1rC,UAAUvJ,EAAOi1C,EAAI5/D,QAAU,EACjE,MACE8/D,EAAG1+D,EAAa,YAATypC,GAA8B,SAAR+0B,EAAiBhD,EAAmCD,EAMnF,OAJA,KAAQj8D,KAAKk/D,KAASE,EAAGx+D,EAAI,GAE7BkC,KAAKu8D,IAAMD,EAEJA,CACT,EACAqC,EAAoB,CAClB3/C,IAAK,KACLgY,OAAQ,OACR/X,KAAM,KACNgY,MAAO,OACP2nC,OAAQ,OAgBVC,EAAoB,SAA2B9F,EAAOx7C,GACpD,GAAIA,EAAKuhD,OAASvhD,EAAKuhD,MAAMC,QAAUxhD,EAAKuhD,MAAME,KAAM,CACtD,IAIE33B,EACA43B,EACAjiE,EANE4C,EAAS2d,EAAKtN,EAChB6L,EAAQlc,EAAOkc,MACfxa,EAAQic,EAAK8a,EACb9I,EAAQ3vB,EAAO65D,MAIjB,GAAc,QAAVn4D,IAA6B,IAAVA,EACrBwa,EAAMm1B,QAAU,GAChBguB,EAAkB,OAIlB,IADAjiE,GADAsE,EAAQA,EAAMlB,MAAM,MACV5D,SACDQ,GAAK,GACZqqC,EAAO/lC,EAAMtE,GACTi7D,EAAgB5wB,KAClB43B,EAAkB,EAClB53B,EAAgB,oBAATA,EAA6B4yB,EAAuBD,GAE7D+B,EAAgBn8D,EAAQynC,GAGxB43B,IACFlD,EAAgBn8D,EAAQo6D,GACpBzqC,IACFA,EAAMyrC,KAAOp7D,EAAOq8D,gBAAgB,aACpCuB,GAAgB59D,EAAQ,GAExB2vB,EAAMguC,QAAU,GAGtB,CACF,EAEAI,EAAgB,CACduB,WAAY,SAAoBzxC,EAAQ7tB,EAAQ05D,EAAU2E,EAAUa,GAClE,GAAmB,gBAAfA,EAAMvhD,KAAwB,CAChC,IAAI++C,EAAK7uC,EAAO8uC,IAAM,IAAI,KAAU9uC,EAAO8uC,IAAK38D,EAAQ05D,EAAU,EAAG,EAAGuF,GAKxE,OAJAvC,EAAGjkC,EAAI4lC,EACP3B,EAAG6C,IAAM,GACT7C,EAAGwC,MAAQA,EACXrxC,EAAOue,OAAOtmC,KAAK4zD,GACZ,CACT,CACF,GAsEF8F,EAAoB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GACpCC,EAAwB,CAAC,EACzBC,EAAmB,SAA0Bp6D,GAC3C,MAAiB,6BAAVA,GAAkD,SAAVA,IAAqBA,CACtE,EACAq6D,GAAqC,SAA4C3/D,GAC/E,IAAI4/D,EAAenF,EAAqBz6D,EAAQo6D,GAChD,OAAOsF,EAAiBE,GAAgBJ,EAAoBI,EAAap8C,OAAO,GAAGiG,MAAM,MAASjtB,IAAI,KACxG,EACAqjE,GAAa,SAAoB7/D,EAAQ8/D,GACvC,IAGEhM,EACA0H,EACA98B,EACAqhC,EANEpwC,EAAQ3vB,EAAO65D,QAAS,QAAU75D,GACpCkc,EAAQlc,EAAOkc,MACf8jD,EAASL,GAAmC3/D,GAK9C,OAAI2vB,EAAMyrC,KAAOp7D,EAAO8mD,aAAa,aAIP,iBAD5BkZ,EAAS,EAFTthC,EAAO1+B,EAAOosB,UAAU5jB,QAAQy3D,cAAcD,QAE/B/hE,EAAGygC,EAAKr3B,EAAGq3B,EAAKh+B,EAAGg+B,EAAKj7B,EAAGi7B,EAAKxgC,EAAGwgC,EAAKp3B,IACzCzK,KAAK,KAAyB2iE,EAAoBQ,GACvDA,IAAWR,GAAsBx/D,EAAOkgE,cAAgBlgE,IAAWg4D,GAAgBroC,EAAMyrC,MAGlG18B,EAAOxiB,EAAM0b,QACb1b,EAAM0b,QAAU,SAChBk8B,EAAS9zD,EAAOwxC,aACAxxC,EAAOkgE,eAErBH,EAAa,EAEbvE,EAAcx7D,EAAOw7D,YACrBxD,EAAYl4C,YAAY9f,IAE1BggE,EAASL,GAAmC3/D,GAC5C0+B,EAAOxiB,EAAM0b,QAAU8G,EAAOy9B,EAAgBn8D,EAAQ,WAClD+/D,IACFvE,EAAc1H,EAAOt3B,aAAax8B,EAAQw7D,GAAe1H,EAASA,EAAOh0C,YAAY9f,GAAUg4D,EAAYj4C,YAAY/f,KAGpH8/D,GAAWE,EAAOpjE,OAAS,EAAI,CAACojE,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,IAAKA,EAAO,KAAOA,EAC/G,EACAG,GAAkB,SAAyBngE,EAAQ4xB,EAAQwuC,EAAkBC,EAAQC,EAAaC,GAChG,IAeEvE,EACAwE,EAEApvD,EAlBEue,EAAQ3vB,EAAO65D,MACjBmG,EAASM,GAAeT,GAAW7/D,GAAQ,GAC3CygE,EAAa9wC,EAAM+wC,SAAW,EAC9BC,EAAahxC,EAAMixC,SAAW,EAC9BC,EAAalxC,EAAMmxC,SAAW,EAC9BC,EAAapxC,EAAMqxC,SAAW,EAC9B/iE,EAAI+hE,EAAO,GACX34D,EAAI24D,EAAO,GACXt/D,EAAIs/D,EAAO,GACXv8D,EAAIu8D,EAAO,GACXiB,EAAKjB,EAAO,GACZkB,EAAKlB,EAAO,GACZmB,EAAcvvC,EAAOpxB,MAAM,KAC3BkgE,EAAUjP,WAAW0P,EAAY,KAAO,EACxCP,EAAUnP,WAAW0P,EAAY,KAAO,EAKrCf,EAIMJ,IAAWR,IAAsBgB,EAAcviE,EAAIwF,EAAI4D,EAAI3G,KAGpE0Q,EAAIsvD,IAAYr5D,EAAIm5D,GAAeI,GAAW3iE,EAAIuiE,IAAgBviE,EAAIijE,EAAK75D,EAAI45D,GAAMT,EACrFE,EAFIA,GAAWj9D,EAAI+8D,GAAeI,IAAYlgE,EAAI8/D,IAAgB9/D,EAAIwgE,EAAKz9D,EAAIw9D,GAAMT,EAGrFI,EAAUxvD,IAPVsvD,GADA1E,EAASD,EAAS/7D,IACDvD,IAAM0kE,EAAY,GAAG14D,QAAQ,KAAOi4D,EAAU,IAAM1E,EAAO/kD,MAAQypD,GACpFE,EAAU5E,EAAO5qD,KAAO+vD,EAAY,IAAMA,EAAY,IAAI14D,QAAQ,KAAOm4D,EAAU,IAAM5E,EAAO9kD,OAAS0pD,IAQvGP,IAAqB,IAAXA,GAAoB1wC,EAAM0wC,QACtCY,EAAKP,EAAUD,EACfS,EAAKN,EAAUD,EACfhxC,EAAMmxC,QAAUD,GAAcI,EAAKhjE,EAAIijE,EAAKxgE,GAAKugE,EACjDtxC,EAAMqxC,QAAUD,GAAcE,EAAK55D,EAAI65D,EAAKz9D,GAAKy9D,GAEjDvxC,EAAMmxC,QAAUnxC,EAAMqxC,QAAU,EAElCrxC,EAAM+wC,QAAUA,EAChB/wC,EAAMixC,QAAUA,EAChBjxC,EAAM0wC,SAAWA,EACjB1wC,EAAMiC,OAASA,EACfjC,EAAMywC,mBAAqBA,EAC3BpgE,EAAOkc,MAAMm+C,GAAwB,UAEjCkG,IACFjE,EAAkBiE,EAAyB5wC,EAAO,UAAW8wC,EAAYC,GACzEpE,EAAkBiE,EAAyB5wC,EAAO,UAAWgxC,EAAYC,GACzEtE,EAAkBiE,EAAyB5wC,EAAO,UAAWkxC,EAAYlxC,EAAMmxC,SAC/ExE,EAAkBiE,EAAyB5wC,EAAO,UAAWoxC,EAAYpxC,EAAMqxC,UAEjFhhE,EAAOyO,aAAa,kBAAmBiyD,EAAU,IAAME,EACzD,EACAhD,GAAkB,SAAyB59D,EAAQ29D,GACjD,IAAIhuC,EAAQ3vB,EAAO65D,OAAS,IAAI,KAAQ75D,GACxC,GAAI,MAAO2vB,IAAUguC,IAAYhuC,EAAMguC,QACrC,OAAOhuC,EAET,IAKElzB,EACA2U,EACA0kB,EACAikC,EACAC,EACAoH,EACAC,EACAC,EACAC,EACAC,EACAC,EACAf,EACAE,EACAZ,EACA0B,EACAC,EACAC,EACA3jE,EACAoJ,EACA3G,EACA+C,EACAo+D,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EApCErmD,EAAQlc,EAAOkc,MACjBsmD,EAAiB7yC,EAAMoqC,OAAS,EAChCnsC,EAAK,KACLivC,EAAM,MACNjrC,EAAS6oC,EAAqBz6D,EAAQq6D,IAAyB,IAsKjE,OArIA59D,EAAI2U,EAAI0kB,EAAIsrC,EAAWC,EAAYC,EAAYC,EAAQC,EAAQC,EAAc,EAC7E1H,EAASC,EAAS,EAClBrqC,EAAMyrC,OAASp7D,EAAOk8D,SAAUD,EAAOj8D,IACvCggE,EAASH,GAAW7/D,EAAQ2vB,EAAMyrC,KAC9BzrC,EAAMyrC,MACR2G,GAAMpyC,EAAMguC,UAAYA,GAAW39D,EAAO8mD,aAAa,mBACvDqZ,GAAgBngE,EAAQ+hE,GAAMnwC,IAAUmwC,GAAMpyC,EAAMywC,kBAAmC,IAAjBzwC,EAAM0wC,OAAkBL,IAEhGU,EAAU/wC,EAAM+wC,SAAW,EAC3BE,EAAUjxC,EAAMixC,SAAW,EACvBZ,IAAWR,IACbvhE,EAAI+hE,EAAO,GAEX34D,EAAI24D,EAAO,GAEXt/D,EAAIs/D,EAAO,GAEXv8D,EAAIu8D,EAAO,GAEXvjE,EAAIolE,EAAM7B,EAAO,GACjB5uD,EAAI0wD,EAAM9B,EAAO,GAEK,IAAlBA,EAAOpjE,QACTm9D,EAASxqD,KAAKkzD,KAAKxkE,EAAIA,EAAIoJ,EAAIA,GAC/B2yD,EAASzqD,KAAKkzD,KAAKh/D,EAAIA,EAAI/C,EAAIA,GAC/B0gE,EAAWnjE,GAAKoJ,EAAIoxD,EAAOpxD,EAAGpJ,GAAKq6D,EAAW,GAE9CiJ,EAAQ7gE,GAAK+C,EAAIg1D,EAAO/3D,EAAG+C,GAAK60D,EAAW8I,EAAW,KAC5CpH,GAAUzqD,KAAKq7C,IAAIr7C,KAAKoyD,IAAIJ,EAAQ/I,KAC1C7oC,EAAMyrC,MACR3+D,GAAKikE,GAAWA,EAAUziE,EAAI2iE,EAAUlgE,GACxC0Q,GAAKwvD,GAAWF,EAAUr5D,EAAIu5D,EAAUn9D,MAG1C8+D,EAAMvC,EAAO,GACbqC,EAAMrC,EAAO,GACbkC,EAAMlC,EAAO,GACbmC,EAAMnC,EAAO,GACboC,EAAMpC,EAAO,IACbsC,EAAMtC,EAAO,IACbvjE,EAAIujE,EAAO,IACX5uD,EAAI4uD,EAAO,IACXlqC,EAAIkqC,EAAO,IAEXqB,GADAK,EAAQjJ,EAAO8J,EAAKH,IACA9J,EAEhBoJ,IAGFK,EAAKF,GAFLF,EAAMpyD,KAAKoyD,KAAKD,IAECQ,GADjBN,EAAMryD,KAAKqyD,KAAKF,IAEhBM,EAAKF,EAAMH,EAAMQ,EAAMP,EACvBK,EAAKM,EAAMZ,EAAMS,EAAMR,EACvBM,EAAML,GAAOD,EAAMM,EAAMP,EACzBQ,EAAML,GAAOF,EAAMO,EAAMR,EACzBS,EAAMG,GAAOX,EAAMQ,EAAMT,EACzBW,EAAMD,GAAOT,EAAMU,EAAMX,EACzBE,EAAME,EACND,EAAME,EACNO,EAAMN,GAIRX,GADAI,EAAQjJ,GAAQ/3D,EAAG0hE,IACC9J,EAChBoJ,IACFC,EAAMpyD,KAAKoyD,KAAKD,GAKhBY,EAAM7+D,GAJNm+D,EAAMryD,KAAKqyD,KAAKF,IAIAY,EAAMX,EACtB1jE,EAJA8jE,EAAK9jE,EAAI0jE,EAAMO,EAAMN,EAKrBv6D,EAJA26D,EAAK36D,EAAIs6D,EAAMQ,EAAMP,EAKrBlhE,EAJAuhE,EAAKvhE,EAAIihE,EAAMS,EAAMR,GAQvBR,GADAM,EAAQjJ,EAAOpxD,EAAGpJ,IACCq6D,EACfoJ,IAGFK,EAAK9jE,GAFL0jE,EAAMpyD,KAAKoyD,IAAID,IAEAr6D,GADfu6D,EAAMryD,KAAKqyD,IAAIF,IAEfM,EAAKH,EAAMF,EAAMG,EAAMF,EACvBv6D,EAAIA,EAAIs6D,EAAM1jE,EAAI2jE,EAClBE,EAAMA,EAAMH,EAAME,EAAMD,EACxB3jE,EAAI8jE,EACJF,EAAMG,GAEJX,GAAa9xD,KAAKq7C,IAAIyW,GAAa9xD,KAAKq7C,IAAIwW,GAAY,QAE1DC,EAAYD,EAAW,EACvBE,EAAY,IAAMA,GAEpBvH,GAAS,QAAOxqD,KAAKkzD,KAAKxkE,EAAIA,EAAIoJ,EAAIA,EAAI3G,EAAIA,IAC9Cs5D,GAAS,QAAOzqD,KAAKkzD,KAAKX,EAAMA,EAAMS,EAAMA,IAC5Cb,EAAQjJ,EAAOoJ,EAAKC,GACpBP,EAAQhyD,KAAKq7C,IAAI8W,GAAS,KAASA,EAAQpJ,EAAW,EACtDmJ,EAAca,EAAM,GAAKA,EAAM,GAAKA,EAAMA,GAAO,GAE/C3yC,EAAMyrC,MAER2G,EAAK/hE,EAAO8mD,aAAa,aACzBn3B,EAAM+yC,SAAW1iE,EAAOyO,aAAa,YAAa,MAAQixD,EAAiBjF,EAAqBz6D,EAAQo6D,IACxG2H,GAAM/hE,EAAOyO,aAAa,YAAaszD,KAGvCxyD,KAAKq7C,IAAI2W,GAAS,IAAMhyD,KAAKq7C,IAAI2W,GAAS,MACxCiB,GACFzI,IAAW,EACXwH,GAASH,GAAY,EAAI,KAAO,IAChCA,GAAYA,GAAY,EAAI,KAAO,MAEnCpH,IAAW,EACXuH,GAASA,GAAS,EAAI,KAAO,MAGjC5xC,EAAMlzB,EAAIA,IAAMkzB,EAAMgzC,SAAWlmE,IAAMkzB,EAAMgzC,WAAapzD,KAAKgT,MAAMviB,EAAO+yC,YAAc,KAAOxjC,KAAKgT,OAAO9lB,IAAM,GAAK,KAAOuD,EAAO+yC,YAAcpjB,EAAMgzC,SAAW,IAAM,GAAK/0C,EAChL+B,EAAMve,EAAIA,IAAMue,EAAMizC,SAAWxxD,IAAMue,EAAMizC,WAAarzD,KAAKgT,MAAMviB,EAAO6iE,aAAe,KAAOtzD,KAAKgT,OAAOnR,IAAM,GAAK,KAAOpR,EAAO6iE,aAAelzC,EAAMizC,SAAW,IAAM,GAAKh1C,EAClL+B,EAAMmG,EAAIA,EAAIlI,EACd+B,EAAMoqC,QAAS,QAAOA,GACtBpqC,EAAMqqC,QAAS,QAAOA,GACtBrqC,EAAMyxC,UAAW,QAAOA,GAAYvE,EACpCltC,EAAM0xC,WAAY,QAAOA,GAAaxE,EACtCltC,EAAM2xC,WAAY,QAAOA,GAAazE,EACtCltC,EAAM4xC,MAAQA,EAAQ1E,EACtBltC,EAAM6xC,MAAQA,EAAQ3E,EACtBltC,EAAMmzC,qBAAuBrB,EAAc7zC,GACvC+B,EAAMmuC,QAAUrM,WAAW7/B,EAAOpxB,MAAM,KAAK,KAAO,KACtD0b,EAAMm+C,GAAwBwD,GAAcjsC,IAE9CjC,EAAMmxC,QAAUnxC,EAAMqxC,QAAU,EAChCrxC,EAAMozC,QAAU,KAAQA,QACxBpzC,EAAMuqC,gBAAkBvqC,EAAMyrC,IAAM4H,GAAuB5K,EAAc6K,GAAuBC,GAChGvzC,EAAMguC,QAAU,EACThuC,CACT,EACAkuC,GAAgB,SAAuBv4D,GACrC,OAAQA,EAAQA,EAAM9E,MAAM,MAAM,GAAK,IAAM8E,EAAM,EACrD,EAEA69D,GAAkB,SAAyBnjE,EAAQwyC,EAAOltC,GACxD,IAAIosD,GAAO,QAAQlf,GACnB,OAAO,QAAOif,WAAWjf,GAASif,WAAWuL,EAAeh9D,EAAQ,IAAKsF,EAAQ,KAAMosD,KAAUA,CACnG,EACAwR,GAAyB,SAAgC/J,EAAOxpC,GAC9DA,EAAMmG,EAAI,MACVnG,EAAM2xC,UAAY3xC,EAAM0xC,UAAY,OACpC1xC,EAAMozC,QAAU,EAChBE,GAAqB9J,EAAOxpC,EAC9B,EACAyzC,GAAW,OACXC,GAAU,MACVC,GAAkB,KAClBL,GAAuB,SAA8B9J,EAAOxpC,GAC1D,IAAIzqB,EAAOyqB,GAASvvB,KAClBuiE,EAAWz9D,EAAKy9D,SAChBC,EAAW19D,EAAK09D,SAChBnmE,EAAIyI,EAAKzI,EACT2U,EAAIlM,EAAKkM,EACT0kB,EAAI5wB,EAAK4wB,EACTsrC,EAAWl8D,EAAKk8D,SAChBE,EAAYp8D,EAAKo8D,UACjBD,EAAYn8D,EAAKm8D,UACjBE,EAAQr8D,EAAKq8D,MACbC,EAAQt8D,EAAKs8D,MACbzH,EAAS70D,EAAK60D,OACdC,EAAS90D,EAAK80D,OACd8I,EAAuB59D,EAAK49D,qBAC5BC,EAAU79D,EAAK69D,QACf/iE,EAASkF,EAAKlF,OACd89D,EAAU54D,EAAK44D,QACfyF,EAAa,GACbC,EAAoB,SAAZT,GAAsB5J,GAAmB,IAAVA,IAA2B,IAAZ4J,EAExD,GAAIjF,IAAYuD,IAAc+B,IAAY9B,IAAc8B,IAAW,CACjE,IAGEzB,EAHED,EAAQjQ,WAAW6P,GAAa9I,EAClC0J,EAAM3yD,KAAKqyD,IAAIF,GACfU,EAAM7yD,KAAKoyD,IAAID,GAEjBA,EAAQjQ,WAAW4P,GAAa7I,EAChCmJ,EAAMpyD,KAAKoyD,IAAID,GACfjlE,EAAI0mE,GAAgBnjE,EAAQvD,EAAGylE,EAAMP,GAAO7D,GAC5C1sD,EAAI+xD,GAAgBnjE,EAAQoR,GAAI7B,KAAKqyD,IAAIF,IAAU5D,GACnDhoC,EAAIqtC,GAAgBnjE,EAAQ81B,EAAGssC,EAAMT,GAAO7D,EAAUA,EACxD,CACIgF,IAAyBO,KAC3BE,GAAc,eAAiBT,EAAuBQ,KAEpDX,GAAYC,KACdW,GAAc,aAAeZ,EAAW,MAAQC,EAAW,QAEzDY,GAAS/mE,IAAM4mE,IAAWjyD,IAAMiyD,IAAWvtC,IAAMutC,MACnDE,GAAcztC,IAAMutC,IAAWG,EAAQ,eAAiB/mE,EAAI,KAAO2U,EAAI,KAAO0kB,EAAI,KAAO,aAAer5B,EAAI,KAAO2U,EAAIkyD,IAErHlC,IAAagC,KACfG,GAAc,UAAYnC,EAAWkC,IAEnChC,IAAc8B,KAChBG,GAAc,WAAajC,EAAYgC,IAErCjC,IAAc+B,KAChBG,GAAc,WAAalC,EAAYiC,IAErC/B,IAAU6B,IAAY5B,IAAU4B,KAClCG,GAAc,QAAUhC,EAAQ,KAAOC,EAAQ8B,IAElC,IAAXvJ,GAA2B,IAAXC,IAClBuJ,GAAc,SAAWxJ,EAAS,KAAOC,EAASsJ,IAEpDtjE,EAAOkc,MAAMk+C,GAAkBmJ,GAAc,iBAC/C,EACAP,GAAuB,SAA8B7J,EAAOxpC,GAC1D,IAkBE8zC,EACAC,EACA7B,EACAC,EACApjC,EAtBEvC,EAAQxM,GAASvvB,KACnBuiE,EAAWxmC,EAAMwmC,SACjBC,EAAWzmC,EAAMymC,SACjBnmE,EAAI0/B,EAAM1/B,EACV2U,EAAI+qB,EAAM/qB,EACVgwD,EAAWjlC,EAAMilC,SACjBG,EAAQplC,EAAMolC,MACdC,EAAQrlC,EAAMqlC,MACdzH,EAAS59B,EAAM49B,OACfC,EAAS79B,EAAM69B,OACfh6D,EAASm8B,EAAMn8B,OACf0gE,EAAUvkC,EAAMukC,QAChBE,EAAUzkC,EAAMykC,QAChBE,EAAU3kC,EAAM2kC,QAChBE,EAAU7kC,EAAM6kC,QAChB0B,EAAWvmC,EAAMumC,SACjBzB,EAAKxP,WAAWh1D,GAChBykE,EAAKzP,WAAWrgD,GAMlBgwD,EAAW3P,WAAW2P,GACtBG,EAAQ9P,WAAW8P,IACnBC,EAAQ/P,WAAW+P,MAIjBD,GADAC,EAAQ/P,WAAW+P,GAEnBJ,GAAYI,GAEVJ,GAAYG,GACdH,GAAY5I,EACZ+I,GAAS/I,EACTiL,EAAMl0D,KAAKoyD,IAAIP,GAAYrH,EAC3B2J,EAAMn0D,KAAKqyD,IAAIR,GAAYrH,EAC3B8H,EAAMtyD,KAAKqyD,IAAIR,EAAWG,IAAUvH,EACpC8H,EAAMvyD,KAAKoyD,IAAIP,EAAWG,GAASvH,EAC/BuH,IACFC,GAAShJ,EACT95B,EAAOnvB,KAAKo0D,IAAIpC,EAAQC,GAExBK,GADAnjC,EAAOnvB,KAAKkzD,KAAK,EAAI/jC,EAAOA,GAE5BojC,GAAOpjC,EACH8iC,IACF9iC,EAAOnvB,KAAKo0D,IAAInC,GAEhBiC,GADA/kC,EAAOnvB,KAAKkzD,KAAK,EAAI/jC,EAAOA,GAE5BglC,GAAOhlC,IAGX+kC,GAAM,QAAOA,GACbC,GAAM,QAAOA,GACb7B,GAAM,QAAOA,GACbC,GAAM,QAAOA,KAEb2B,EAAM1J,EACN+H,EAAM9H,EACN0J,EAAM7B,EAAM,IAEVZ,MAASxkE,EAAI,IAAIgM,QAAQ,OAASy4D,MAAS9vD,EAAI,IAAI3I,QAAQ,SAC7Dw4D,EAAKjE,EAAeh9D,EAAQ,IAAKvD,EAAG,MACpCykE,EAAKlE,EAAeh9D,EAAQ,IAAKoR,EAAG,QAElCsvD,GAAWE,GAAWE,GAAWE,KACnCC,GAAK,QAAOA,EAAKP,GAAWA,EAAU+C,EAAM7C,EAAUiB,GAAOf,GAC7DI,GAAK,QAAOA,EAAKN,GAAWF,EAAUgD,EAAM9C,EAAUkB,GAAOd,KAE3D2B,GAAYC,KAEdlkC,EAAO1+B,EAAO07D,UACduF,GAAK,QAAOA,EAAK0B,EAAW,IAAMjkC,EAAKznB,OACvCiqD,GAAK,QAAOA,EAAK0B,EAAW,IAAMlkC,EAAKxnB,SAEzCwnB,EAAO,UAAY+kC,EAAM,IAAMC,EAAM,IAAM7B,EAAM,IAAMC,EAAM,IAAMb,EAAK,IAAMC,EAAK,IACnFlhE,EAAOyO,aAAa,YAAaiwB,GACjCgkC,IAAa1iE,EAAOkc,MAAMk+C,GAAkB17B,EAC9C,EACAklC,GAA0B,SAAiC/1C,EAAQ7tB,EAAQ05D,EAAUwE,EAAUG,EAAUK,GACvG,IAKE7S,EACA6Q,EANEmH,EAAM,IACR/sD,GAAW,QAAUunD,GACrBC,EAAS7M,WAAW4M,IAAavnD,IAAaunD,EAAS51D,QAAQ,OAAS6vD,EAAW,GACnFwL,EAASpF,EAAWJ,EAASI,EAAWJ,EAASJ,EACjD6F,EAAa7F,EAAW4F,EAAS,MAqBnC,OAlBIhtD,IAEgB,WADlB+0C,EAAYwS,EAAS79D,MAAM,KAAK,MAE9BsjE,GAAUD,KACKC,EAAS,MACtBA,GAAUA,EAAS,EAAID,GAAM,KAGf,OAAdhY,GAAsBiY,EAAS,EACjCA,GAAUA,EAASD,MAAiBA,KAASC,EAASD,GAAOA,EACtC,QAAdhY,GAAuBiY,EAAS,IACzCA,GAAUA,EAASD,MAAiBA,KAASC,EAASD,GAAOA,IAGjEh2C,EAAO8uC,IAAMD,EAAK,IAAI,KAAU7uC,EAAO8uC,IAAK38D,EAAQ05D,EAAUwE,EAAU4F,EAAQ1K,GAChFsD,EAAGx+D,EAAI6lE,EACPrH,EAAGjkC,EAAI,MACP5K,EAAOue,OAAOtmC,KAAK4zD,GACZgD,CACT,EACAsH,GAAU,SAAiBhkE,EAAQE,GAEjC,IAAK,IAAI8G,KAAK9G,EACZF,EAAOgH,GAAK9G,EAAO8G,GAErB,OAAOhH,CACT,EACAikE,GAAsB,SAA6Bp2C,EAAQ01C,EAAYvjE,GAErE,IAGEkkE,EACAl9D,EACAo3D,EACAC,EACAH,EACAI,EAEAE,EAVE2F,EAAaH,GAAQ,CAAC,EAAGhkE,EAAO65D,OAElC39C,EAAQlc,EAAOkc,MAsBjB,IAAKlV,KAbDm9D,EAAW/I,KACbgD,EAAap+D,EAAO8mD,aAAa,aACjC9mD,EAAOyO,aAAa,YAAa,IACjCyN,EAAMk+C,GAAkBmJ,EACxBW,EAAWtG,GAAgB59D,EAAQ,GACnCm8D,EAAgBn8D,EAAQo6D,GACxBp6D,EAAOyO,aAAa,YAAa2vD,KAEjCA,EAAazK,iBAAiB3zD,GAAQo6D,GACtCl+C,EAAMk+C,GAAkBmJ,EACxBW,EAAWtG,GAAgB59D,EAAQ,GACnCkc,EAAMk+C,GAAkBgE,GAEhB/F,GACR+F,EAAa+F,EAAWn9D,OACxBq3D,EAAW6F,EAASl9D,KAzBV,gDA0B6ByB,QAAQzB,GAAK,IAIlDk3D,GAFY,QAAQE,MACpBI,GAAU,QAAQH,IACiBrB,EAAeh9D,EAAQgH,EAAGo3D,EAAYI,GAAW/M,WAAW2M,GAC/FE,EAAS7M,WAAW4M,GACpBxwC,EAAO8uC,IAAM,IAAI,KAAU9uC,EAAO8uC,IAAKuH,EAAUl9D,EAAGk3D,EAAUI,EAASJ,EAAUhF,GACjFrrC,EAAO8uC,IAAIlkC,EAAI+lC,GAAW,EAC1B3wC,EAAOue,OAAOtmC,KAAKkB,IAGvBg9D,GAAQE,EAAUC,EACpB,GAEF,QAAa,+BAA+B,SAAUtgE,EAAM0jB,GAC1D,IAAIlX,EAAI,MACNrS,EAAI,QACJqJ,EAAI,SACJivB,EAAI,OACJ50B,GAAS6lB,EAAQ,EAAI,CAAClX,EAAGrS,EAAGqJ,EAAGivB,GAAK,CAACjmB,EAAIimB,EAAGjmB,EAAIrS,EAAGqJ,EAAIrJ,EAAGqJ,EAAIivB,IAAI95B,KAAI,SAAU2wB,GAC9E,OAAO5F,EAAQ,EAAI1jB,EAAOspB,EAAO,SAAWA,EAAOtpB,CACrD,IACFk6D,EAAcx2C,EAAQ,EAAI,SAAW1jB,EAAOA,GAAQ,SAAUgqB,EAAQ7tB,EAAQ05D,EAAU2E,EAAUa,GAChG,IAAIjhE,EAAGmmE,EACP,GAAInkE,UAAUrD,OAAS,EAMrB,OAJAqB,EAAIyD,EAAMlF,KAAI,SAAUirC,GACtB,OAAOi2B,EAAK7vC,EAAQ4Z,EAAMiyB,EAC5B,IAEmC,KADnC0K,EAAOnmE,EAAEpB,KAAK,MACF2D,MAAMvC,EAAE,IAAIrB,OAAeqB,EAAE,GAAKmmE,EAEhDnmE,GAAKogE,EAAW,IAAI79D,MAAM,KAC1B4jE,EAAO,CAAC,EACR1iE,EAAMjB,SAAQ,SAAUgnC,EAAMrqC,GAC5B,OAAOgnE,EAAK38B,GAAQxpC,EAAEb,GAAKa,EAAEb,IAAMa,GAAGb,EAAI,GAAK,EAAI,EACrD,IACAywB,EAAO3X,KAAKlW,EAAQokE,EAAMlF,EAC5B,CACF,IACO,IAgLImF,GAAkBjD,GACvBlgD,GAjLKojD,GAAY,CACrBzgE,KAAM,MACN6vB,SAAUsnC,EACVuJ,WAAY,SAAoBvkE,GAC9B,OAAOA,EAAOkc,OAASlc,EAAOwwD,QAChC,EACAt6C,KAAM,SAAclW,EAAQokE,EAAMlF,EAAO33C,EAAOi9C,GAC9C,IAGEpG,EACAC,EACAC,EACAJ,EACA77D,EACAoiE,EACAz9D,EACAy3D,EACAD,EACAE,EACAgG,EACAC,EACAh1C,EACA0wC,EACAuE,EA/qBmEt/D,EACjE9E,EACF/D,EACA2U,EA2pBE1P,EAAQtB,KAAKgsC,OACflwB,EAAQlc,EAAOkc,MACf2oD,EAAU3F,EAAMkF,KAAKS,QAiBvB,IAAK79D,KADLixD,GAAkB+C,IACRoJ,EACR,GAAU,cAANp9D,IAGJq3D,EAAW+F,EAAKp9D,IACZ,KAASA,MAAM,QAAaA,EAAGo9D,EAAMlF,EAAO33C,EAAOvnB,EAAQwkE,IAa/D,GATAniE,SAAcg8D,EACdoG,EAAc1G,EAAc/2D,GACf,aAAT3E,IAEFA,SADAg8D,EAAWA,EAASl/D,KAAK+/D,EAAO33C,EAAOvnB,EAAQwkE,KAGpC,WAATniE,IAAsBg8D,EAAS51D,QAAQ,aACzC41D,GAAW,QAAeA,IAExBoG,EACFA,EAAYrkE,KAAMJ,EAAQgH,EAAGq3D,EAAUa,KAAW0F,EAAc,QAC3D,GAAuB,OAAnB59D,EAAEwc,OAAO,EAAG,GAErB46C,GAAczK,iBAAiB3zD,GAAQ46D,iBAAiB5zD,GAAK,IAAItK,OACjE2hE,GAAY,GACZ,KAAUO,UAAY,EACjB,KAAUthE,KAAK8gE,KAElBK,GAAY,QAAQL,GACpBI,GAAU,QAAQH,IAEpBG,EAAUC,IAAcD,IAAYJ,EAAapB,EAAeh9D,EAAQgH,EAAGo3D,EAAYI,GAAWA,GAAWC,IAAcJ,GAAYI,GACvIr+D,KAAKoY,IAAI0D,EAAO,cAAekiD,EAAYC,EAAU92C,EAAOi9C,EAAS,EAAG,EAAGx9D,QACtE,GAAa,cAAT3E,EAAsB,CA8B/B,GA7BIwiE,GAAW79D,KAAK69D,GAElBzG,EAAmC,mBAAfyG,EAAQ79D,GAAoB69D,EAAQ79D,GAAG7H,KAAK+/D,EAAO33C,EAAOvnB,EAAQwkE,GAAWK,EAAQ79D,GACzGA,KAAK,KAAQ63D,SAAU,QAAQT,KAAgBA,GAAc,KAAQS,MAAM73D,IAE3C,OAA/Bo3D,EAAa,IAAIvgE,OAAO,KAAeugE,EAAaV,EAAK19D,EAAQgH,KAElEo3D,EAAaV,EAAK19D,EAAQgH,GAE5Bk3D,EAAWzM,WAAW2M,IACtBM,EAAoB,WAATr8D,GAA4C,MAAvBg8D,EAASxgE,OAAO,KAAewgE,EAASxgE,OAAO,GAAK,KAAO,KAC9EwgE,EAAWA,EAAS76C,OAAO,IACxC86C,EAAS7M,WAAW4M,GAChBr3D,KAAK8xD,IACG,cAAN9xD,IAEe,IAAbk3D,GAAiD,WAA/BR,EAAK19D,EAAQ,eAA8Bs+D,IAE/DJ,EAAW,GAEb5B,EAAkBl8D,KAAM8b,EAAO,aAAcgiD,EAAW,UAAY,SAAUI,EAAS,UAAY,UAAWA,IAEtG,UAANt3D,GAAuB,cAANA,KACnBA,EAAI8xD,EAAiB9xD,IAClByB,QAAQ,OAASzB,EAAIA,EAAExG,MAAM,KAAK,KAGzCkkE,EAAqB19D,KAAKqxD,EAYxB,GATKsM,KACHh1C,EAAQ3vB,EAAO65D,OACTK,kBAAoBkK,EAAKU,gBAAkBlH,GAAgB59D,EAAQokE,EAAKU,gBAE9EzE,GAA+B,IAAtB+D,EAAKW,cAA0Bp1C,EAAM0wC,QAC9CsE,EAAqBvkE,KAAKu8D,IAAM,IAAI,KAAUv8D,KAAKu8D,IAAKzgD,EAAOk+C,EAAgB,EAAG,EAAGzqC,EAAMuqC,gBAAiBvqC,EAAO,GAAI,IAEpGq1C,IAAM,GAEjB,UAANh+D,EACF5G,KAAKu8D,IAAM,IAAI,KAAUv8D,KAAKu8D,IAAKhtC,EAAO,SAAUA,EAAMqqC,OAAQ0E,EAAWA,EAAWJ,EAASA,EAAS3uC,EAAMqqC,QAChHt4D,EAAMoE,KAAK,SAAUkB,GACrBA,GAAK,QACA,IAAU,oBAANA,EAAyB,CA5vBtCxG,SACF/D,SACA2U,SAFE5Q,GADiE8E,EA8vBpB+4D,GA7vB/B79D,MAAM,KACtB/D,EAAI+D,EAAM,GACV4Q,EAAI5Q,EAAM,IAAM,MACR,QAAN/D,GAAqB,WAANA,GAAwB,SAAN2U,GAAsB,UAANA,IAEnD9L,EAAQ7I,EACRA,EAAI2U,EACJA,EAAI9L,GAEN9E,EAAM,GAAKu+D,EAAkBtiE,IAAMA,EACnC+D,EAAM,GAAKu+D,EAAkB3tD,IAAMA,EAmvB3BitD,EAlvBD79D,EAAM3D,KAAK,KAovBN8yB,EAAMyrC,IACR+E,GAAgBngE,EAAQq+D,EAAU,EAAGgC,EAAQ,EAAGjgE,QAEhDo+D,EAAU/M,WAAW4M,EAAS79D,MAAM,KAAK,KAAO,KAEpCmvB,EAAMmuC,SAAWxB,EAAkBl8D,KAAMuvB,EAAO,UAAWA,EAAMmuC,QAASU,GACtFlC,EAAkBl8D,KAAM8b,EAAOlV,EAAG62D,GAAcO,GAAaP,GAAcQ,KAE7E,QACF,CAAO,GAAU,cAANr3D,EAAmB,CAC5Bm5D,GAAgBngE,EAAQq+D,EAAU,EAAGgC,EAAQ,EAAGjgE,MAChD,QACF,CAAO,GAAI4G,KAAKy4D,EAAuB,CACrCmE,GAAwBxjE,KAAMuvB,EAAO3oB,EAAGk3D,EAAUG,EAAUK,GAC5D,QACF,CAAO,GAAU,iBAAN13D,EAAsB,CAC/Bs1D,EAAkBl8D,KAAMuvB,EAAO,SAAUA,EAAM0wC,OAAQhC,GACvD,QACF,CAAO,GAAU,YAANr3D,EAAiB,CAC1B2oB,EAAM3oB,GAAKq3D,EACX,QACF,CAAO,GAAU,cAANr3D,EAAmB,CAC5Bi9D,GAAoB7jE,KAAMi+D,EAAUr+D,GACpC,QACF,OACWgH,KAAKkV,IAChBlV,EAAI6zD,EAAiB7zD,IAAMA,GAE7B,GAAI09D,IAAuBpG,GAAqB,IAAXA,KAAkBJ,GAAyB,IAAbA,KAAoBrF,EAAYv7D,KAAK+gE,IAAar3D,KAAKkV,EAExHoiD,IAAWA,EAAS,IADpBG,GAAaL,EAAa,IAAI56C,QAAQ06C,EAAW,IAAIthE,YAGrD4hE,GAAU,QAAQH,KAAcr3D,KAAK,KAAQ63D,MAAQ,KAAQA,MAAM73D,GAAKy3D,MAC9CP,EAAWlB,EAAeh9D,EAAQgH,EAAGo3D,EAAYI,IAC3Ep+D,KAAKu8D,IAAM,IAAI,KAAUv8D,KAAKu8D,IAAK+H,EAAqB/0C,EAAQzT,EAAOlV,EAAGk3D,EAAUQ,EAAWA,EAAWJ,EAASA,EAASJ,EAAWwG,GAAmC,OAAZlG,GAA0B,WAANx3D,IAAsC,IAAnBo9D,EAAKa,UAA8C/L,EAAxBI,GAChOl5D,KAAKu8D,IAAIlkC,EAAI+lC,GAAW,EACpBC,IAAcD,IAEhBp+D,KAAKu8D,IAAIt1D,EAAI+2D,EACbh+D,KAAKu8D,IAAI3+D,EAAIq7D,QAEV,GAAMryD,KAAKkV,EAShB8hD,EAAuB7+D,KAAKiB,KAAMJ,EAAQgH,EAAGo3D,EAAYC,OATjC,CACxB,KAAIr3D,KAAKhH,GAGF,EACL,QAAegH,EAAGq3D,GAClB,QACF,CAJEj+D,KAAKoY,IAAIxY,EAAQgH,EAAGhH,EAAOgH,GAAIq3D,EAAU92C,EAAOi9C,EAKpD,CAGA9iE,EAAMoE,KAAKkB,EACb,CAEF49D,IAAe,QAA0BxkE,KAC3C,EACAb,IAAKm+D,EACLwH,QAASpM,EACTqM,UAAW,SAAmBnlE,EAAQ05D,EAAU7rC,GAE9C,IAAI7mB,EAAI8xD,EAAiBY,GAEzB,OADA1yD,GAAKA,EAAEyB,QAAQ,KAAO,IAAMixD,EAAW1yD,GAChC0yD,KAAYrB,GAAmBqB,IAAaW,IAAyBr6D,EAAO65D,MAAMp9D,GAAKihE,EAAK19D,EAAQ,MAAQ6tB,GAAUsqC,IAAwBtqC,EAAsB,UAAb6rC,EAAuBI,EAAeF,GAAoBzB,EAAsBtqC,GAAU,CAAC,KAAoB,UAAb6rC,EAAuBO,EAAyBE,GAA8Bn6D,EAAOkc,SAAU,QAAalc,EAAOkc,MAAMw9C,IAAaD,GAAmBC,EAASjxD,QAAQ,KAAOkxD,GAAiB,QAAW35D,EAAQ05D,EACvd,EACA94B,KAAM,CACJu7B,gBAAiBA,EACjB0D,WAAYA,KAGhB,KAAKuF,MAAMC,YAAcxK,EACdwJ,GAaR,8CAb0BjD,GAaqB,2CAZ5ClgD,IAAM,QAAamjD,GAAmB,IAAMjD,GAAzBiD,kFAAkD,SAAUxgE,GACjFw0D,EAAgBx0D,GAAQ,CAC1B,KACA,QAAau9D,IAAU,SAAUv9D,GAC/B,KAAQg7D,MAAMh7D,GAAQ,MACtB47D,EAAsB57D,GAAQ,CAChC,IACAi1D,EAAiB53C,GAAI,KAAOmjD,GAAmB,IAAMjD,IACrD,QAI6K,8FAJvJ,SAAUv9D,GAC9B,IAAIrD,EAAQqD,EAAKrD,MAAM,KACvBs4D,EAAiBt4D,EAAM,IAAM0gB,GAAI1gB,EAAM,GACzC,KAEF,QAAa,gFAAgF,SAAUqD,GACrG,KAAQg7D,MAAMh7D,GAAQ,IACxB,IACA,KAAK68B,eAAe4jC,mCCvtCpB,IAAI3sB,EAAQ,eACR2tB,EAAgB,IAAI/2D,OAAO,IAAMopC,EAAQ,aAAc,MACvD4tB,EAAe,IAAIh3D,OAAO,IAAMopC,EAAQ,KAAM,MAClD,SAAS6tB,EAAiBC,EAAYjlE,GACpC,IAEE,MAAO,CAACsoC,mBAAmB28B,EAAW5oE,KAAK,KAC7C,CAAE,MAAO64D,GAET,CACA,GAA0B,IAAtB+P,EAAW7oE,OACb,OAAO6oE,EAETjlE,EAAQA,GAAS,EAGjB,IAAI6e,EAAOomD,EAAWloE,MAAM,EAAGiD,GAC3B62B,EAAQouC,EAAWloE,MAAMiD,GAC7B,OAAOtE,MAAM+C,UAAUmC,OAAOjC,KAAK,GAAIqmE,EAAiBnmD,GAAOmmD,EAAiBnuC,GAClF,CACA,SAASjnB,EAAOpU,GACd,IACE,OAAO8sC,mBAAmB9sC,EAC5B,CAAE,MAAO05D,GAEP,IADA,IAAIgQ,EAAS1pE,EAAMytB,MAAM67C,IAAkB,GAClCloE,EAAI,EAAGA,EAAIsoE,EAAO9oE,OAAQQ,IAEjCsoE,GADA1pE,EAAQwpE,EAAiBE,EAAQtoE,GAAGP,KAAK,KAC1B4sB,MAAM67C,IAAkB,GAEzC,OAAOtpE,CACT,CACF,CA+BA8B,EAAOC,QAAU,SAAU4nE,GACzB,GAA0B,iBAAfA,EACT,MAAM,IAAIvpE,UAAU,6DAA+DupE,EAAa,KAElG,IAIE,OAHAA,EAAaA,EAAWloE,QAAQ,MAAO,KAGhCqrC,mBAAmB68B,EAC5B,CAAE,MAAOjQ,GAEP,OAzCJ,SAAkC15D,GAOhC,IALA,IAAI4pE,EAAa,CACf,SAAU,KACV,SAAU,MAERn8C,EAAQ87C,EAAaz+C,KAAK9qB,GACvBytB,GAAO,CACZ,IAEEm8C,EAAWn8C,EAAM,IAAMqf,mBAAmBrf,EAAM,GAClD,CAAE,MAAOisC,GACP,IAAIznD,EAASmC,EAAOqZ,EAAM,IACtBxb,IAAWwb,EAAM,KACnBm8C,EAAWn8C,EAAM,IAAMxb,EAE3B,CACAwb,EAAQ87C,EAAaz+C,KAAK9qB,EAC5B,CAGA4pE,EAAW,OAAS,IAEpB,IADA,IAAI3gE,EAAU5I,OAAOoJ,KAAKmgE,GACjBxoE,EAAI,EAAGA,EAAI6H,EAAQrI,OAAQQ,IAAK,CAEvC,IAAI4B,EAAMiG,EAAQ7H,GAClBpB,EAAQA,EAAMyB,QAAQ,IAAI8Q,OAAOvP,EAAK,KAAM4mE,EAAW5mE,GACzD,CACA,OAAOhD,CACT,CAYW6pE,CAAyBF,EAClC,CACF,qCC3EA5nE,EAAQK,YAAa,EACrBL,EAAQ0hD,eAAiB1hD,EAAQ+nE,iBAAmB/nE,EAAQ8rC,aAAe9rC,EAAQmR,QAAUnR,EAAQ0rB,MAAQ1rB,EAAQmqB,KAAOnqB,EAAQs3B,gBAAa7tB,EACjJ,IAEgC1I,EAF5BinE,EAAa,EAAQ,KACrBC,GAC4BlnE,EADSinE,IAEzBjnE,EAAIV,WAAaU,EAAM,CACnCW,QAASX,GAMb,IAAIu2B,EAAa,SAAoBr4B,EAAQ6T,GAC3C,OAAO7T,EAAOwmB,OAAO,EAAG3S,EAAOjU,UAAYiU,CAC7C,EAuBIqX,EAAO,SAAc8f,EAAQ/U,GAQ/B,IAPA,IAAIxJ,OAAQ,EACRwe,OAAW,EAEbC,EADejV,EAAIzyB,MAAM,KACA,GACvB2nC,EAAcC,EAAWF,GACzBG,EAA+B,KAAnBF,EAAY,GACxBG,EAASC,EAAWP,GACf5qC,EAAI,EAAGk5B,EAAIgS,EAAO1rC,OAAQQ,EAAIk5B,EAAGl5B,IAAK,CAC7C,IAAIorC,GAAS,EACTC,EAAQH,EAAOlrC,GAAGqrC,MACtB,GAAIA,EAAMhpC,QACRwoC,EAAW,CACTQ,MAAOA,EACPr7B,OAAQ,CAAC,EACT6lB,IAAKA,OAJT,CAYA,IAJA,IAAIyV,EAAgBN,EAAWK,EAAM36B,MACjCV,EAAS,CAAC,EACVgV,EAAM7S,KAAK6S,IAAI+lB,EAAYvrC,OAAQ8rC,EAAc9rC,QACjD2qB,EAAQ,EACLA,EAAQnF,EAAKmF,IAAS,CAC3B,IAAIohB,EAAeD,EAAcnhB,GAC7BqhB,EAAaT,EAAY5gB,GAC7B,GAAIshB,EAAQF,GAAe,CAKzBv7B,EADYu7B,EAAaprC,MAAM,IAAM,KACrB4qC,EAAY5qC,MAAMgqB,GAAO/qB,IAAIssC,oBAAoBjsC,KAAK,KACtE,KACF,CACA,QAAmB2K,IAAfohC,EAA0B,CAI5BJ,GAAS,EACT,KACF,CACA,IAAIO,EAAeC,EAAQliB,KAAK6hB,GAChC,GAAII,IAAiBV,EAAW,EACuC,IAA5CY,EAAcxgC,QAAQsgC,EAAa,MAC4K,EAAIi9B,EAAYvmE,UAAS,GACjQ,IAAI6F,EAAQwjC,mBAAmBF,GAC/Bx7B,EAAO27B,EAAa,IAAMzjC,CAC5B,MAAO,GAAIqjC,IAAiBC,EAAY,CAItCJ,GAAS,EACT,KACF,CACF,CACA,IAAKA,EAAQ,CACX/e,EAAQ,CACNgf,MAAOA,EACPr7B,OAAQA,EACR6lB,IAAK,IAAMkV,EAAY5qC,MAAM,EAAGgqB,GAAO1qB,KAAK,MAE9C,KACF,CA5CA,CA6CF,CACA,OAAO4sB,GAASwe,GAAY,IAC9B,EA0GIe,EAAU,SASVqB,EAAY,SAAmBT,GACjC,OAAOZ,EAAQ1rC,KAAKssC,EACtB,EACIf,EAAU,SAAiBe,GAC7B,OAAOA,GAA0B,MAAfA,EAAQ,EAC5B,EACIU,EAAY,SAAmB7B,EAAOlhB,GAMxC,MAAO,CACLkhB,MAAOA,EACP8B,MAPU9B,EAAMhpC,QAAU,EAAI2oC,EAAWK,EAAM36B,MAAMqZ,QAAO,SAAUojB,EAAOX,GAG7E,OAFAW,GAhBiB,GAKD,SAAuBX,GACzC,MAAmB,KAAZA,CACT,CAUQY,CAAcZ,GAAwCS,EAAUT,GAAUW,GAf7D,EAe8F1B,EAAQe,GAAUW,GAASE,EAAoCF,GAhB9J,EAgBYA,GAbd,EAcPA,CACT,GAAG,GAIDhjB,MAAOA,EAEX,EACIghB,EAAa,SAAoBP,GACnC,OAAOA,EAAOxrC,IAAI8tC,GAAW7kB,MAAK,SAAUxnB,EAAGoJ,GAC7C,OAAOpJ,EAAEssC,MAAQljC,EAAEkjC,MAAQ,EAAItsC,EAAEssC,MAAQljC,EAAEkjC,OAAS,EAAItsC,EAAEspB,MAAQlgB,EAAEkgB,KACtE,GACF,EACI6gB,EAAa,SAAoBnV,GACnC,OAAOA,EAENx1B,QAAQ,eAAgB,IAAI+C,MAAM,IACrC,EACIipC,EAAW,SAAkBl8B,GAC/B,IAAK,IAAItM,EAAOhB,UAAUrD,OAAQuU,EAAQjV,MAAM+E,EAAO,EAAIA,EAAO,EAAI,GAAIE,EAAO,EAAGA,EAAOF,EAAME,IAC/FgQ,EAAMhQ,EAAO,GAAKlB,UAAUkB,GAK9B,OAAOoM,IAHP4D,EAAQA,EAAMxU,QAAO,SAAUu6B,GAC7B,OAAOA,GAAKA,EAAEt6B,OAAS,CACzB,MAC4BuU,EAAMvU,OAAS,EAAI,IAAMuU,EAAMtU,KAAK,KAAO,GACzE,EACIosC,EAAgB,CAAC,MAAO,QAe5BlrC,EAAQs3B,WAAaA,EACrBt3B,EAAQmqB,KAAOA,EACfnqB,EAAQ0rB,MArKI,SAAe3b,EAAMmlB,GAC/B,OAAO/K,EAAK,CAAC,CACXpa,KAAMA,IACJmlB,EACN,EAkKAl1B,EAAQmR,QAtIM,SAAiB6a,EAAImf,GAEjC,GAAI7T,EAAWtL,EAAI,KACjB,OAAOA,EAET,IAAIof,EAAYpf,EAAGvpB,MAAM,KACvB4oC,EAAaD,EAAU,GACvBE,EAAUF,EAAU,GAEpBG,EADgBJ,EAAK1oC,MAAM,KACA,GACzB+oC,EAAanB,EAAWgB,GACxBI,EAAepB,EAAWkB,GAG9B,GAAsB,KAAlBC,EAAW,GACb,OAAOE,EAASH,EAAcD,GAIhC,IAAKhU,EAAWkU,EAAW,GAAI,KAAM,CACnC,IAAIh8B,EAAWi8B,EAAapoC,OAAOmoC,GAAY1sC,KAAK,KACpD,OAAO4sC,GAA2B,MAAjBH,EAAuB,GAAK,KAAO/7B,EAAU87B,EAChE,CASA,IAFA,IAAIK,EAAcF,EAAapoC,OAAOmoC,GAClCI,EAAW,GACNvsC,EAAI,EAAGk5B,EAAIoT,EAAY9sC,OAAQQ,EAAIk5B,EAAGl5B,IAAK,CAClD,IAAIwsC,EAAUF,EAAYtsC,GACV,OAAZwsC,EAAkBD,EAASz7B,MAA2B,MAAZ07B,GAAiBD,EAAS7jC,KAAK8jC,EAC/E,CACA,OAAOH,EAAS,IAAME,EAAS9sC,KAAK,KAAMwsC,EAC5C,EAmGAtrC,EAAQ8rC,aA9FW,SAAsB/7B,EAAMV,GAC7C,IAAI08B,EAAch8B,EAAKtN,MAAM,KAC3BupC,EAAWD,EAAY,GACvBE,EAAeF,EAAY,GAC3B34B,OAAyB3J,IAAjBwiC,EAA6B,GAAKA,EAExCC,EAAkB,IADP7B,EAAW2B,GACWvtC,KAAI,SAAUotC,GACjD,IAAIngB,EAAQuf,EAAQliB,KAAK8iB,GACzB,OAAOngB,EAAQrc,EAAOqc,EAAM,IAAMmgB,CACpC,IAAG/sC,KAAK,KACJqtC,EAAmB98B,EAAOE,SAE1B68B,GADJD,OAAwC1iC,IAArB0iC,EAAiC,CAAC,EAAIA,GACZr5B,OAEzCu5B,QADiC5iC,IAA1B2iC,EAAsC,GAAKA,GAC7B3pC,MAAM,KAAK,IAAM,GAE1C,OADAypC,EAAkBR,EAASQ,EAAiB94B,EAAOi5B,EAErD,EA8EArsC,EAAQ+nE,iBA7Ee,SAA0BtgD,EAAMuE,GACrD,IAAIptB,EAAS,SAAgBitC,GAC3B,OAAOS,EAAUT,EACnB,EAGA,OAFiBxB,EAAW5iB,GAAM7oB,OAAOA,GAAQ8oB,OAAO5oB,KAAK,OAC9CurC,EAAWre,GAAIptB,OAAOA,GAAQ8oB,OAAO5oB,KAAK,IAE3D,EAuEAkB,EAAQ0hD,eAda,SAAwBzQ,EAAMC,GACjD,IAAIC,EAAW7yC,OAAOoJ,KAAKupC,GAC3B,OAAOE,EAAStyC,SAAWP,OAAOoJ,KAAKwpC,GAAMryC,QAAUsyC,EAASC,OAAM,SAAUnwC,GAC9E,OAAOiwC,EAAK/vC,eAAeF,IAAQgwC,EAAKhwC,KAASiwC,EAAKjwC,EACxD,GACF,gMCzQA,MAAMilC,EAAKnuB,EAAAA,GAAY0d,UAAUiS,UAAY,GACvCsB,EAAWjxB,EAAAA,IAA8B,QAArBmwD,EAAGzyC,UAAUuT,gBAAQ,IAAAk/B,EAAAA,EAAS,GAE3C1sD,EAAO0qB,EAAGx7B,QAAQ,UAAY,KAAOw7B,EAAGxa,MAAM,oBAC9CpN,EAAa4nB,EAAGx7B,QAAQ,YAAc,EACtC4+C,EAAYpjB,EAAGx7B,QAAQ,gBAAkB,EACzCy9D,EAAYjiC,EAAGx7B,QAAQ,WAAa,EACpC09D,GAAaD,GAAajiC,EAAGx7B,QAAQ,WAAa,EAElDm+C,EAAU3iB,EAAGx7B,QAAQ,SAAW,GAAM09D,GAAY3yC,UAAUkT,eAAiB,EAC7E0/B,EAAYniC,EAAGx7B,QAAQ,WAAa,GAAM09D,GAAY3yC,UAAUkT,eAAiB,EACjFqvB,EAAQ,CAAC,iBAAkB,mBAAoB,iBAAkB,OAAQ,SAAU,QAAQl9C,SAASkuB,GACpGs/B,EAAiBtQ,GAASoQ,EAE1BG,GADuBriC,EAAGx7B,QAAQ,UAAY,GAAOw7B,EAAGx7B,QAAQ,YAClDw7B,EAAGx7B,QAAQ,cAAgB,GACzC2tD,EAAanyB,EAAGx7B,QAAQ,YAAc,EAEtC89D,KADezwD,EAAAA,KAAajH,OAAOitC,YAAcjtC,OAAOitC,WAAW,8BAA8B1X,SAChF8hC,GAAY,UAAU5oE,KAAK2mC,IAC5CuiC,GAAgBD,GAAkBtiC,EAAGprB,SAAS,QAEpD,SAAS2vC,IACV1yC,EAAAA,KACEyD,IAAMmC,EAAAA,EAAAA,IAAa,MACnBW,IAAWX,EAAAA,EAAAA,IAAa,WACxB2rC,IAAU3rC,EAAAA,EAAAA,IAAa,UACvBwqD,IAAUxqD,EAAAA,EAAAA,IAAa,UACvByqD,IAAUzqD,EAAAA,EAAAA,IAAa,UACvBkrC,IAAQlrC,EAAAA,EAAAA,IAAa,QACrB0qD,IAAU1qD,EAAAA,EAAAA,IAAa,UACvBq6C,IAAOr6C,EAAAA,EAAAA,IAAa,OACpB2qD,IAAgB3qD,EAAAA,EAAAA,IAAa,SAC7B4qD,IAAY5qD,EAAAA,EAAAA,IAAa,YACzB06C,IAAW16C,EAAAA,EAAAA,IAAa,WACxB6qD,IAAgB7qD,EAAAA,EAAAA,IAAa,QAC7B8qD,IAAc9qD,EAAAA,EAAAA,IAAa,eAEnC,+HCvCApd,EAAQ,MAkBR,MAAMmoE,GAAmBlhE,EAAAA,EAAAA,IAAW,CAAC,GAC/BmhE,EAAqB5wD,EAAAA,KAAcyD,EAAAA,GAAQ,IAAI00C,sBAAqB,CAAChpD,EAASmrD,KAClF,IAAK,MAAMvnC,KAAS5jB,EAAS,CAC3B,MAAM8c,EAAK8G,EAAM7oB,OAAO8mD,aAAa,MACrC,GAAI/kC,EAAI,CAAC,IAAD4kD,EACN,MAAMC,EAAMH,EAAiB1kD,GAC7B,IAAK6kD,EAAK,OACiB,IAADC,EAA1B,GAAIh+C,EAAM+lC,eACW,QAAnBiY,EAAAD,EAAIE,uBAAe,IAAAD,GAAnBA,EAAA1nE,KAAAynE,GACIA,EAAIG,OACNL,EAAmBjY,UAAU5lC,EAAM7oB,QACnCymE,EAAiB1kD,GAAM,CAAEA,YAGH,QAArB4kD,EAAAC,EAAII,yBAAiB,IAAAL,GAArBA,EAAAxnE,KAAAynE,EACP,CACA/9C,EAAM7oB,OAAOsI,UAAUqT,OAAO,UAAWkN,EAAM+lC,gBAC/C/lC,EAAM7oB,OAAOsI,UAAUqT,OAAO,aAAckN,EAAM+lC,eACpD,IACC,CAAE0G,WAAY,WAAc,KAElBjJ,GAAoB70C,EAAAA,EAAAA,KAAO,CACtChS,EACAvJ,KAEA,GAAImkB,EAAAA,KAAgBsmD,EAAmB,OAAO3a,EAAAA,GACtB,IAADkb,EAAvB,IAAKrrD,EAAAA,GAAYrC,EAAAA,GAEf,OADuB,QAAvB0tD,EAAAhrE,EAAQ6qE,uBAAe,IAAAG,GAAvBA,EAAA9nE,KAAAlD,GACO8vD,EAAAA,GAET,MAAM1jD,EAAU7C,aAAek3B,QAAUl3B,EAAMA,EAAI7B,QChD/BujE,IAACpoE,EDyDrB,OARA4nE,EAAkB5X,QAAQzmD,GCjDLvJ,EDkDV2nE,EAAkBxqE,EAAQ8lB,MClDuBjjB,EDmD1D2nE,EAAiBxqE,EAAQ8lB,IAAM9lB,GAE/B4J,EAAAA,EAAAA,IAAiB4gE,EAAkB,CACjC,CAACxqE,EAAQ8lB,IAAK9lB,KAGXub,EAAAA,EAAAA,KAAO,KACZivD,EAAiBxqE,EAAQ8lB,IAAM,CAAEA,GAAI9lB,EAAQ8lB,IAC7C2kD,EAAkBjY,UAAUpmD,EAAQ,GACpC,kOE5DJ,MAyDM8+D,EAzDU,SAAUC,GACxB,GAAwB,oBAAbj/D,SACT,OAAO,EAET,MAAMk/D,EAAWl/D,SAASpF,cAAc,QACxC,IACE,GAAIskE,EAASC,SAAgD,mBAA9BD,EAASC,QAAQhuD,SAC9C,OAAO+tD,EAASC,QAAQhuD,SAAS8tD,EAErC,CAAE,MAAO1R,GACP,OAAO,CACT,CACA,OAAO,CACT,CA4CkC6R,CAAQ,YA1Cb,SAAUv2D,EAAK/U,GAC1C,OAAO,IAAIgT,SAAQ,CAACC,EAASynB,KAC3B,GAAwB,oBAAbxuB,SAET,YADAwuB,IAIF,MAAM4gC,EAAOpvD,SAASpF,cAAc,QACpCw0D,EAAK9oD,aAAa,MAAO,YACzB8oD,EAAK9oD,aAAa,OAAQuC,GAE1B3U,OAAOoJ,KAAKxJ,GAASwE,SAAQzB,IAC3Bu4D,EAAK9oD,aAAazP,EAAK/C,EAAQ+C,GAAK,IAGtCu4D,EAAKx4B,OAAS7vB,EACdqoD,EAAKv4B,QAAUrI,GAGbxuB,SAASmpC,qBAAqB,QAAQ,IACtCnpC,SAASq/D,kBAAkB,UAAU,GAAGh2B,YAC5B1xB,YAAYy3C,EAAK,GAEnC,EAE4B,SAAUvmD,GACpC,OAAO,IAAI/B,SAAQ,CAACC,EAASynB,KAC3B,MAAM8wC,EAAM,IAAIC,eAChBD,EAAIE,KAAK,MAAO32D,GAAK,GAErBy2D,EAAI1oC,OAAS,KACQ,MAAf0oC,EAAI19D,OACNmF,IAEAynB,GACF,EAGF8wC,EAAIG,KAAK,KAAK,GAElB,EAMMC,EAAa,CAAC,EAkBpB,MAhBiB,SAAU72D,EAAK/U,GAC9B,OAAO,IAAIgT,SAAQC,IACb24D,EAAW72D,GACb9B,IAIFi4D,EAA0Bn2D,EAAK/U,GAC5B03B,MAAK,KACJzkB,IACA24D,EAAW72D,IAAO,CAAI,IAEvBmjB,OAAM,QAAS,GAEtB,2lBCtEO,MAAMypB,EAAqB,CAIhCn2C,MAAO,QAIPqgE,QAAS,WAGLC,EAAgBnqE,GAAMA,GAAKA,EAAE6B,SAAY7B,EAQzCoqE,EAAoBl6D,GAEjB,cADoB,MAATA,EAAe,QAPHhK,KAC9BA,EAAa,MAATA,EAAE,GAAaA,EAAEvG,MAAM,GAAKuG,GAC1BspD,SAAS,KAAOtpD,EAAEvG,MAAM,GAAI,GAAKuG,EAKImkE,CAAwBn6D,oBAIrE,SAASo6D,EAAQl3D,EAAKm3D,GACpB,YAD0B,IAANA,IAAAA,EAAS,OACtB,IAAIl5D,SAAQ,CAACC,EAASynB,KAC3B,MAAM8wC,EAAM,IAAIC,eAChBD,EAAIE,KAAKQ,EAAQn3D,GAAK,GACtBy2D,EAAI91B,mBAAqB,KACD,GAAlB81B,EAAI71B,YACN1iC,EAAQu4D,EACV,EAEFA,EAAIG,KAAK,KAAK,GAElB,CAEA,MAeMQ,EAAkB,SAACxoB,EAAU/xC,QAAS,IAATA,IAAAA,EAAY,MAC7C,MAAME,EAAO,CACXs6D,mBAAoBzoB,EAASyoB,mBAC7Bv6D,KAAM8xC,EAAS9xC,KACf+vC,uBAAwB+B,EAAS/B,uBACjC2B,UAAWI,EAASJ,UACpB8oB,kBAAmB1oB,EAAS0oB,mBAG9B,MAAO,CACLz6D,YACAJ,KAAMmyC,EAAS3xC,OACfF,OAEJ,EAEO,IAAMw6D,EAAU,WACrB,SAAAA,EAAYC,EAAeC,GAAa,KA0BxCC,wBAA0B,IAAI/sC,IAV5Bv7B,KAAKuoE,OAAS,IAAIhtC,IAClBv7B,KAAKwoE,WAAa,IAAIjtC,IACtBv7B,KAAKyoE,cAAgB,CAAC,EACtBzoE,KAAK0oE,WAAa,IAAIntC,IACtBv7B,KAAK2oE,kBAAoB,IAAIrzC,IAC7Bt1B,KAAK4oE,kBAAoB,IAAItzC,IAC7Bt1B,KAAKooE,cAAgBA,GACrBS,EAAAA,EAAAA,IAAcR,EAChB,CAAC,IAAA9lE,EAAA4lE,EAAAtpE,UA4XA,OA5XA0D,EAIDumE,YAAA,SAAYl4D,GACV,IAAIm4D,EAAkB/oE,KAAKsoE,wBAAwBnpE,IAAIyR,GAQvD,OANKm4D,IACHA,EAAkBjB,EAAQl3D,EAAK,OAC/B5Q,KAAKsoE,wBAAwBlpE,IAAIwR,EAAKm4D,IAIjCA,EACJx1C,MAAK6xB,IACJplD,KAAKsoE,wBAAwB7wB,OAAO7mC,GAC7Bw0C,KAERrxB,OAAMuhC,IAEL,MADAt1D,KAAKsoE,wBAAwB7wB,OAAO7mC,GAC9B0kD,CAAG,GAEf,EAAC/yD,EAEDm9C,aAAA,SAAa9xC,GACX5N,KAAK4N,UAAYA,EACjB5N,KAAKgpE,iBAAmBp7D,EAAU,0BAA0BswB,MAAKrgC,GAAKA,GACxE,EAAC0E,EAED0mE,kBAAA,SAAkBC,GAChB,MAAM,SAAEzoB,EAAQ,QAAE0oB,EAAU,GAAMD,EAC5Bt4D,EAAMg3D,EAAkBnnB,GAC9B,OAAOzgD,KAAK8oE,YAAYl4D,GAAK2iB,MAAK8zC,IAChC,MAAM,OAAE19D,EAAM,aAAEy/D,GAAiB/B,EAGjC,GAAe,MAAX19D,EACF,IACE,MAAM0/D,EAAc5vC,KAAKvnB,MAAMk3D,GAC/B,QAAyBhiE,IAArBiiE,EAAY37D,KACd,MAAM,IAAIrG,MAAM,iCAGlB,OAAOpL,OAAOC,OAAOgtE,EAAS,CAC5Bv/D,OAAQ6zC,EAAmBkqB,QAC3B4B,QAASD,GAEb,CAAE,MAAO/T,GACP,CAKJ,OAAe,MAAX3rD,GAA6B,MAAXA,EAEH,cAAb82C,EACKxkD,OAAOC,OAAOgtE,EAAS,CAC5Bv/D,OAAQ6zC,EAAmBn2C,QAMxBrH,KAAKipE,kBACVhtE,OAAOC,OAAOgtE,EAAS,CAAEzoB,SAAU,YAAa8oB,UAAU,KAK/C,MAAX5/D,EACK1N,OAAOC,OAAOgtE,EAAS,CAC5Bv/D,OAAQ6zC,EAAmBn2C,QAK3B8hE,EAAU,EACLnpE,KAAKipE,kBACVhtE,OAAOC,OAAOgtE,EAAS,CAAEC,QAASA,EAAU,KAKzCltE,OAAOC,OAAOgtE,EAAS,CAC5Bv/D,OAAQ6zC,EAAmBn2C,OAC3B,GAEN,EAAC9E,EAEDinE,iBAAA,SAAiBrqB,GACf,MAAMsB,GAAWgpB,EAAAA,EAAAA,IAAStqB,GAC1B,GAAIn/C,KAAK0oE,WAAWj5C,IAAIgxB,GAAW,CACjC,MAAMjB,EAAWx/C,KAAK0oE,WAAWvpE,IAAIshD,GAEnC,OAAO5xC,QAAQC,QAAQ0wC,EAE3B,CAEA,OAAOx/C,KAAKipE,kBAAkB,CAAExoB,aAAYltB,MAAKisB,IAC/Cx/C,KAAK0oE,WAAWtpE,IAAIqhD,EAAUjB,GAEvBA,IAEX,EAACj9C,EAEDo+C,cAAA,SAAcxB,GACZ,OAAOwB,EAAAA,EAAAA,IAAcxB,EACvB,EAEA58C,EACAg7C,SAAA,SAAS4B,GACP,MAAMsB,GAAWgpB,EAAAA,EAAAA,IAAStqB,GAC1B,GAAIn/C,KAAKuoE,OAAO94C,IAAIgxB,GAAW,CAC7B,MAAM9yC,EAAO3N,KAAKuoE,OAAOppE,IAAIshD,GAE3B,OAAI9yC,EAAKxG,MACA,CACLA,MAAOwG,EAAKxG,MACZwC,OAAQgE,EAAKhE,QAIVkF,QAAQC,QAAQnB,EAAK27D,QAEhC,CAEA,GAAItpE,KAAKwoE,WAAW/4C,IAAIgxB,GACtB,OAAOzgD,KAAKwoE,WAAWrpE,IAAIshD,GAG7B,MAAMsoB,EAAkBl6D,QAAQiS,IAAI,CAClC9gB,KAAK0pE,cACL1pE,KAAKwpE,iBAAiB/oB,KACrBltB,MAAKo2C,IACN,MAAM97D,EAAS87D,EAAQ,GACvB,GAAI97D,EAAOlE,SAAW6zC,EAAmBn2C,MACvC,MAAO,CACLsC,OAAQ6zC,EAAmBn2C,OAI/B,IAAIm4C,EAAW3xC,EAAOy7D,QACtB,MAAM,mBAAErB,EAAkB,kBAAEC,EAAoB,IAAO1oB,EAEjDoqB,EAAc,CAAC,EAEfC,EAAwB7pE,KAAKooE,cAAcH,GAAoB10C,MACnE9lB,IAEE,IAAIL,EAiBJ,OAlBAw8D,EAAYE,UAAY,IAAIj5D,MAEvBpD,GAAaA,aAAqBpG,OACrCuiE,EAAYjgE,OAAS6zC,EAAmBn2C,MACxCuiE,EAAYziE,MAAQsG,IAEpBm8D,EAAYjgE,OAAS6zC,EAAmBkqB,SAChB,IAApB75D,EAAO07D,WACTK,EAAYL,UAAW,GAEzB/pB,EAAWvjD,OAAOC,OAAOsjD,EAAU,CACjC/B,uBAAwBksB,EAAQ,GAC5BA,EAAQ,GAAGlsB,uBACX,KAENrwC,EAAgB46D,EAAgBxoB,EAAU/xC,IAGrCL,CAAa,IAIlB28D,EAA0Bl7D,QAAQiS,IACtConD,EAAkB9rE,KAAI4tE,IAEpB,GAAIhqE,KAAKyoE,cAAcuB,GAAkB,CACvC,MAAMX,EAAcrpE,KAAKyoE,cAAcuB,GACvC,MAAO,CAAEA,kBAAiBX,cAC5B,CAEA,OAAOrpE,KAAK8oE,YACV,mBAAqCkB,UAEpCz2C,MAAK8zC,IACJ,MAAMgC,EAAc5vC,KAAKvnB,MAAMm1D,EAAI+B,cACnC,MAAO,CAAEY,kBAAiBX,cAAa,IAExCt1C,OAAM,KACL,MAAM,IAAI1sB,MACR,qCAAuD2iE,UACxD,GACD,KAENz2C,MAAK6sB,IACL,MAAM6pB,EAAwB,CAAC,EAO/B,OALA7pB,EAAmB//C,SAAQyE,IAAuC,IAAtC,gBAAEklE,EAAe,YAAEX,GAAavkE,EAC1DmlE,EAAsBD,GAAmBX,EACzCrpE,KAAKyoE,cAAcuB,GAAmBX,CAAW,IAG5CY,CAAqB,IAG9B,OACEp7D,QAAQiS,IAAI,CAAC+oD,EAAuBE,IACjCx2C,MAAKwI,IAA0C,IAC1CutC,GADEl8D,EAAegzC,GAAmBrkB,EAaxC,OAXI3uB,IACFk8D,EAAOzlE,EAAAA,EAAA,GAAQuJ,GAAa,IAAEgzC,uBAC9BwpB,EAAYN,QAAUA,EACtBhsB,EAAAA,EAAQp8B,KAAK,0BAA2B,CACtCvT,KAAM27D,EACNl8D,cAAek8D,KAInBtpE,KAAKuoE,OAAOnpE,IAAIqhD,EAAUmpB,GAEtBA,EAAYziE,MACP,CACLA,MAAOyiE,EAAYziE,MACnBwC,OAAQigE,EAAYjgE,QAIjB2/D,CAAO,IAGfv1C,OAAMuhC,IACE,CACLnuD,MAAOmuD,EACP3rD,OAAQ6zC,EAAmBn2C,SAE7B,IAeR,OAXA0hE,EACGx1C,MAAK,KACJvzB,KAAKwoE,WAAW/wB,OAAOgJ,EAAS,IAEjC1sB,OAAM5sB,IAEL,MADAnH,KAAKwoE,WAAW/wB,OAAOgJ,GACjBt5C,CAAK,IAGfnH,KAAKwoE,WAAWppE,IAAIqhD,EAAUsoB,GAEvBA,CACT,EAEAxmE,EACA+tC,aAAA,SAAa6O,EAAStjD,QAAO,IAAPA,IAAAA,EAAU,CAAC,GAC/B,MAAM4kD,GAAWgpB,EAAAA,EAAAA,IAAStqB,GAC1B,GAAIn/C,KAAKuoE,OAAO94C,IAAIgxB,GAAW,CAAC,IAADypB,EAC7B,MAAM1qB,EAAWx/C,KAAKuoE,OAAOppE,IAAIshD,GAEjC,GAAIjB,EAAS8pB,QACX,OAAO9pB,EAAS8pB,QAGlB,GAAW,QAAXY,EAAIruE,SAAO,IAAAquE,GAAPA,EAASjrB,iBACX,MAAO,CACL93C,MAAOq4C,EAASr4C,MAChBwC,OAAQ61C,EAAS71C,OAGvB,CAEF,EAACpH,EAED4nE,eAAA,SAAe1pB,GAEb,QAxUkC2pB,MACpC,GACE,eAAgBh3C,gBACgB,IAAzBA,UAAUi3C,WACjB,CACA,IAAKj3C,UAAUi3C,WAAWC,eAAiB,IAAI7xD,SAAS,MACtD,OAAO,EAET,GAAI2a,UAAUi3C,WAAWE,SACvB,OAAO,CAEX,CACA,OAAO,CAAI,EA4TJH,KAKDpqE,KAAKuoE,OAAO94C,IAAIgxB,EAKtB,EAACl+C,EAEDioE,SAAA,SAAS/pB,GACP,IAAKzgD,KAAKmqE,eAAe1pB,GACvB,OAAO,EAWT,GANKzgD,KAAK2oE,kBAAkBl5C,IAAIgxB,KAC9BzgD,KAAK4N,UAAU,qBAAsB,CAAET,SAAUszC,IACjDzgD,KAAK2oE,kBAAkBvwD,IAAIqoC,IAIzBzgD,KAAKgpE,iBACP,OAAO,EAGT,MAAMyB,GAAWhB,EAAAA,EAAAA,IAAShpB,GAU1B,OAPAzgD,KAAK0qE,WAAWD,GAAUl3C,MAAK,KACxBvzB,KAAK4oE,kBAAkBn5C,IAAIgxB,KAC9BzgD,KAAK4N,UAAU,yBAA0B,CAAET,SAAUszC,IACrDzgD,KAAK4oE,kBAAkBxwD,IAAIqoC,GAC7B,KAGK,CACT,EAACl+C,EAEDmoE,WAAA,SAAWjqB,GACT,MAAMkqB,EAAc/C,EAAkBnnB,GACtC,OAAOmqB,EAAeD,EAAa,CACjCE,YAAa,YACb5wC,GAAI,UACH1G,MAAK,IAGNvzB,KAAKwpE,iBAAiB/oB,IAE1B,EAACl+C,EAED0sD,SAAA,SAAS9P,GACPn/C,KAAKu9C,SAAS4B,EAChB,EAAC58C,EAED++C,2BAAA,SAA2BnC,GACzB,MAAMsB,GAAWgpB,EAAAA,EAAAA,IAAStqB,GACpBxxC,EAAO3N,KAAK0oE,WAAWvpE,IAAIshD,GACjC,GAAI9yC,EAAM,CACR,MAAMP,EAAgB46D,EAAgBr6D,EAAK27D,SAE3C,MAAM,GAANtoE,QAAA2E,EAAAA,EAAAA,GACKmlE,EAAoB19D,EAAcO,KAAKs6D,qBAAmB,CAC7DL,EAAkBnnB,IAEtB,CACE,OAAO,IAEX,EAACl+C,EAEDwoE,eAAA,SAAe5rB,GACb,MAAMsB,GAAWgpB,EAAAA,EAAAA,IAAStqB,GACpBxxC,EAAO3N,KAAKuoE,OAAOppE,IAAIshD,GAC7B,OAAQ9yC,GAAQA,EAAK47D,QACvB,EAAChnE,EAEDmnE,YAAA,SAAYP,GACV,YADiB,IAAPA,IAAAA,EAAU,GACbnpE,KAAK8oE,YAAY,4BAA8Cv1C,MACpE8zC,IACE,MAAM,OAAE19D,EAAM,aAAEy/D,GAAiB/B,EAEjC,IAAI2D,EAEJ,GAAe,MAAXrhE,GAAkBw/D,EAAU,EAE9B,OAAOnpE,KAAK0pE,YAAYP,EAAU,GAIpC,GAAe,MAAXx/D,EACF,IACE,MAAM0/D,EAAc5vC,KAAKvnB,MAAMk3D,GAC/B,QAA2ChiE,IAAvCiiE,EAAY5rB,uBACd,MAAM,IAAIp2C,MAAM,iCAGlB2jE,EAAU3B,CACZ,CAAE,MAAO/T,GACP,CAIJ,OAAO0V,CAAO,GAGpB,EAAC7C,CAAA,CArZoB,GAwZvB,MAAM2C,EAAsB7C,IACzBx5D,OAAOw8D,gBAAgBhD,IAAuB,IAAI7rE,KACjD+hE,GAAS+M,GAAkB/M,IAGxB,IAiEHrzC,EAjESw0B,EAAU,SAAA6rB,GACrB,SAAA7rB,EAAYC,EAAe8oB,EAAY7oB,GAAW,IAAD5+C,EAwB9C,OARDA,EAAAuqE,EAAApsE,KAAA,MAfsBqsE,IACpB,IAAK7rB,EAAc8lB,WAAW+F,GAC5B,MAAM,IAAI/jE,MACR,8DAA8D+jE,KAIlE,OACE7rB,EAAc8lB,WAAW+F,KACtB73C,KAAKo0C,GAEL5zC,OAAMuhC,GAAOA,GAAI,GAIH+S,IAAW,KAE5B7oB,GACF5+C,EAAK8nE,WAAWtpE,IAAIogD,EAAS9xC,KAAM,CACjC+yC,SAAUjB,EAAS9xC,KACnB47D,QAAS9pB,EACT71C,OAAQ,YAEX/I,CACH,EAACmM,EAAAA,EAAAA,GAAAuyC,EAAA6rB,GAAA,IAAAtsB,EAAAS,EAAAzgD,UAoCA,OApCAggD,EAED6rB,WAAA,SAAWjqB,GACT,OAAO0qB,EAAAtsE,UAAM6rE,WAAU3rE,KAAC,KAAA0hD,GAAUltB,MAAK1lB,IACrC,GAAIA,EAAOlE,SAAW6zC,EAAmBkqB,QACvC,OAAO74D,QAAQC,UAEjB,MAAM0wC,EAAW3xC,EAAOy7D,QAClB8B,EAAY5rB,EAASyoB,mBACrBoD,EAAgBP,EAAoBM,GAC1C,OAAOv8D,QAAQiS,IAAIuqD,EAAcjvE,IAAIwuE,IAAiBr3C,MAAK,IAAMisB,GAAS,GAE9E,EAACX,EAED2qB,iBAAA,SAAiBrqB,GACf,OAAOgsB,EAAAtsE,UAAM2qE,iBAAgBzqE,KAAC,KAAAogD,GAAS5rB,MAAKhW,GACtCA,EAAKgsD,SAGAzB,EAAQ3oB,EAAS,QAAQ5rB,MAAK8zC,GAChB,MAAfA,EAAI19D,OAIC,CACLA,OAAQ6zC,EAAmBn2C,OAMxBkW,IAGJA,GAEX,EAAC+hC,CAAA,CA9DoB,CAAS6oB,GAmEzB,MAAM1oB,EAAY6rB,IACvBxgD,EAAWwgD,CAAO,EAGPzrB,EAAe,CAC1B1iC,QAASgiC,GAAWr0B,EAAS0/C,SAASrrB,GAGtCmC,2BAA4BnC,GAC1Br0B,EAASw2B,2BAA2BnC,GACtC5B,SAAU4B,GAAWr0B,EAASyyB,SAAS4B,GAEvC7O,aAAc,SAAC6O,EAAStjD,GAAY,YAAL,IAAPA,IAAAA,EAAU,CAAC,GACjCivB,EAASwlB,aAAa6O,EAAStjD,EAAQ,EACzC2uE,SAAUrrB,GAAWr0B,EAAS0/C,SAASrrB,GACvC4rB,eAAgB5rB,GAAWr0B,EAASigD,eAAe5rB,GACnD8P,SAAU9P,GAAWr0B,EAASmkC,SAAS9P,GACvCuqB,YAAaA,IAAM5+C,EAAS4+C,eAG9B,QAEO,SAASrpB,IACd,OAAIv1B,EACKA,EAAS29C,cAET,CAAC,CAEZ,wBCtkBA,IAAI3gE,EAAW,EAAQ,KAGvBpK,EAAOC,QAAU,SAAU6J,EAAIirC,GAC7B,IAAK3qC,EAASN,GAAK,OAAOA,EAC1B,IAAIX,EAAIslD,EACR,GAAI1Z,GAAkC,mBAArB5rC,EAAKW,EAAG4lB,YAA4BtlB,EAASqkD,EAAMtlD,EAAG9H,KAAKyI,IAAM,OAAO2kD,EACzF,GAAgC,mBAApBtlD,EAAKW,EAAG+jE,WAA2BzjE,EAASqkD,EAAMtlD,EAAG9H,KAAKyI,IAAM,OAAO2kD,EACnF,IAAK1Z,GAAkC,mBAArB5rC,EAAKW,EAAG4lB,YAA4BtlB,EAASqkD,EAAMtlD,EAAG9H,KAAKyI,IAAM,OAAO2kD,EAC1F,MAAMnwD,UAAU,0CAClB,2JCGA,MAAMwvE,EAAcA,KAClB,MAAMxQ,EAAMjzD,SAASqyD,gBAAgB,6BAA8B,OAKnE,GAJAY,EAAI3sD,aAAa,QAAS,QAC1B2sD,EAAI3sD,aAAa,SAAU,OAC3B2sD,EAAI3sD,aAAa,UAAW,gBAC5B2sD,EAAI3sD,aAAa,QAAS,8BACtBqH,EAAAA,GAAW,CACb,MAAM+1D,EAAeA,KACfh9D,OAAOsL,WAAa,KACtBihD,EAAI3sD,aAAa,QAAS,OAC1B2sD,EAAI3sD,aAAa,SAAU,OAC3B2sD,EAAI3sD,aAAa,UAAW,iBAE5B2sD,EAAI3sD,aAAa,QAAS,QAC1B2sD,EAAI3sD,aAAa,SAAU,OAC3B2sD,EAAI3sD,aAAa,UAAW,gBAC9B,EAEFI,OAAOiK,iBAAiB,SAAU+yD,GAClCA,GACF,CACA,OAAOzQ,CAAG,EAGC0Q,EAAuB,CAClCl5B,EAAG,yKACHpb,EAAG,gKACHQ,EAAG,mLAGQzd,EAA6BA,KACxC,GAAI6F,EAAAA,GAAa,OAEjB,IAD6BjY,SAAS4N,eAAe,2BAC1B,CACzB,MAAMg2D,EAAY5jE,SAASpF,cAAc,OACzCgpE,EAAUt9D,aAAa,KAAM,2BAC7Bs9D,EAAUzjE,UAAUkQ,IAAI,yBACxBuzD,EAAUzjE,UAAUkQ,IAAI,UAExB,MAAMwzD,EAAWJ,IACXK,EAAU9jE,SAASqyD,gBAAgB,6BAA8B,QACvEyR,EAAQx9D,aAAa,KAAM,cAC3Bw9D,EAAQx9D,aAAa,IAAKq9D,EAAqBl5B,GAC/Co5B,EAASrtC,OAAOstC,GAEhB,MAAMC,EAAaN,IACbO,EAAYhkE,SAASqyD,gBAAgB,6BAA8B,QACzE2R,EAAU19D,aAAa,KAAM,cAC7B09D,EAAU19D,aAAa,IAAKq9D,EAAqBt0C,GACjD00C,EAAWvtC,OAAOwtC,GAElB,MAAMC,EAAYR,IACZS,EAAWlkE,SAASqyD,gBAAgB,6BAA8B,QACxE6R,EAAS59D,aAAa,KAAM,cAC5B49D,EAAS59D,aAAa,IAAKq9D,EAAqB9zC,GAChDo0C,EAAUztC,OAAO0tC,GAEjBN,EAAUptC,OAAOqtC,GACjBD,EAAUptC,OAAOutC,GACjBH,EAAUptC,OAAOytC,GAEjBjkE,SAASkQ,KAAKC,QAAQyzD,IAEtBjgB,EAAAA,EAAAA,GAAuBkgB,EAAU,CAAEjqD,GAAI,mBAAoB6pC,OAAQ,OACnEE,EAAAA,EAAAA,GAAuBogB,EAAY,CAAEnqD,GAAI,qBAAsB6pC,OAAQ,OACvEE,EAAAA,EAAAA,GAAuBsgB,EAAW,CAAErqD,GAAI,oBAAqB6pC,OAAQ,KAEvE,CACA,IAAI0gB,GAAc,EAClB,MAAO,CACLC,MAAQtwE,GAAkC,IAAIgT,SAAcS,UACxC,IAAD88D,EAKHC,EAAAC,EAAAC,EAIPC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EATHd,IACE1wD,EAAAA,SAAgBzM,EAAAA,EAAAA,IAAK,KACzBm9D,GAAc,EACoC,QAAlDE,EAAArkE,SAAS4N,eAAe,kCAA0B,IAAAy2D,GAAlDA,EAAoDlkE,UAAUkG,OAAO,WAEnEoN,EAAAA,GACFyxD,EAAAA,GAAStjD,GAAG,cAA+B,QAAlB0iD,EAAExwE,EAAQqT,gBAAQ,IAAAm9D,EAAAA,EAAI,EAAG,CAAEa,SAAUrxE,EAAQsxE,IAAKtkD,KAAMukD,EAAAA,GAAKC,UACtFJ,EAAAA,GAAStjD,GAAG,cAA+B,QAAlB2iD,EAAEzwE,EAAQqT,gBAAQ,IAAAo9D,EAAAA,EAAI,EAAG,CAAEY,SAAUrxE,EAAQyxE,MAAOzkD,KAAMukD,EAAAA,GAAKC,QAAS/vC,MAAO,MACxG2vC,EAAAA,GAAStjD,GAAG,cAA+B,QAAlB4iD,EAAE1wE,EAAQqT,gBAAQ,IAAAq9D,EAAAA,EAAI,EAAG,CAAEW,SAAUrxE,EAAQ0xE,KAAM1kD,KAAMukD,EAAAA,GAAKC,QAAS/vC,MAAO,GAAIkwC,WAAY1+D,MAElF,QAArC09D,EAAAzkE,SAAS4N,eAAe,qBAAa,IAAA62D,GAArCA,EAAuCn+D,aAAa,IAA2D,QAAxDo+D,EAAqC,QAArCC,EAAE3kE,SAASwxB,cAAc19B,EAAQsxE,YAAI,IAAAT,OAAA,EAAnCA,EAAqChmB,aAAa,YAAI,IAAA+lB,EAAAA,EAAIf,EAAqBl5B,GACnG,QAArCm6B,EAAA5kE,SAAS4N,eAAe,qBAAa,IAAAg3D,GAArCA,EAAuCt+D,aAAa,IAA6D,QAA1Du+D,EAAuC,QAAvCC,EAAE9kE,SAASwxB,cAAc19B,EAAQyxE,cAAM,IAAAT,OAAA,EAArCA,EAAuCnmB,aAAa,YAAI,IAAAkmB,EAAAA,EAAIlB,EAAqBt0C,GACrG,QAArC01C,EAAA/kE,SAAS4N,eAAe,qBAAa,IAAAm3D,GAArCA,EAAuCz+D,aAAa,IAA4D,QAAzD0+D,EAAsC,QAAtCC,EAAEjlE,SAASwxB,cAAc19B,EAAQ0xE,aAAK,IAAAP,OAAA,EAApCA,EAAsCtmB,aAAa,YAAI,IAAAqmB,EAAAA,EAAIrB,EAAqB9zC,GAC3I,IAEH,wBCpGH,EAAQ,MACRl6B,EAAOC,QAAU,EAAjB,uDCCAA,EAAQK,YAAa,EACrBL,EAAA,aAAkB,EAClB,IAAIgyB,EAAanwB,EAAuB,EAAQ,OAC5CvB,EAASuB,EAAuB,EAAQ,OACxCqJ,EAAyB,EAAQ,MACjC4kE,EAAgB,EAAQ,MAC5B,SAASjuE,EAAuBd,GAC9B,OAAOA,GAAOA,EAAIV,WAAaU,EAAM,CACnCW,QAASX,EAEb,CAaA,SAASiB,IAYP,OAXAA,EAAW1D,OAAOC,QAAU,SAAU0D,GACpC,IAAK,IAAI5C,EAAI,EAAGA,EAAI6C,UAAUrD,OAAQQ,IAAK,CACzC,IAAI8C,EAASD,UAAU7C,GACvB,IAAK,IAAI4B,KAAOkB,EACV7D,OAAO4C,UAAUC,eAAeC,KAAKe,EAAQlB,KAC/CgB,EAAOhB,GAAOkB,EAAOlB,GAG3B,CACA,OAAOgB,CACT,EACOD,EAASI,MAAMC,KAAMH,UAC9B,CAMA,SAAS6tE,EAAuBljC,GAC9B,QAAa,IAATA,EACF,MAAM,IAAIviB,eAAe,6DAE3B,OAAOuiB,CACT,CACA,IAAImjC,EAAS1xE,OAAO0xE,QAAU,SAAUjvE,GACtC,OAAOzC,OAAOoJ,KAAK3G,GAAKtC,KAAI,SAAUgK,GACpC,OAAO1H,EAAI0H,EACb,GACF,EAqBI0d,EACJ,SAAUrjB,GArCV,IAAwBC,EAAUC,EAuChC,SAASmjB,EAAgBxiB,EAAOyH,GAC9B,IAAInI,EAEA2tB,GADJ3tB,EAAQH,EAAiB1B,KAAKiB,KAAMsB,EAAOyH,IAAY/I,MAC9BuuB,aAAarD,KAAKwiD,EAAuBA,EAAuB9sE,KAMzF,OAJAA,EAAM8I,MAAQ,CACZ6kB,aAAcA,EACdq/C,aAAa,GAERhtE,CACT,CAjDgCD,EAsCAF,GAtCVC,EAsCPojB,GArCNjlB,UAAY5C,OAAOmG,OAAOzB,EAAW9B,WAC9C6B,EAAS7B,UAAUwD,YAAc3B,EACjCA,EAAS4B,UAAY3B,EA+CrB,IAAI4B,EAASuhB,EAAgBjlB,UAsD7B,OArDA0D,EAAOsH,gBAAkB,WACvB,MAAO,CACLX,gBAAiB,CACfE,YAAapJ,KAAK6tE,UAGxB,EACAtrE,EAAOyH,kBAAoB,WACzBhK,KAAK6tE,UAAW,EAChB7tE,KAAK24C,SAAU,CACjB,EACAp2C,EAAO8H,qBAAuB,WAC5BrK,KAAK24C,SAAU,CACjB,EACA70B,EAAgBha,yBAA2B,SAAkC2zB,EAAW34B,GACtF,IAAIgpE,EAAmBhpE,EAAKmH,SAC1BsiB,EAAezpB,EAAKypB,aAEtB,MAAO,CACLtiB,SAFcnH,EAAK8oE,aAEK,EAAIH,EAAcM,wBAAwBtwC,EAAWlP,IAAgB,EAAIk/C,EAAcO,qBAAqBvwC,EAAWqwC,EAAkBv/C,GACjKq/C,aAAa,EAEjB,EACArrE,EAAOgsB,aAAe,SAAsBjiB,EAAOpM,GACjD,IAAI+tE,GAAsB,EAAIR,EAAcS,iBAAiBluE,KAAKsB,MAAM2K,UACpEK,EAAM1N,OAAOqvE,IACb3hE,EAAMhL,MAAMU,UACdsK,EAAMhL,MAAMU,SAAS9B,GAEnBF,KAAK24C,SACP34C,KAAK8K,UAAS,SAAUpB,GACtB,IAAIuC,EAAWtM,EAAS,CAAC,EAAG+J,EAAMuC,UAElC,cADOA,EAASK,EAAM1N,KACf,CACLqN,SAAUA,EAEd,IAEJ,EACA1J,EAAOG,OAAS,WACd,IAAIsJ,EAAchM,KAAKsB,MACrBsB,EAAYoJ,EAAYyB,UACxB0gE,EAAeniE,EAAYmiE,aAC3B7sE,EAxHN,SAAuCxB,EAAQqM,GAC7C,GAAc,MAAVrM,EAAgB,MAAO,CAAC,EAC5B,IAEIlB,EAAK5B,EAFL4C,EAAS,CAAC,EACVwM,EAAanQ,OAAOoJ,KAAKvF,GAE7B,IAAK9C,EAAI,EAAGA,EAAIoP,EAAW5P,OAAQQ,IACjC4B,EAAMwN,EAAWpP,GACbmP,EAAS9D,QAAQzJ,IAAQ,IAC7BgB,EAAOhB,GAAOkB,EAAOlB,IAEvB,OAAOgB,CACT,CA6GcyM,CAA8BL,EAAa,CAAC,YAAa,iBAC/DC,EAAW0hE,EAAO3tE,KAAK0J,MAAMuC,UAAU7P,IAAI+xE,GAI/C,cAHO7sE,EAAM6H,cACN7H,EAAM+H,aACN/H,EAAMkJ,KACK,OAAd5H,EACKqJ,EAEFhO,EAAOoB,QAAQsD,cAAcC,EAAWtB,EAAO2K,EACxD,EACO6X,CACT,CApEA,CAoEE7lB,EAAOoB,QAAQuD,WACjBkhB,EAAgBlX,kBAAoB,CAClC1D,gBAAiBymB,EAAWtwB,QAAQoF,OAAO4sB,YAE7CvN,EAAgBhhB,UAoDZ,CAAC,EACLghB,EAAgBjhB,aAlJG,CACjB4K,UAAW,MACX0gE,aAAc,SAAsB7hE,GAClC,OAAOA,CACT,GA+IF,IAAIvJ,GAAW,EAAI8F,EAAuBgE,UAAUiX,GACpDnmB,EAAA,QAAkBoF,EAClBrF,EAAOC,QAAUA,EAAiB,wHC3MlC,SAAS0hC,EAAgB3gC,EAAKE,EAAKsG,GAWjC,OAVItG,KAAOF,EACTzC,OAAOgD,eAAeP,EAAKE,EAAK,CAC9BsG,MAAOA,EACPmlB,YAAY,EACZC,cAAc,EACdzkB,UAAU,IAGZnH,EAAIE,GAAOsG,EAENxG,CACT,CACA,SAASiB,IAYP,OAXAA,EAAW1D,OAAOC,QAAU,SAAU0D,GACpC,IAAK,IAAI5C,EAAI,EAAGA,EAAI6C,UAAUrD,OAAQQ,IAAK,CACzC,IAAI8C,EAASD,UAAU7C,GACvB,IAAK,IAAI4B,KAAOkB,EACV7D,OAAO4C,UAAUC,eAAeC,KAAKe,EAAQlB,KAC/CgB,EAAOhB,GAAOkB,EAAOlB,GAG3B,CACA,OAAOgB,CACT,EACOD,EAASI,MAAMC,KAAMH,UAC9B,CACA,SAASuuE,EAAQ3pE,EAAQ4pE,GACvB,IAAIhpE,EAAOpJ,OAAOoJ,KAAKZ,GACvB,GAAIxI,OAAOwnB,sBAAuB,CAChC,IAAI6qD,EAAUryE,OAAOwnB,sBAAsBhf,GACvC4pE,IAAgBC,EAAUA,EAAQ/xE,QAAO,SAAUgyE,GACrD,OAAOtyE,OAAOiD,yBAAyBuF,EAAQ8pE,GAAKlkD,UACtD,KACAhlB,EAAKK,KAAK3F,MAAMsF,EAAMipE,EACxB,CACA,OAAOjpE,CACT,CACA,SAASmpE,EAAe5uE,GACtB,IAAK,IAAI5C,EAAI,EAAGA,EAAI6C,UAAUrD,OAAQQ,IAAK,CACzC,IAAI8C,EAAyB,MAAhBD,UAAU7C,GAAa6C,UAAU7C,GAAK,CAAC,EAChDA,EAAI,EACNoxE,EAAQnyE,OAAO6D,IAAS,GAAMO,SAAQ,SAAUzB,GAC9CygC,EAAgBz/B,EAAQhB,EAAKkB,EAAOlB,GACtC,IACS3C,OAAO0I,0BAChB1I,OAAOkuB,iBAAiBvqB,EAAQ3D,OAAO0I,0BAA0B7E,IAEjEsuE,EAAQnyE,OAAO6D,IAASO,SAAQ,SAAUzB,GACxC3C,OAAOgD,eAAeW,EAAQhB,EAAK3C,OAAOiD,yBAAyBY,EAAQlB,GAC7E,GAEJ,CACA,OAAOgB,CACT,CAaA,SAAS0qC,EAAyBxqC,EAAQqM,GACxC,GAAc,MAAVrM,EAAgB,MAAO,CAAC,EAC5B,IACIlB,EAAK5B,EADL4C,EAdN,SAAuCE,EAAQqM,GAC7C,GAAc,MAAVrM,EAAgB,MAAO,CAAC,EAC5B,IAEIlB,EAAK5B,EAFL4C,EAAS,CAAC,EACVwM,EAAanQ,OAAOoJ,KAAKvF,GAE7B,IAAK9C,EAAI,EAAGA,EAAIoP,EAAW5P,OAAQQ,IACjC4B,EAAMwN,EAAWpP,GACbmP,EAAS9D,QAAQzJ,IAAQ,IAC7BgB,EAAOhB,GAAOkB,EAAOlB,IAEvB,OAAOgB,CACT,CAGeyM,CAA8BvM,EAAQqM,GAEnD,GAAIlQ,OAAOwnB,sBAAuB,CAChC,IAAIgrD,EAAmBxyE,OAAOwnB,sBAAsB3jB,GACpD,IAAK9C,EAAI,EAAGA,EAAIyxE,EAAiBjyE,OAAQQ,IACvC4B,EAAM6vE,EAAiBzxE,GACnBmP,EAAS9D,QAAQzJ,IAAQ,GACxB3C,OAAO4C,UAAU6kB,qBAAqB3kB,KAAKe,EAAQlB,KACxDgB,EAAOhB,GAAOkB,EAAOlB,GAEzB,CACA,OAAOgB,CACT,CACA,IAGI8uE,EAA0B,gBAAoB,CAAC,GAS/CC,EAAmB,SAA0BtJ,GAC/C,IAAIuJ,EAAoB,aAAiBF,GACrCG,EAAgBD,EAIpB,OAHIvJ,IACFwJ,EAfoB,mBAeOxJ,EAAcA,EAAWuJ,GAAqBJ,EAAeA,EAAe,CAAC,EAAGI,GAAoBvJ,IAE1HwJ,CACT,EACIC,EAAc,SAAqBxtE,GACrC,IAAIutE,EAAgBF,EAAiBrtE,EAAM+jE,YAC3C,OAAoB,gBAAoBqJ,EAAWrwE,SAAU,CAC3D6G,MAAO2pE,GACNvtE,EAAM2K,SACX,EAEI8iE,EAAW,CACbC,WAAY,OACZC,QAAS,SAAiBnqE,GACxB,IAAImH,EAAWnH,EAAKmH,SACpB,OAAoB,gBAAoB,WAAgB,CAAC,EAAGA,EAC9D,GAEEijE,EAAgC,cAAiB,SAAU5tE,EAAO8D,GACpE,IAAI+pE,EAAiB7tE,EAAM+jE,WACzB+J,EAAU9tE,EAAM8tE,QAChBC,EAAe/tE,EAAM+tE,aACrBC,EAAahuE,EAAMguE,WACnBC,EAAMjlC,EAAyBhpC,EAAO,CAAC,aAAc,UAAW,eAAgB,eAC9E+jE,EAAasJ,EAAiBQ,GAC9BltE,EAAOmtE,EACPxsE,EAAYyiE,EAAW,GAAGrkE,OAAOsuE,EAAY,KAAKtuE,OAAOiB,KAAUojE,EAAWpjE,IAAS8sE,EAAS9sE,IAASotE,EAC7G,OAAIF,EACkB,gBAAoBvsE,EAAW4rE,EAAeA,EAAe,CAC/EppE,IAAKA,GACJmqE,GAAM,CAAC,EAAG,CACXlK,WAAY8J,KAGI,gBAAoBvsE,EAAW4rE,EAAe,CAChEppE,IAAKA,GACJmqE,GACL,IACAL,EAAiBj/C,YAAc,mBCvI/B,MAAMu/C,GAAwBpxE,EAAAA,EAAAA,eAAc,CAAC,GAOhCqxE,EAAmB3qE,IAAA,IAAC,WAAE4qE,EAAU,SAAEzjE,GAAUnH,EAAA,OACvDiJ,EAAAA,cACEyhE,EAAsBnxE,SACtB,CAAE6G,MAAOwqE,GACTzjE,EACD,gBCdH,EACQhQ,OAAOC,OAAO,CAAC,klBC2BvB,MAAMyzE,EAAsB,CAAC,EAEvBC,EAAsBzrD,GAC1B,SAAkC7iB,GAChC,MAAM,UAAEsB,GAAcuhB,EAAI4Q,MAAKjwB,IAAA,IAAC,MAAE+qE,GAAO/qE,EAAA,OAAM+qE,GAAQA,EAAMvuE,EAAa,IAC1E,OAAOgV,EAAAA,EAAAA,KAAC1T,EAASiB,EAAA,GAAKvC,GACxB,EAEFwuE,EAAAA,QAAWzvE,SAAQ07B,IAAkC,IAAjC,OAAEg0C,EAAS,CAAC,EAAC,WAAE1K,GAAYtpC,EAC7C9/B,OAAO4I,QAAQwgE,GAAYhlE,SAAQssC,IAAiC,IAA/BqjC,EAAeptE,GAAU+pC,EACxDgjC,EAAoBK,GACtBL,EAAoBjqE,KAAK,CAAEmqE,MAAOE,EAAOC,GAAgBptE,cAEzD+sE,EAAoBK,GAAiB,CACnC,CAAEH,MAAOE,EAAOC,GAAgBptE,aAEpC,GACA,IAGJ,MAAMyiE,EAAappE,OAAO4I,QAAQ8qE,GAC/BvzE,KAAI2xC,IAAkB,IAAhBtqC,EAAM0gB,GAAI4pB,EACf,MAAO,CACL,CAACtqC,GAAOmsE,EACNzrD,EAAInjB,OAAO,CAAE6uE,WAAOzoE,EAAWxE,UAAWa,KAE7C,IAEFsjB,QAAO,CAACkpD,EAAKvxE,IACZmF,EAAAA,EAAA,GAAYosE,GAAQvxE,IACnB,CAAC,GAGAwxE,GH0B6CttE,EGzBjDorC,IAAA,IAAGq3B,WAAY8K,EAAqB,SAAElkE,GAAU+hC,EAAA,OAC9C13B,EAAAA,EAAAA,KAACm5D,EAAgB,CAACC,WAAYU,EAAcnkE,UAC1CqK,EAAAA,EAAAA,KAACw4D,EAAW,CAACzJ,WAAUxhE,EAAAA,EAAA,GAAOssE,GAA0B9K,GAAap5D,SAClEA,KAEc,EHqBd,SAAU3K,GACf,IAAIutE,EAAgBF,EAAiBrtE,EAAM+jE,YAC3C,OAAoB,gBAAoBziE,EAAWjD,EAAS,CAAC,EAAG2B,EAAO,CACrE+jE,WAAYwJ,IAEhB,GANsB,IAA2BjsE,EItF5C,MAAM2L,EDsEW0/B,IAAA,IAAC,QAAEhmC,GAASgmC,EAAA,OAAK33B,EAAAA,EAAAA,KAAC45D,EAAW,CAAAjkE,SAAEhE,GAAsB,qCE/D7E,IAHyBooE,EAGrBtiE,EAAQ,EAAQ,MAChBuiE,GAJqBD,EAIYtiE,IAHR,iBAAPsiE,GAAmB,YAAaA,EAAKA,EAAY,QAAIA,EAKvEE,EAAK,IADM,EAAQ,OAEnB9rC,EAAU8rC,EAAG3qC,aAEbjB,GADM4rC,EAAGvqC,SACAuqC,EAAGrqC,aACZrB,EAAS0rC,EAAGhqC,YACZxB,EAAKwrC,EAAG9pC,QACR5C,EAAK0sC,EAAG3pC,QACR4pC,EAAc,SAAqB5pE,GAErC,OAAOA,IADC/G,UAAUrD,OAAS,QAAsB4K,IAAjBvH,UAAU,GAAmBA,UAAU,GAAK,OAE9E,EACI4wE,EAAuB,WACzB,QAAsB,oBAAXhiE,SACLA,OAAO2kB,YAAaA,aACf3kB,OAAO2kB,WAAaA,UAIjC,EACIs9C,EAAe,SAAsBzuE,GACvC,IAAI0uE,EAAMF,IACV,OAAOE,GAAOA,EAAIhqC,YAA6C,IAAhCgqC,EAAIhqC,SAASt+B,QAAQpG,IAAiC,aAAjB0uE,EAAIhqC,UAA2BgqC,EAAIrqC,eAAiB,IAAM73B,OAAOmiE,SACvI,EACA,SAASn8C,EAAQ/1B,GAUf,OARE+1B,EADoB,mBAAXC,QAAoD,iBAApBA,OAAOC,SACtC,SAAUj2B,GAClB,cAAcA,CAChB,EAEU,SAAUA,GAClB,OAAOA,GAAyB,mBAAXg2B,QAAyBh2B,EAAI2D,cAAgBqyB,QAAUh2B,IAAQg2B,OAAO71B,UAAY,gBAAkBH,CAC3H,EAEK+1B,EAAQ/1B,EACjB,CAMA,SAASmyE,EAAkBjxE,EAAQ0B,GACjC,IAAK,IAAItE,EAAI,EAAGA,EAAIsE,EAAM9E,OAAQQ,IAAK,CACrC,IAAIotB,EAAa9oB,EAAMtE,GACvBotB,EAAWC,WAAaD,EAAWC,aAAc,EACjDD,EAAWE,cAAe,EACtB,UAAWF,IAAYA,EAAWvkB,UAAW,GACjD5J,OAAOgD,eAAeW,EAAQwqB,EAAWxrB,IAAKwrB,EAChD,CACF,CAMA,SAASiV,EAAgB3gC,EAAKE,EAAKsG,GAWjC,OAVItG,KAAOF,EACTzC,OAAOgD,eAAeP,EAAKE,EAAK,CAC9BsG,MAAOA,EACPmlB,YAAY,EACZC,cAAc,EACdzkB,UAAU,IAGZnH,EAAIE,GAAOsG,EAENxG,CACT,CACA,SAASiB,IAYP,OAXAA,EAAW1D,OAAOC,QAAU,SAAU0D,GACpC,IAAK,IAAI5C,EAAI,EAAGA,EAAI6C,UAAUrD,OAAQQ,IAAK,CACzC,IAAI8C,EAASD,UAAU7C,GACvB,IAAK,IAAI4B,KAAOkB,EACV7D,OAAO4C,UAAUC,eAAeC,KAAKe,EAAQlB,KAC/CgB,EAAOhB,GAAOkB,EAAOlB,GAG3B,CACA,OAAOgB,CACT,EACOD,EAASI,MAAMC,KAAMH,UAC9B,CACA,SAASuuE,EAAQ3pE,EAAQ4pE,GACvB,IAAIhpE,EAAOpJ,OAAOoJ,KAAKZ,GACvB,GAAIxI,OAAOwnB,sBAAuB,CAChC,IAAI6qD,EAAUryE,OAAOwnB,sBAAsBhf,GACvC4pE,IAAgBC,EAAUA,EAAQ/xE,QAAO,SAAUgyE,GACrD,OAAOtyE,OAAOiD,yBAAyBuF,EAAQ8pE,GAAKlkD,UACtD,KACAhlB,EAAKK,KAAK3F,MAAMsF,EAAMipE,EACxB,CACA,OAAOjpE,CACT,CA+BA,SAASyrE,EAAgBttD,GAIvB,OAHAstD,EAAkB70E,OAAO0rC,eAAiB1rC,OAAO80E,eAAiB,SAAyBvtD,GACzF,OAAOA,EAAElhB,WAAarG,OAAO80E,eAAevtD,EAC9C,EACOstD,EAAgBttD,EACzB,CACA,SAASkkB,EAAgBlkB,EAAG5c,GAK1B,OAJA8gC,EAAkBzrC,OAAO0rC,gBAAkB,SAAyBnkB,EAAG5c,GAErE,OADA4c,EAAElhB,UAAYsE,EACP4c,CACT,EACOkkB,EAAgBlkB,EAAG5c,EAC5B,CAaA,SAAS0jC,EAAyBxqC,EAAQqM,GACxC,GAAc,MAAVrM,EAAgB,MAAO,CAAC,EAC5B,IACIlB,EAAK5B,EADL4C,EAdN,SAAuCE,EAAQqM,GAC7C,GAAc,MAAVrM,EAAgB,MAAO,CAAC,EAC5B,IAEIlB,EAAK5B,EAFL4C,EAAS,CAAC,EACVwM,EAAanQ,OAAOoJ,KAAKvF,GAE7B,IAAK9C,EAAI,EAAGA,EAAIoP,EAAW5P,OAAQQ,IACjC4B,EAAMwN,EAAWpP,GACbmP,EAAS9D,QAAQzJ,IAAQ,IAC7BgB,EAAOhB,GAAOkB,EAAOlB,IAEvB,OAAOgB,CACT,CAGeyM,CAA8BvM,EAAQqM,GAEnD,GAAIlQ,OAAOwnB,sBAAuB,CAChC,IAAIgrD,EAAmBxyE,OAAOwnB,sBAAsB3jB,GACpD,IAAK9C,EAAI,EAAGA,EAAIyxE,EAAiBjyE,OAAQQ,IACvC4B,EAAM6vE,EAAiBzxE,GACnBmP,EAAS9D,QAAQzJ,IAAQ,GACxB3C,OAAO4C,UAAU6kB,qBAAqB3kB,KAAKe,EAAQlB,KACxDgB,EAAOhB,GAAOkB,EAAOlB,GAEzB,CACA,OAAOgB,CACT,CACA,SAAS8tE,EAAuBljC,GAC9B,QAAa,IAATA,EACF,MAAM,IAAIviB,eAAe,6DAE3B,OAAOuiB,CACT,CAOA,IAAIwmC,EACM,SADNA,EAEM,SAFNA,EAGO,UAHPA,EAIO,UAJPA,EAKQ,WALRA,OAMO5pE,EAEP6pE,EAAe,CACjBC,OAAQ,SACRC,QAAS,UACTC,MAAO,QACPC,OAAQ,SACRC,OAAQ,SACRC,iBAAkB,oBAClBC,KAAM,OACNC,SAAU,WACVC,GAAI,KACJC,aAAc,gBACdC,aAAc,gBACdC,KAAM,eACNC,eAAgB,mBAEdC,EAAU,CACZC,IAAK,MACLC,QAAS,UACTC,aAAc,gBACdC,QAAS,UACT/uC,OAAQ,UAENgvC,EAAc,CAChBC,UAAU,EACVC,UAAU,EACV58D,WAAW,EACX68D,WAAW,EACXC,WAAW,EACXC,YAAY,GA6CVC,EAAgB,SAAuBzwE,EAAM0iC,EAAQI,EAAIlB,GAC3D,OApKF,SAAwBjkC,GACtB,IAAK,IAAI5C,EAAI,EAAGA,EAAI6C,UAAUrD,OAAQQ,IAAK,CACzC,IAAI8C,EAAyB,MAAhBD,UAAU7C,GAAa6C,UAAU7C,GAAK,CAAC,EAChDA,EAAI,EACNoxE,EAAQtuE,GAAQ,GAAMO,SAAQ,SAAUzB,GACtCygC,EAAgBz/B,EAAQhB,EAAKkB,EAAOlB,GACtC,IACS3C,OAAO0I,0BAChB1I,OAAOkuB,iBAAiBvqB,EAAQ3D,OAAO0I,0BAA0B7E,IAEjEsuE,EAAQtuE,GAAQO,SAAQ,SAAUzB,GAChC3C,OAAOgD,eAAeW,EAAQhB,EAAK3C,OAAOiD,yBAAyBY,EAAQlB,GAC7E,GAEJ,CACA,OAAOgB,CACT,CAoJS4uE,CAAe,CAAC,EAAGvsE,EAAM,CAC9BixC,OAAQs9B,EAAY7rC,EAAOuO,QAC3By/B,MAAOnC,EAAY7rC,EAAOguC,OAC1B5tC,GAAIyrC,EAAYzrC,EAAGthC,MACnBoyD,UAAW2a,EAAYzrC,EAAGtoB,SAC1BonB,GAAI2sC,EAAY3sC,IAEpB,EA+BI5hC,EAlFY,SAAmBA,GACjC,OAAQA,GACN,KAAK+uE,EACH,MAAO,CACLqB,UAAU,GAEd,KAAKrB,EACH,MAAO,CACLsB,UAAU,GAEd,KAAKtB,EACH,MAAO,CACLuB,WAAW,GAEf,KAAKvB,EACH,MAAO,CACLwB,WAAW,GAEf,KAAKxB,EACH,MAAO,CACLyB,YAAY,GAEhB,KAAKzB,EACH,MAAO,CACLt7D,WAAW,GAEf,QACE,OAAO08D,EAEb,CAqDWQ,CAAUjuC,EAAO1iC,MA2B5B,IAoFM0uE,EArEFkC,EAAqB,WACvB,MAAqB,iBAAPhvC,IAA2C,IAAxBA,EAAGx7B,QAAQ,OAC9C,EAIIyqE,EAAgB,WAClB,OAAOnuC,EAAO1iC,OAAS+uE,CACzB,EA+BI+B,EAAa,WACf,OAAOtuC,EAAQhhC,OAASwtE,EAAaO,IACvC,EA+BIwB,EAAY,WACd,OAAOtC,EAAa,OACtB,EAwCI6B,EA9GK5tC,EAAO1iC,OAAS+uE,EA+GrBwB,EAtGK7tC,EAAO1iC,OAAS+uE,EAuGrByB,EA1GK9tC,EAAO1iC,OAAS+uE,EA2GrBiC,EApEKxuC,EAAQhhC,OAASwtE,EAAaU,cAoEMqB,IACzCE,EAjFKzuC,EAAQhhC,OAASwtE,EAAaQ,SAkFnCY,EAhIwB,WAC1B,OAAQ1tC,EAAO1iC,MACb,KAAK+uE,EACL,KAAKA,EACH,OAAO,EACT,QACE,OAAO,EAEb,CAwHemC,IAA2BH,IACtCI,EAtIKzuC,EAAO1iC,OAAS+uE,EAuIrBsB,EApIK3tC,EAAO1iC,OAAS+uE,GAoIQgC,IAC7Bt9D,EAAYo9D,IACZO,EAAYP,IACZ9c,EA5GKjxB,EAAGthC,OAASsuE,EAAQE,QA6GzBqB,EApGKvuC,EAAGthC,OAASsuE,EAAQG,aAqGzBvc,EAlGK5wB,EAAGthC,OAASsuE,EAAQC,KAkGFgB,IACvBlN,EAhGKrhC,EAAQhhC,OAASwtE,EAAaC,OAiGnCj1D,GA9FKwoB,EAAQhhC,OAASwtE,EAAaE,QA+FnCpL,GAnFKthC,EAAQhhC,OAASwtE,EAAaK,QAAU7sC,EAAQhhC,OAASwtE,EAAaU,aAoF3E4B,GA9EK9uC,EAAQhhC,OAASwtE,EAAaG,MA+EnCj4D,GA5EKsrB,EAAQhhC,OAASwtE,EAAaM,kBAAoB9sC,EAAQhhC,OAASwtE,EAAaS,GA6ErF7b,GA5CK2a,EAAYzrC,EAAGtoB,SA6CpB+2D,GA1CKhD,EAAYzrC,EAAGthC,MA2CpBgwE,GApDKjD,EAAY/rC,EAAQhoB,SAqDzBs5C,GAlDKya,EAAY/rC,EAAQivC,OAmDzBC,GA1CKnD,EAAY/rC,EAAQhhC,MA2CzBmwE,GAxCKpD,EAAY7rC,EAAOuO,QAyCxB2gC,GAtCKrD,EAAY7rC,EAAOguC,OAuCxBmB,GApCKtD,EAAY3rC,EAAOphC,MAqCxBswE,GAlCKvD,EAAY3rC,EAAOpoB,SAmCxBmqB,GAhCK4pC,EAAY3sC,GAiCjBmwC,GAASjB,KAAgBF,IACzBoB,GApGKxvC,EAAQhhC,OAASwtE,EAAaI,OAqGnC6C,GAhCK1D,EAAY7rC,EAAO1iC,KAAM,WAiC9BkyE,IA5EExD,EAAMF,OACK,mBAAmBvzE,KAAKyzE,EAAIhqC,WAA8B,aAAjBgqC,EAAIhqC,UAA2BgqC,EAAIrqC,eAAiB,KAAO73B,OAAOmiE,SA4ExHwD,GAAWpB,IACXqB,GAvEK3D,EAAa,UAwElB4D,GArEK5D,EAAa,QAsElBxK,GAtFiB,WACnB,IAAIyK,EAAMF,IACN5sC,EAAK8sC,GAAOA,EAAItrC,WAAasrC,EAAItrC,UAAU1oC,cAC/C,MAAqB,iBAAPknC,GAAkB,WAAW3mC,KAAK2mC,EAClD,CAkFiB0wC,GACbC,GAAiB3B,IACjBx2D,GAAe02D,MAAiBF,IAChC4B,GArIK1vC,EAAGthC,OAASsuE,EAAQI,QAsIzBuC,GAnIK3vC,EAAGthC,OAASsuE,EAAQ3uC,OAoIzBuxC,GAhGKlwC,EAAQhhC,OAASwtE,EAAaY,KAiGnC+C,GA9FKnwC,EAAQhhC,OAASwtE,EAAaa,eAwTvCn0E,EAAQ,GAAiBo4D,GAOzBp4D,EAAQ,GAAYq4D,EAWpBr4D,EAAQ,GAAQg4D,EAKhBh4D,EAAQ,GAAe0e,GAkBvB1e,EAAQ,GAAYk4D,uECzvBb,MAAMlK,EAAOA,0CCEpBhuD,EAAQK,YAAa,EACrB,IAEgCU,EAF5BklE,EAAU,EAAQ,MAClBiR,GAC4Bn2E,EADMklE,IAEtBllE,EAAIV,WAAaU,EAAM,CACnCW,QAASX,GAGbf,EAAA,QAAkBk3E,EAASx1E,SAAW,SAAUO,GAC9C,IAAK,IAAI5C,EAAI,EAAGA,EAAI6C,UAAUrD,OAAQQ,IAAK,CACzC,IAAI8C,EAASD,UAAU7C,GACvB,IAAK,IAAI4B,KAAOkB,EACV7D,OAAO4C,UAAUC,eAAeC,KAAKe,EAAQlB,KAC/CgB,EAAOhB,GAAOkB,EAAOlB,GAG3B,CACA,OAAOgB,CACT,wBCpBA,IAAIk1E,EAAY,EAAQ,MACpB9yD,EAAM7S,KAAK6S,IACX4K,EAAMzd,KAAKyd,IACflvB,EAAOC,QAAU,SAAUwpB,EAAO3qB,GAEhC,OADA2qB,EAAQ2tD,EAAU3tD,IACH,EAAInF,EAAImF,EAAQ3qB,EAAQ,GAAKowB,EAAIzF,EAAO3qB,EACzD,oBCNAkB,EAAOC,SAAU,qCCAjB,SAAS+vE,EAAuBljC,GAC9B,QAAa,IAATA,EACF,MAAM,IAAIviB,eAAe,6DAE3B,OAAOuiB,CACT,CACA,SAASz9B,EAAerM,EAAUC,GAChCD,EAAS7B,UAAY5C,OAAOmG,OAAOzB,EAAW9B,WAC9C6B,EAAS7B,UAAUwD,YAAc3B,EACjCA,EAAS4B,UAAY3B,CACvB,ovBAaA,IAaEo0E,EA8CAC,EACAtd,EACAud,EACAtd,EAGAud,EAmBAC,EA2tBAC,EAsOAC,EAUIC,EACAC,EACA97B,EACA+7B,EACAC,EACA12B,EAbE22B,EACFC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAOAC,EAmPKn4E,EAAGuC,EACR61E,EACFC,EACAC,EACAhJ,EA5xCAiJ,EAAU,CACVC,UAAW,IACX5T,QAAS,OACT6T,eAAgB,EAChB/X,MAAO,CACLgY,WAAY,KAGhBC,EAAY,CACVxnE,SAAU,GACVynE,WAAW,EACXr5C,MAAO,GAGTs5C,EAAU,IACVC,EAAW,KACXC,EAAiB,EAAV3nE,KAAKgpD,GACZ4e,EAAWD,EAAO,EAClBE,EAAQ,EACRC,EAAQ9nE,KAAKkzD,KACb6U,EAAO/nE,KAAKoyD,IACZ4V,EAAOhoE,KAAKqyD,IACZ4V,EAAY,SAAmBlyE,GAC7B,MAAwB,iBAAVA,CAChB,EACAmyE,EAAc,SAAqBnyE,GACjC,MAAwB,mBAAVA,CAChB,EACAoyE,EAAY,SAAmBpyE,GAC7B,MAAwB,iBAAVA,CAChB,EACAqyE,EAAe,SAAsBryE,GACnC,YAAwB,IAAVA,CAChB,EACAsyE,EAAY,SAAmBtyE,GAC7B,MAAwB,iBAAVA,CAChB,EACAuyE,EAAc,SAAqBvyE,GACjC,OAAiB,IAAVA,CACT,EACAwyE,EAAgB,WACd,MAAyB,oBAAXjpE,MAChB,EACAkpE,EAAkB,SAAyBzyE,GACzC,OAAOmyE,EAAYnyE,IAAUkyE,EAAUlyE,EACzC,EACA0yE,EAAuC,mBAAhBC,aAA8BA,YAAYC,QAAU,WAAa,EAExFC,GAAWj8E,MAAMC,QACjBi8E,GAAgB,oBAEhBC,GAAU,mCAEVC,GAAkB,8BAClBC,GAAuB,mCAEvBC,GAAU,gBACVC,GAAqB,4BACrBC,GAAW,2BAKXC,GAAW,CAAC,EACZC,GAAgB,CAAC,EAEjBC,GAAW,SAAkBC,GAC3B,OAAQF,GAAgBG,GAAOD,EAAOH,MAAcK,EACtD,EACAC,GAAiB,SAAwBvf,EAAUp0D,GACjD,OAAOhB,QAAQwa,KAAK,mBAAoB46C,EAAU,SAAUp0D,EAAO,wCACrE,EACA4zE,GAAQ,SAAe36D,EAAS46D,GAC9B,OAAQA,GAAY70E,QAAQwa,KAAKP,EACnC,EACA66D,GAAa,SAAoBv1E,EAAM/E,GACrC,OAAO+E,IAAS80E,GAAS90E,GAAQ/E,IAAQ85E,KAAkBA,GAAc/0E,GAAQ/E,IAAQ65E,EAC3F,EACAU,GAAa,WACX,OAAO,CACT,EACAC,GAAiB,CAAC,EAClBC,GAAc,GACdC,GAAc,CAAC,EAEfC,GAAW,CAAC,EACZC,GAAW,CAAC,EACZC,GAAe,GACfC,GAAkB,GAClBC,GAAiB,GACjBC,GAAW,SAAkBtV,GAC3B,IACEuV,EACA38E,EAFE4C,EAASwkE,EAAQ,GAIrB,GADAoT,EAAU53E,IAAWy3E,EAAYz3E,KAAYwkE,EAAU,CAACA,MAClDuV,GAAiB/5E,EAAO65D,OAAS,CAAC,GAAGmgB,SAAU,CAGnD,IADA58E,EAAIw8E,GAAgBh9E,OACbQ,MAAQw8E,GAAgBx8E,GAAGmnE,WAAWvkE,KAC7C+5E,EAAgBH,GAAgBx8E,EAClC,CAEA,IADAA,EAAIonE,EAAQ5nE,OACLQ,KACLonE,EAAQpnE,KAAOonE,EAAQpnE,GAAGy8D,QAAU2K,EAAQpnE,GAAGy8D,MAAQ,IAAIogB,GAAQzV,EAAQpnE,GAAI28E,MAAoBvV,EAAQnjD,OAAOjkB,EAAG,GAEvH,OAAOonE,CACT,EACA0V,GAAY,SAAmBl6E,GAC7B,OAAOA,EAAO65D,OAASigB,GAAS7qD,GAAQjvB,IAAS,GAAG65D,KACtD,EACAsgB,GAAe,SAAsBn6E,EAAQ05D,EAAU/rC,GACrD,OAAQA,EAAI3tB,EAAO05D,KAAc+d,EAAY9pD,GAAK3tB,EAAO05D,KAAcie,EAAahqD,IAAM3tB,EAAO8mD,cAAgB9mD,EAAO8mD,aAAa4S,IAAa/rC,CACpJ,EACAysD,GAAe,SAAsBC,EAAO7oD,GAC1C,OAAQ6oD,EAAQA,EAAM75E,MAAM,MAAMC,QAAQ+wB,IAAS6oD,CACrD,EAEAC,GAAS,SAAgBh1E,GACvB,OAAOiK,KAAKgT,MAAc,IAARjd,GAAkB,KAAU,CAChD,EACAi1E,GAAoB,SAA2BC,EAAUC,GAIvD,IAFA,IAAInkD,EAAImkD,EAAO79E,OACbQ,EAAI,EACCo9E,EAAS/xE,QAAQgyE,EAAOr9E,IAAM,KAAOA,EAAIk5B,IAChD,OAAOl5B,EAAIk5B,CACb,EACAokD,GAAa,SAAoBttE,EAAQ/K,EAAMyxD,GAE7C,IAGE6mB,EAHEC,EAAWlD,EAAUtqE,EAAO,IAC9BytE,GAAaD,EAAW,EAAI,IAAMv4E,EAAO,EAAI,EAAI,GACjD+hE,EAAOh3D,EAAOytE,GAIhB,GAFAD,IAAaxW,EAAK90D,SAAWlC,EAAO,IACpCg3D,EAAKtQ,OAASA,EACVzxD,EAAM,CAER,IADAs4E,EAASvW,EACFtQ,KAAY,oBAAqB6mB,IAEtCA,EAAS7mB,EAAOsQ,KAAK33C,UAAY,CAAC,EAClCqnC,EAAS+jB,EAAY/jB,EAAOsQ,KAAK0W,UAAYhnB,EAAOA,OAEtDsQ,EAAK2W,gBAAkBlD,EAAY8C,EAAOI,iBAC1C14E,EAAO,EAAI+hE,EAAK4W,aAAe,EAAI5W,EAAKS,QAAUz3D,EAAOytE,EAAY,EACvE,CACA,OAAOzW,CACT,EACA6W,GAAc,WACZ,IAEE79E,EACA8hE,EAHE5oC,EAAIijD,GAAY38E,OAClBqB,EAAIs7E,GAAYh8E,MAAM,GAKxB,IAFAi8E,GAAc,CAAC,EACfD,GAAY38E,OAAS,EAChBQ,EAAI,EAAGA,EAAIk5B,EAAGl5B,KACjB8hE,EAAQjhE,EAAEb,KACD8hE,EAAMgc,QAAUhc,EAAMp8D,OAAOo8D,EAAMgc,MAAM,GAAIhc,EAAMgc,MAAM,IAAI,GAAMA,MAAQ,EAExF,EACAC,GAAkB,SAAyBC,EAAW5nB,EAAM6nB,EAAgBC,GAC1E/B,GAAY38E,QAAUq+E,KACtBG,EAAUt4E,OAAO0wD,EAAM6nB,EAAgBC,GACvC/B,GAAY38E,QAAUq+E,IACxB,EACAM,GAAqB,SAA4Bj2E,GAC/C,IAAInH,EAAIszD,WAAWnsD,GACnB,OAAQnH,GAAW,IAANA,KAAamH,EAAQ,IAAImkB,MAAMgvD,IAAoB77E,OAAS,EAAIuB,EAAIq5E,EAAUlyE,GAASA,EAAM5I,OAAS4I,CACrH,EACAk2E,GAAe,SAAsBx0E,GACnC,OAAOA,CACT,EACAy0E,GAAe,SAAsB38E,EAAK2tB,GACxC,IAAK,IAAIzlB,KAAKylB,EACZzlB,KAAKlI,IAAQA,EAAIkI,GAAKylB,EAASzlB,IAEjC,OAAOlI,CACT,EACA48E,GAAuB,SAA8B58E,EAAK2tB,GACxD,IAAK,IAAIzlB,KAAKylB,EACZzlB,KAAKlI,GAAa,aAANkI,GAA0B,SAANA,IAAiBlI,EAAIkI,GAAKylB,EAASzlB,GAEvE,EACA+xE,GAAS,SAAgB7vC,EAAMyyC,GAC7B,IAAK,IAAI30E,KAAK20E,EACZzyC,EAAKliC,GAAK20E,EAAQ30E,GAEpB,OAAOkiC,CACT,EACA0yC,GAAa,SAASA,EAAW1yC,EAAMyyC,GACrC,IAAK,IAAI30E,KAAK20E,EACN,cAAN30E,GAA2B,gBAANA,GAA6B,cAANA,IAAsBkiC,EAAKliC,GAAK4wE,EAAU+D,EAAQ30E,IAAM40E,EAAW1yC,EAAKliC,KAAOkiC,EAAKliC,GAAK,CAAC,GAAI20E,EAAQ30E,IAAM20E,EAAQ30E,IAElK,OAAOkiC,CACT,EACA2yC,GAAiB,SAAwB/8E,EAAKg9E,GAC5C,IACE90E,EADE+0E,EAAO,CAAC,EAEZ,IAAK/0E,KAAKlI,EACRkI,KAAK80E,IAAcC,EAAK/0E,GAAKlI,EAAIkI,IAEnC,OAAO+0E,CACT,EACAC,GAAmB,SAA0B5X,GAC3C,IAAItQ,EAASsQ,EAAKtQ,QAAUshB,EAC1B5jD,EAAO4yC,EAAK6X,UAAYP,GAAuBD,GACjD,GAAI5D,EAAYzT,EAAK0W,SACnB,KAAOhnB,GACLtiC,EAAK4yC,EAAMtQ,EAAOsQ,KAAK33C,UACvBqnC,EAASA,EAAOA,QAAUA,EAAOooB,IAGrC,OAAO9X,CACT,EAsCA+X,GAAwB,SAA+BroB,EAAQpnD,EAAO0vE,EAAWC,QAC7D,IAAdD,IACFA,EAAY,eAEG,IAAbC,IACFA,EAAW,SAEb,IAAIC,EAAO5vE,EAAM6vE,MACfp6D,EAAOzV,EAAMoyD,MACXwd,EACFA,EAAKxd,MAAQ38C,EACJ2xC,EAAOsoB,KAAe1vE,IAC/BonD,EAAOsoB,GAAaj6D,GAElBA,EACFA,EAAKo6D,MAAQD,EACJxoB,EAAOuoB,KAAc3vE,IAC9BonD,EAAOuoB,GAAYC,GAErB5vE,EAAMoyD,MAAQpyD,EAAM6vE,MAAQ7vE,EAAMonD,OAAS,IAC7C,EACA0oB,GAAoB,SAA2B9vE,EAAO+vE,GACpD/vE,EAAMonD,UAAY2oB,GAA6B/vE,EAAMonD,OAAO4oB,qBAAuBhwE,EAAMonD,OAAOtlD,OAAO9B,GACvGA,EAAMiwE,KAAO,CACf,EACAC,GAAW,SAAkBxB,EAAW1uE,GACtC,GAAI0uE,KAAe1uE,GAASA,EAAMmwE,KAAOzB,EAAUhc,MAAQ1yD,EAAMowE,OAAS,GAGxE,IADA,IAAI7+E,EAAIm9E,EACDn9E,GACLA,EAAE8+E,OAAS,EACX9+E,EAAIA,EAAE61D,OAGV,OAAOsnB,CACT,EAWA4B,GAAwB,SAASA,EAAsB5B,GACrD,OAAQA,GAAaA,EAAU6B,KAAOD,EAAsB5B,EAAUtnB,OACxE,EACAopB,GAAwB,SAA+B9B,GACrD,OAAOA,EAAU+B,QAAUC,GAAgBhC,EAAUiC,OAAQjC,EAAYA,EAAU9rE,WAAa8rE,EAAUkC,SAAWlC,EAAY,CACnI,EAEAgC,GAAkB,SAAyBG,EAAOC,GAChD,IAAIC,EAAQluE,KAAK8T,MAAMk6D,GAASC,GAChC,OAAOD,GAASE,IAAUF,EAAQE,EAAQ,EAAIA,CAChD,EACAC,GAA0B,SAAiCC,EAAYjxE,GACrE,OAAQixE,EAAajxE,EAAMowE,QAAUpwE,EAAMuwE,KAAOvwE,EAAMuwE,KAAO,EAAI,EAAIvwE,EAAMqwE,OAASrwE,EAAMkxE,gBAAkBlxE,EAAMmxE,MACtH,EACAC,GAAU,SAAiB1C,GACzB,OAAOA,EAAUyB,KAAOvC,GAAOc,EAAU0B,QAAU1B,EAAUyC,MAAQtuE,KAAKq7C,IAAIwwB,EAAU6B,KAAO7B,EAAU2C,MAAQ9G,IAAa,GAChI,EACA+G,GAAiB,SAAwB5C,EAAW6C,GAElD,IAAInqB,EAASsnB,EAAUc,IAMvB,OALIpoB,GAAUA,EAAOoqB,mBAAqB9C,EAAU6B,MAClD7B,EAAU0B,OAASxC,GAAOxmB,EAAOqL,OAASic,EAAU6B,IAAM,EAAIgB,EAAY7C,EAAU6B,MAAQ7B,EAAU2B,OAAS3B,EAAUwC,gBAAkBxC,EAAUyC,OAASI,IAAc7C,EAAU6B,MACtLa,GAAQ1C,GACRtnB,EAAOipB,QAAUH,GAAS9oB,EAAQsnB,IAE7BA,CACT,EAWA+C,GAAiB,SAAwBC,EAAU1xE,GACjD,IAAI2D,EASJ,IARI3D,EAAMyyD,OAASzyD,EAAM2xE,WAAa3xE,EAAM0yD,QAE1C/uD,EAAIqtE,GAAwBU,EAASE,UAAW5xE,KAC3CA,EAAM0yD,MAAQmf,GAAO,EAAG7xE,EAAMkxE,gBAAiBvtE,GAAK3D,EAAM2wE,OAASpG,IACtEvqE,EAAM5J,OAAOuN,GAAG,IAIhBusE,GAASwB,EAAU1xE,GAAOwvE,KAAOkC,EAASC,UAAYD,EAASjf,OAASif,EAAShf,MAAQgf,EAASnB,IAAK,CAEzG,GAAImB,EAAShf,KAAOgf,EAAS9uE,WAE3B,IADAe,EAAI+tE,EACG/tE,EAAE6rE,KACP7rE,EAAEiuE,WAAa,GAAKjuE,EAAE4tE,UAAU5tE,EAAEgtE,QAElChtE,EAAIA,EAAE6rE,IAGVkC,EAASI,QAAS,IACpB,CACF,EACAC,GAAiB,SAAwBL,EAAU1xE,EAAOyS,EAAUu/D,GAOlE,OANAhyE,EAAMonD,QAAU0oB,GAAkB9vE,GAClCA,EAAMowE,OAASxC,GAAOn7D,EAAWzS,EAAMiyE,QACvCjyE,EAAMmwE,KAAOvC,GAAO5tE,EAAMowE,QAAUpwE,EAAMkxE,gBAAkBruE,KAAKq7C,IAAIl+C,EAAMkyE,cAAgB,IA5IxE,SAA4B9qB,EAAQpnD,EAAO0vE,EAAWC,EAAUwC,QACjE,IAAdzC,IACFA,EAAY,eAEG,IAAbC,IACFA,EAAW,SAEb,IACEhsE,EADEisE,EAAOxoB,EAAOuoB,GAElB,GAAIwC,EAEF,IADAxuE,EAAI3D,EAAMmyE,GACHvC,GAAQA,EAAKuC,GAAUxuE,GAC5BisE,EAAOA,EAAKC,MAGZD,GACF5vE,EAAMoyD,MAAQwd,EAAKxd,MACnBwd,EAAKxd,MAAQpyD,IAEbA,EAAMoyD,MAAQhL,EAAOsoB,GACrBtoB,EAAOsoB,GAAa1vE,GAElBA,EAAMoyD,MACRpyD,EAAMoyD,MAAMyd,MAAQ7vE,EAEpBonD,EAAOuoB,GAAY3vE,EAErBA,EAAM6vE,MAAQD,EACd5vE,EAAMonD,OAASpnD,EAAMwvE,IAAMpoB,CAE7B,CA+GEgrB,CAAmBV,EAAU1xE,EAAO,SAAU,QAAS0xE,EAASW,MAAQ,SAAW,GACnFX,EAASY,QAAUtyE,EACnBgyE,GAAcP,GAAeC,EAAU1xE,GAChC0xE,CACT,EACAa,GAAiB,SAAwB7D,EAAWlxD,GAClD,OAAQyuD,GAASuG,eAAiBjG,GAAe,gBAAiB/uD,KAAayuD,GAASuG,cAAc18E,OAAO0nB,EAASkxD,EACxH,EACA+D,GAAoB,SAA2BjgB,EAAO+e,EAAW3C,EAAOD,GAEtE,OADA+D,GAAWlgB,EAAO+e,GACb/e,EAAMmf,UAGN/C,GAASpc,EAAMvC,MAAQuC,EAAME,OAA4B,IAApBF,EAAMkF,KAAKib,OAAmBngB,EAAME,MAAQF,EAAMkF,KAAKib,OAAS9J,IAAuB+J,GAAQ/vB,OACvIgqB,GAAYzzE,KAAKo5D,GACjBA,EAAMgc,MAAQ,CAAC+C,EAAW5C,GACnB,QAHT,EAFS,CAOX,EACAkE,GAA+B,SAASA,EAA6Br6E,GACnE,IAAI4uD,EAAS5uD,EAAK4uD,OAClB,OAAOA,GAAUA,EAAOmpB,KAAOnpB,EAAOuqB,WAAavqB,EAAO0rB,QAAU1rB,EAAOwqB,UAAY,GAAKiB,EAA6BzrB,GAC3H,EA2EA2rB,GAAe,SAAsBrE,EAAW9rE,EAAUowE,EAAaC,GACrE,IAAIC,EAASxE,EAAU+B,QACrBnuE,EAAMsrE,GAAOhrE,IAAa,EAC1BuwE,EAAgBzE,EAAUiC,OAASjC,EAAUyC,MAM/C,OALAgC,IAAkBF,IAAkBvE,EAAUjc,OAASnwD,EAAMosE,EAAUhc,MACvEgc,EAAUhc,KAAOpwD,EACjBosE,EAAUyC,MAAS+B,EAAeA,EAAS,EAAI,KAAOtF,GAAOtrE,GAAO4wE,EAAS,GAAKxE,EAAUkC,QAAUsC,GAA1E5wE,EAC5B6wE,IAAkBF,EAAgB3B,GAAe5C,EAAWA,EAAUiC,OAASjC,EAAUyC,MAAQgC,GAAiBzE,EAAUtnB,QAAUgqB,GAAQ1C,GAC9IsE,GAAe9C,GAASxB,EAAUtnB,OAAQsnB,GACnCA,CACT,EACA0E,GAAyB,SAAgC1E,GACvD,OAAOA,aAAqB2E,GAAWnD,GAASxB,GAAaqE,GAAarE,EAAWA,EAAUhc,KACjG,EACA4gB,GAAgB,CACdlD,OAAQ,EACRmD,QAAS5G,IAEX6G,GAAiB,SAASA,EAAe9E,EAAWj8D,GAClD,IAIE/hB,EACAqpD,EALE05B,EAAS/E,EAAU+E,OACrBC,EAAShF,EAAU4D,SAAWgB,GAC9BK,EAAkBjF,EAAU9rE,YAAc0nE,EAAUoJ,EAAOH,SAAQ,GAAS7E,EAAUhc,KAIxF,OAAIoY,EAAUr4D,KAAcnB,MAAMmB,IAAaA,KAAYghE,GAG/C,OADV/iF,EAAI+hB,EAASthB,OAAO,KACG,MAANT,GACD,MAANA,EAAYgjF,EAAOtD,OAASsD,EAAOH,QAAQG,EAAOjD,SAAW,KAAO1rB,WAAWtyC,EAASqE,OAAO,KAAO,IAEhHpmB,EAAI+hB,EAAS1W,QAAQ,MACb,GACN0W,KAAYghE,IAAWA,EAAOhhE,GAAYkhE,GACnCF,EAAOhhE,KAEhBsnC,IAAWtnC,EAASthB,OAAOT,EAAI,GAAK+hB,EAASqE,OAAOpmB,EAAI,IACjDA,EAAI,EAAI8iF,EAAe9E,EAAWj8D,EAASqE,OAAO,EAAGpmB,EAAI,IAAMqpD,EAAS45B,EAAkB55B,GAEhF,MAAZtnC,EAAmBkhE,GAAmBlhE,CAC/C,EACAmhE,GAAqB,SAA4Bh7E,EAAOksB,GACtD,OAAOlsB,GAAmB,IAAVA,EAAcksB,EAAKlsB,GAASksB,CAC9C,EACA+sD,GAAS,SAAgBvxD,EAAK5K,EAAK9c,GACjC,OAAOA,EAAQ0nB,EAAMA,EAAM1nB,EAAQ8c,EAAMA,EAAM9c,CACjD,EACAi7E,GAAU,SAAiBj7E,GACzB,GAAqB,iBAAVA,EACT,MAAO,GAET,IAAIqoB,EAAI+qD,GAAS5xD,KAAKxhB,GACtB,OAAOqoB,EAAIroB,EAAMke,OAAOmK,EAAEpG,MAAQoG,EAAE,GAAG/wB,QAAU,EACnD,EAOA4jF,GAAS,GAAGjjF,MACZkjF,GAAe,SAAsBn7E,EAAOo7E,GAC1C,OAAOp7E,GAASsyE,EAAUtyE,IAAU,WAAYA,KAAWo7E,IAAap7E,EAAM1I,QAAU0I,EAAM1I,OAAS,KAAK0I,GAASsyE,EAAUtyE,EAAM,OAASA,EAAMkrD,UAAYlrD,IAAUwyD,CAC5K,EACA6oB,GAAW,SAAkBroC,EAAIsoC,EAAc/5D,GAI7C,YAHoB,IAAhBA,IACFA,EAAc,IAETyxB,EAAG73C,SAAQ,SAAU6E,GAC1B,IAAIu7E,EACJ,OAAOrJ,EAAUlyE,KAAWs7E,GAAgBH,GAAan7E,EAAO,IAAMu7E,EAAeh6D,GAAa/gB,KAAK3F,MAAM0gF,EAAc5xD,GAAQ3pB,IAAUuhB,EAAY/gB,KAAKR,EAChK,KAAMuhB,CACR,EAEAoI,GAAU,SAAiB3pB,EAAOs7E,GAChC,OAAOpJ,EAAUlyE,IAAWs7E,IAAiBvL,GAAiByL,KAA0D3I,GAAS7yE,GAASq7E,GAASr7E,EAAOs7E,GAAgBH,GAAan7E,GAASk7E,GAAOrhF,KAAKmG,EAAO,GAAKA,EAAQ,CAACA,GAAS,GAAjKk7E,GAAOrhF,KAAK44D,EAAKvZ,iBAAiBl5C,GAAQ,EACrH,EACAy7E,GAAU,SAAiB9iF,GACzB,OAAOA,EAAEwnB,MAAK,WACZ,MAAO,GAAKlW,KAAKC,QACnB,GACF,EAGAwxE,GAAa,SAAoBrzD,GAC/B,GAAI8pD,EAAY9pD,GACd,OAAOA,EAET,IAAIy2C,EAAOwT,EAAUjqD,GAAKA,EAAI,CAC1BszD,KAAMtzD,GAGR1E,EAAOi4D,GAAW9c,EAAKn7C,MACvBzD,EAAO4+C,EAAK5+C,MAAQ,EACpB0jB,EAAOuoB,WAAW2S,EAAKl7B,OAAS,EAChCvZ,EAAQ,CAAC,EACTwxD,EAAY37D,EAAO,GAAKA,EAAO,EAC/B47D,EAASpjE,MAAMwH,IAAS27D,EACxBE,EAAOjd,EAAKid,KACZC,EAAS97D,EACT+7D,EAAS/7D,EAWX,OAVIgyD,EAAUhyD,GACZ87D,EAASC,EAAS,CAChBviB,OAAQ,GACRwiB,MAAO,GACPhlB,IAAK,GACLh3C,IAAS,GACD27D,GAAaC,IACvBE,EAAS97D,EAAK,GACd+7D,EAAS/7D,EAAK,IAET,SAAUpoB,EAAG4C,EAAQ/B,GAC1B,IAEEwjF,EACAC,EACAjlF,EACA2U,EACA3N,EACA0gC,EACA/hB,EACA4K,EACA20D,EAVErrD,GAAKr4B,GAAKmmE,GAAMxnE,OAClBglF,EAAYjyD,EAAM2G,GAUpB,IAAKsrD,EAAW,CAEd,KADAD,EAAuB,SAAdvd,EAAKhrD,KAAkB,GAAKgrD,EAAKhrD,MAAQ,CAAC,EAAG49D,IAAU,IACnD,CAEX,IADA50D,GAAO40D,EACA50D,GAAOA,EAAMnkB,EAAE0jF,KAAU35B,wBAAwB3oC,OAASsiE,EAASrrD,IAC1EqrD,GACF,CAMA,IALAC,EAAYjyD,EAAM2G,GAAK,GACvBmrD,EAAUL,EAAS7xE,KAAKyd,IAAI20D,EAAQrrD,GAAKgrD,EAAS,GAAK97D,EAAOm8D,EAC9DD,EAAUN,EAAS9qD,EAAIirD,EAASI,EAAS,GAAKn8D,EAAOm8D,EAAS,EAC9Dv/D,EAAM,EACN4K,EAAMgqD,EACD7yC,EAAI,EAAGA,EAAI7N,EAAG6N,IACjB1nC,EAAI0nC,EAAIw9C,EAASF,EACjBrwE,EAAIswE,GAAWv9C,EAAIw9C,EAAS,GAC5BC,EAAUz9C,GAAK1gC,EAAK49E,EAA8B9xE,KAAKq7C,IAAa,MAATy2B,EAAejwE,EAAI3U,GAAnD46E,EAAM56E,EAAIA,EAAI2U,EAAIA,GAC7C3N,EAAI2e,IAAQA,EAAM3e,GAClBA,EAAIupB,IAAQA,EAAMvpB,GAEX,WAAT+hB,GAAqBu7D,GAAQa,GAC7BA,EAAUx/D,IAAMA,EAAM4K,EACtB40D,EAAU50D,IAAMA,EAChB40D,EAAUj0D,EAAI2I,GAAKm7B,WAAW2S,EAAK7G,SAAW9L,WAAW2S,EAAK6c,OAASU,EAASrrD,EAAIA,EAAI,EAAK+qD,EAA+C,MAATA,EAAe/qD,EAAIqrD,EAASA,EAA3DpyE,KAAK6S,IAAIu/D,EAAQrrD,EAAIqrD,KAAiD,IAAe,UAATn8D,GAAoB,EAAI,GACxMo8D,EAAUv6E,EAAIivB,EAAI,EAAI4S,EAAO5S,EAAI4S,EACjC04C,EAAUnpD,EAAI8nD,GAAQnc,EAAK7G,QAAU6G,EAAK6c,OAAS,EAEnDh4D,EAAOA,GAAQqN,EAAI,EAAIurD,GAAY54D,GAAQA,CAC7C,CAEA,OADAqN,GAAKsrD,EAAUxkF,GAAKwkF,EAAU50D,KAAO40D,EAAUx/D,KAAO,EAC/Ck4D,GAAOsH,EAAUv6E,GAAK4hB,EAAOA,EAAKqN,GAAKA,GAAKsrD,EAAUj0D,GAAKi0D,EAAUnpD,CAC9E,CACF,EACAqpD,GAAiB,SAAwBn0D,GAEvC,IAAI3mB,EAAI2mB,EAAI,EAAIpe,KAAKwyE,IAAI,IAAKp0D,EAAI,IAAI/wB,OAAS,GAAK,EAEpD,OAAO,SAAUytB,GACf,IAAIlsB,EAAIoR,KAAKgT,MAAMkvC,WAAWpnC,GAAOsD,GAAKA,EAAI3mB,EAC9C,OAAQ7I,EAAIA,EAAI,GAAK6I,GAAK0wE,EAAUrtD,GAAO,EAAIk2D,GAAQl2D,GACzD,CACF,EACA23D,GAAO,SAAcC,EAAQ38E,GAC3B,IACE48E,EACAC,EAFEhmF,EAAUg8E,GAAS8J,GAcvB,OAXK9lF,GAAWy7E,EAAUqK,KACxBC,EAAS/lF,EAAU8lF,EAAOC,QAAUlL,EAChCiL,EAAOlU,QACTkU,EAAShzD,GAAQgzD,EAAOlU,SACpBoU,GAAQzK,EAAUuK,EAAO,OAC3BC,GAAUA,IAGZD,EAASH,GAAeG,EAAOG,YAG5B9B,GAAmBh7E,EAAQnJ,EAAmCs7E,EAAYwK,GAAU,SAAU53D,GAEnG,OADA83D,EAAOF,EAAO53D,GACP9a,KAAKq7C,IAAIu3B,EAAO93D,IAAQ63D,EAASC,EAAO93D,CACjD,EAAI,SAAUA,GAQZ,IAPA,IAKEg4D,EACAC,EANE7lF,EAAIg1D,WAAW0wB,EAAO93D,EAAI5tB,EAAI4tB,GAChCjZ,EAAIqgD,WAAW0wB,EAAO93D,EAAIjZ,EAAI,GAC9B4b,EAAMgqD,EACNuL,EAAU,EACVnlF,EAAI6kF,EAAOrlF,OAGNQ,MAIHilF,EAHEF,GACFE,EAAKJ,EAAO7kF,GAAGX,EAAIA,GAET4lF,GADVC,EAAKL,EAAO7kF,GAAGgU,EAAIA,GACCkxE,EAEf/yE,KAAKq7C,IAAIq3B,EAAO7kF,GAAKX,IAEnBuwB,IACPA,EAAMq1D,EACNE,EAAUnlF,GAId,OADAmlF,GAAWL,GAAUl1D,GAAOk1D,EAASD,EAAOM,GAAWl4D,EAChD83D,GAAQI,IAAYl4D,GAAOqtD,EAAUrtD,GAAOk4D,EAAUA,EAAUhC,GAAQl2D,EACjF,EA1B4Cy3D,GAAeG,GA2B7D,EACAzyE,GAAS,SAAgBwd,EAAK5K,EAAKogE,EAAmBC,GACpD,OAAOnC,GAAmBnI,GAASnrD,IAAQ5K,GAA4B,IAAtBogE,KAAgCA,EAAoB,IAAMC,GAAgB,WACzH,OAAOtK,GAASnrD,GAAOA,KAAOzd,KAAKC,SAAWwd,EAAIpwB,UAAY4lF,EAAoBA,GAAqB,QAAUC,EAAiBD,EAAoB,EAAIjzE,KAAKwyE,IAAI,IAAKS,EAAoB,IAAI5lF,OAAS,GAAK,IAAM2S,KAAK8T,MAAM9T,KAAKgT,OAAOyK,EAAMw1D,EAAoB,EAAIjzE,KAAKC,UAAY4S,EAAM4K,EAA0B,IAApBw1D,IAA4BA,GAAqBA,EAAoBC,GAAkBA,CAC/X,GACF,EAmBAC,GAAa,SAAoBzkF,EAAGoxE,EAAS/pE,GAC3C,OAAOg7E,GAAmBh7E,GAAO,SAAUiiB,GACzC,OAAOtpB,IAAIoxE,EAAQ9nD,GACrB,GACF,EAgBAo7D,GAAiB,SAAwBr9E,GAQvC,IANA,IAEElI,EACAwlF,EACApmB,EACArgE,EALEmgF,EAAO,EACTx4E,EAAI,KAKG1G,EAAIkI,EAAMmD,QAAQ,UAAW6zE,KACpC9f,EAAMl3D,EAAMmD,QAAQ,IAAKrL,GACzBjB,EAAkC,MAAxBmJ,EAAMzH,OAAOT,EAAI,GAC3BwlF,EAAOt9E,EAAMke,OAAOpmB,EAAI,EAAGo/D,EAAMp/D,EAAI,GAAGqsB,MAAMttB,EAAUs8E,GAAqBL,IAC7Et0E,GAAKwB,EAAMke,OAAO84D,EAAMl/E,EAAIk/E,GAAQ9sE,GAAOrT,EAAUymF,GAAQA,EAAK,GAAIzmF,EAAU,GAAKymF,EAAK,IAAKA,EAAK,IAAM,MAC1GtG,EAAO9f,EAAM,EAEf,OAAO14D,EAAIwB,EAAMke,OAAO84D,EAAMh3E,EAAM1I,OAAS0/E,EAC/C,EACAuG,GAAW,SAAkBC,EAAOC,EAAOC,EAAQC,EAAQ39E,GACzD,IAAI49E,EAAUH,EAAQD,EACpBK,EAAWF,EAASD,EACtB,OAAO1C,GAAmBh7E,GAAO,SAAUA,GACzC,OAAO09E,IAAW19E,EAAQw9E,GAASI,EAAUC,GAAY,EAC3D,GACF,EAiDAC,GAAuB,SAA8BhF,EAAUiF,EAAUC,GAEvE,IAEEt8E,EACAu8E,EACAv5B,EAJEm2B,EAAS/B,EAAS+B,OACpBnzD,EAAMgqD,EAIR,IAAKhwE,KAAKm5E,GACRoD,EAAWpD,EAAOn5E,GAAKq8E,GACR,KAAQC,GAAYC,GAAYv2D,GAAOu2D,EAAWh0E,KAAKq7C,IAAI24B,MACxEv5B,EAAQhjD,EACRgmB,EAAMu2D,GAGV,OAAOv5B,CACT,EACA0J,GAAY,SAAmB0nB,EAAW/4E,EAAMmhF,GAC9C,IAEEp2E,EACA0rE,EAHEnrD,EAAIytD,EAAUhX,KAChBz4D,EAAWgiB,EAAEtrB,GAGf,GAAKsJ,EAOL,OAJAyB,EAASugB,EAAEtrB,EAAO,UAClBy2E,EAAQnrD,EAAE81D,eAAiBrI,EAC3BoI,GAAoBjK,GAAY38E,QAAUq+E,KAEnC7tE,EAASzB,EAASxL,MAAM24E,EAAO1rE,GAAUzB,EAASxM,KAAK25E,EAChE,EACA4K,GAAa,SAAoBtI,GAI/B,OAHAoB,GAAkBpB,GAClBA,EAAUuI,eAAiBvI,EAAUuI,cAAcC,MAAK,GACxDxI,EAAUyI,WAAa,GAAKnwB,GAAU0nB,EAAW,eAC1CA,CACT,EAkDA0I,GAAO,IACPC,GAAe,CACbC,KAAM,CAAC,EAAGF,GAAMA,IAChBG,KAAM,CAAC,EAAGH,GAAM,GAChBI,OAAQ,CAAC,IAAK,IAAK,KACnBzuC,MAAO,CAAC,EAAG,EAAG,GACd0uC,OAAQ,CAAC,IAAK,EAAG,GACjBC,KAAM,CAAC,EAAG,IAAK,KACfzW,KAAM,CAAC,EAAG,EAAGmW,IACbO,KAAM,CAAC,EAAG,EAAG,KACbC,MAAO,CAACR,GAAMA,GAAMA,IACpBS,MAAO,CAAC,IAAK,IAAK,GAClBC,OAAQ,CAACV,GAAMA,GAAM,GACrBW,OAAQ,CAACX,GAAM,IAAK,GACpBY,KAAM,CAAC,IAAK,IAAK,KACjBC,OAAQ,CAAC,IAAK,EAAG,KACjBjX,MAAO,CAAC,EAAG,IAAK,GAChBH,IAAK,CAACuW,GAAM,EAAG,GACfc,KAAM,CAACd,GAAM,IAAK,KAClBe,KAAM,CAAC,EAAGf,GAAMA,IAChBgB,YAAa,CAAChB,GAAMA,GAAMA,GAAM,IAElCiB,GAAO,SAActrD,EAAGurD,EAAIC,GAE1B,OAAY,GADZxrD,EAAIA,EAAI,EAAIA,EAAI,EAAIA,EAAI,EAAIA,EAAI,EAAIA,GACpB,EAAIurD,GAAMC,EAAKD,GAAMvrD,EAAI,EAAIA,EAAI,GAAKwrD,EAAS,EAAJxrD,EAAQ,EAAIurD,GAAMC,EAAKD,IAAO,EAAI,EAAIvrD,GAAK,EAAIurD,GAAMlB,GAAO,GAAK,CAC9H,EACAoB,GAAa,SAAoBv3D,EAAGw3D,EAAOC,GACzC,IACEpnF,EACAyjB,EACApa,EACAoyB,EACA31B,EACAwyB,EACAlU,EACA4K,EACAvpB,EACA4hF,EAVEpnF,EAAK0vB,EAAyB+pD,EAAU/pD,GAAK,CAACA,GAAK,GAAIA,GAAK,EAAIm2D,GAAMn2D,EAAIm2D,IAAQ,EAAzEC,GAAatuC,MAW1B,IAAKx3C,EAAG,CAKN,GAJqB,MAAjB0vB,EAAEnK,QAAQ,KAEZmK,EAAIA,EAAEnK,OAAO,EAAGmK,EAAE/wB,OAAS,IAEzBmnF,GAAap2D,GACf1vB,EAAI8lF,GAAap2D,QACZ,GAAoB,MAAhBA,EAAE9vB,OAAO,GAAY,CAQ9B,GAPI8vB,EAAE/wB,OAAS,IAEboB,EAAI2vB,EAAE9vB,OAAO,GACb4jB,EAAIkM,EAAE9vB,OAAO,GACbwJ,EAAIsmB,EAAE9vB,OAAO,GACb8vB,EAAI,IAAM3vB,EAAIA,EAAIyjB,EAAIA,EAAIpa,EAAIA,GAAkB,IAAbsmB,EAAE/wB,OAAe+wB,EAAE9vB,OAAO,GAAK8vB,EAAE9vB,OAAO,GAAK,KAEjE,IAAb8vB,EAAE/wB,OAGJ,MAAO,EADPqB,EAAI8zC,SAASpkB,EAAEnK,OAAO,EAAG,GAAI,MAChB,GAAIvlB,GAAK,EAAI6lF,GAAM7lF,EAAI6lF,GAAM/xC,SAASpkB,EAAEnK,OAAO,GAAI,IAAM,KAGxEvlB,EAAI,EADJ0vB,EAAIokB,SAASpkB,EAAEnK,OAAO,GAAI,MAChB,GAAImK,GAAK,EAAIm2D,GAAMn2D,EAAIm2D,GACnC,MAAO,GAAuB,QAAnBn2D,EAAEnK,OAAO,EAAG,GAErB,GADAvlB,EAAIonF,EAAS13D,EAAElE,MAAM2uD,IAChB+M,GAWE,IAAKx3D,EAAEllB,QAAQ,KAIpB,OAFAxK,EAAI0vB,EAAElE,MAAM4uD,IACZ+M,GAAcnnF,EAAErB,OAAS,IAAMqB,EAAE,GAAK,GAC/BA,OAdPw7B,GAAKx7B,EAAE,GAAK,IAAM,IAClB6F,GAAK7F,EAAE,GAAK,IAGZD,EAAQ,GAFRs4B,GAAKr4B,EAAE,GAAK,MACZwjB,EAAI6U,GAAK,GAAKA,GAAKxyB,EAAI,GAAKwyB,EAAIxyB,EAAIwyB,EAAIxyB,GAExC7F,EAAErB,OAAS,IAAMqB,EAAE,IAAM,GAEzBA,EAAE,GAAK8mF,GAAKtrD,EAAI,EAAI,EAAGz7B,EAAGyjB,GAC1BxjB,EAAE,GAAK8mF,GAAKtrD,EAAGz7B,EAAGyjB,GAClBxjB,EAAE,GAAK8mF,GAAKtrD,EAAI,EAAI,EAAGz7B,EAAGyjB,QAQ5BxjB,EAAI0vB,EAAElE,MAAM2uD,KAAkB2L,GAAae,YAE7C7mF,EAAIA,EAAEzB,IAAIyhB,OACZ,CAqBA,OApBIknE,IAAUE,IACZrnF,EAAIC,EAAE,GAAK6lF,GACXriE,EAAIxjB,EAAE,GAAK6lF,GACXz8E,EAAIpJ,EAAE,GAAK6lF,GAGXxtD,IAFAlU,EAAM7S,KAAK6S,IAAIpkB,EAAGyjB,EAAGpa,KACrB2lB,EAAMzd,KAAKyd,IAAIhvB,EAAGyjB,EAAGpa,KACH,EACd+a,IAAQ4K,EACVyM,EAAI31B,EAAI,GAERL,EAAI2e,EAAM4K,EACVlpB,EAAIwyB,EAAI,GAAM7yB,GAAK,EAAI2e,EAAM4K,GAAOvpB,GAAK2e,EAAM4K,GAC/CyM,EAAIrX,IAAQpkB,GAAKyjB,EAAIpa,GAAK5D,GAAKge,EAAIpa,EAAI,EAAI,GAAK+a,IAAQX,GAAKpa,EAAIrJ,GAAKyF,EAAI,GAAKzF,EAAIyjB,GAAKhe,EAAI,EAC5Fg2B,GAAK,IAEPx7B,EAAE,MAAQw7B,EAAI,IACdx7B,EAAE,MAAY,IAAJ6F,EAAU,IACpB7F,EAAE,MAAY,IAAJq4B,EAAU,KAEtB8uD,GAAcnnF,EAAErB,OAAS,IAAMqB,EAAE,GAAK,GAC/BA,CACT,EACAqnF,GAAkB,SAAyB33D,GAEzC,IAAIogD,EAAS,GACXrtE,EAAI,GACJtD,GAAK,EAOP,OANAuwB,EAAEntB,MAAM+kF,IAAW9kF,SAAQ,SAAUktB,GACnC,IAAI1vB,EAAI0vB,EAAElE,MAAM6uD,KAAoB,GACpCvK,EAAOjoE,KAAK3F,MAAM4tE,EAAQ9vE,GAC1ByC,EAAEoF,KAAK1I,GAAKa,EAAErB,OAAS,EACzB,IACAmxE,EAAOrtE,EAAIA,EACJqtE,CACT,EACAyX,GAAgB,SAAuB1hF,EAAGqhF,EAAOM,GAC/C,IAIE/kF,EACAglF,EACAjiF,EACA6yB,EAPEroB,EAAS,GACX03E,GAAU7hF,EAAImK,GAAQwb,MAAM87D,IAC5BljF,EAAO8iF,EAAQ,QAAU,QACzB/nF,EAAI,EAKN,IAAKuoF,EACH,OAAO7hF,EAKT,GAHA6hF,EAASA,EAAOnpF,KAAI,SAAU2hE,GAC5B,OAAQA,EAAQ+mB,GAAW/mB,EAAOgnB,EAAO,KAAO9iF,GAAQ8iF,EAAQhnB,EAAM,GAAK,IAAMA,EAAM,GAAK,KAAOA,EAAM,GAAK,KAAOA,EAAM,GAAKA,EAAMthE,KAAK,MAAQ,GACrJ,IACI4oF,IACFhiF,EAAI6hF,GAAgBxhF,IACpBpD,EAAI+kF,EAAe/kF,GACb7D,KAAKoR,KAAYxK,EAAE/C,EAAE7D,KAAKoR,IAG9B,IADAqoB,GADAovD,EAAQ5hF,EAAErG,QAAQ8nF,GAAW,KAAK/kF,MAAM83E,KAC9B17E,OAAS,EACZQ,EAAIk5B,EAAGl5B,IACZ6Q,GAAUy3E,EAAMtoF,KAAOsD,EAAE+H,QAAQrL,GAAKuoF,EAAOz5D,SAAW7pB,EAAO,YAAcoB,EAAE7G,OAAS6G,EAAIkiF,EAAO/oF,OAAS+oF,EAASF,GAAgBv5D,SAI3I,IAAKw5D,EAGH,IADApvD,GADAovD,EAAQ5hF,EAAEtD,MAAM+kF,KACN3oF,OAAS,EACZQ,EAAIk5B,EAAGl5B,IACZ6Q,GAAUy3E,EAAMtoF,GAAKuoF,EAAOvoF,GAGhC,OAAO6Q,EAASy3E,EAAMpvD,EACxB,EACAivD,GAAY,WACV,IAEEv+E,EAFElD,EAAI,yEAGR,IAAKkD,KAAK+8E,GACRjgF,GAAK,IAAMkD,EAAI,MAEjB,OAAO,IAAIuH,OAAOzK,EAAI,IAAK,KAC7B,CARY,GASZ8hF,GAAU,YACVC,GAAqB,SAA4B5nF,GAC/C,IACEknF,EADEW,EAAW7nF,EAAEpB,KAAK,KAGtB,GADA0oF,GAAU3mB,UAAY,EAClB2mB,GAAUjoF,KAAKwoF,GAKjB,OAJAX,EAAQS,GAAQtoF,KAAKwoF,GACrB7nF,EAAE,GAAKunF,GAAcvnF,EAAE,GAAIknF,GAC3BlnF,EAAE,GAAKunF,GAAcvnF,EAAE,GAAIknF,EAAOG,GAAgBrnF,EAAE,MAE7C,CAEX,EAOAqhF,IACMxJ,EAAW7kE,KAAKC,IAClB6kE,EAAgB,IAChBC,EAAe,GACfC,EAAaH,IACbI,EAAcD,EAEdG,EADAD,EAAO,IAAO,IASdG,EAAQ,SAASA,EAAM3oD,GACrB,IAEEo4D,EACAC,EACAxyB,EACAjE,EALE02B,EAAUnQ,IAAaI,EACzBgQ,GAAe,IAANv4D,EAkBX,GAbAs4D,EAAUlQ,IAAkBE,GAAcgQ,EAAUjQ,KAGpD+P,GADAvyB,GADA0iB,GAAe+P,GACMhQ,GACJG,GACH,GAAK8P,KACjB32B,IAAUqmB,EAAMrmB,MAChBsmB,EAASriB,EAAoB,IAAboiB,EAAMpiB,KACtBoiB,EAAMpiB,KAAOA,GAAc,IAC3B4iB,GAAa2P,GAAWA,GAAW5P,EAAO,EAAIA,EAAO4P,GACrDC,EAAW,GAEbE,IAAWxQ,EAAMC,EAAKW,IAElB0P,EACF,IAAK7mC,EAAK,EAAGA,EAAKk3B,EAAWz5E,OAAQuiD,IAEnCk3B,EAAWl3B,GAAIqU,EAAMqiB,EAAQtmB,EAAO5hC,EAG1C,EACFioD,EAAQ,CACNpiB,KAAM,EACNjE,MAAO,EACPpgD,KAAM,WACJmnE,GAAM,EACR,EACA6P,WAAY,SAAoBC,GAC9B,OAAOvQ,GAAU,KAAQuQ,GAAO,IAClC,EACAC,KAAM,WACA/Q,KACGD,GAAgByC,MACnBhgB,EAAOud,EAAexmE,OACtBkpD,EAAOD,EAAK3vD,UAAY,CAAC,EACzBwwE,GAASK,KAAOA,IACflhB,EAAKwuB,eAAiBxuB,EAAKwuB,aAAe,KAAKxgF,KAAKkzE,GAAKn8D,SAC1Dg8D,GAASD,IAAiB9gB,EAAKyuB,mBAAqBzuB,EAAKkhB,MAAQlhB,GAAQ,CAAC,GAC1Eje,EAAOie,EAAKr1C,uBAEdizD,GAAOE,EAAM4Q,QACb7Q,EAAO97B,GAAQ,SAAUvyC,GACvB,OAAO6E,WAAW7E,EAAG8uE,EAAyB,IAAbR,EAAMpiB,KAAc,EAAI,EAC3D,EACAiiB,EAAgB,EAChBa,EAAM,GAEV,EACAkQ,MAAO,YACJ3sC,EAAOie,EAAKp1C,qBAAuBkb,cAAc83C,GAClDD,EAAgB,EAChBE,EAAO0D,EACT,EACAoN,aAAc,SAAsBt1B,EAAWu1B,GAC7C3Q,EAAgB5kB,GAAa,IAE7B6kB,EAAezmE,KAAKyd,IAAI05D,EAAa3Q,EAAe,EACtD,EACAqQ,IAAK,SAAaO,GAChBxQ,EAAO,KAAQwQ,GAAQ,KACvBvQ,EAAyB,IAAbR,EAAMpiB,KAAc2iB,CAClC,EACA39D,IAAK,SAAa7M,GAChB0qE,EAAW5tE,QAAQkD,GAAY,GAAK0qE,EAAWvwE,KAAK6F,GACpDm1E,IACF,EACAtyE,OAAQ,SAAgB7C,GACtB,IAAIvO,IACFA,EAAIi5E,EAAW5tE,QAAQkD,KAAc0qE,EAAWh1D,OAAOjkB,EAAG,IAAM+hD,GAAM/hD,GAAK+hD,GAC/E,EACAk3B,WAnFAA,EAAa,KAuFjByK,GAAQ,WACN,OAAQrL,GAAiB6J,GAAQ+G,MACnC,EAQAO,GAAW,CAAC,EACZC,GAAiB,sBACjBC,GAAa,QACbC,GAAuB,SAA8BzhF,GAUnD,IARA,IAKEiiB,EACAglC,EACAy6B,EAPEloF,EAAM,CAAC,EACT0B,EAAQ8E,EAAMke,OAAO,EAAGle,EAAM1I,OAAS,GAAG4D,MAAM,KAChDxB,EAAMwB,EAAM,GACZpD,EAAI,EACJk5B,EAAI91B,EAAM5D,OAILQ,EAAIk5B,EAAGl5B,IACZmvD,EAAM/rD,EAAMpD,GACZmqB,EAAQnqB,IAAMk5B,EAAI,EAAIi2B,EAAIx/B,YAAY,KAAOw/B,EAAI3vD,OACjDoqF,EAAYz6B,EAAI/oC,OAAO,EAAG+D,GAC1BzoB,EAAIE,GAAOgf,MAAMgpE,GAAaA,EAAUvpF,QAAQqpF,GAAY,IAAIpqF,QAAUsqF,EAC1EhoF,EAAMutD,EAAI/oC,OAAO+D,EAAQ,GAAG7qB,OAE9B,OAAOoC,CACT,EAaA+iF,GAAc,SAAqB54D,GACjC,OAAO,SAAUjiB,GACf,OAAO,EAAIiiB,EAAK,EAAIjiB,EACtB,CACF,EAEAigF,GAAqB,SAASA,EAAmB7I,EAAU8I,GAGzD,IAFA,IACEj+D,EADEvc,EAAQ0xE,EAAS+I,OAEdz6E,GACDA,aAAiBqzE,GACnBkH,EAAmBv6E,EAAOw6E,IACjBx6E,EAAM03D,KAAKgjB,UAAc16E,EAAM26E,OAAU36E,EAAMywE,SAAYzwE,EAAM26E,QAAUH,IAChFx6E,EAAM0xE,SACR6I,EAAmBv6E,EAAM0xE,SAAU8I,IAEnCj+D,EAAOvc,EAAM46E,MACb56E,EAAM46E,MAAQ56E,EAAM66E,OACpB76E,EAAM66E,OAASt+D,EACfvc,EAAM26E,MAAQH,IAGlBx6E,EAAQA,EAAMoyD,KAElB,EACAoiB,GAAa,SAAoBj4D,EAAMu+D,GACrC,OAAQv+D,IAAsBwuD,EAAYxuD,GAAQA,EAAO29D,GAAS39D,IAhC5C,SAA+BplB,GAErD,IARiDyB,EAC7CqiE,EACF8f,EACAC,EAKElnF,GAASqD,EAAO,IAAIrD,MAAM,KAC5ByoB,EAAO29D,GAASpmF,EAAM,IACxB,OAAOyoB,GAAQzoB,EAAM5D,OAAS,GAAKqsB,EAAKlS,OAASkS,EAAKlS,OAAO5W,MAAM,MAAO0D,EAAK4E,QAAQ,KAAO,CAACs+E,GAAqBvmF,EAAM,MAVzE8E,EAUoGzB,EATjJ8jE,EAAOriE,EAAMmD,QAAQ,KAAO,EAC9Bg/E,EAAQniF,EAAMmD,QAAQ,KACtBi/E,EAASpiF,EAAMmD,QAAQ,IAAKk/D,GACvBriE,EAAMwrB,UAAU62C,GAAO+f,GAAUA,EAASD,EAAQniF,EAAMmD,QAAQ,IAAKg/E,EAAQ,GAAKA,IAMkEjnF,MAAM,KAAKhE,IAAI++E,KAAuBqL,GAASe,KAAOd,GAAevpF,KAAKuG,GAAQ+iF,GAASe,IAAI,GAAI9jF,GAAQolB,CACxQ,CA2B6E2+D,CAAsB3+D,KAAlFu+D,CACjB,EACAK,GAAc,SAAqBxN,EAAOyN,EAAQra,EAAStkD,QACzC,IAAZskD,IACFA,EAAU,SAAiBzmE,GACzB,OAAO,EAAI8gF,EAAO,EAAI9gF,EACxB,QAEgB,IAAdmiB,IACFA,EAAY,SAAmBniB,GAC7B,OAAOA,EAAI,GAAK8gF,EAAW,EAAJ9gF,GAAS,EAAI,EAAI8gF,EAAiB,GAAT,EAAI9gF,IAAU,CAChE,GAEF,IAKE+gF,EALE9+D,EAAO,CACP6+D,OAAQA,EACRra,QAASA,EACTtkD,UAAWA,GAUf,OAPAixD,GAAaC,GAAO,SAAUx2E,GAG5B,IAAK,IAAImD,KAFT4/E,GAAS/iF,GAAQ80E,GAAS90E,GAAQolB,EAClC29D,GAASmB,EAAgBlkF,EAAK9G,eAAiB0wE,EACjCxkD,EACZ29D,GAASmB,GAAuB,WAAN/gF,EAAiB,MAAc,YAANA,EAAkB,OAAS,WAAa4/E,GAAS/iF,EAAO,IAAMmD,GAAKiiB,EAAKjiB,EAE/H,IACOiiB,CACT,EACA++D,GAAoB,SAA2Bva,GAC7C,OAAO,SAAUzmE,GACf,OAAOA,EAAI,IAAM,EAAIymE,EAAQ,EAAQ,EAAJzmE,IAAU,EAAI,GAAKymE,EAAmB,GAAVzmE,EAAI,KAAW,CAC9E,CACF,EACAihF,GAAiB,SAASA,EAAe5lF,EAAM6lF,EAAWC,GACxD,IAAIxqF,EAAKuqF,GAAa,EAAIA,EAAY,EAEpCE,GAAMD,IAAW9lF,EAAO,GAAK,OAAS6lF,EAAY,EAAIA,EAAY,GAClEG,EAAKD,EAAKlR,GAAQ3nE,KAAK+4E,KAAK,EAAI3qF,IAAO,GACvC8vE,EAAU,SAAiBzmE,GACzB,OAAa,IAANA,EAAU,EAAIrJ,EAAK4R,KAAKwyE,IAAI,GAAI,GAAK/6E,GAAKuwE,GAAMvwE,EAAIqhF,GAAMD,GAAM,CACzE,EACAn/D,EAAgB,QAAT5mB,EAAiBorE,EAAmB,OAATprE,EAAgB,SAAU2E,GAC1D,OAAO,EAAIymE,EAAQ,EAAIzmE,EACzB,EAAIghF,GAAkBva,GAMxB,OALA2a,EAAKlR,EAAOkR,EAEZn/D,EAAKlS,OAAS,SAAUmxE,EAAWC,GACjC,OAAOF,EAAe5lF,EAAM6lF,EAAWC,EACzC,EACOl/D,CACT,EACAs/D,GAAc,SAASA,EAAYlmF,EAAMmmF,QACrB,IAAdA,IACFA,EAAY,SAEd,IAAI/a,EAAU,SAAiBzmE,GAC3B,OAAOA,IAAMA,EAAIA,IAAMwhF,EAAY,GAAKxhF,EAAIwhF,GAAa,EAAI,CAC/D,EACAv/D,EAAgB,QAAT5mB,EAAiBorE,EAAmB,OAATprE,EAAgB,SAAU2E,GAC1D,OAAO,EAAIymE,EAAQ,EAAIzmE,EACzB,EAAIghF,GAAkBva,GAIxB,OAHAxkD,EAAKlS,OAAS,SAAUyxE,GACtB,OAAOD,EAAYlmF,EAAMmmF,EAC3B,EACOv/D,CACT,EAcFmxD,GAAa,wCAAwC,SAAUv2E,EAAMzG,GACnE,IAAIqrF,EAAQrrF,EAAI,EAAIA,EAAI,EAAIA,EAC5ByqF,GAAYhkF,EAAO,UAAY4kF,EAAQ,GAAIrrF,EAAI,SAAU4J,GACvD,OAAOuI,KAAKwyE,IAAI/6E,EAAGyhF,EACrB,EAAI,SAAUzhF,GACZ,OAAOA,CACT,GAAG,SAAUA,GACX,OAAO,EAAIuI,KAAKwyE,IAAI,EAAI/6E,EAAGyhF,EAC7B,IAAG,SAAUzhF,GACX,OAAOA,EAAI,GAAKuI,KAAKwyE,IAAQ,EAAJ/6E,EAAOyhF,GAAS,EAAI,EAAIl5E,KAAKwyE,IAAc,GAAT,EAAI/6E,GAAQyhF,GAAS,CAClF,GACF,IACA7B,GAAS8B,OAAOC,SAAW/B,GAASgC,KAAOhC,GAAS8B,OAAOZ,OAC3DD,GAAY,UAAWI,GAAe,MAAOA,GAAe,OAAQA,MACzD9pF,EAUR,OARCq4E,EAAK,GADHD,EAAK,GADG71E,EAUH,OAPP+1E,EAAK,IAAMF,EAIbsR,GAAY,UAAU,SAAU7gF,GAC9B,OAAO,EAAIymE,EAAQ,EAAIzmE,EACzB,GALEymE,EAAU,SAAiBzmE,GACzB,OAAOA,EAAIuvE,EAAKp4E,EAAI6I,EAAIA,EAAIA,EAAIwvE,EAAKr4E,EAAIoR,KAAKwyE,IAAI/6E,EAAI,IAAMtG,EAAG,GAAK,IAAMsG,EAAIyvE,EAAKt4E,GAAK6I,GAAK,KAAOtG,GAAKsG,EAAI,MAAQ7I,EAAIoR,KAAKwyE,IAAI/6E,EAAI,MAAQtG,EAAG,GAAK,OACxJ,GAKJmnF,GAAY,QAAQ,SAAU7gF,GAC5B,OAAOA,EAAIuI,KAAKwyE,IAAI,EAAG,IAAM/6E,EAAI,IAAM,CACzC,IACA6gF,GAAY,QAAQ,SAAU7gF,GAC5B,QAASqwE,EAAM,EAAIrwE,EAAIA,GAAK,EAC9B,IACA6gF,GAAY,QAAQ,SAAU7gF,GAC5B,OAAa,IAANA,EAAU,EAA0B,EAArBswE,EAAKtwE,EAAImwE,EACjC,IACA0Q,GAAY,OAAQU,GAAY,MAAOA,GAAY,OAAQA,MAC3D3B,GAASiC,YAAcjC,GAASkC,MAAQnQ,GAASkQ,YAAc,CAC7D9xE,OAAQ,SAAgB+xE,EAAOC,QACf,IAAVD,IACFA,EAAQ,GAEV,IAAInrF,EAAK,EAAImrF,EACXV,EAAKU,GAASC,EAAiB,EAAI,GACnCV,EAAKU,EAAiB,EAAI,EAE5B,OAAO,SAAU/hF,GACf,QAASohF,EAAK7J,GAAO,EAFf,UAEuBv3E,GAAK,GAAKqhF,GAAM1qF,CAC/C,CACF,GAEFm5E,EAAU7tD,KAAO29D,GAAS,YAC1BxM,GAAa,sEAAsE,SAAUv2E,GAC3F,OAAOg2E,IAAkBh2E,EAAO,IAAMA,EAAO,SAC/C,IAOO,IAAIo2E,GAAU,SAAiBj6E,EAAQg6E,GAC5C55E,KAAK2hB,GAAKq1D,IACVp3E,EAAO65D,MAAQz5D,KACfA,KAAKJ,OAASA,EACdI,KAAK45E,QAAUA,EACf55E,KAAKb,IAAMy6E,EAAUA,EAAQz6E,IAAM46E,GACnC/5E,KAAKZ,IAAMw6E,EAAUA,EAAQ7U,UAAY6jB,EAC3C,EAOWC,GAAyB,WAClC,SAASA,EAAU7kB,EAAM5Q,GACvB,IAAIM,EAASsQ,EAAKtQ,QAAUshB,EAC5Bh1E,KAAKgkE,KAAOA,EACZhkE,KAAKu+E,QAAUva,EAAK1mC,OAAS,GACzBt9B,KAAK+8E,QAAU/Y,EAAKwb,SAAWsJ,KAAY,EAAI9kB,EAAKwb,QAAU,KAEhEx/E,KAAKk9E,QAAUlZ,EAAK+kB,aAAe,EACnC/oF,KAAKinF,QAAUjjB,EAAKglB,QAAUhlB,EAAKgjB,UAErChnF,KAAK68E,IAAM,EACXwC,GAAar/E,MAAOgkE,EAAK90D,SAAU,EAAG,GACtClP,KAAKud,KAAOymD,EAAKzmD,KACjB83D,GAAiB6J,GAAQ+G,OACzBvyB,GAAU2qB,GAAe3qB,EAAQ1zD,KAAMozD,GAAiB,IAATA,EAAaA,EAAOM,EAAOqL,MAAO,GACjFiF,EAAKilB,UAAYjpF,KAAKkpF,UACtBllB,EAAKmlB,QAAUnpF,KAAKmpF,QAAO,EAC7B,CACA,IAAI5mF,EAASsmF,EAAUhqF,UAwOvB,OAvOA0D,EAAO+6B,MAAQ,SAAep4B,GAC5B,OAAIA,GAAmB,IAAVA,GACXlF,KAAK0zD,QAAU1zD,KAAK0zD,OAAOoqB,mBAAqB99E,KAAKopF,UAAUppF,KAAK08E,OAASx3E,EAAQlF,KAAKu+E,QAC1Fv+E,KAAKu+E,OAASr5E,EACPlF,MAEFA,KAAKu+E,MACd,EACAh8E,EAAO2M,SAAW,SAAkBhK,GAClC,OAAOrF,UAAUrD,OAASwD,KAAKw9E,cAAcx9E,KAAK+8E,QAAU,EAAI73E,GAASA,EAAQlF,KAAKk9E,SAAWl9E,KAAK+8E,QAAU73E,GAASlF,KAAKw9E,iBAAmBx9E,KAAKg/D,IACxJ,EACAz8D,EAAOi7E,cAAgB,SAAuBt4E,GAC5C,OAAKrF,UAAUrD,QAGfwD,KAAK28E,OAAS,EACP0C,GAAar/E,KAAMA,KAAK+8E,QAAU,EAAI73E,GAASA,EAAQlF,KAAK+8E,QAAU/8E,KAAKk9E,UAAYl9E,KAAK+8E,QAAU,KAHpG/8E,KAAKy9E,KAIhB,EACAl7E,EAAOs7E,UAAY,SAAmBwL,EAAYpO,GAEhD,GADAyF,MACK7gF,UAAUrD,OACb,OAAOwD,KAAKi9E,OAEd,IAAIvpB,EAAS1zD,KAAK87E,IAClB,GAAIpoB,GAAUA,EAAOoqB,mBAAqB99E,KAAK68E,IAAK,CAKlD,IAJAe,GAAe59E,KAAMqpF,IACpB31B,EAAOooB,KAAOpoB,EAAOA,QAAUqqB,GAAerqB,EAAQ1zD,MAGhD0zD,EAAOA,QACRA,EAAOA,OAAOqL,QAAUrL,EAAOgpB,QAAUhpB,EAAOmpB,KAAO,EAAInpB,EAAOupB,OAASvpB,EAAOmpB,KAAOnpB,EAAO8pB,gBAAkB9pB,EAAOupB,SAAWvpB,EAAOmpB,MAC7InpB,EAAOmqB,UAAUnqB,EAAOupB,QAAQ,GAElCvpB,EAASA,EAAOA,QAEb1zD,KAAK0zD,QAAU1zD,KAAK87E,IAAIQ,qBAAuBt8E,KAAK68E,IAAM,GAAKwM,EAAarpF,KAAKy9E,OAASz9E,KAAK68E,IAAM,GAAKwM,EAAa,IAAMrpF,KAAKy9E,QAAU4L,IAE/IhL,GAAer+E,KAAK87E,IAAK97E,KAAMA,KAAK08E,OAAS18E,KAAKu+E,OAEtD,CAUA,OATIv+E,KAAKi9E,SAAWoM,IAAerpF,KAAKg/D,OAASic,GAAkBj7E,KAAKi+E,UAAY9uE,KAAKq7C,IAAIxqD,KAAKo+E,UAAYvH,IAAawS,IAAerpF,KAAKi+E,WAAaj+E,KAAKoY,KAAOpY,KAAKspF,cAE3KtpF,KAAK68E,MAAQ78E,KAAKupF,OAASF,GAI3BtO,GAAgB/6E,KAAMqpF,EAAYpO,IAG7Bj7E,IACT,EACAuC,EAAO6wD,KAAO,SAAcluD,EAAO+1E,GACjC,OAAOp7E,UAAUrD,OAASwD,KAAK69E,UAAU1uE,KAAKyd,IAAI5sB,KAAKw9E,gBAAiBt4E,EAAQ43E,GAAsB98E,OAASA,KAAKg/D,OAAS95D,EAAQlF,KAAKg/D,KAAO,GAAIic,GAAkBj7E,KAAK++D,KAC9K,EACAx8D,EAAOk9E,cAAgB,SAAuBv6E,EAAO+1E,GACnD,OAAOp7E,UAAUrD,OAASwD,KAAK69E,UAAU79E,KAAKw9E,gBAAkBt4E,EAAO+1E,GAAkBj7E,KAAKw9E,gBAAkBruE,KAAKyd,IAAI,EAAG5sB,KAAKi9E,OAASj9E,KAAKy9E,OAASz9E,KAAK+4D,KAC/J,EACAx2D,EAAOkhF,SAAW,SAAkBv+E,EAAO+1E,GACzC,OAAOp7E,UAAUrD,OAASwD,KAAK69E,UAAU79E,KAAKkP,aAAclP,KAAKinF,OAA8B,EAAnBjnF,KAAKwpF,YAA+BtkF,EAAZ,EAAIA,GAAiB43E,GAAsB98E,MAAOi7E,GAAkBj7E,KAAKkP,WAAaC,KAAKyd,IAAI,EAAG5sB,KAAK++D,MAAQ/+D,KAAKg/D,MAAQh/D,KAAK+4D,KACvO,EACAx2D,EAAOinF,UAAY,SAAmBtkF,EAAO+1E,GAC3C,IAAImC,EAAgBp9E,KAAKkP,WAAalP,KAAKk9E,QAC3C,OAAOr9E,UAAUrD,OAASwD,KAAK69E,UAAU79E,KAAK++D,OAAS75D,EAAQ,GAAKk4E,EAAenC,GAAkBj7E,KAAK+8E,QAAUC,GAAgBh9E,KAAKi9E,OAAQG,GAAiB,EAAI,CACxK,EAWA76E,EAAOi8E,UAAY,SAAmBt5E,GACpC,IAAKrF,UAAUrD,OACb,OAAqB,OAAdwD,KAAK29E,KAAqB,EAAI39E,KAAK29E,KAE5C,GAAI39E,KAAK29E,OAASz4E,EAChB,OAAOlF,KAET,IAAIm9E,EAAQn9E,KAAK0zD,QAAU1zD,KAAK68E,IAAMS,GAAwBt9E,KAAK0zD,OAAOqL,MAAO/+D,MAAQA,KAAKi9E,OAM9F,OAHAj9E,KAAK29E,MAAQz4E,GAAS,EACtBlF,KAAK68E,IAAM78E,KAAKypF,MAAiB,OAAVvkF,EAAsB,EAAIlF,KAAK29E,KA7pCpC,SAA2B3C,GAE7C,IADA,IAAItnB,EAASsnB,EAAUtnB,OAChBA,GAAUA,EAAOA,QAEtBA,EAAOipB,OAAS,EAChBjpB,EAAO8pB,gBACP9pB,EAASA,EAAOA,OAElB,OAAOsnB,CACT,CAspCS0O,CAAkB1pF,KAAK69E,UAAUM,IAAQn+E,KAAKu+E,OAAQv+E,KAAKy9E,MAAON,IAAQ,GACnF,EACA56E,EAAO4mF,OAAS,SAAgBjkF,GAC9B,OAAKrF,UAAUrD,QAGXwD,KAAKypF,MAAQvkF,IACflF,KAAKypF,IAAMvkF,EACPA,GACFlF,KAAKupF,OAASvpF,KAAKi9E,QAAU9tE,KAAK6S,KAAKhiB,KAAKu+E,OAAQv+E,KAAKk+E,WAEzDl+E,KAAK68E,IAAM78E,KAAKu8E,KAAO,IAEvBmE,KACA1gF,KAAK68E,IAAM78E,KAAK29E,KAEhB39E,KAAK69E,UAAU79E,KAAK0zD,SAAW1zD,KAAK0zD,OAAOoqB,kBAAoB99E,KAAKk+E,UAAYl+E,KAAKi9E,QAAUj9E,KAAKupF,OAA4B,IAApBvpF,KAAKyjF,aAAqBzjF,KAAKi9E,QAAUpG,IAAa1nE,KAAKq7C,IAAIxqD,KAAKo+E,UAAYvH,KAGzL72E,MAfEA,KAAKypF,GAgBhB,EACAlnF,EAAO6mF,UAAY,SAAmBlkF,GACpC,GAAIrF,UAAUrD,OAAQ,CACpBwD,KAAK08E,OAASx3E,EACd,IAAIwuD,EAAS1zD,KAAK0zD,QAAU1zD,KAAK87E,IAEjC,OADApoB,IAAWA,EAAOirB,QAAU3+E,KAAK0zD,SAAW2qB,GAAe3qB,EAAQ1zD,KAAMkF,EAAQlF,KAAKu+E,QAC/Ev+E,IACT,CACA,OAAOA,KAAK08E,MACd,EACAn6E,EAAOs9E,QAAU,SAAiB8J,GAChC,OAAO3pF,KAAK08E,QAAUjF,EAAYkS,GAAkB3pF,KAAKw9E,gBAAkBx9E,KAAKkP,YAAcC,KAAKq7C,IAAIxqD,KAAK68E,IAC9G,EACAt6E,EAAO27E,QAAU,SAAiB0L,GAChC,IAAIl2B,EAAS1zD,KAAK0zD,QAAU1zD,KAAK87E,IAEjC,OAAQpoB,EAAuBk2B,KAAiB5pF,KAAK68E,KAAO78E,KAAK+8E,SAAW/8E,KAAK++D,OAAS/+D,KAAKy/E,gBAAkB,GAAKz/E,KAAKi9E,QAAUj9E,KAAKg/D,KAAOh/D,KAAKk9E,SAAYl9E,KAAK68E,IAAoBS,GAAwB5pB,EAAOwqB,QAAQ0L,GAAc5pF,MAAnEA,KAAKi9E,OAAjKj9E,KAAKi9E,MACxB,EACA16E,EAAOsnF,WAAa,SAAoB3L,GAGtC,IAFA,IAAIlD,EAAYh7E,KACdozD,EAAOvzD,UAAUrD,OAAS0hF,EAAUlD,EAAUkD,UACzClD,GACL5nB,EAAO4nB,EAAU0B,OAAStpB,GAAQ4nB,EAAU6B,KAAO,GACnD7B,EAAYA,EAAUc,IAExB,OAAO1oB,CACT,EACA7wD,EAAOi9E,OAAS,SAAgBt6E,GAC9B,OAAIrF,UAAUrD,QACZwD,KAAK+8E,QAAU73E,IAAU4jF,KAAY,EAAI5jF,EAClCw6E,GAAuB1/E,QAEP,IAAlBA,KAAK+8E,QAAiB+L,IAAW9oF,KAAK+8E,OAC/C,EACAx6E,EAAOwmF,YAAc,SAAqB7jF,GACxC,OAAIrF,UAAUrD,QACZwD,KAAKk9E,QAAUh4E,EACRw6E,GAAuB1/E,OAEzBA,KAAKk9E,OACd,EACA36E,EAAOymF,KAAO,SAAc9jF,GAC1B,OAAIrF,UAAUrD,QACZwD,KAAKinF,MAAQ/hF,EACNlF,MAEFA,KAAKinF,KACd,EACA1kF,EAAOunF,KAAO,SAAc/qE,EAAUk8D,GACpC,OAAOj7E,KAAK69E,UAAUiC,GAAe9/E,KAAM+e,GAAW04D,EAAYwD,GACpE,EACA14E,EAAOwnF,QAAU,SAAiBC,EAAc/O,GAC9C,OAAOj7E,KAAKiqF,OAAOpM,UAAUmM,GAAgBhqF,KAAKu+E,OAAS,EAAG9G,EAAYwD,GAC5E,EACA14E,EAAO0nF,KAAO,SAAc7kE,EAAM61D,GAEhC,OADQ,MAAR71D,GAAgBplB,KAAK8pF,KAAK1kE,EAAM61D,GACzBj7E,KAAKipF,UAAS,GAAOE,QAAO,EACrC,EACA5mF,EAAO2mF,QAAU,SAAiB9jE,EAAM61D,GAEtC,OADQ,MAAR71D,GAAgBplB,KAAK8pF,KAAK1kE,GAAQplB,KAAKw9E,gBAAiBvC,GACjDj7E,KAAKipF,UAAS,GAAME,QAAO,EACpC,EACA5mF,EAAO2nF,MAAQ,SAAeC,EAAQlP,GAEpC,OADU,MAAVkP,GAAkBnqF,KAAK8pF,KAAKK,EAAQlP,GAC7Bj7E,KAAKmpF,QAAO,EACrB,EACA5mF,EAAO6nF,OAAS,WACd,OAAOpqF,KAAKmpF,QAAO,EACrB,EACA5mF,EAAO0mF,SAAW,SAAkB/jF,GAClC,OAAIrF,UAAUrD,UACV0I,IAAUlF,KAAKipF,YAAcjpF,KAAKw+E,WAAWx+E,KAAK29E,OAASz4E,GAAQ,KAAY,IAE1ElF,MAEFA,KAAK29E,KAAO,CACrB,EACAp7E,EAAO8nF,WAAa,WAGlB,OAFArqF,KAAKi+E,SAAWj+E,KAAKu8E,KAAO,EAC5Bv8E,KAAKo+E,QAAS,KACPp+E,IACT,EACAuC,EAAO+nF,SAAW,WAChB,IAEEpM,EAFExqB,EAAS1zD,KAAK0zD,QAAU1zD,KAAK87E,IAC/B1pC,EAAQpyC,KAAK08E,OAEf,QAAWhpB,KAAU1zD,KAAK68E,KAAO78E,KAAKi+E,UAAYvqB,EAAO42B,aAAepM,EAAUxqB,EAAOwqB,SAAQ,KAAU9rC,GAAS8rC,EAAUl+E,KAAK6/E,SAAQ,GAAQhJ,GACrJ,EACAt0E,EAAOgoF,cAAgB,SAAuBtoF,EAAMsJ,EAAUyB,GAC5D,IAAIg3D,EAAOhkE,KAAKgkE,KAChB,OAAInkE,UAAUrD,OAAS,GAChB+O,GAGHy4D,EAAK/hE,GAAQsJ,EACbyB,IAAWg3D,EAAK/hE,EAAO,UAAY+K,GAC1B,aAAT/K,IAAwBjC,KAAKwqF,UAAYj/E,WAJlCy4D,EAAK/hE,GAMPjC,MAEFgkE,EAAK/hE,EACd,EACAM,EAAOgxB,KAAO,SAAck3D,GAC1B,IAAIjgD,EAAOxqC,KACX,OAAO,IAAI6O,SAAQ,SAAUC,GAC3B,IAAI5H,EAAImwE,EAAYoT,GAAeA,EAAcrP,GAC/CsP,EAAW,WACT,IAAIC,EAAQngD,EAAKjX,KACjBiX,EAAKjX,KAAO,KAEZ8jD,EAAYnwE,KAAOA,EAAIA,EAAEsjC,MAAWtjC,EAAEqsB,MAAQrsB,IAAMsjC,KAAUA,EAAKjX,KAAOo3D,GAC1E77E,EAAQ5H,GACRsjC,EAAKjX,KAAOo3D,CACd,EACEngD,EAAKyzC,UAAqC,IAAzBzzC,EAAKi1C,iBAAyBj1C,EAAKqyC,KAAO,IAAMryC,EAAKyyC,QAAUzyC,EAAKqyC,IAAM,EAC7F6N,IAEAlgD,EAAKogD,MAAQF,CAEjB,GACF,EACAnoF,EAAOihF,KAAO,WACZF,GAAWtjF,KACb,EACO6oF,CACT,CA3PoC,GA4PpCxN,GAAawN,GAAUhqF,UAAW,CAChCkgE,MAAO,EACP2d,OAAQ,EACRD,KAAM,EACNQ,OAAQ,EACRQ,MAAO,EACPd,OAAQ,EACRI,QAAS,EACTkK,OAAO,EACPvzB,OAAQ,KACRuqB,UAAU,EACVf,QAAS,EACTL,IAAK,EACLf,IAAK,EACL/iB,MAAO,EACPqlB,QAAQ,KACRwM,MAAO,EACPnB,KAAK,EACL9L,KAAM,IAQD,IAAIgC,GAAwB,SAAUkL,GAE3C,SAASlL,EAAS3b,EAAM5Q,GACtB,IAAIxyD,EAWJ,YAVa,IAATojE,IACFA,EAAO,CAAC,IAEVpjE,EAAQiqF,EAAW9rF,KAAKiB,KAAMgkE,EAAM5Q,IAASpzD,MACvC+/E,OAAS,CAAC,EAChBn/E,EAAMk9E,oBAAsB9Z,EAAK8Z,kBACjCl9E,EAAM07E,qBAAuBtY,EAAKsY,mBAClC17E,EAAM+9E,MAAQlH,EAAYzT,EAAK8mB,cAC/BlqF,EAAM8yD,QAAUqqB,GAAen9E,EAAM8yD,OAAQga,EAAuB9sE,IACpEojE,EAAKuf,eAAiB1E,GAAenR,EAAuB9sE,GAAQojE,EAAKuf,eAClE3iF,CACT,CAdAmM,EAAe4yE,EAAUkL,GAezB,IAAIhsC,EAAU8gC,EAAS9gF,UA+gBvB,OA9gBAggD,EAAQl1B,GAAK,SAAYy6C,EAASJ,EAAMjlD,GAEtC,OADA,IAAI0hB,GAAM2jC,EAASkW,GAAWz6E,UAAW,EAAGG,MAAO8/E,GAAe9/E,KAAMs3E,EAAUtT,GAAQnkE,UAAU,GAAKkf,IAClG/e,IACT,EACA6+C,EAAQz5B,KAAO,SAAcg/C,EAASJ,EAAMjlD,GAE1C,OADA,IAAI0hB,GAAM2jC,EAASkW,GAAWz6E,UAAW,EAAGG,MAAO8/E,GAAe9/E,KAAMs3E,EAAUtT,GAAQnkE,UAAU,GAAKkf,IAClG/e,IACT,EACA6+C,EAAQj2B,OAAS,SAAgBw7C,EAAS2mB,EAAUC,EAAQjsE,GAE1D,OADA,IAAI0hB,GAAM2jC,EAASkW,GAAWz6E,UAAW,EAAGG,MAAO8/E,GAAe9/E,KAAMs3E,EAAUyT,GAAYlrF,UAAU,GAAKkf,IACtG/e,IACT,EACA6+C,EAAQz/C,IAAM,SAAaglE,EAASJ,EAAMjlD,GAMxC,OALAilD,EAAK90D,SAAW,EAChB80D,EAAKtQ,OAAS1zD,KACd47E,GAAiB5X,GAAM+kB,cAAgB/kB,EAAKwb,OAAS,GACrDxb,EAAK2W,kBAAoB3W,EAAK2W,gBAC9B,IAAIl6C,GAAM2jC,EAASJ,EAAM8b,GAAe9/E,KAAM+e,GAAW,GAClD/e,IACT,EACA6+C,EAAQ9/C,KAAO,SAAcwM,EAAUyB,EAAQ+R,GAC7C,OAAOs/D,GAAer+E,KAAMygC,GAAMwqD,YAAY,EAAG1/E,EAAUyB,GAAS8yE,GAAe9/E,KAAM+e,GAC3F,EAEA8/B,EAAQqsC,UAAY,SAAmB9mB,EAASl1D,EAAU80D,EAAMmnB,EAASpsE,EAAUqsE,EAAeC,GAOhG,OANArnB,EAAK90D,SAAWA,EAChB80D,EAAKmnB,QAAUnnB,EAAKmnB,SAAWA,EAC/BnnB,EAAKwJ,WAAa4d,EAClBpnB,EAAKsnB,iBAAmBD,EACxBrnB,EAAKtQ,OAAS1zD,KACd,IAAIygC,GAAM2jC,EAASJ,EAAM8b,GAAe9/E,KAAM+e,IACvC/e,IACT,EACA6+C,EAAQ0sC,YAAc,SAAqBnnB,EAASl1D,EAAU80D,EAAMmnB,EAASpsE,EAAUqsE,EAAeC,GAGpG,OAFArnB,EAAK4W,aAAe,EACpBgB,GAAiB5X,GAAM2W,gBAAkBlD,EAAYzT,EAAK2W,iBACnD36E,KAAKkrF,UAAU9mB,EAASl1D,EAAU80D,EAAMmnB,EAASpsE,EAAUqsE,EAAeC,EACnF,EACAxsC,EAAQ2sC,cAAgB,SAAuBpnB,EAASl1D,EAAU67E,EAAUC,EAAQG,EAASpsE,EAAUqsE,EAAeC,GAGpH,OAFAL,EAAOvmB,QAAUsmB,EACjBnP,GAAiBoP,GAAQrQ,gBAAkBlD,EAAYuT,EAAOrQ,iBACvD36E,KAAKkrF,UAAU9mB,EAASl1D,EAAU87E,EAAQG,EAASpsE,EAAUqsE,EAAeC,EACrF,EACAxsC,EAAQn8C,OAAS,SAAgBm7E,EAAW5C,EAAgBC,GAC1D,IAKE9nB,EACA9mD,EACAyV,EACAynE,EACApM,EACAqO,EACAC,EACAlN,EACAmN,EACAC,EACA5C,EACAlC,EAhBE+E,EAAW7rF,KAAK++D,MAClB+sB,EAAO9rF,KAAK28E,OAAS38E,KAAKw9E,gBAAkBx9E,KAAKy9E,MACjD7uE,EAAM5O,KAAKg/D,KACXme,EAAQn9E,OAASg1E,GAAmB6I,EAAYiO,EAAOjV,GAAYgH,GAAa,EAAIiO,EAAOjO,EAAYhH,EAAW,EAAIgH,EACtHkO,EAAgB/rF,KAAKo+E,OAAS,GAAMP,EAAY,IAAM79E,KAAKi+E,WAAarvE,GAa1E,GAAIuuE,IAAUn9E,KAAKi9E,QAAU/B,GAAS6Q,EAAe,CAenD,GAdIF,IAAa7rF,KAAK++D,OAASnwD,IAE7BuuE,GAASn9E,KAAK++D,MAAQ8sB,EACtBhO,GAAa79E,KAAK++D,MAAQ8sB,GAE5Bz4B,EAAO+pB,EACPwO,EAAY3rF,KAAK08E,OAEjB+O,IADAjN,EAAYx+E,KAAK68E,KAEbkP,IACFn9E,IAAQi9E,EAAW7rF,KAAKo+E,SAEvBP,IAAc5C,KAAoBj7E,KAAKo+E,OAASP,IAE/C79E,KAAK+8E,QAAS,CAIhB,GAFAiM,EAAOhpF,KAAKinF,MACZ7J,EAAgBxuE,EAAM5O,KAAKk9E,QACvBl9E,KAAK+8E,SAAW,GAAKc,EAAY,EACnC,OAAO79E,KAAK69E,UAA0B,IAAhBT,EAAsBS,EAAW5C,EAAgBC,GAgCzE,GA9BA9nB,EAAO8mB,GAAOiD,EAAQC,GAElBD,IAAU2O,GAEZtC,EAAYxpF,KAAK+8E,QACjB3pB,EAAOxkD,KAEP46E,KAAerM,EAAQC,KACNoM,IAAcrM,EAAQC,IACrChqB,EAAOxkD,EACP46E,KAEFp2B,EAAOxkD,IAAQwkD,EAAOxkD,IAExBg9E,EAAgB5O,GAAgBh9E,KAAKi9E,OAAQG,IAC5CyO,GAAY7rF,KAAKi9E,QAAU2O,IAAkBpC,IAAcoC,EAAgBpC,GAExER,GAAoB,EAAZQ,IACVp2B,EAAOxkD,EAAMwkD,EACb0zB,EAAS,GAWP0C,IAAcoC,IAAkB5rF,KAAKo/E,MAAO,CAC9C,IAAI4M,EAAYhD,GAAwB,EAAhB4C,EACtBK,EAAWD,KAAehD,GAAoB,EAAZQ,GAOpC,GANAA,EAAYoC,IAAkBI,GAAaA,GAC3CH,EAAWG,EAAY,EAAIp9E,EAC3B5O,KAAKo/E,MAAQ,EACbp/E,KAAK0C,OAAOmpF,IAAa/E,EAAS,EAAI5M,GAAOsP,EAAYpM,IAAiBnC,GAAiBrsE,GAAKwwE,MAAQ,GACvGnE,GAAkBj7E,KAAK0zD,QAAUJ,GAAUtzD,KAAM,YAClDA,KAAKgkE,KAAKkoB,gBAAkBpF,IAAW9mF,KAAKqqF,aAAajL,MAAQ,GAC7DyM,GAAYA,IAAa7rF,KAAK++D,OAAS0sB,KAAgBzrF,KAAK68E,KAAO78E,KAAKgkE,KAAKmoB,WAAansF,KAAK0zD,SAAW1zD,KAAKu8E,KAEjH,OAAOv8E,KAWT,GATA4O,EAAM5O,KAAKg/D,KAEX8sB,EAAO9rF,KAAKy9E,MACRwO,IACFjsF,KAAKo/E,MAAQ,EACbyM,EAAWG,EAAYp9E,GAAO,KAC9B5O,KAAK0C,OAAOmpF,GAAU,IAExB7rF,KAAKo/E,MAAQ,GACRp/E,KAAK68E,MAAQ4O,EAChB,OAAOzrF,KAGT6mF,GAAmB7mF,KAAM8mF,EAC3B,CACF,CAkBA,GAjBI9mF,KAAKosF,YAAcpsF,KAAKqsF,UAAYrsF,KAAKo/E,MAAQ,IACnDsM,EAp1CgB,SAA6B1Q,EAAW6Q,EAAUz4B,GACtE,IAAI9mD,EACJ,GAAI8mD,EAAOy4B,EAET,IADAv/E,EAAQ0uE,EAAU+L,OACXz6E,GAASA,EAAMowE,QAAUtpB,GAAM,CACpC,IAAK9mD,EAAM0yD,MAAuB,YAAf1yD,EAAMiR,MAAsBjR,EAAMowE,OAASmP,EAC5D,OAAOv/E,EAETA,EAAQA,EAAMoyD,KAChB,MAGA,IADApyD,EAAQ0uE,EAAUsR,MACXhgF,GAASA,EAAMowE,QAAUtpB,GAAM,CACpC,IAAK9mD,EAAM0yD,MAAuB,YAAf1yD,EAAMiR,MAAsBjR,EAAMowE,OAASmP,EAC5D,OAAOv/E,EAETA,EAAQA,EAAM6vE,KAChB,CAEJ,CAi0CmBoQ,CAAoBvsF,KAAMk6E,GAAO2R,GAAW3R,GAAO9mB,IAC5Ds4B,IACFvO,GAAS/pB,GAAQA,EAAOs4B,EAAWhP,UAGvC18E,KAAKi9E,OAASE,EACdn9E,KAAK++D,MAAQ3L,EACbpzD,KAAKu8E,MAAQiC,EAERx+E,KAAKi+E,WACRj+E,KAAKwqF,UAAYxqF,KAAKgkE,KAAKwoB,SAC3BxsF,KAAKi+E,SAAW,EAChBj+E,KAAKo+E,OAASP,EACdgO,EAAW,IAEZA,GAAYz4B,IAAS6nB,GAAkB3nB,GAAUtzD,KAAM,WACpDozD,GAAQy4B,GAAYhO,GAAa,EAEnC,IADAvxE,EAAQtM,KAAK+mF,OACNz6E,GAAO,CAEZ,GADAyV,EAAOzV,EAAMoyD,OACRpyD,EAAMiwE,MAAQnpB,GAAQ9mD,EAAMowE,SAAWpwE,EAAMuwE,KAAO6O,IAAep/E,EAAO,CAC7E,GAAIA,EAAMonD,SAAW1zD,KAEnB,OAAOA,KAAK0C,OAAOm7E,EAAW5C,EAAgBC,GAGhD,GADA5uE,EAAM5J,OAAO4J,EAAMuwE,IAAM,GAAKzpB,EAAO9mD,EAAMowE,QAAUpwE,EAAMuwE,KAAOvwE,EAAMqwE,OAASrwE,EAAMkxE,gBAAkBlxE,EAAMmxE,QAAUrqB,EAAO9mD,EAAMowE,QAAUpwE,EAAMuwE,IAAK5B,EAAgBC,GACvK9nB,IAASpzD,KAAK++D,QAAU/+D,KAAK68E,MAAQ4O,EAAY,CAEnDC,EAAa,EACb3pE,IAASo7D,GAASn9E,KAAKo+E,QAAS,MAEhC,KACF,CACF,CACA9xE,EAAQyV,CACV,KACK,CACLzV,EAAQtM,KAAKssF,MAGb,IAFA,IAAIG,EAAe5O,EAAY,EAAIA,EAAYzqB,EAExC9mD,GAAO,CAEZ,GADAyV,EAAOzV,EAAM6vE,OACR7vE,EAAMiwE,MAAQkQ,GAAgBngF,EAAMmwE,OAASnwE,EAAMuwE,KAAO6O,IAAep/E,EAAO,CACnF,GAAIA,EAAMonD,SAAW1zD,KAEnB,OAAOA,KAAK0C,OAAOm7E,EAAW5C,EAAgBC,GAGhD,GADA5uE,EAAM5J,OAAO4J,EAAMuwE,IAAM,GAAK4P,EAAengF,EAAMowE,QAAUpwE,EAAMuwE,KAAOvwE,EAAMqwE,OAASrwE,EAAMkxE,gBAAkBlxE,EAAMmxE,QAAUgP,EAAengF,EAAMowE,QAAUpwE,EAAMuwE,IAAK5B,EAAgBC,GACvL9nB,IAASpzD,KAAK++D,QAAU/+D,KAAK68E,MAAQ4O,EAAY,CAEnDC,EAAa,EACb3pE,IAASo7D,GAASn9E,KAAKo+E,OAASqO,GAAe,KAAY5V,GAE3D,KACF,CACF,CACAvqE,EAAQyV,CACV,CACF,CACA,GAAI2pE,IAAezQ,IACjBj7E,KAAKkqF,QACLwB,EAAWhpF,OAAO0wD,GAAQy4B,EAAW,GAAI,MAAWzN,OAAShrB,GAAQy4B,EAAW,GAAK,EACjF7rF,KAAK68E,KAKP,OAHA78E,KAAK08E,OAASiP,EAEdjO,GAAQ19E,MACDA,KAAK0C,OAAOm7E,EAAW5C,EAAgBC,GAGlDl7E,KAAKwqF,YAAcvP,GAAkB3nB,GAAUtzD,KAAM,YAAY,IAC7Dm9E,IAAU2O,GAAQA,GAAQ9rF,KAAKw9E,kBAAoBL,GAAS0O,KAAcF,IAAc3rF,KAAK08E,QAAUvtE,KAAKq7C,IAAIg0B,KAAervE,KAAKq7C,IAAIxqD,KAAK68E,MAAW78E,KAAKo/E,SAC9JvB,IAAcjvE,KAASuuE,IAAU2O,GAAQ9rF,KAAK68E,IAAM,IAAMM,GAASn9E,KAAK68E,IAAM,IAAMT,GAAkBp8E,KAAM,GAExGi7E,GAAoB4C,EAAY,IAAMgO,IAAc1O,IAAS0O,IAChEv4B,GAAUtzD,KAAMm9E,IAAU2O,EAAO,aAAe,qBAAqB,GACrE9rF,KAAK4qF,SAAWzN,EAAQ2O,GAAQ9rF,KAAKw+E,YAAc,IAAMx+E,KAAK4qF,UAGpE,CACA,OAAO5qF,IACT,EACA6+C,EAAQzmC,IAAM,SAAa9L,EAAOyS,GAChC,IAAIhU,EAAS/K,KAEb,GADAs3E,EAAUv4D,KAAcA,EAAW+gE,GAAe9/E,KAAM+e,MAClDzS,aAAiBu8E,IAAY,CACjC,GAAI9Q,GAASzrE,GAIX,OAHAA,EAAMjM,SAAQ,SAAU3B,GACtB,OAAOqM,EAAOqN,IAAI1Z,EAAKqgB,EACzB,IACO/e,KAET,GAAIo3E,EAAU9qE,GACZ,OAAOtM,KAAK0sF,SAASpgF,EAAOyS,GAE9B,IAAIs4D,EAAY/qE,GAGd,OAAOtM,KAFPsM,EAAQm0B,GAAMwqD,YAAY,EAAG3+E,EAIjC,CACA,OAAOtM,OAASsM,EAAQ+xE,GAAer+E,KAAMsM,EAAOyS,GAAY/e,IAClE,EACA6+C,EAAQ8tC,YAAc,SAAqBrF,EAAQsF,EAAQC,EAAWC,QACrD,IAAXxF,IACFA,GAAS,QAEI,IAAXsF,IACFA,GAAS,QAEO,IAAdC,IACFA,GAAY,QAEW,IAArBC,IACFA,GAAoBlW,GAItB,IAFA,IAAI/4E,EAAI,GACNyO,EAAQtM,KAAK+mF,OACRz6E,GACDA,EAAMowE,QAAUoQ,IACdxgF,aAAiBm0B,GACnBmsD,GAAU/uF,EAAE6H,KAAK4G,IAEjBugF,GAAahvF,EAAE6H,KAAK4G,GACpBg7E,GAAUzpF,EAAE6H,KAAK3F,MAAMlC,EAAGyO,EAAMqgF,aAAY,EAAMC,EAAQC,MAG9DvgF,EAAQA,EAAMoyD,MAEhB,OAAO7gE,CACT,EACAghD,EAAQkuC,QAAU,SAAiBprE,GAGjC,IAFA,IAAIqrE,EAAahtF,KAAK2sF,YAAY,EAAG,EAAG,GACtC3vF,EAAIgwF,EAAWxwF,OACVQ,KACL,GAAIgwF,EAAWhwF,GAAGgnE,KAAKriD,KAAOA,EAC5B,OAAOqrE,EAAWhwF,EAGxB,EACA6hD,EAAQzwC,OAAS,SAAgB9B,GAC/B,OAAI8qE,EAAU9qE,GACLtM,KAAKitF,YAAY3gF,GAEtB+qE,EAAY/qE,GACPtM,KAAKktF,aAAa5gF,IAE3ByvE,GAAsB/7E,KAAMsM,GACxBA,IAAUtM,KAAK4+E,UACjB5+E,KAAK4+E,QAAU5+E,KAAKssF,OAEf9P,GAASx8E,MAClB,EACA6+C,EAAQg/B,UAAY,SAAmBsP,EAAalS,GAClD,OAAKp7E,UAAUrD,QAGfwD,KAAKqsF,SAAW,GACXrsF,KAAK87E,KAAO97E,KAAK68E,MAEpB78E,KAAK08E,OAASxC,GAAOgF,GAAQ9rB,MAAQpzD,KAAK68E,IAAM,EAAIsQ,EAAcntF,KAAK68E,KAAO78E,KAAKw9E,gBAAkB2P,IAAgBntF,KAAK68E,OAE5HgO,EAAWhsF,UAAUg/E,UAAU9+E,KAAKiB,KAAMmtF,EAAalS,GACvDj7E,KAAKqsF,SAAW,EACTrsF,MATEA,KAAKi9E,MAUhB,EACAp+B,EAAQ6tC,SAAW,SAAkB9iC,EAAO7qC,GAE1C,OADA/e,KAAK+/E,OAAOn2B,GAASk2B,GAAe9/E,KAAM+e,GACnC/e,IACT,EACA6+C,EAAQouC,YAAc,SAAqBrjC,GAEzC,cADO5pD,KAAK+/E,OAAOn2B,GACZ5pD,IACT,EACA6+C,EAAQuuC,SAAW,SAAkBruE,EAAUxT,EAAUyB,GACvD,IAAIiD,EAAIwwB,GAAMwqD,YAAY,EAAG1/E,GAAY0tE,GAAYjsE,GAGrD,OAFAiD,EAAEsN,KAAO,UACTvd,KAAKosF,UAAY,EACV/N,GAAer+E,KAAMiQ,EAAG6vE,GAAe9/E,KAAM+e,GACtD,EACA8/B,EAAQwuC,YAAc,SAAqBtuE,GACzC,IAAIzS,EAAQtM,KAAK+mF,OAEjB,IADAhoE,EAAW+gE,GAAe9/E,KAAM+e,GACzBzS,GACDA,EAAMowE,SAAW39D,GAA2B,YAAfzS,EAAMiR,MACrC6+D,GAAkB9vE,GAEpBA,EAAQA,EAAMoyD,KAElB,EACA7f,EAAQquC,aAAe,SAAsB9oB,EAAS9iE,EAAOgsF,GAG3D,IAFA,IAAIV,EAAS5sF,KAAKutF,YAAYnpB,EAASkpB,GACrCtwF,EAAI4vF,EAAOpwF,OACNQ,KACLwwF,KAAsBZ,EAAO5vF,IAAM4vF,EAAO5vF,GAAGwmF,KAAKpf,EAAS9iE,GAE7D,OAAOtB,IACT,EACA6+C,EAAQ0uC,YAAc,SAAqBnpB,EAASkpB,GAOlD,IANA,IAKErhF,EALEpO,EAAI,GACN4vF,EAAgB5+D,GAAQu1C,GACxB93D,EAAQtM,KAAK+mF,OACb2G,EAAepW,EAAUgW,GAGpBhhF,GACDA,aAAiBm0B,GACf05C,GAAkB7tE,EAAMqhF,SAAUF,KAAmBC,IAAiBF,IAAqBlhF,EAAM2xE,UAAY3xE,EAAMuwE,MAAQvwE,EAAMu9E,WAAW,IAAMyD,GAAchhF,EAAMu9E,WAAWv9E,EAAMkxE,iBAAmB8P,GAAcA,GAAchhF,EAAMg+E,aAE9OzsF,EAAE6H,KAAK4G,IAECL,EAAWK,EAAMihF,YAAYE,EAAeH,IAAa9wF,QACnEqB,EAAE6H,KAAK3F,MAAMlC,EAAGoO,GAElBK,EAAQA,EAAMoyD,MAEhB,OAAO7gE,CACT,EAOAghD,EAAQ+uC,QAAU,SAAiB7uE,EAAUilD,GAC3CA,EAAOA,GAAQ,CAAC,EAChB,IAAI6pB,EAAK7tF,KACP6/E,EAAUC,GAAe+N,EAAI9uE,GAC7B+uE,EAAQ9pB,EACRS,EAAUqpB,EAAMrpB,QAChBspB,EAAWD,EAAME,QACjBC,EAAgBH,EAAMG,cACtBtT,EAAkBmT,EAAMnT,gBACxB7b,EAAQr+B,GAAM9W,GAAGkkE,EAAIxS,GAAa,CAChCxyD,KAAMm7C,EAAKn7C,MAAQ,OACnBo2D,MAAM,EACNtE,iBAAiB,EACjBvnB,KAAMysB,EACNlJ,UAAW,OACXznE,SAAU80D,EAAK90D,UAAYC,KAAKq7C,KAAKq1B,GAAWpb,GAAW,SAAUA,EAAUA,EAAQrR,KAAOy6B,EAAG9uB,QAAU8uB,EAAGrP,cAAgB3H,EAC9HmX,QAAS,WACPH,EAAG3D,QACH,IAAIh7E,EAAW80D,EAAK90D,UAAYC,KAAKq7C,KAAKq1B,EAAUgO,EAAG9uB,OAAS8uB,EAAGrP,aACnE1f,EAAME,OAAS9vD,GAAYmwE,GAAavgB,EAAO5vD,EAAU,EAAG,GAAGxM,OAAOo8D,EAAMC,OAAO,GAAM,GACzFgvB,GAAYA,EAAShuF,MAAM++D,EAAOmvB,GAAiB,GACrD,GACCjqB,IACL,OAAO2W,EAAkB7b,EAAMp8D,OAAO,GAAKo8D,CAC7C,EACAjgB,EAAQqvC,YAAc,SAAqBC,EAAcC,EAAYpqB,GACnE,OAAOhkE,KAAK4tF,QAAQQ,EAAY/S,GAAa,CAC3C5W,QAAS,CACPrR,KAAM0sB,GAAe9/E,KAAMmuF,KAE5BnqB,GACL,EACAnlB,EAAQmhC,OAAS,WACf,OAAOhgF,KAAK4+E,OACd,EACA//B,EAAQwvC,UAAY,SAAmBC,GAIrC,YAHkB,IAAdA,IACFA,EAAYtuF,KAAK++D,OAEZikB,GAAqBhjF,KAAM8/E,GAAe9/E,KAAMsuF,GACzD,EACAzvC,EAAQ0vC,cAAgB,SAAuBC,GAI7C,YAHmB,IAAfA,IACFA,EAAaxuF,KAAK++D,OAEbikB,GAAqBhjF,KAAM8/E,GAAe9/E,KAAMwuF,GAAa,EACtE,EACA3vC,EAAQ4vC,aAAe,SAAsBvpF,GAC3C,OAAOrF,UAAUrD,OAASwD,KAAK8pF,KAAK5kF,GAAO,GAAQlF,KAAKuuF,cAAcvuF,KAAK++D,MAAQ8X,EACrF,EACAh4B,EAAQ6vC,cAAgB,SAAuBvxB,EAAQwxB,EAAc7B,QAC1C,IAArBA,IACFA,EAAmB,GAKrB,IAHA,IAEElmF,EAFE0F,EAAQtM,KAAK+mF,OACfhH,EAAS//E,KAAK+/E,OAETzzE,GACDA,EAAMowE,QAAUoQ,IAClBxgF,EAAMowE,QAAUvf,EAChB7wD,EAAMmwE,MAAQtf,GAEhB7wD,EAAQA,EAAMoyD,MAEhB,GAAIiwB,EACF,IAAK/nF,KAAKm5E,EACJA,EAAOn5E,IAAMkmF,IACf/M,EAAOn5E,IAAMu2D,GAInB,OAAOqf,GAASx8E,KAClB,EACA6+C,EAAQwrC,WAAa,WACnB,IAAI/9E,EAAQtM,KAAK+mF,OAEjB,IADA/mF,KAAKo/E,MAAQ,EACN9yE,GACLA,EAAM+9E,aACN/9E,EAAQA,EAAMoyD,MAEhB,OAAOmsB,EAAWhsF,UAAUwrF,WAAWtrF,KAAKiB,KAC9C,EACA6+C,EAAQtE,MAAQ,SAAeq0C,QACP,IAAlBA,IACFA,GAAgB,GAIlB,IAFA,IACE7sE,EADEzV,EAAQtM,KAAK+mF,OAEVz6E,GACLyV,EAAOzV,EAAMoyD,MACb1+D,KAAKoO,OAAO9B,GACZA,EAAQyV,EAIV,OAFA/hB,KAAK87E,MAAQ97E,KAAK++D,MAAQ/+D,KAAKi9E,OAASj9E,KAAKupF,OAAS,GACtDqF,IAAkB5uF,KAAK+/E,OAAS,CAAC,GAC1BvD,GAASx8E,KAClB,EACA6+C,EAAQ2+B,cAAgB,SAAuBt4E,GAC7C,IAIEg3E,EACA9pC,EACAshB,EANE1xC,EAAM,EACRwoB,EAAOxqC,KACPsM,EAAQk+B,EAAK8hD,MACbX,EAAY/U,EAId,GAAI/2E,UAAUrD,OACZ,OAAOguC,EAAKg0C,WAAWh0C,EAAKuyC,QAAU,EAAIvyC,EAAKt7B,WAAas7B,EAAKgzC,kBAAoBhzC,EAAKy+C,YAAc/jF,EAAQA,IAElH,GAAIslC,EAAKmyC,OAAQ,CAEf,IADAjpB,EAASlpB,EAAKkpB,OACPpnD,GACL4vE,EAAO5vE,EAAM6vE,MAEb7vE,EAAMqwE,QAAUrwE,EAAMkxE,iBAEtBprC,EAAQ9lC,EAAMowE,QACFiP,GAAanhD,EAAKm0C,OAASryE,EAAMuwE,MAAQryC,EAAK40C,OAExD50C,EAAK40C,MAAQ,EAEbf,GAAe7zC,EAAMl+B,EAAO8lC,EAAQ9lC,EAAMiyE,OAAQ,GAAGa,MAAQ,GAE7DuM,EAAYv5C,EAEVA,EAAQ,GAAK9lC,EAAMuwE,MAErB76D,GAAOowB,IACFshB,IAAWlpB,EAAKsxC,KAAOpoB,GAAUA,EAAOoqB,qBAC3CtzC,EAAKkyC,QAAUtqC,EAAQ5H,EAAKqyC,IAC5BryC,EAAKu0B,OAAS3sB,EACd5H,EAAKyyC,QAAU7qC,GAEjB5H,EAAKkkD,eAAet8C,GAAO,GAAQ,UACnCu5C,EAAY,GAEdr/E,EAAMmwE,KAAOz6D,GAAO1V,EAAMuwE,MAAQ76D,EAAM1V,EAAMmwE,MAC9CnwE,EAAQ4vE,EAEVmD,GAAa70C,EAAMA,IAASwqC,GAAmBxqC,EAAKu0B,MAAQ/8C,EAAMwoB,EAAKu0B,MAAQ/8C,EAAK,EAAG,GACvFwoB,EAAKmyC,OAAS,CAChB,CACA,OAAOnyC,EAAKizC,KACd,EACAkC,EAASkP,WAAa,SAAoBz7B,GAKxC,GAJI4hB,EAAgB6H,MAClB9B,GAAgB/F,EAAiBsI,GAAwBlqB,EAAM4hB,IAC/DG,EAAqB+J,GAAQ/vB,OAE3B+vB,GAAQ/vB,OAASoqB,GAAc,CACjCA,IAAgBjD,EAAQC,WAAa,IACrC,IAAIjqE,EAAQ0oE,EAAgB+R,OAC5B,KAAKz6E,IAAUA,EAAMuwE,MAASvG,EAAQC,WAAa2I,GAAQjJ,WAAWz5E,OAAS,EAAG,CAChF,KAAO8P,IAAUA,EAAMuwE,KACrBvwE,EAAQA,EAAMoyD,MAEhBpyD,GAAS4yE,GAAQkH,OACnB,CACF,CACF,EACOzG,CACT,CAhiBmC,CAgiBjCkJ,IACFxN,GAAasE,GAAS9gF,UAAW,CAC/BugF,MAAO,EACPgN,UAAW,EACXC,SAAU,IAEZ,IAkHEmB,GAlHEsB,GAA6B,SAAoClvF,EAAQynC,EAAM+K,EAAOgqB,EAAK9Z,EAAQysC,EAAcC,GAEjH,IAGEnhF,EACAohF,EACAlxB,EACAG,EACAC,EACAL,EACAoxB,EACArxF,EAVEy+D,EAAK,IAAI6yB,GAAUnvF,KAAKu8D,IAAK38D,EAAQynC,EAAM,EAAG,EAAG+nD,GAAsB,KAAM9sC,GAC/En7B,EAAQ,EACRo3C,EAAa,EAyBf,IAhBAjC,EAAGr1D,EAAImrC,EACPkqB,EAAGx+D,EAAIs+D,EACPhqB,GAAS,IAGL88C,IADJ9yB,GAAO,IACc/zD,QAAQ,cAC3B+zD,EAAMmmB,GAAenmB,IAEnB2yB,IAEFA,EADAlxF,EAAI,CAACu0C,EAAOgqB,GACIx8D,EAAQynC,GAExB+K,EAAQv0C,EAAE,GACVu+D,EAAMv+D,EAAE,IAEVoxF,EAAY78C,EAAM/oB,MAAM8uD,KAAyB,GAC1CtqE,EAASsqE,GAAqBzxD,KAAK01C,IACxC8B,EAASrwD,EAAO,GAChBswD,EAAQ/B,EAAI1rC,UAAUvJ,EAAOtZ,EAAOsZ,OAChC42C,EACFA,GAASA,EAAQ,GAAK,EACQ,UAArBI,EAAM/6C,QAAQ,KACvB26C,EAAQ,GAENG,IAAW+wB,EAAU1wB,OACvBT,EAAWzM,WAAW49B,EAAU1wB,EAAa,KAAO,EAEpDjC,EAAGC,IAAM,CACPmC,MAAOpC,EAAGC,IACV31D,EAAGu3D,GAAwB,IAAfI,EAAmBJ,EAAQ,IAEvCz6D,EAAGo6D,EACHx9D,EAAwB,MAArB49D,EAAOzgE,OAAO,GAAa4zD,WAAW6M,EAAO96C,OAAO,KAA4B,MAArB86C,EAAOzgE,OAAO,IAAc,EAAI,GAAK4zD,WAAW6M,GAAUJ,EACxHtgE,EAAGugE,GAASA,EAAQ,EAAI5uD,KAAKgT,MAAQ,GAEvCgF,EAAQgxD,GAAqB3Z,WAWjC,OARAlC,EAAGh8D,EAAI6mB,EAAQi1C,EAAI5/D,OAAS4/D,EAAI1rC,UAAUvJ,EAAOi1C,EAAI5/D,QAAU,GAE/D8/D,EAAG+yB,GAAKL,GACJ5W,GAAQl7E,KAAKk/D,IAAQ8yB,KACvB5yB,EAAGx+D,EAAI,GAETkC,KAAKu8D,IAAMD,EAEJA,CACT,EACAgzB,GAAgB,SAAuB1vF,EAAQynC,EAAM+K,EAAOgqB,EAAKj1C,EAAOi9C,EAASmrB,EAAUR,EAAcC,GACvG3X,EAAYjb,KAASA,EAAMA,EAAIj1C,GAAS,EAAGvnB,EAAQwkE,IACnD,IAGE9H,EAHEkzB,EAAe5vF,EAAOynC,GACxBooD,EAAwB,QAAVr9C,EAAkBA,EAASilC,EAAYmY,GAA+BR,EAAYpvF,EAAOynC,EAAKh/B,QAAQ,SAAWgvE,EAAYz3E,EAAO,MAAQynC,EAAKjkB,OAAO,KAAOikB,EAAO,MAAQA,EAAKjkB,OAAO,IAAI4rE,GAAapvF,EAAOynC,KAA3JmoD,EACrEltC,EAAU+0B,EAAYmY,GAA+BR,EAAYU,GAAuBC,GAAlDC,GAUxC,GARIxY,EAAUhb,MACPA,EAAI/zD,QAAQ,aACf+zD,EAAMmmB,GAAenmB,IAED,MAAlBA,EAAI3+D,OAAO,KACb2+D,EAAM/K,WAAWo+B,GAAep+B,WAAW+K,EAAIh5C,OAAO,KAAyB,MAAlBg5C,EAAI3+D,OAAO,IAAc,EAAI,IAAM0iF,GAAQsP,IAAgB,KAGxHA,IAAgBrzB,EAClB,OAAKx+C,MAAM6xE,EAAcrzB,KAMxBozB,KAAkBnoD,KAAQznC,IAAWi5E,GAAexxC,EAAM+0B,GACpD0yB,GAA2B/vF,KAAKiB,KAAMJ,EAAQynC,EAAMooD,EAAarzB,EAAK9Z,EAAQysC,GAAgBzY,EAAQyY,aAAcC,KANzH1yB,EAAK,IAAI6yB,GAAUnvF,KAAKu8D,IAAK38D,EAAQynC,GAAOooD,GAAe,EAAGrzB,GAAOqzB,GAAe,GAA4B,kBAAjBD,EAA6BK,GAAiBC,GAAc,EAAGxtC,GAC9J0sC,IAAc1yB,EAAG+yB,GAAKL,GACtBO,GAAYjzB,EAAGizB,SAASA,EAAUvvF,KAAMJ,GACjCI,KAAKu8D,IAAMD,EAKxB,EAcAyzB,GAAe,SAAsBz2B,EAAU0K,EAAMlF,EAAO33C,EAAOvnB,EAAQwkE,GACzE,IAAI32C,EAAQ6uC,EAAI0zB,EAAUhzF,EAC1B,GAAIq8E,GAAS/f,KAAwL,KAA1K7rC,EAAS,IAAI4rD,GAAS/f,IAAaxjD,KAAKlW,EAAQ6tB,EAAOwiE,QAAUjsB,EAAK1K,GAdpF,SAAsB0K,EAAM78C,EAAOvnB,EAAQwkE,EAAStF,GAEjE,GADAuY,EAAYrT,KAAUA,EAAOksB,GAAmBlsB,EAAMlF,EAAO33C,EAAOvnB,EAAQwkE,KACvEoT,EAAUxT,IAASA,EAAKloD,OAASkoD,EAAK5T,UAAY2nB,GAAS/T,IAAS4T,EAAc5T,GACrF,OAAOoT,EAAUpT,GAAQksB,GAAmBlsB,EAAMlF,EAAO33C,EAAOvnB,EAAQwkE,GAAWJ,EAErF,IACEp9D,EADE+0E,EAAO,CAAC,EAEZ,IAAK/0E,KAAKo9D,EACR2X,EAAK/0E,GAAKspF,GAAmBlsB,EAAKp9D,GAAIk4D,EAAO33C,EAAOvnB,EAAQwkE,GAE9D,OAAOuX,CACT,CAG+GwU,CAAansB,EAAK1K,GAAWnyC,EAAOvnB,EAAQwkE,EAAStF,GAAQA,EAAO33C,EAAOi9C,KACtLtF,EAAMvC,IAAMD,EAAK,IAAI6yB,GAAUrwB,EAAMvC,IAAK38D,EAAQ05D,EAAU,EAAG,EAAG7rC,EAAO/qB,OAAQ+qB,EAAQ,EAAGA,EAAO2iE,UAC/FtxB,IAAUsW,GAIZ,IAHA4a,EAAWlxB,EAAMwqB,UAAUxqB,EAAM6uB,SAAStlF,QAAQzI,IAElD5C,EAAIywB,EAAOue,OAAOxvC,OACXQ,KACLgzF,EAASviE,EAAOue,OAAOhvC,IAAMs/D,EAInC,OAAO7uC,CACT,EAGAuxD,GAAa,SAASA,EAAWlgB,EAAO1L,GACtC,IAmBEi9B,EACArzF,EACA4J,EACA01D,EACA18D,EACA4kE,EACA8rB,EACA1W,EACAnsD,EACAuiE,EACA7oE,EACAopE,EACAC,EA/BExsB,EAAOlF,EAAMkF,KACfn7C,EAAOm7C,EAAKn7C,KACZ47C,EAAUT,EAAKS,QACfkW,EAAkB3W,EAAK2W,gBACvBsE,EAAOjb,EAAKib,KACZuN,EAAWxoB,EAAKwoB,SAChBiE,EAAiBzsB,EAAKysB,eACtBpN,EAAgBrf,EAAKqf,cACrBzI,EAAe5W,EAAK4W,aACpBoM,EAAWhjB,EAAKgjB,SAChBnL,EAAY7X,EAAK6X,UACjB6U,EAAa1sB,EAAK0sB,WAClB9hF,EAAMkwD,EAAME,KACZ2xB,EAAc7xB,EAAM8xB,SACpBxsB,EAAUtF,EAAM6uB,SAChBj6B,EAASoL,EAAMpL,OACfm9B,EAAcn9B,GAA0B,WAAhBA,EAAOn2C,KAAoBm2C,EAAOA,OAAOi6B,SAAWvpB,EAC5E0sB,EAAqC,SAArBhyB,EAAMiyB,aAA0Bhc,EAChD8Y,EAAK/uB,EAAMkf,SAuBb,GATA6P,KAAQhS,IAAchzD,KAAUA,EAAO,QACvCi2C,EAAMooB,MAAQpG,GAAWj4D,EAAM6tD,EAAU7tD,MACzCi2C,EAAMqoB,OAASH,EAAWvF,GAAYX,IAAwB,IAAbkG,EAAoBn+D,EAAOm+D,EAAUtQ,EAAU7tD,OAAS,EACrGm+D,GAAYloB,EAAMmoB,QAAUnoB,EAAMie,UAEpCiK,EAAWloB,EAAMqoB,OACjBroB,EAAMqoB,OAASroB,EAAMooB,MACrBpoB,EAAMooB,MAAQF,IAEX6G,EAAI,CAOP,GAJA0C,GADA3W,EAAUxV,EAAQ,GAAK0V,GAAU1V,EAAQ,IAAIwV,QAAU,IAC9B5V,EAAK4V,EAAQvyC,MAEtCgpD,EAAY5U,GAAezX,EAAMkV,IACjCyX,GAAeA,EAAYjuF,QAAQ,GAAG,GAAM8gF,OACxC/e,EAeF,GAdA2X,GAAkBtd,EAAM8xB,SAAWnwD,GAAMrhC,IAAIglE,EAASiX,GAAa,CACjE99D,KAAM,UACNo5D,WAAW,EACXjjB,OAAQA,EACRinB,iBAAiB,EACjBsE,KAAMxH,EAAYwH,GAClBxa,QAAS,KACTnnC,MAAO,EACPkvD,SAAUA,EACViE,eAAgBA,EAChBpN,cAAeA,EACf8H,QAAS,GACR1mB,KAECkW,GACF,GAAIvnB,EAAO,EACTs9B,IAAe5xB,EAAM8xB,SAAW,QAC3B,GAAIhiF,KAASwkD,EAAO,GAAKu9B,GAE9B,YADAv9B,IAAS0L,EAAMsf,OAAShrB,SAGF,IAAfs9B,IACT5xB,EAAM8xB,SAAW,QAEd,GAAIhW,GAAgBhsE,EAEzB,GAAI+hF,GACDD,IAAe5xB,EAAM8xB,SAAW,QAiBjC,GAfAx9B,IAASunB,GAAkB,GAE3B/zE,EAAIy0E,GAAa,CACf1E,WAAW,EACXp5D,KAAM,cAEN0hE,KAAMtE,GAAmBlD,EAAYwH,GACrCtE,gBAAiBA,EAEjBwQ,QAAS,EACTz3B,OAAQA,GACP28B,GACHE,IAAgB3pF,EAAEgzE,EAAQvyC,MAAQkpD,GAElCnU,GAAkBtd,EAAM8xB,SAAWnwD,GAAMrhC,IAAIglE,EAASx9D,IACjD+zE,GAEE,IAAKvnB,EACV,YAFA4rB,EAAWlgB,EAAM8xB,SAAU/Z,GAQjC,IAFA/X,EAAMvC,IAAM,EACZ0iB,EAAOrwE,GAAO6oE,EAAYwH,IAASA,IAASrwE,EACvC5R,EAAI,EAAGA,EAAIonE,EAAQ5nE,OAAQQ,IAAK,CAcnC,GAZAszF,GADA1wF,EAASwkE,EAAQpnE,IACDy8D,OAASigB,GAAStV,GAASpnE,GAAGy8D,MAC9CqF,EAAMwqB,UAAUtsF,GAAKgzF,EAAW,CAAC,EACjC5W,GAAYkX,EAAO3uE,KAAOw3D,GAAY38E,QAAUq+E,KAEhD1zD,EAAQ0pE,IAAgBzsB,EAAUpnE,EAAI6zF,EAAYxoF,QAAQzI,GACtDg6E,IAA0G,KAA9FnsD,EAAS,IAAImsD,GAAW9jE,KAAKlW,EAAQ2wF,GAAeF,EAAWvxB,EAAO33C,EAAO0pE,KAC3F/xB,EAAMvC,IAAMD,EAAK,IAAI6yB,GAAUrwB,EAAMvC,IAAK38D,EAAQ6tB,EAAOhqB,KAAM,EAAG,EAAGgqB,EAAO/qB,OAAQ+qB,EAAQ,EAAGA,EAAO2iE,UACtG3iE,EAAOue,OAAO3rC,SAAQ,SAAUoD,GAC9BusF,EAASvsF,GAAQ64D,CACnB,IACA7uC,EAAO2iE,WAAa5rB,EAAc,KAE/BoV,GAAW2W,EACd,IAAK3pF,KAAKypF,EACJhX,GAASzyE,KAAO6mB,EAASsiE,GAAanpF,EAAGypF,EAAWvxB,EAAO33C,EAAOvnB,EAAQixF,IAC5EpjE,EAAO2iE,WAAa5rB,EAAc,GAElCwrB,EAASppF,GAAK01D,EAAKgzB,GAAcvwF,KAAK+/D,EAAOl/D,EAAQgH,EAAG,MAAOypF,EAAUzpF,GAAIugB,EAAO0pE,EAAa,EAAG7sB,EAAK+qB,cAI/GjwB,EAAMkyB,KAAOlyB,EAAMkyB,IAAIh0F,IAAM8hE,EAAM0kB,KAAK5jF,EAAQk/D,EAAMkyB,IAAIh0F,IACtD8zF,GAAiBhyB,EAAMvC,MACzBixB,GAAoB1uB,EACpBkW,EAAgBkY,aAAattF,EAAQowF,EAAUlxB,EAAM+qB,WAAW,IAEhE2G,GAAe1xB,EAAMpL,OACrB85B,GAAoB,GAEtB1uB,EAAMvC,KAAO0iB,IAAS7F,GAAYkX,EAAO3uE,IAAM,EACjD,CACA6iD,GAAeysB,GAA0BnyB,GACzCA,EAAMoyB,SAAWpyB,EAAMoyB,QAAQpyB,EACjC,CACAA,EAAMqyB,OAAStD,KAAQ7pB,EAAK4W,aAE5B9b,EAAM0rB,UAAYgC,EAClB1tB,EAAMmf,WAAanf,EAAMkyB,KAAOlyB,EAAMvC,OAASi0B,CACjD,EAuBAN,GAAqB,SAA4BhrF,EAAO45D,EAAO9hE,EAAG4C,EAAQwkE,GACxE,OAAOiT,EAAYnyE,GAASA,EAAMnG,KAAK+/D,EAAO9hE,EAAG4C,EAAQwkE,GAAWgT,EAAUlyE,KAAWA,EAAMmD,QAAQ,WAAak6E,GAAer9E,GAASA,CAC9I,EACAksF,GAAqB3X,GAAiB,iDACtC4X,IAAuBD,GAAqB,mDAAmDhxF,MAAM,KAO5FqgC,GAAqB,SAAU6wD,GAExC,SAAS7wD,EAAM2jC,EAASJ,EAAM5Q,EAAMm+B,GAClC,IAAInmF,EACgB,iBAAT44D,IACT5Q,EAAKlkD,SAAW80D,EAChBA,EAAO5Q,EACPA,EAAO,MAGT,IAYEy6B,EACA7wF,EACA2+E,EACAzlD,EACAtvB,EACA4qF,EACAC,EACAC,EAnBEC,GADJvmF,EAASkmF,EAAYvyF,KAAKiB,KAAMuxF,EAAcvtB,EAAO4X,GAAiB5X,GAAO5Q,IAASpzD,MAC7DgkE,KACvB90D,EAAWyiF,EAAYziF,SACvBouB,EAAQq0D,EAAYr0D,MACpBq9C,EAAkBgX,EAAYhX,gBAC9BwQ,EAAUwG,EAAYxG,QACtBxU,EAAYgb,EAAYhb,UACxBkF,EAAY8V,EAAY9V,UACxBxvD,EAAWslE,EAAYtlE,SACvBk3D,EAAgBoO,EAAYpO,cAC5ByD,EAAW2K,EAAY3K,SACvBtzB,EAAStoD,EAAOsoD,OAChB+5B,GAAiB1V,GAAS3T,IAAYwT,EAAcxT,GAAWkT,EAAUlT,EAAQ,IAAM,WAAYJ,GAAQ,CAACI,GAAWv1C,GAAQu1C,GAajI,GAJAh5D,EAAOuiF,SAAWF,EAAcjxF,OAASk9E,GAAS+T,GAAiB3U,GAAM,eAAiB1U,EAAU,qCAAsCkS,EAAQE,iBAAmB,GACrKprE,EAAOk+E,UAAY,GAEnBl+E,EAAO2lF,WAAapa,EAChBkF,GAAasP,GAAWxT,EAAgBzoE,IAAayoE,EAAgBr6C,GAAQ,CAS/E,GARA0mC,EAAO54D,EAAO44D,MACd6pB,EAAKziF,EAAO4yE,SAAW,IAAI2B,GAAS,CAClCpiE,KAAM,SACN8O,SAAUA,GAAY,CAAC,KAEtBm3D,OACHqK,EAAGn6B,OAASm6B,EAAG/R,IAAMpO,EAAuBtiE,GAC5CyiF,EAAGnR,OAAS,EACRb,EACFR,GAAawS,EAAG7pB,KAAK33C,SAAU,CAC7BxD,KAAM,SAERgzD,EAAUx7E,SAAQ,SAAU8uD,GAC1B,OAAO0+B,EAAGlkE,GAAG8jE,EAAet+B,EAAO,IACrC,QACK,CAGL,GAFAj5B,EAAIu3D,EAAcjxF,OAClBi1F,EAActG,EAAUvK,GAAWuK,GAAWlS,GAC1CzB,EAAU2T,GAEZ,IAAKvkF,KAAKukF,GACHiG,GAAmB/oF,QAAQzB,KAC9B8qF,IAAuBA,EAAqB,CAAC,GAC7CA,EAAmB9qF,GAAKukF,EAAQvkF,IAItC,IAAK5J,EAAI,EAAGA,EAAIk5B,EAAGl5B,IAAK,CAEtB,IAAK4J,KADL+0E,EAAO,CAAC,EACE3X,EACJqtB,GAAoBhpF,QAAQzB,GAAK,IACnC+0E,EAAK/0E,GAAKo9D,EAAKp9D,IAGnB+0E,EAAKwP,QAAU,EACfnE,IAAarL,EAAKqL,SAAWA,GAC7B0K,GAAsB/Y,GAAOgD,EAAM+V,GACnCF,EAAY/D,EAAczwF,GAE1B2+E,EAAKzsE,UAAYghF,GAAmBhhF,EAAUw+D,EAAuBtiE,GAASpO,EAAGw0F,EAAW/D,GAC5F9R,EAAKr+C,QAAU4yD,GAAmB5yD,EAAOowC,EAAuBtiE,GAASpO,EAAGw0F,EAAW/D,IAAkB,GAAKriF,EAAOmzE,QAChH4M,GAAiB,IAANj1D,GAAWylD,EAAKr+C,QAE9BlyB,EAAOmzE,OAASjhD,EAAQq+C,EAAKr+C,MAC7BlyB,EAAOsxE,QAAUp/C,EACjBq+C,EAAKr+C,MAAQ,GAEfuwD,EAAGlkE,GAAG6nE,EAAW7V,EAAM8V,EAAYz0F,EAAGw0F,EAAW/D,GACnD,CACAI,EAAG3+E,WAAaA,EAAWouB,EAAQ,EAAIlyB,EAAO4yE,SAAW,CAC3D,CACA9uE,GAAY9D,EAAO8D,SAASA,EAAW2+E,EAAG3+E,WAC5C,MACE9D,EAAO4yE,SAAW,EAcpB,OAZkB,IAAdrH,GAAuB5B,IACzByY,GAAoB9f,EAAuBtiE,GAC3C4pE,EAAgBkY,aAAaO,GAC7BD,GAAoB,GAEtB95B,GAAUqqB,GAAerqB,EAAQga,EAAuBtiE,KACpDuvE,IAAoBzrE,IAAa2sE,GAAazwE,EAAOsxE,SAAWxC,GAAOxmB,EAAOqL,QAAU0Y,EAAYkD,IAAoBiC,GAAsBlP,EAAuBtiE,KAA4B,WAAhBsoD,EAAOn2C,QAC1LnS,EAAO6xE,QAAS,KAEhB7xE,EAAO1I,OAAOyM,KAAK6S,IAAI,GAAIsb,KAE7BimD,GAAiB1E,GAAenR,EAAuBtiE,GAASm4E,GACzDn4E,CACT,CAtGA2B,EAAe0zB,EAAO6wD,GAuGtB,IAAIM,EAAUnxD,EAAM5hC,UA6NpB,OA5NA+yF,EAAQlvF,OAAS,SAAgBm7E,EAAW5C,EAAgBC,GAC1D,IAIE9nB,EACAkJ,EACAktB,EACApM,EACAwO,EACA9E,EACA/tB,EACAilB,EACAgJ,EAZE6E,EAAW7rF,KAAK++D,MAClB+sB,EAAO9rF,KAAKy9E,MACZ7uE,EAAM5O,KAAKg/D,KACXme,EAAQU,EAAYiO,EAAOjV,GAAYgH,GAAa,EAAIiO,EAAOjO,EAAYhH,EAAW,EAAIgH,EAU5F,GAAKjvE,GAEE,GAAIuuE,IAAUn9E,KAAKi9E,SAAWY,GAAa3C,IAAUl7E,KAAKi+E,UAAYj+E,KAAKi9E,QAAUj9E,KAAK4wF,UAAY5wF,KAAKo+E,OAAS,GAAMP,EAAY,EAAG,CAI9I,GAFAzqB,EAAO+pB,EACPa,EAAWh+E,KAAKg+E,SACZh+E,KAAK+8E,QAAS,CAGhB,GADAK,EAAgBxuE,EAAM5O,KAAKk9E,QACvBl9E,KAAK+8E,SAAW,GAAKc,EAAY,EACnC,OAAO79E,KAAK69E,UAA0B,IAAhBT,EAAsBS,EAAW5C,EAAgBC,GAsBzE,GApBA9nB,EAAO8mB,GAAOiD,EAAQC,GAElBD,IAAU2O,GAEZtC,EAAYxpF,KAAK+8E,QACjB3pB,EAAOxkD,KAEP46E,KAAerM,EAAQC,KACNoM,IAAcrM,EAAQC,IACrChqB,EAAOxkD,EACP46E,KAEFp2B,EAAOxkD,IAAQwkD,EAAOxkD,KAExBk4E,EAAS9mF,KAAKinF,OAAqB,EAAZuC,KAErBxC,EAAWhnF,KAAKmnF,OAChB/zB,EAAOxkD,EAAMwkD,GAEfw4B,EAAgB5O,GAAgBh9E,KAAKi9E,OAAQG,GACzChqB,IAASy4B,IAAa3Q,GAASl7E,KAAKi+E,SAEtC,OAAOj+E,KAELwpF,IAAcoC,IAChB5N,GAAYh+E,KAAKmnF,QAAUN,GAAmB7I,EAAU8I,IAEpD9mF,KAAKgkE,KAAKkoB,eAAkBpF,GAAW9mF,KAAKo/E,QAC9Cp/E,KAAKo/E,MAAQlE,EAAQ,EAErBl7E,KAAK0C,OAAOw3E,GAAOkD,EAAgBoM,IAAY,GAAMa,aAAajL,MAAQ,GAGhF,CACA,IAAKp/E,KAAKi+E,SAAU,CAClB,GAAIc,GAAkB/+E,KAAM69E,EAAY,EAAIA,EAAYzqB,EAAM8nB,EAAOD,GAGnE,OAFAj7E,KAAKi9E,OAAS,EAEPj9E,KAET,GAAI4O,IAAQ5O,KAAKg/D,KAEf,OAAOh/D,KAAK0C,OAAOm7E,EAAW5C,EAAgBC,EAElD,CAcA,IAbAl7E,KAAKi9E,OAASE,EACdn9E,KAAK++D,MAAQ3L,GACRpzD,KAAKu8E,MAAQv8E,KAAK68E,MACrB78E,KAAKu8E,KAAO,EAEZv8E,KAAK86E,MAAQ,GAEf96E,KAAK+4D,MAAQA,GAASiuB,GAAYhnF,KAAKknF,OAAO9zB,EAAOxkD,GACjD5O,KAAKmxF,QACPnxF,KAAK+4D,MAAQA,EAAQ,EAAIA,GAE3B3F,IAASy4B,IAAa5Q,GAAkB3nB,GAAUtzD,KAAM,WACxDs8D,EAAKt8D,KAAKu8D,IACHD,GACLA,EAAG1+D,EAAEm7D,EAAOuD,EAAGj5D,GACfi5D,EAAKA,EAAGoC,MAEVsf,GAAYA,EAASt7E,OAAOm7E,EAAY,EAAIA,GAAazqB,GAAQ0zB,GAAS,KAAY9I,EAAShf,KAAOjG,EAAOkiB,EAAgBC,IAAUl7E,KAAK4wF,WAAa5wF,KAAKo+E,OAASP,GACnK79E,KAAKwqF,YAAcvP,IACrB4C,EAAY,GAAK79E,KAAK4wF,UAAY5wF,KAAK4wF,SAASluF,OAAOm7E,GAAW,EAAM3C,GAExE5nB,GAAUtzD,KAAM,aAElBA,KAAK+8E,SAAWyM,IAAcoC,GAAiB5rF,KAAKgkE,KAAKmoB,WAAalR,GAAkBj7E,KAAK0zD,QAAUJ,GAAUtzD,KAAM,YAClHm9E,IAAUn9E,KAAKy9E,OAAUN,GAAUn9E,KAAKi9E,SAAWE,IACtDU,EAAY,GAAK79E,KAAK4wF,WAAa5wF,KAAKwqF,WAAaxqF,KAAK4wF,SAASluF,OAAOm7E,GAAW,GAAM,IAC1FA,IAAcjvE,KAASuuE,IAAUn9E,KAAKy9E,OAASz9E,KAAK68E,IAAM,IAAMM,GAASn9E,KAAK68E,IAAM,IAAMT,GAAkBp8E,KAAM,GAE9Gi7E,GAAoB4C,EAAY,IAAMgO,IAAc1O,IAAS0O,IAEhEv4B,GAAUtzD,KAAMm9E,IAAU2O,EAAO,aAAe,qBAAqB,GACrE9rF,KAAK4qF,SAAWzN,EAAQ2O,GAAQ9rF,KAAKw+E,YAAc,IAAMx+E,KAAK4qF,SAGpE,OAtwEyB,SAAkC9rB,EAAO+e,EAAW5C,EAAgBC,GAC7F,IAKE5e,EACAktB,EACAoC,EAPEiG,EAAY/yB,EAAM/F,MACpBA,EAAQ8kB,EAAY,IAAMA,KAAe/e,EAAM4d,QAAUyC,GAA6BrgB,KAAWA,EAAM+d,IAAM,GAAK/d,EAAMgd,IAAIe,IAAM,IAAqB,gBAAf/d,EAAMvhD,MAAyC,YAAfuhD,EAAMvhD,MAAsB,EAAI,EAExMwrE,EAAcjqB,EAAMoe,QACpBC,EAAQ,EAeV,GAXI4L,GAAejqB,EAAMie,UAEvBI,EAAQgB,GAAO,EAAGrf,EAAM2e,MAAOI,GAC/B2L,EAAYxM,GAAgBG,EAAO4L,GACnC6C,EAAgB5O,GAAgBle,EAAMme,OAAQ8L,GAC9CjqB,EAAMmoB,OAAqB,EAAZuC,IAAkBzwB,EAAQ,EAAIA,GACzCywB,IAAcoC,IAChBiG,EAAY,EAAI94B,EAChB+F,EAAMkF,KAAKkoB,eAAiBptB,EAAMmf,UAAYnf,EAAMurB,eAGpDtxB,IAAU84B,GAAa3W,GAASpc,EAAMsf,SAAWvH,IAAagH,GAAa/e,EAAMsf,OAAQ,CAC3F,IAAKtf,EAAMmf,UAAYc,GAAkBjgB,EAAO+e,EAAW3C,EAAOD,GAEhE,OAYF,IAVA2Q,EAAgB9sB,EAAMsf,OACtBtf,EAAMsf,OAASP,IAAc5C,EAAiBpE,EAAW,GAEzDoE,IAAmBA,EAAiB4C,IAAc+N,GAElD9sB,EAAM/F,MAAQA,EACd+F,EAAMqyB,QAAUp4B,EAAQ,EAAIA,GAC5B+F,EAAMC,MAAQ,EACdD,EAAMme,OAASE,EACf7gB,EAAKwC,EAAMvC,IACJD,GACLA,EAAG1+D,EAAEm7D,EAAOuD,EAAGj5D,GACfi5D,EAAKA,EAAGoC,MAEVI,EAAM8xB,UAAY/S,EAAY,GAAK/e,EAAM8xB,SAASluF,OAAOm7E,GAAW,GAAM,GAC1E/e,EAAM0rB,YAAcvP,GAAkB3nB,GAAUwL,EAAO,YACvDqe,GAASre,EAAMie,UAAY9B,GAAkBnc,EAAMpL,QAAUJ,GAAUwL,EAAO,aACzE+e,GAAa/e,EAAM2e,OAASI,EAAY,IAAM/e,EAAM/F,QAAUA,IACjEA,GAASqjB,GAAkBtd,EAAO,GAC7Bmc,IACH3nB,GAAUwL,EAAO/F,EAAQ,aAAe,qBAAqB,GAC7D+F,EAAM8rB,OAAS9rB,EAAM8rB,SAG3B,MAAY9rB,EAAMsf,SAChBtf,EAAMsf,OAASP,EAEnB,CAwnEIiU,CAAyB9xF,KAAM69E,EAAW5C,EAAgBC,GA2F5D,OAAOl7E,IACT,EACA4xF,EAAQxtB,QAAU,WAChB,OAAOpkE,KAAK2tF,QACd,EACAiE,EAAQvH,WAAa,WAInB,OAHArqF,KAAKu8D,IAAMv8D,KAAKgxF,IAAMhxF,KAAK4wF,SAAW5wF,KAAKwqF,UAAYxqF,KAAK86E,MAAQ96E,KAAK+4D,MAAQ,EACjF/4D,KAAKspF,UAAY,GACjBtpF,KAAKg+E,UAAYh+E,KAAKg+E,SAASqM,aACxBiH,EAAYzyF,UAAUwrF,WAAWtrF,KAAKiB,KAC/C,EACA4xF,EAAQpO,KAAO,SAAcpf,EAASJ,GAIpC,QAHa,IAATA,IACFA,EAAO,SAEJI,GAAaJ,GAAiB,QAATA,GAExB,OADAhkE,KAAK86E,MAAQ96E,KAAKu8D,IAAM,EACjBv8D,KAAK0zD,OAAS4vB,GAAWtjF,MAAQA,KAE1C,GAAIA,KAAKg+E,SAAU,CACjB,IAAI8N,EAAO9rF,KAAKg+E,SAASR,gBAKzB,OAJAx9E,KAAKg+E,SAASkP,aAAa9oB,EAASJ,EAAMwpB,KAA0D,IAArCA,GAAkBxpB,KAAK2S,WAAoBoQ,QAAUzD,GAAWtjF,MAE/HA,KAAK0zD,QAAUo4B,IAAS9rF,KAAKg+E,SAASR,iBAAmB6B,GAAar/E,KAAMA,KAAKg/D,KAAOh/D,KAAKg+E,SAASP,MAAQqO,EAAM,EAAG,GAEhH9rF,IACT,CACA,IAIE+xF,EACAC,EACAC,EACA3wF,EACAsF,EACA01D,EACAt/D,EAVEywF,EAAgBztF,KAAK2tF,SACvBuE,EAAiB9tB,EAAUv1C,GAAQu1C,GAAWqpB,EAC9C0E,EAAkBnyF,KAAKspF,UACvB8I,EAAUpyF,KAAKu8D,IAQjB,KAAMyH,GAAiB,QAATA,IAx9ED,SAAsBquB,EAAIC,GAGvC,IAFA,IAAIt1F,EAAIq1F,EAAG71F,OACT6sB,EAAQrsB,IAAMs1F,EAAG91F,OACZ6sB,GAASrsB,KAAOq1F,EAAGr1F,KAAOs1F,EAAGt1F,KACpC,OAAOA,EAAI,CACb,CAm9EmCu1F,CAAa9E,EAAeyE,GAE3D,MADS,QAATluB,IAAmBhkE,KAAKu8D,IAAM,GACvB+mB,GAAWtjF,MAepB,IAbA+xF,EAAmB/xF,KAAKgxF,IAAMhxF,KAAKgxF,KAAO,GAC7B,QAAThtB,IAEEoT,EAAUpT,KACZp9D,EAAI,CAAC,EACLozE,GAAahW,GAAM,SAAUvgE,GAC3B,OAAOmD,EAAEnD,GAAQ,CACnB,IACAugE,EAAOp9D,GAETo9D,EAxSgB,SAA2BI,EAASJ,GACtD,IAEE2X,EACA/0E,EACA5J,EACA8nE,EALE8U,EAAUxV,EAAQ,GAAK0V,GAAU1V,EAAQ,IAAIwV,QAAU,EACzD4Y,EAAkB5Y,GAAWA,EAAQ9U,QAKvC,IAAK0tB,EACH,OAAOxuB,EAGT,IAAKp9D,KADL+0E,EAAOhD,GAAO,CAAC,EAAG3U,GACRwuB,EACR,GAAI5rF,KAAK+0E,EAGP,IADA3+E,GADA8nE,EAAU0tB,EAAgB5rF,GAAGxG,MAAM,MACvB5D,OACLQ,KACL2+E,EAAK7W,EAAQ9nE,IAAM2+E,EAAK/0E,GAI9B,OAAO+0E,CACT,CAmRW8W,CAAkBhF,EAAezpB,IAE1ChnE,EAAIywF,EAAcjxF,OACXQ,KACL,IAAKk1F,EAAe7pF,QAAQolF,EAAczwF,IAUxC,IAAK4J,KATLorF,EAAYG,EAAgBn1F,GACf,QAATgnE,GACF+tB,EAAiB/0F,GAAKgnE,EACtB1iE,EAAQ0wF,EACRC,EAAoB,CAAC,IAErBA,EAAoBF,EAAiB/0F,GAAK+0F,EAAiB/0F,IAAM,CAAC,EAClEsE,EAAQ0iE,GAEA1iE,GACRg7D,EAAK01B,GAAaA,EAAUprF,MAEpB,SAAU01D,EAAGj5D,IAAuB,IAAjBi5D,EAAGj5D,EAAEmgF,KAAK58E,IACjCm1E,GAAsB/7E,KAAMs8D,EAAI,cAE3B01B,EAAUprF,IAEO,QAAtBqrF,IACFA,EAAkBrrF,GAAK,GAO/B,OAFA5G,KAAKi+E,WAAaj+E,KAAKu8D,KAAO61B,GAAW9O,GAAWtjF,MAE7CA,IACT,EACAygC,EAAM9W,GAAK,SAAYy6C,EAASJ,GAC9B,OAAO,IAAIvjC,EAAM2jC,EAASJ,EAAMnkE,UAAU,GAC5C,EACA4gC,EAAMrb,KAAO,SAAcg/C,EAASJ,GAClC,OAAO,IAAIvjC,EAAM2jC,EAASkW,GAAWz6E,UAAW,GAClD,EACA4gC,EAAMwqD,YAAc,SAAqB3tD,EAAO/xB,EAAUyB,EAAQ0rE,GAChE,OAAO,IAAIj4C,EAAMl1B,EAAU,EAAG,CAC5BovE,iBAAiB,EACjBsE,MAAM,EACNtI,WAAW,EACXr5C,MAAOA,EACPkwC,WAAYjiE,EACZmnF,kBAAmBnnF,EACnB+/E,iBAAkBt+E,EAClB2lF,wBAAyB3lF,EACzBq2E,cAAe3K,GAEnB,EACAj4C,EAAM7X,OAAS,SAAgBw7C,EAAS2mB,EAAUC,GAChD,OAAO,IAAIvqD,EAAM2jC,EAASkW,GAAWz6E,UAAW,GAClD,EACA4gC,EAAMrhC,IAAM,SAAaglE,EAASJ,GAGhC,OAFAA,EAAK90D,SAAW,EAChB80D,EAAK+kB,cAAgB/kB,EAAKwb,OAAS,GAC5B,IAAI/+C,EAAM2jC,EAASJ,EAC5B,EACAvjC,EAAMysD,aAAe,SAAsB9oB,EAAS9iE,EAAOgsF,GACzD,OAAOtY,EAAgBkY,aAAa9oB,EAAS9iE,EAAOgsF,EACtD,EACO7sD,CACT,CAtUgC,CAsU9BooD,IACFxN,GAAa56C,GAAM5hC,UAAW,CAC5B8uF,SAAU,GACV7S,MAAO,EACP8V,SAAU,EACVI,IAAK,EACLE,QAAS,IAUXlX,GAAa,uCAAuC,SAAUv2E,GAC5Dg9B,GAAMh9B,GAAQ,WACZ,IAAIoqF,EAAK,IAAIlO,GACX3yE,EAASozE,GAAOrhF,KAAKc,UAAW,GAElC,OADAmN,EAAOiU,OAAgB,kBAATxd,EAA2B,EAAI,EAAG,EAAG,GAC5CoqF,EAAGpqF,GAAM1D,MAAM8tF,EAAI7gF,EAC5B,CACF,IAOA,IAAI4iF,GAAe,SAAsBhwF,EAAQ05D,EAAUp0D,GACvD,OAAOtF,EAAO05D,GAAYp0D,CAC5B,EACAyqF,GAAc,SAAqB/vF,EAAQ05D,EAAUp0D,GACnD,OAAOtF,EAAO05D,GAAUp0D,EAC1B,EACAwqF,GAAuB,SAA8B9vF,EAAQ05D,EAAUp0D,EAAOqY,GAC5E,OAAO3d,EAAO05D,GAAU/7C,EAAK8xE,GAAInqF,EACnC,EACA0tF,GAAmB,SAA0BhzF,EAAQ05D,EAAUp0D,GAC7D,OAAOtF,EAAOyO,aAAairD,EAAUp0D,EACvC,EACA0jF,GAAa,SAAoBhpF,EAAQ05D,GACvC,OAAO+d,EAAYz3E,EAAO05D,IAAaq2B,GAAcpY,EAAa33E,EAAO05D,KAAc15D,EAAOyO,aAAeukF,GAAmBhD,EAClI,EACAE,GAAe,SAAsB/2B,EAAOx7C,GAC1C,OAAOA,EAAKne,IAAIme,EAAKtN,EAAGsN,EAAK3W,EAAGuI,KAAKgT,MAAkC,KAA3B5E,EAAK7Z,EAAI6Z,EAAKjd,EAAIy4D,IAAkB,IAAOx7C,EACzF,EACAsyE,GAAiB,SAAwB92B,EAAOx7C,GAC9C,OAAOA,EAAKne,IAAIme,EAAKtN,EAAGsN,EAAK3W,KAAM2W,EAAK7Z,EAAI6Z,EAAKjd,EAAIy4D,GAAQx7C,EAC/D,EACA6xE,GAAuB,SAA8Br2B,EAAOx7C,GAC1D,IAAI++C,EAAK/+C,EAAKg/C,IACZ74D,EAAI,GACN,IAAKq1D,GAASx7C,EAAKtW,EAEjBvD,EAAI6Z,EAAKtW,OACJ,GAAc,IAAV8xD,GAAex7C,EAAKzf,EAE7B4F,EAAI6Z,EAAKzf,MACJ,CACL,KAAOw+D,GACL54D,EAAI44D,EAAG11D,GAAK01D,EAAG9+D,EAAI8+D,EAAG9+D,EAAE8+D,EAAG54D,EAAI44D,EAAGh8D,EAAIy4D,GAAS5pD,KAAKgT,MAA8B,KAAvBm6C,EAAG54D,EAAI44D,EAAGh8D,EAAIy4D,IAAkB,KAASr1D,EAEpG44D,EAAKA,EAAGoC,MAEVh7D,GAAK6Z,EAAKjd,CACZ,CACAid,EAAKne,IAAIme,EAAKtN,EAAGsN,EAAK3W,EAAGlD,EAAG6Z,EAC9B,EACAs1E,GAAoB,SAA2B95B,EAAOx7C,GAEpD,IADA,IAAI++C,EAAK/+C,EAAKg/C,IACPD,GACLA,EAAG1+D,EAAEm7D,EAAOuD,EAAGj5D,GACfi5D,EAAKA,EAAGoC,KAEZ,EACAo0B,GAAqB,SAA4BvD,EAAUzwB,EAAOl/D,EAAQ05D,GAGxE,IAFA,IACEv3C,EADEu6C,EAAKt8D,KAAKu8D,IAEPD,GACLv6C,EAAOu6C,EAAGoC,MACVpC,EAAG11D,IAAM0yD,GAAYgD,EAAGizB,SAASA,EAAUzwB,EAAOl/D,GAClD08D,EAAKv6C,CAET,EACAgxE,GAAoB,SAA2Bz5B,GAI7C,IAHA,IACE05B,EACAjxE,EAFEu6C,EAAKt8D,KAAKu8D,IAGPD,GACLv6C,EAAOu6C,EAAGoC,MACNpC,EAAG11D,IAAM0yD,IAAagD,EAAG22B,IAAM32B,EAAG22B,KAAO35B,EAC3CyiB,GAAsB/7E,KAAMs8D,EAAI,OACtBA,EAAGsI,MACbouB,EAA2B,GAE7B12B,EAAKv6C,EAEP,OAAQixE,CACV,EACAE,GAAsB,SAA6BtzF,EAAQ05D,EAAUp0D,EAAOqY,GAC1EA,EAAK41E,KAAKvzF,EAAQ05D,EAAU/7C,EAAK/f,EAAEuB,KAAKwe,EAAKuhD,MAAO55D,EAAOqY,EAAK61E,IAAK71E,EACvE,EACA0zE,GAA4B,SAAmCv9B,GAO7D,IANA,IACE3xC,EACAsxE,EACArkE,EACAtN,EAJE46C,EAAK5I,EAAO6I,IAMTD,GAAI,CAGT,IAFAv6C,EAAOu6C,EAAGoC,MACV20B,EAAMrkE,EACCqkE,GAAOA,EAAIl0B,GAAK7C,EAAG6C,IACxBk0B,EAAMA,EAAI30B,OAERpC,EAAG6f,MAAQkX,EAAMA,EAAIlX,MAAQz6D,GAC/B46C,EAAG6f,MAAMzd,MAAQpC,EAEjBttC,EAAQstC,GAENA,EAAGoC,MAAQ20B,GACbA,EAAIlX,MAAQ7f,EAEZ56C,EAAO46C,EAETA,EAAKv6C,CACP,CACA2xC,EAAO6I,IAAMvtC,CACf,EAESmgE,GAAyB,WAClC,SAASA,EAAUptE,EAAMniB,EAAQynC,EAAM+K,EAAOsxB,EAAQ1iB,EAAUzjC,EAAM+kC,EAAQ8tC,GAC5EpwF,KAAKiQ,EAAIrQ,EACTI,KAAK0D,EAAI0uC,EACTpyC,KAAKM,EAAIojE,EACT1jE,KAAK4G,EAAIygC,EACTrnC,KAAKpC,EAAIojD,GAAY8uC,GACrB9vF,KAAKqD,EAAIka,GAAQvd,KACjBA,KAAKZ,IAAMkjD,GAAUstC,GACrB5vF,KAAKm/D,GAAKixB,GAAY,EACtBpwF,KAAK0+D,MAAQ38C,EACTA,IACFA,EAAKo6D,MAAQn8E,KAEjB,CAWA,OAVcmvF,EAAUtwF,UAChB0wF,SAAW,SAAkBn+D,EAAM0tC,EAAOl/D,GAChDI,KAAKmzF,KAAOnzF,KAAKmzF,MAAQnzF,KAAKZ,IAE9BY,KAAKZ,IAAM8zF,GACXlzF,KAAKxC,EAAI4zB,EACTpxB,KAAKozF,GAAKxzF,EAEVI,KAAK8+D,MAAQA,CACf,EACOqwB,CACT,CA1BoC,GA4BpCnV,GAAaP,GAAiB,uOAAuO,SAAUh2E,GAC7Q,OAAOy1E,GAAez1E,GAAQ,CAChC,IACA80E,GAAStL,SAAWsL,GAAS7vD,UAAY+X,GACzC83C,GAAS+a,aAAe/a,GAASgb,YAAc5T,GAC/C3K,EAAkB,IAAI2K,GAAS,CAC7BmL,cAAc,EACdz+D,SAAUqqD,EACV4F,oBAAoB,EACpB36D,GAAI,OACJm8D,mBAAmB,IAErBxH,EAAQyY,aAAetJ,GAOvB,IAAIhsB,GAAQ,CACVn5B,eAAgB,WACd,IAAK,IAAIhc,EAAQzkB,UAAUrD,OAAQsE,EAAO,IAAIhF,MAAMwoB,GAAQE,EAAQ,EAAGA,EAAQF,EAAOE,IACpF1jB,EAAK0jB,GAAS3kB,UAAU2kB,GAE1B1jB,EAAKT,SAAQ,SAAUsW,GACrB,OAnoEY,SAAuBA,GAGrC,IAAIlT,GAFJkT,GAAUA,EAAOlT,MAAQkT,EAAgB,SAAKA,GAE5BlT,KAChB+vF,EAASnc,EAAY1gE,GACrB88E,EAAShwF,IAAS+vF,GAAU78E,EAAOb,KAAO,WACxC9V,KAAKgsC,OAAS,EAChB,EAAIr1B,EAEJ+8E,EAAmB,CACjB59E,KAAMmjE,GACNv2E,OAAQmwF,GACRz6E,IAAKk3E,GACL9L,KAAMuP,GACNxD,SAAUuD,GACV7C,QAAS,GAEX0D,EAAU,CACRxvB,WAAY,EACZhlE,IAAK,EACL4lE,UAAW6jB,GACX9jB,QAAS,CAAC,EACVxxC,SAAU,GAGd,GADAotD,KACI/pE,IAAW88E,EAAQ,CACrB,GAAIpa,GAAS51E,GACX,OAEF43E,GAAaoY,EAAQpY,GAAaI,GAAe9kE,EAAQ+8E,GAAmBC,IAE5Ehb,GAAO8a,EAAO50F,UAAW85E,GAAO+a,EAAkBjY,GAAe9kE,EAAQg9E,KAEzEta,GAASoa,EAAOpsD,KAAO5jC,GAAQgwF,EAC3B98E,EAAOwtD,aACTqV,GAAgB9zE,KAAK+tF,GACrBva,GAAez1E,GAAQ,GAEzBA,GAAiB,QAATA,EAAiB,MAAQA,EAAKhG,OAAO,GAAGf,cAAgB+G,EAAK2f,OAAO,IAAM,QACpF,CACA41D,GAAWv1E,EAAMgwF,GACjB98E,EAAO2c,UAAY3c,EAAO2c,SAASslD,GAAM6a,EAAQtE,GACnD,CAylEWyE,CAAcj9E,EACvB,GACF,EACAqnE,SAAU,SAAkBha,GAC1B,OAAO,IAAI2b,GAAS3b,EACtB,EACAupB,YAAa,SAAqBnpB,EAASkpB,GACzC,OAAOtY,EAAgBuY,YAAYnpB,EAASkpB,EAC9C,EACAuG,YAAa,SAAqBj0F,EAAQ05D,EAAUhI,EAAMiM,GACxD6Z,EAAUx3E,KAAYA,EAASivB,GAAQjvB,GAAQ,IAE/C,IAAIwiD,EAAS03B,GAAUl6E,GAAU,CAAC,GAAGT,IACnC6H,EAASsqD,EAAO8pB,GAAeD,GAEjC,MADS,WAAT7pB,IAAsBA,EAAO,IACrB1xD,EAAmB05D,EAEvBtyD,GAAQqyE,GAAS/f,IAAa+f,GAAS/f,GAAUn6D,KAAOijD,GAAQxiD,EAAQ05D,EAAUhI,EAAMiM,IAFtD,SAAUjE,EAAUhI,EAAMiM,GAC9D,OAAOv2D,GAAQqyE,GAAS/f,IAAa+f,GAAS/f,GAAUn6D,KAAOijD,GAAQxiD,EAAQ05D,EAAUhI,EAAMiM,GACjG,EAFiB39D,CAGnB,EACAk0F,YAAa,SAAqBl0F,EAAQ05D,EAAUhI,GAElD,IADA1xD,EAASivB,GAAQjvB,IACNpD,OAAS,EAAG,CACrB,IAAIu3F,EAAUn0F,EAAOxD,KAAI,SAAU6T,GAC/B,OAAO2oE,GAAKkb,YAAY7jF,EAAGqpD,EAAUhI,EACvC,IACAp7B,EAAI69D,EAAQv3F,OACd,OAAO,SAAU0I,GAEf,IADA,IAAIlI,EAAIk5B,EACDl5B,KACL+2F,EAAQ/2F,GAAGkI,EAEf,CACF,CACAtF,EAASA,EAAO,IAAM,CAAC,EACvB,IAAI6zF,EAASpa,GAAS/f,GACpB/pC,EAAQuqD,GAAUl6E,GAClBgH,EAAI2oB,EAAMqqD,UAAYrqD,EAAMqqD,QAAQ9U,SAAW,CAAC,GAAGxL,IAAaA,EAEhEhX,EAASmxC,EAAS,SAAUvuF,GAC1B,IAAI0B,EAAI,IAAI6sF,EACZre,EAAY7Y,IAAM,EAClB31D,EAAEkP,KAAKlW,EAAQ0xD,EAAOpsD,EAAQosD,EAAOpsD,EAAOkwE,EAAa,EAAG,CAACx1E,IAC7DgH,EAAElE,OAAO,EAAGkE,GACZwuE,EAAY7Y,KAAOs2B,GAAkB,EAAGzd,EAC1C,EAAI7lD,EAAMnwB,IAAIQ,EAAQgH,GACxB,OAAO6sF,EAASnxC,EAAS,SAAUp9C,GACjC,OAAOo9C,EAAO1iD,EAAQgH,EAAG0qD,EAAOpsD,EAAQosD,EAAOpsD,EAAOqqB,EAAO,EAC/D,CACF,EACAykE,WAAY,SAAoB5vB,GAC9B,OAAO4Q,EAAgBuY,YAAYnpB,GAAS,GAAM5nE,OAAS,CAC7D,EACA6vB,SAAU,SAAkBnnB,GAE1B,OADAA,GAASA,EAAM2jB,OAAS3jB,EAAM2jB,KAAOi4D,GAAW57E,EAAM2jB,KAAM6tD,EAAU7tD,OAC/D2yD,GAAW9E,EAAWxxE,GAAS,CAAC,EACzC,EACAyR,OAAQ,SAAgBzR,GACtB,OAAOs2E,GAAWlF,EAASpxE,GAAS,CAAC,EACvC,EACA+uF,eAAgB,SAAwBl4D,GACtC,IAAIt4B,EAAOs4B,EAAMt4B,KACfP,EAAS64B,EAAM74B,OACf0E,EAAUm0B,EAAMn0B,QAChBykB,EAAW0P,EAAM1P,SACjB6nE,EAAiBn4D,EAAMm4D,gBACxBtsF,GAAW,IAAIxH,MAAM,KAAKC,SAAQ,SAAU8zF,GAC3C,OAAOA,IAAe9a,GAAS8a,KAAgB5b,GAAS4b,IAAerb,GAAMr1E,EAAO,oBAAsB0wF,EAAa,WACzH,IACA7a,GAAS71E,GAAQ,SAAU2gE,EAASJ,EAAM6pB,GACxC,OAAO3qF,EAAO2rB,GAAQu1C,GAAUiX,GAAarX,GAAQ,CAAC,EAAG33C,GAAWwhE,EACtE,EACIqG,IACFvU,GAAS9gF,UAAU4E,GAAQ,SAAU2gE,EAASJ,EAAMjlD,GAClD,OAAO/e,KAAKoY,IAAIkhE,GAAS71E,GAAM2gE,EAASoT,EAAUxT,GAAQA,GAAQjlD,EAAWilD,IAAS,CAAC,EAAGhkE,MAAO+e,EACnG,EAEJ,EACAq1E,aAAc,SAAsB3wF,EAAMolB,GACxC29D,GAAS/iF,GAAQq9E,GAAWj4D,EAC9B,EACAwrE,UAAW,SAAmBxrE,EAAMu+D,GAClC,OAAOvnF,UAAUrD,OAASskF,GAAWj4D,EAAMu+D,GAAeZ,EAC5D,EACAuG,QAAS,SAAiBprE,GACxB,OAAOqzD,EAAgB+X,QAAQprE,EACjC,EACA2yE,WAAY,SAAoBtwB,EAAMuwB,QACvB,IAATvwB,IACFA,EAAO,CAAC,GAEV,IACE13D,EACAyV,EAFE8rE,EAAK,IAAIlO,GAAS3b,GAStB,IANA6pB,EAAG/P,kBAAoBrG,EAAYzT,EAAK8Z,mBACxC9I,EAAgB5mE,OAAOy/E,GACvBA,EAAG/R,IAAM,EAET+R,EAAG9uB,MAAQ8uB,EAAG5Q,OAASjI,EAAgBjW,MACvCzyD,EAAQ0oE,EAAgB+R,OACjBz6E,GACLyV,EAAOzV,EAAMoyD,OACT61B,IAA0BjoF,EAAM0yD,MAAQ1yD,aAAiBm0B,IAASn0B,EAAM03D,KAAKwJ,aAAelhE,EAAMqhF,SAAS,IAC7GtP,GAAewP,EAAIvhF,EAAOA,EAAMowE,OAASpwE,EAAMiyE,QAEjDjyE,EAAQyV,EAGV,OADAs8D,GAAerJ,EAAiB6Y,EAAI,GAC7BA,CACT,EACA7oB,MAAO,CACLwvB,KA72EK,SAASA,EAAK5nE,EAAK5K,EAAK9c,GAE7B,IAAIuvF,EAAQzyE,EAAM4K,EAClB,OAAOmrD,GAASnrD,GAAO01D,GAAW11D,EAAK4nE,EAAK,EAAG5nE,EAAIpwB,QAASwlB,GAAOk+D,GAAmBh7E,GAAO,SAAUA,GACrG,OAAQuvF,GAASvvF,EAAQ0nB,GAAO6nE,GAASA,EAAQ7nE,CACnD,GACF,EAw2EE8nE,SAv2ES,SAASA,EAAS9nE,EAAK5K,EAAK9c,GACrC,IAAIuvF,EAAQzyE,EAAM4K,EAChB+nE,EAAgB,EAARF,EACV,OAAO1c,GAASnrD,GAAO01D,GAAW11D,EAAK8nE,EAAS,EAAG9nE,EAAIpwB,OAAS,GAAIwlB,GAAOk+D,GAAmBh7E,GAAO,SAAUA,GAE7G,OAAO0nB,IADP1nB,GAASyvF,GAASzvF,EAAQ0nB,GAAO+nE,GAASA,GAAS,GAC7BF,EAAQE,EAAQzvF,EAAQA,EAChD,GACF,EAi2EE07E,WAAYA,GACZxxE,OAAQA,GACRwyE,KAAMA,GACNgT,UA13EU,SAAmBhoE,EAAK5K,EAAK9c,GACvC,OAAOu9E,GAAS71D,EAAK5K,EAAK,EAAG,EAAG9c,EAClC,EAy3EEi7E,QAASA,GACT0U,MAxiFM,SAAejoE,EAAK5K,EAAK9c,GAC/B,OAAOg7E,GAAmBh7E,GAAO,SAAUqoB,GACzC,OAAO4wD,GAAOvxD,EAAK5K,EAAKuL,EAC1B,GACF,EAqiFEu3D,WAAYA,GACZj2D,QAASA,GACT4zD,SAAUA,GACVqS,KA/4EK,WACL,IAAK,IAAIj0F,EAAOhB,UAAUrD,OAAQu4F,EAAY,IAAIj5F,MAAM+E,GAAOE,EAAO,EAAGA,EAAOF,EAAME,IACpFg0F,EAAUh0F,GAAQlB,UAAUkB,GAE9B,OAAO,SAAUmE,GACf,OAAO6vF,EAAUhuE,QAAO,SAAUwG,EAAGrmB,GACnC,OAAOA,EAAEqmB,EACX,GAAGroB,EACL,CACF,EAu4EE8vF,QAt4EQ,SAAiB5jE,EAAMkgC,GAC/B,OAAO,SAAUpsD,GACf,OAAOksB,EAAKigC,WAAWnsD,KAAWosD,GAAQ6uB,GAAQj7E,GACpD,CACF,EAm4EE+vF,YAn1EY,SAASA,EAAY7iD,EAAOgqB,EAAKqnB,EAAUyR,GACvD,IAAI9jE,EAAOxT,MAAMw0B,EAAQgqB,GAAO,EAAI,SAAUx1D,GAC5C,OAAQ,EAAIA,GAAKwrC,EAAQxrC,EAAIw1D,CAC/B,EACA,IAAKhrC,EAAM,CACT,IAEExqB,EACA5J,EACAm4F,EACAj/D,EACAk/D,EANE1+E,EAAW0gE,EAAUhlC,GACvBijD,EAAS,CAAC,EAOZ,IADa,IAAb5R,IAAsByR,EAAS,KAAOzR,EAAW,MAC7C/sE,EACF07B,EAAQ,CACNxrC,EAAGwrC,GAELgqB,EAAM,CACJx1D,EAAGw1D,QAEA,GAAI2b,GAAS3lC,KAAW2lC,GAAS3b,GAAM,CAI5C,IAHA+4B,EAAgB,GAChBj/D,EAAIkc,EAAM51C,OACV44F,EAAKl/D,EAAI,EACJl5B,EAAI,EAAGA,EAAIk5B,EAAGl5B,IACjBm4F,EAAczvF,KAAKuvF,EAAY7iD,EAAMp1C,EAAI,GAAIo1C,EAAMp1C,KAErDk5B,IACA9E,EAAO,SAAcxqB,GACnBA,GAAKsvB,EACL,IAAIl5B,EAAImS,KAAKyd,IAAIwoE,IAAMxuF,GACvB,OAAOuuF,EAAcn4F,GAAG4J,EAAI5J,EAC9B,EACAymF,EAAWrnB,CACb,MAAY84B,IACV9iD,EAAQumC,GAAOZ,GAAS3lC,GAAS,GAAK,CAAC,EAAGA,IAE5C,IAAK+iD,EAAe,CAClB,IAAKvuF,KAAKw1D,EACRkzB,GAAcvwF,KAAKs2F,EAAQjjD,EAAOxrC,EAAG,MAAOw1D,EAAIx1D,IAElDwqB,EAAO,SAAcxqB,GACnB,OAAOisF,GAAkBjsF,EAAGyuF,KAAY3+E,EAAW07B,EAAMxrC,EAAIwrC,EAC/D,CACF,CACF,CACA,OAAO8tC,GAAmBuD,EAAUryD,EACtC,EAqyEEuvD,QAASA,IAEX2U,QAAS7c,GACT8c,QAASjc,GACTkc,OAAQtW,GACR2P,WAAYlP,GAASkP,WACrBjnF,QAASyxE,GACToc,eAAgBzgB,EAChBx0C,KAAM,CACJ2uD,UAAWA,GACXuG,QAAS1c,GACTv4C,MAAOA,GACPk/C,SAAUA,GACVkJ,UAAWA,GACX8M,SAAU7b,GACViC,sBAAuBA,GACvB6Z,mBAAoB,SAA4B1wF,GAC9C,OAAO6vE,EAAsB7vE,CAC/B,IAGJ80E,GAAa,+CAA+C,SAAUv2E,GACpE,OAAOg2D,GAAMh2D,GAAQg9B,GAAMh9B,EAC7B,IACAy7E,GAAQ9mE,IAAIunE,GAASkP,YACrBzZ,EAAc3b,GAAM9vC,GAAG,CAAC,EAAG,CACzBza,SAAU,IAGZ,IAAI2mF,GAAsB,SAA6BpoE,EAAQ4Z,GAE3D,IADA,IAAIi1B,EAAK7uC,EAAO8uC,IACTD,GAAMA,EAAG11D,IAAMygC,GAAQi1B,EAAG22B,KAAO5rD,GAAQi1B,EAAG+yB,KAAOhoD,GACxDi1B,EAAKA,EAAGoC,MAEV,OAAOpC,CACT,EAoBAw5B,GAAuB,SAA8BryF,EAAM8rF,GACzD,MAAO,CACL9rF,KAAMA,EACNwsF,QAAS,EAETn6E,KAAM,SAAclW,EAAQokE,EAAMlF,GAChCA,EAAMoyB,QAAU,SAAUpyB,GACxB,IAAIxgC,EAAM13B,EASV,GARIwwE,EAAUpT,KACZ1lC,EAAO,CAAC,EACR07C,GAAahW,GAAM,SAAUvgE,GAC3B,OAAO66B,EAAK76B,GAAQ,CACtB,IAEAugE,EAAO1lC,GAELixD,EAAU,CAEZ,IAAK3oF,KADL03B,EAAO,CAAC,EACE0lC,EACR1lC,EAAK13B,GAAK2oF,EAASvrB,EAAKp9D,IAE1Bo9D,EAAO1lC,CACT,EAzCQ,SAAuBwgC,EAAOi3B,GAC5C,IACEnvF,EACA5J,EACAs/D,EAHE8H,EAAUtF,EAAM6uB,SAIpB,IAAK/mF,KAAKmvF,EAER,IADA/4F,EAAIonE,EAAQ5nE,OACLQ,MACLs/D,EAAKwC,EAAMwqB,UAAUtsF,GAAG4J,MACb01D,EAAKA,EAAGj5D,KACbi5D,EAAGC,MAELD,EAAKu5B,GAAoBv5B,EAAI11D,IAE/B01D,GAAMA,EAAGizB,UAAYjzB,EAAGizB,SAASwG,EAAUnvF,GAAIk4D,EAAOsF,EAAQpnE,GAAI4J,GAI1E,CAwBQovF,CAAcl3B,EAAOkF,EACvB,CACF,EAEJ,EAES4U,GAAOnf,GAAMn5B,eAAe,CACrC78B,KAAM,OACNqS,KAAM,SAAclW,EAAQokE,EAAMlF,EAAO33C,EAAOi9C,GAC9C,IAAIx9D,EAAG01D,EACP,IAAK11D,KAAKo9D,GACR1H,EAAKt8D,KAAKoY,IAAIxY,EAAQ,gBAAiBA,EAAO8mD,aAAa9/C,IAAM,GAAK,GAAIo9D,EAAKp9D,GAAIugB,EAAOi9C,EAAS,EAAG,EAAGx9D,MAClG01D,EAAG22B,GAAKrsF,GACf5G,KAAKgsC,OAAOtmC,KAAKkB,EAErB,GACC,CACDnD,KAAM,WACNqS,KAAM,SAAclW,EAAQsF,GAE1B,IADA,IAAIlI,EAAIkI,EAAM1I,OACPQ,KACLgD,KAAKoY,IAAIxY,EAAQ5C,EAAG4C,EAAO5C,IAAM,EAAGkI,EAAMlI,GAE9C,GACC84F,GAAqB,aAAcpU,IAAiBoU,GAAqB,aAAcA,GAAqB,OAAQlU,MAAUnoB,GAEjIh5B,GAAMhkB,QAAUkjE,GAASljE,QAAUm8D,GAAKn8D,QAAU,QAClDy4D,EAAa,EACTwC,KACFgJ,KAEW8F,GAASyP,OACXzP,GAAS0P,OADpB,IAEEptE,GAAS09D,GAAS19D,OAGlBw/D,IAFS9B,GAAS2P,OACT3P,GAAS4P,OACT5P,GAAS8B,QAOlB+N,IANO7P,GAAS8P,KACR9P,GAAS+P,MACT/P,GAASgQ,MACThQ,GAASiQ,MACRjQ,GAASkQ,OACRlQ,GAASmQ,QACZnQ,GAAS6P,MAIhBjpB,IAHcoZ,GAASiC,YACdjC,GAASoQ,OACXpQ,GAASqQ,KACTrQ,GAASpZ,MACToZ,GAASsQ,yBCpsGlBn5F,EAAQuJ,EAAI,CAAC,EAAEwc,uWCAf,IAAAzlB,EAAAqB,EAAApB,EAAA,OACA64F,EAAA74F,EAAA,MACA84F,EAAA94F,EAAA,MAEA+4F,EAAAz3F,EAAAtB,EAAA,OACAg5F,EAAA13F,EAAAtB,EAAA,OACAg/B,EAAAh/B,EAAA,KACAi5F,EAAAj5F,EAAA,MACAk5F,EAAAl5F,EAAA,MACAuqD,EAAAvqD,EAAA,MAEAA,EAAA,6IAEA,MAAMm5F,GAAoB,EAAAH,EAAA73F,SAAsB03F,EAAAjuF,YAAhD,IACqBw+B,EAAN,SAAA7nB,GAAA,SAAA6nB,IAAA,OAAA7nB,EAAA1f,MAAA,KAAAF,YAAA,KAuJb,OAvJakN,EAAAu6B,EAAA7nB,GAAA6nB,EAAAzoC,UACd6D,OAAA,WACC,MAAM,MAAEpB,GAAUtB,MACZ,SAAEiM,EAAF,gBAAY8xB,GAAkB,GAASz8B,EAE7C,OACCrD,EAAAoB,QAAAsD,cAACu6B,EAAA5+B,SAAD,CAAA4gB,OAAA,KAAAC,SAAA,CAAAC,SAAAC,EAAAC,WAAA,GAAAC,aAAA,KACEza,IAkBM,IAlBL,UACD82C,EADC,WAEDC,EAFC,UAGDC,EAHC,WAIDC,EAJC,YAKDC,EALC,WAMDC,EANC,aAODC,EAPC,WAQDjB,EARC,YASDD,EATC,UAUDE,EAVC,aAWDH,EAXC,cAYDoB,EAZC,eAaDhB,EAbC,YAcD9d,EAdC,kBAeDurB,EAfC,KAgBDrjC,EAhBC,EAiBDznB,GAjBAgH,EAmBA,OACC7G,EAAAoB,QAAAsD,cAACq0F,EAAAl7D,SAAD,CAAA5c,OAAA,KAAAC,SAAA,CAAAC,SAAAC,EAAAC,WAAA,GAAAC,aAAA,KACEwc,IAAmB,IAAlB,SAAE7uB,GAAH6uB,EACA,MAAM,OACL3kB,EADK,SAELjK,EACAvO,IAAK04F,GACFpqF,EAEJ,OACCjP,EAAAoB,QAAAsD,cAAA,OAAKxB,UAAU,WAAf+d,OAAA,KAAAC,SAAA,CAAAC,SAAAC,EAAAC,WAAA,GAAAC,aAAA,KACCthB,EAAAoB,QAAAsD,cAACo0F,EAAAjzE,gBAAD,CAAiBrW,UAAW,KAA5ByR,OAAA,KAAAC,SAAA,CAAAC,SAAAC,EAAAC,WAAA,GAAAC,aAAA,KACCthB,EAAAoB,QAAAsD,cAAC00F,EAAD,CACCz4F,IAAKuO,EACLmwB,OAAO,EAAAmrB,EAAAM,OAAMhN,GACbtxC,QAAS,CACRpB,OAAO,EAAAo/C,EAAAM,OAAM/M,GACbxxC,MAAM,EAAAi+C,EAAAM,OAAMlN,IAEb56C,QAASf,KACNA,IACDuO,OAAOuzC,2BACR,EAAAm1C,EAAAl2F,SAAQ,CACPf,OACAkX,SACA2jC,eACAmB,eACAjB,aACAC,YACA/tC,WACAgvC,gBACAhB,iBACAyN,oBACArjC,OACA+xE,cACAj6D,aAAa,EAAAorB,EAAAM,OACZ1rB,GAEDv/B,MAGFgE,OAAQ5B,KACLA,IACDuO,OAAOuzC,2BACR,EAAAo1C,EAAAt1F,QAAO,CACN5B,OACA66C,eACAC,cACAC,aACAC,YACAC,iBACAr9C,MAvCHohB,OAAA,KAAAC,SAAA,CAAAC,SAAAC,EAAAC,WAAA,GAAAC,aAAA,MA0CEme,IACA,MAAMC,EAEJ,aADDD,GAGC,YADDA,EAGK9K,EAAS,CACdnK,MAAO,CACN/e,MAAOuyC,EACP3e,MAAOye,EACPv/C,OAAQw/C,GAETxxC,KAAM,CACLd,MAAOoyC,EACPxe,MAAOse,EACPp/C,OAAQq/C,IAQJ/d,iWAAej6B,CAAA,CACpB65B,mBACAn6B,QANeo6B,EACb/K,EAAOnK,MACPmK,EAAOpoB,KAKTmzB,SACG/K,GAGEiL,EACLqd,EAAUr8B,QAAU,EACf+e,EACLqd,EAAWp8B,QAAU,EAEtB,OACC5gB,EAAAoB,QAAAsD,cAACs0F,EAAA53F,QAAD,CACCs+B,MAAOA,EACPC,YACCA,EAEDC,WACCA,EAEDH,iBACCA,EAEDI,gBACCA,EAED7xB,SAAUA,EACV8xB,gBACCA,EAEDV,aAAa,EAAAorB,EAAAM,OACZ1rB,GAnBFne,OAAA,KAAAC,SAAA,CAAAC,SAAAC,EAAAC,WAAA,IAAAC,aAAA,KADD,KAjFL,GATH,GA6HH,EAAA+nB,CAAA,CAvJa,CAAgCrpC,EAAA2E,WAAhC,kCCdf,IAAI6xB,EAAU,gBAWd/2B,EAAOC,QAVP,SAAqBsS,EAAGrS,GACtB,GAAI,UAAY62B,EAAQxkB,KAAOA,EAAG,OAAOA,EACzC,IAAInS,EAAImS,EAAEykB,OAAOjS,aACjB,QAAI,IAAW3kB,EAAG,CAChB,IAAId,EAAIc,EAAEiB,KAAKkR,EAAGrS,GAAK,WACvB,GAAI,UAAY62B,EAAQz3B,GAAI,OAAOA,EACnC,MAAM,IAAIhB,UAAU,+CACtB,CACA,OAAQ,WAAa4B,EAAIiS,OAASgO,QAAQ5N,EAC5C,EAC8BvS,EAAOC,QAAQK,YAAa,EAAMN,EAAOC,QAAiB,QAAID,EAAOC,8BCVnG,IAAI45F,EAAU,EAAQ,MAEtBA,EAAQA,EAAQ9kD,EAAI8kD,EAAQrgE,EAAG,SAAU,CAAEh7B,OAAQ,EAAQ,8BCF3D,IAAIs7F,EAAU,EAAQ,MAClBt3D,EAAU,EAAQ,MACtBxiC,EAAOC,QAAU,SAAU6J,GACzB,OAAOgwF,EAAQt3D,EAAQ14B,GACzB,qCCLe,SAASgiB,IAAyE,IAAD,IAAA3oB,EAAAhB,UAAArD,OAAvDi7F,EAAG,IAAA37F,MAAA+E,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAH02F,EAAG12F,GAAAlB,UAAAkB,GAC1C,OAAmB,IAAf02F,EAAIj7F,OAAqBi7F,EAAI,GAAK,GAAKA,EAAI,GAAK,GAC7CA,EAAIl7F,QAAOS,GAAGA,IAAGP,KAAK,IAC/B,uDCFA,IAAIq4E,EAAY,EAAQ,MACpBloD,EAAMzd,KAAKyd,IACflvB,EAAOC,QAAU,SAAU6J,GACzB,OAAOA,EAAK,EAAIolB,EAAIkoD,EAAUttE,GAAK,kBAAoB,CACzD,oBCFA9J,EAAOC,QAHP,SAA0BC,GACxB,GAAI,oBAAsB82B,QAAU,MAAQ92B,EAAE82B,OAAOC,WAAa,MAAQ/2B,EAAE,cAAe,OAAO9B,MAAMspB,KAAKxnB,EAC/G,EACmCF,EAAOC,QAAQK,YAAa,EAAMN,EAAOC,QAAiB,QAAID,EAAOC,4KCHxG,EAAe+P,QACAtG,IAATsG,EACKA,EAEI,MAATA,EACK,IAE4B,MAAjCA,EAAKjQ,OAAOiQ,EAAKlR,OAAS,GACrBkR,EAAKvQ,MAAM,GAAI,GAEjBuQ,YCLT,MAAMgqF,EAAY,IAAIn8D,IACtB,IAAI8sC,EAAa,GAEjB,MAAMsvB,EAAeC,IACnB,MAAMzqF,EAAWu7B,mBAAmBkvD,GAWpC,OATwBp3C,EAAAA,EAAAA,GACtBrzC,EACAu7B,mBAAmB6X,KAGlBngD,MAAM,KAAK,GAEXA,MAAM,KAAK,EAEQ,EAGxB,SAAS+sD,EAAWz/C,GAElB,OACEA,EAAKunB,WAAW,MAChBvnB,EAAKunB,WAAW,aAChBvnB,EAAKunB,WAAW,WAETvnB,EAIF,IAAIikB,IACTjkB,EACAe,OAAOvB,SAASwD,MAAQjC,OAAOvB,SAASwD,KAAKs8C,SAAS,KAAO,GAAK,MAClE7/C,QACJ,CAOO,MAAM07D,EAAgB3jE,IAC3BmjE,EAAanjE,CAAK,EAWPy7C,EAAgBi3C,IAC3B,MAAMC,EAAkBC,EAAUF,GAE5BG,EAAY1vB,EAAWjsE,KAAI0I,IAA0B,IAAzB,KAAE4I,EAAI,UAAE0xC,GAAWt6C,EACnD,MAAO,CACL4I,KAAM0xC,EACN44C,aAActqF,EACf,IAGGA,GAAOoa,EAAAA,EAAAA,MAAKiwE,EAAWF,GAE7B,OAAInqF,EACKuqF,EAAkBvqF,EAAK26B,MAAM2vD,cAG/B,IAAI,EAYA/qF,EAAkB2qF,IAC7B,MAAMC,EAAkBC,EAAUF,GAE5BG,EAAY1vB,EAAWjsE,KAAI2/B,IAA0B,IAAzB,KAAEruB,EAAI,UAAE0xC,GAAWrjB,EACnD,MAAO,CACLruB,KAAM0xC,EACN44C,aAActqF,EACf,IAGGA,GAAOoa,EAAAA,EAAAA,MAAKiwE,EAAWF,GAE7B,OAAInqF,EACKA,EAAKV,OAGP,CAAC,CAAC,EAWEy8D,EAAWmuB,IACtB,MAAMC,EAAkBF,EAAaxqC,EAAWyqC,IAChD,GAAIF,EAAUjoE,IAAIooE,GAChB,OAAOH,EAAUv4F,IAAI04F,GAGvB,MAAMn8D,GAAWD,EAAAA,EAAAA,GAAwBm8D,GACzC,GAAIl8D,EACF,OAAO+tC,EAAS/tC,EAASqhB,QAG3B,IAAIm7C,EAAYv3C,EAAck3C,GAQ9B,OANKK,IACHA,EAAYJ,EAAUF,IAGxBF,EAAUt4F,IAAIy4F,EAAiBK,GAExBA,CAAS,EAULJ,EAAYF,IAGvB,IAAIM,EAFoBP,EAAaxqC,EAAWyqC,IAShD,MANkB,gBAAdM,IACFA,EAAY,KAGdA,EAAYD,EAAkBC,GAEvBA,CAAS,qCCrJlBv6F,EAAQK,YAAa,EACrBL,EAAQuwE,gBAAkBA,EAC1BvwE,EAAQw6F,mBAAqBA,EAC7Bx6F,EAAQowE,uBAiFR,SAAgCzsE,EAAOU,GACrC,OAAOksE,EAAgB5sE,EAAM2K,UAAU,SAAUK,GAC/C,OAAO,EAAIrO,EAAOwO,cAAcH,EAAO,CACrCtK,SAAUA,EAASkpB,KAAK,KAAM5e,GAC9B/C,IAAI,EACJJ,OAAQivF,EAAQ9rF,EAAO,SAAUhL,GACjC+H,MAAO+uF,EAAQ9rF,EAAO,QAAShL,GAC/BkJ,KAAM4tF,EAAQ9rF,EAAO,OAAQhL,IAEjC,GACF,EA1FA3D,EAAQqwE,oBA2FR,SAA6BvwC,EAAWqwC,EAAkB9rE,GACxD,IAAIq2F,EAAmBnqB,EAAgBzwC,EAAUxxB,UAC7CA,EAAWksF,EAAmBrqB,EAAkBuqB,GAmCpD,OAlCAp8F,OAAOoJ,KAAK4G,GAAU5L,SAAQ,SAAUzB,GACtC,IAAI0N,EAAQL,EAASrN,GACrB,IAAK,EAAIX,EAAOq6F,gBAAgBhsF,GAAhC,CACA,IAAIisF,EAAU35F,KAAOkvE,EACjB0qB,EAAU55F,KAAOy5F,EACjBI,EAAY3qB,EAAiBlvE,GAC7B85F,GAAY,EAAIz6F,EAAOq6F,gBAAgBG,KAAeA,EAAUn3F,MAAMiI,IAEtEivF,GAAaD,IAAWG,EAQhBF,IAAWD,GAAYG,EAMxBF,GAAWD,IAAW,EAAIt6F,EAAOq6F,gBAAgBG,KAI1DxsF,EAASrN,IAAO,EAAIX,EAAOwO,cAAcH,EAAO,CAC9CtK,SAAUA,EAASkpB,KAAK,KAAM5e,GAC9B/C,GAAIkvF,EAAUn3F,MAAMiI,GACpBiB,KAAM4tF,EAAQ9rF,EAAO,OAAQmxB,GAC7Bp0B,MAAO+uF,EAAQ9rF,EAAO,QAASmxB,MAXjCxxB,EAASrN,IAAO,EAAIX,EAAOwO,cAAcH,EAAO,CAC9C/C,IAAI,IAVN0C,EAASrN,IAAO,EAAIX,EAAOwO,cAAcH,EAAO,CAC9CtK,SAAUA,EAASkpB,KAAK,KAAM5e,GAC9B/C,IAAI,EACJiB,KAAM4tF,EAAQ9rF,EAAO,OAAQmxB,GAC7Bp0B,MAAO+uF,EAAQ9rF,EAAO,QAASmxB,IAZW,CA+BhD,IACOxxB,CACT,EAhIA,IAAIhO,EAAS,EAAQ,MAQrB,SAASiwE,EAAgBjiE,EAAU0sF,GACjC,IAGI9qF,EAAS5R,OAAOmG,OAAO,MAO3B,OANI6J,GAAUhO,EAAOsO,SAASnQ,IAAI6P,GAAU,SAAU3L,GACpD,OAAOA,CACT,IAAGD,SAAQ,SAAUiM,GAEnBuB,EAAOvB,EAAM1N,KARF,SAAgB0N,GAC3B,OAAOqsF,IAAS,EAAI16F,EAAOq6F,gBAAgBhsF,GAASqsF,EAAMrsF,GAASA,CACrE,CAMsBssF,CAAOtsF,EAC7B,IACOuB,CACT,CAmBA,SAASsqF,EAAmBjc,EAAMn6D,GAGhC,SAAS82E,EAAej6F,GACtB,OAAOA,KAAOmjB,EAAOA,EAAKnjB,GAAOs9E,EAAKt9E,EACxC,CAJAs9E,EAAOA,GAAQ,CAAC,EAChBn6D,EAAOA,GAAQ,CAAC,EAMhB,IAYI/kB,EAZA87F,EAAkB78F,OAAOmG,OAAO,MAChC22F,EAAc,GAClB,IAAK,IAAIC,KAAW9c,EACd8c,KAAWj3E,EACTg3E,EAAYv8F,SACds8F,EAAgBE,GAAWD,EAC3BA,EAAc,IAGhBA,EAAYrzF,KAAKszF,GAIrB,IAAIC,EAAe,CAAC,EACpB,IAAK,IAAIC,KAAWn3E,EAAM,CACxB,GAAI+2E,EAAgBI,GAClB,IAAKl8F,EAAI,EAAGA,EAAI87F,EAAgBI,GAAS18F,OAAQQ,IAAK,CACpD,IAAIm8F,EAAiBL,EAAgBI,GAASl8F,GAC9Ci8F,EAAaH,EAAgBI,GAASl8F,IAAM67F,EAAeM,EAC7D,CAEFF,EAAaC,GAAWL,EAAeK,EACzC,CAEA,IAAKl8F,EAAI,EAAGA,EAAI+7F,EAAYv8F,OAAQQ,IAClCi8F,EAAaF,EAAY/7F,IAAM67F,EAAeE,EAAY/7F,IAE5D,OAAOi8F,CACT,CACA,SAASb,EAAQ9rF,EAAO+6B,EAAM/lC,GAC5B,OAAsB,MAAfA,EAAM+lC,GAAgB/lC,EAAM+lC,GAAQ/6B,EAAMhL,MAAM+lC,EACzD,qCCnFA,IAAI+xD,EAAc,EAAQ,MACtBC,EAAU,EAAQ,MAClBC,EAAO,EAAQ,MACfC,EAAM,EAAQ,MACdC,EAAW,EAAQ,MACnBhC,EAAU,EAAQ,MAClBiC,EAAUx9F,OAAOC,OAGrBwB,EAAOC,SAAW87F,GAAW,EAAQ,KAAR,EAAoB,WAC/C,IAAInoD,EAAI,CAAC,EACL1Z,EAAI,CAAC,EAEL6a,EAAI/d,SACJ8D,EAAI,uBAGR,OAFA8Y,EAAEmB,GAAK,EACPja,EAAEp4B,MAAM,IAAIC,SAAQ,SAAU+F,GAAKwxB,EAAExxB,GAAKA,CAAG,IACjB,GAArBqzF,EAAQ,CAAC,EAAGnoD,GAAGmB,IAAWx2C,OAAOoJ,KAAKo0F,EAAQ,CAAC,EAAG7hE,IAAIn7B,KAAK,KAAO+7B,CAC3E,IAAK,SAAgB54B,EAAQE,GAM3B,IALA,IAAI61B,EAAI6jE,EAAS55F,GACb85F,EAAO75F,UAAUrD,OACjB2qB,EAAQ,EACRwyE,EAAaL,EAAKpyF,EAClB0yF,EAASL,EAAIryF,EACVwyF,EAAOvyE,GAMZ,IALA,IAIIvoB,EAJA6zC,EAAI+kD,EAAQ33F,UAAUsnB,MACtB9hB,EAAOs0F,EAAaN,EAAQ5mD,GAAGzxC,OAAO24F,EAAWlnD,IAAM4mD,EAAQ5mD,GAC/Dj2C,EAAS6I,EAAK7I,OACdunC,EAAI,EAEDvnC,EAASunC,GACdnlC,EAAMyG,EAAK0+B,KACNq1D,IAAeQ,EAAO76F,KAAK0zC,EAAG7zC,KAAM+2B,EAAE/2B,GAAO6zC,EAAE7zC,IAEtD,OAAO+2B,CACX,EAAI8jE,sECrCJ,IAAAx7F,EAAAC,EAAA,MAEAg/B,EAAAh/B,EAAA,KA0CC,MAxCD,SAA4BoD,GAC3B,MAAM02B,GAAW,EAAA/5B,EAAAq2B,QAAO,MAClBvrB,GAAU,EAAA9K,EAAA+e,YAAWkgB,EAAA3+B,gBACpBs7F,EAAcC,IAAsB,EAAA77F,EAAAsG,UAAS,OAC7Cw1F,EAAWC,IAAgB,EAAA/7F,EAAAsG,WAAS,GAErC01F,EACL,yBAA0BxrF,QAC1B,8BAA+BA,QAC/B,sBAAuBA,OAAOygD,0BAA0BrwD,UA8BzD,OA5BA,EAAAZ,EAAA8F,YAAU,KACT,GAAIi0B,GAAYA,EAASz0B,QAAS,CACjC,IAAIysD,EAYJ,OANAA,EAAW,IAAInC,sBAAqBqsC,IACnC,MAAOC,GAAgBD,EACvBF,IAAeG,EAAa1rC,kBAA5B,GANe,CACfsC,UAAW,IAOZf,EAAStB,QAAQ12B,EAASz0B,SAEnB,IAAMysD,EAAS3B,UAAUr2B,EAASz0B,QACzC,IACC,CAACy0B,KAEJ,EAAA/5B,EAAA8F,YAAU,OACJk2F,GAAmB34F,EAAM03B,aAInB+gE,IADVD,EAAmB/wF,EAGnB,GACC,CAACA,EAAQ20B,iBAAkB1F,EAAU+hE,IAEjCz4F,EAAM2K,SAAS4tF,EAAc7hE,EACpC,EAEcoiE,EAAAA,QAAAA,6DC9CA,WACd,IAAIC,EACJ,MAAMC,EAAc,IAAIzrF,SAAQC,IAC/BurF,EAAcvrF,CAAd,IAGD,IAAIyrF,EACJ,MAAMC,EAAe,IAAI3rF,SAAQC,IAChCyrF,EAAezrF,CAAf,IAGD,MAAO,CACNqsC,eAAgB,CACf1yB,MAAO8xE,EACP/vF,KAAM6vF,GAEP3xC,MAAO,CACNl+C,KAAM8vF,EACN7xE,MAAO+xE,GAGT,wBCrBD,IAAI/qE,EAAM,EAAQ,MACdgrE,EAAY,EAAQ,MACpBC,EAAe,EAAQ,KAAR,EAA6B,GAC5CC,EAAW,EAAQ,KAAR,CAAyB,YAExCj9F,EAAOC,QAAU,SAAU8G,EAAQw1E,GACjC,IAGIr7E,EAHA+jB,EAAI83E,EAAUh2F,GACdzH,EAAI,EACJ6Q,EAAS,GAEb,IAAKjP,KAAO+jB,EAAO/jB,GAAO+7F,GAAUlrE,EAAI9M,EAAG/jB,IAAQiP,EAAOnI,KAAK9G,GAE/D,KAAOq7E,EAAMz9E,OAASQ,GAAOyyB,EAAI9M,EAAG/jB,EAAMq7E,EAAMj9E,SAC7C09F,EAAa7sF,EAAQjP,IAAQiP,EAAOnI,KAAK9G,IAE5C,OAAOiP,CACT,2rBChBA,IAAAovB,EAAA/+B,EAAA,MAEA,UAAgB4G,IAcT,IAdU,KAChB5E,EADgB,aAEhB66C,EAFgB,aAGhBmB,EAHgB,WAIhBjB,EAJgB,UAKhBC,EALgB,eAMhBC,EANgB,SAOhBhuC,EAPgB,kBAQhBy7C,EARgB,KAShBrjC,EATgB,YAUhB+xE,EACAr8C,YAAY,MAAE3d,EAAQ,GAXN,YAYhBD,EAAc,EAZE,EAahBv/B,GAbegH,EAef,GAAIi2C,IAAiB6N,GACpB,EAAA3rB,EAAAlxB,aAAW,KAAO,IAAD6uF,EAChB,IAAIpqE,EAAW,CAAC,EAAG,GAInB,GAAIjL,EAAM,CACT,MAAMs1E,EAAc9yF,SAAS4N,eAAe4P,GAE5C,GAAIs1E,EAAa,CAEhBrqE,EAAW,CAAC,EADYqqE,EAAYC,UAEpC,CACD,EAEDF,EAAAnsF,QAAO+hB,SAAPzwB,MAAA66F,EAAAj1F,EAAmB6qB,GAAnB,GACE6M,QACG,IAAK0d,EAAc,CAGzB,IAAIh8B,EAAW,CAAC,EAAG,GACnB,IACC,MAAMg8E,EAAc,YAAW5tF,KAAYmqF,IAG3Cv4E,EAAW,CAAC,EAFF0a,KAAKvnB,MAAM0qB,eAAeC,QAAQk+D,KAAgB,EAG5D,CAAC,MAAOj9F,GACRoG,QAAQwa,KACN,2GAEF,CATD,QASW,IAADs8E,GACTA,EAAAvsF,QAAO+hB,SAAPzwB,MAAAi7F,EAAAr1F,EAAmBoZ,GACnB,CACD,CAED,IAAKg8B,EAAc,OAEnB,MAAQjxB,QAASsxB,GAAkCH,EAAtBggD,EAAA3wD,EAAsB2Q,EAAnDK,GAEM7wC,EAAU4yB,EAAcC,EAExB49D,EAAiB,IAAIrsF,SAAQC,KAClC,EAAAmuB,EAAAlxB,aAAW,IAAM+C,KAAWrE,EAA5B,IAGD0wC,EAAe1yB,MAAf5kB,EAAAA,EAAA,GACIo3F,GADiB,IAEpBE,QAASD,EACTh7F,UAGDg8C,GACyB,mBAAjBA,GACPA,EAAa,CACZzzB,MAAOwyB,EACPzwC,KAAM0wC,EACNh7C,OACApC,KANF,4GCnEaI,EAAQ,MA0BtB,IAAwB4G,IAA6B,IAA5B,SAAEmH,GAAHnH,EAAgBwlC,EAAAxlC,EAAAw2C,GAItC,OAAOrvC,CACP,wBC7BFtO,EAAQ0nE,WAAa,CACnB,8DAA+D+1B,IAAM,8BACrE,gCAAiCC,IAAM,+DACvC,kCAAmCC,IAAM,wEACzC,iCAAkCC,IAAM,yFACxC,wCAAyCC,IAAM,0FAC/C,oCAAqCC,IAAM,gFAC3C,mDAAoDC,IAAM,8DAC1D,mCAAoCC,IAAM,wEAC1C,kCAAmCC,IAAM,iFACzC,qCAAsCC,IAAM,8DAC5C,kCAAmCC,IAAM,uEACzC,uDAAwDC,IAAM,wEAC9D,6DAA8DC,IAAM,uEACpE,mEAAoEC,IAAM,iFAC1E,mDAAoDC,IAAM,wEAC1D,yCAA0CC,IAAM,iFAChD,8CAA+CC,IAAM,iFACrD,iDAAkDC,IAAM,iFACxD,oDAAqDC,IAAM,iFAC3D,yCAA0CC,IAAM,gFAChD,sDAAuDC,IAAM,iFAC7D,mDAAoDC,IAAM,wEAC1D,gDAAiDC,IAAM,iFACvD,+CAAgDC,IAAM,iFACtD,sDAAuDC,IAAM,wEAC7D,+CAAgDC,IAAM,wFACtD,+CAAgDC,IAAM,yFACtD,sCAAuCC,IAAM,uEAC7C,qCAAsCC,IAAM,0KChC9C,IAAA/+F,EAAAC,EAAA,MACAg/B,EAAAh/B,EAAA,KAEA,qBAA2B++F,KAAM,EAAAh/F,EAAA+e,YAAWkgB,EAAA3+B,qCCH5C,IAAImjD,EAAS,EAAQ,MACjBlhB,EAAO,EAAQ,MACf08D,EAAM,EAAQ,MACdC,EAAO,EAAQ,MACf1tE,EAAM,EAAQ,MACd2tE,EAAY,YAEZ7F,EAAU,SAAUt1F,EAAMwB,EAAM3D,GAClC,IASIlB,EAAKy+F,EAAKC,EATVC,EAAYt7F,EAAOs1F,EAAQrgE,EAC3BsmE,EAAYv7F,EAAOs1F,EAAQngE,EAC3BqmE,EAAYx7F,EAAOs1F,EAAQ9kD,EAC3BirD,EAAWz7F,EAAOs1F,EAAQ30E,EAC1B+6E,EAAU17F,EAAOs1F,EAAQ3/D,EACzBgmE,EAAU37F,EAAOs1F,EAAQ9hE,EACzB93B,EAAU6/F,EAAYh9D,EAAOA,EAAK/8B,KAAU+8B,EAAK/8B,GAAQ,CAAC,GAC1Do6F,EAAWlgG,EAAQy/F,GACnBx9F,EAAS49F,EAAY97C,EAAS+7C,EAAY/7C,EAAOj+C,IAASi+C,EAAOj+C,IAAS,CAAC,GAAG25F,GAGlF,IAAKx+F,KADD4+F,IAAW19F,EAAS2D,GACZ3D,GAEVu9F,GAAOE,GAAa39F,QAA0BwH,IAAhBxH,EAAOhB,KAC1B6wB,EAAI9xB,EAASiB,KAExB0+F,EAAMD,EAAMz9F,EAAOhB,GAAOkB,EAAOlB,GAEjCjB,EAAQiB,GAAO4+F,GAAmC,mBAAf59F,EAAOhB,GAAqBkB,EAAOlB,GAEpE++F,GAAWN,EAAMH,EAAII,EAAK57C,GAE1Bk8C,GAAWh+F,EAAOhB,IAAQ0+F,EAAM,SAAWrnE,GAC3C,IAAIiB,EAAI,SAAUr5B,EAAGoJ,EAAG3G,GACtB,GAAIN,gBAAgBi2B,EAAG,CACrB,OAAQp2B,UAAUrD,QAChB,KAAK,EAAG,OAAO,IAAIy5B,EACnB,KAAK,EAAG,OAAO,IAAIA,EAAEp4B,GACrB,KAAK,EAAG,OAAO,IAAIo4B,EAAEp4B,EAAGoJ,GACxB,OAAO,IAAIgvB,EAAEp4B,EAAGoJ,EAAG3G,EACvB,CAAE,OAAO21B,EAAEl2B,MAAMC,KAAMH,UACzB,EAEA,OADAq3B,EAAEkmE,GAAannE,EAAEmnE,GACVlmE,CAER,CAbiC,CAa/BomE,GAAOI,GAA0B,mBAAPJ,EAAoBJ,EAAIrsD,SAAS9xC,KAAMu+F,GAAOA,EAEvEI,KACD//F,EAAQmgG,UAAYngG,EAAQmgG,QAAU,CAAC,IAAIl/F,GAAO0+F,EAE/Cr7F,EAAOs1F,EAAQ/kD,GAAKqrD,IAAaA,EAASj/F,IAAMu+F,EAAKU,EAAUj/F,EAAK0+F,IAG9E,EAEA/F,EAAQrgE,EAAI,EACZqgE,EAAQngE,EAAI,EACZmgE,EAAQ9kD,EAAI,EACZ8kD,EAAQ30E,EAAI,EACZ20E,EAAQ3/D,EAAI,GACZ2/D,EAAQ9hE,EAAI,GACZ8hE,EAAQ5/D,EAAI,GACZ4/D,EAAQ/kD,EAAI,IACZ90C,EAAOC,QAAU45F,wBC3DjB,IAAIkD,EAAY,EAAQ,MACpBsD,EAAW,EAAQ,MACnBC,EAAkB,EAAQ,MAC9BtgG,EAAOC,QAAU,SAAUsgG,GACzB,OAAO,SAAUC,EAAOzoF,EAAI0oF,GAC1B,IAGIj5F,EAHAyd,EAAI83E,EAAUyD,GACd1hG,EAASuhG,EAASp7E,EAAEnmB,QACpB2qB,EAAQ62E,EAAgBG,EAAW3hG,GAIvC,GAAIyhG,GAAexoF,GAAMA,GAAI,KAAOjZ,EAAS2qB,GAG3C,IAFAjiB,EAAQyd,EAAEwE,OAEGjiB,EAAO,OAAO,OAEtB,KAAM1I,EAAS2qB,EAAOA,IAAS,IAAI82E,GAAe92E,KAASxE,IAC5DA,EAAEwE,KAAW1R,EAAI,OAAOwoF,GAAe92E,GAAS,EACpD,OAAQ82E,IAAgB,CAC5B,CACF,qCCjBe,SAASz9C,EAAY7wC,EAAKi9C,GACvC,YAD6C,IAANA,IAAAA,EAAS,IAC3CA,EAIDj9C,IAAQi9C,EACH,IAGLj9C,EAAIslB,WAAW,GAAG23B,MACbj9C,EAAIxS,MAAMyvD,EAAOpwD,QAGnBmT,EAXEA,CAYX","sources":["webpack://axon-division/./node_modules/camelcase/index.js","webpack://axon-division/./node_modules/@babel/runtime/helpers/arrayLikeToArray.js","webpack://axon-division/../../src/context/createTransitionContext.js","webpack://axon-division/./node_modules/react-transition-group/CSSTransition.js","webpack://axon-division/./src/utils/mobx.utils.ts","webpack://axon-division/./node_modules/invariant/browser.js","webpack://axon-division/./node_modules/babel-runtime/node_modules/core-js/library/modules/_is-object.js","webpack://axon-division/src/gatsby-browser.js","webpack://axon-division/./node_modules/babel-runtime/node_modules/core-js/library/modules/_an-object.js","webpack://axon-division/./node_modules/babel-runtime/node_modules/core-js/library/modules/_dom-create.js","webpack://axon-division/./node_modules/dom-helpers/class/hasClass.js","webpack://axon-division/./node_modules/react-transition-group/Transition.js","webpack://axon-division/./.cache/page-renderer.js","webpack://axon-division/./node_modules/dom-helpers/class/removeClass.js","webpack://axon-division/../src/gatsby-browser.js","webpack://axon-division/./src/utils/waiters.utils.ts","webpack://axon-division/./node_modules/serialize-query-params/esm/serialize.js","webpack://axon-division/./node_modules/serialize-query-params/esm/params.js","webpack://axon-division/./node_modules/serialize-query-params/esm/updateLocation.js","webpack://axon-division/./node_modules/use-query-params/esm/shallowEqual.js","webpack://axon-division/./node_modules/use-query-params/esm/helpers.js","webpack://axon-division/./node_modules/use-query-params/esm/updateUrlQuery.js","webpack://axon-division/./node_modules/use-query-params/esm/LocationProvider.js","webpack://axon-division/./node_modules/use-query-params/esm/memoizedQueryParser.js","webpack://axon-division/./node_modules/use-query-params/esm/useQueryParam.js","webpack://axon-division/./node_modules/use-query-params/esm/QueryParams.js","webpack://axon-division/./node_modules/use-query-params/esm/QueryParamProvider.js","webpack://axon-division/./src/controllers/portal.controller.ts","webpack://axon-division/./src/utils/dialogs.utils.ts","webpack://axon-division/./src/components/DialogLayer/DialogLayer.tsx","webpack://axon-division/./src/utils/pointerDetector.utils.ts","webpack://axon-division/./src/controllers/ui.controller.tsx","webpack://axon-division/./src/controllers/app.controller.ts","webpack://axon-division/./.cache/gatsby-browser-entry.js","webpack://axon-division/./.cache/public-page-renderer.js","webpack://axon-division/./node_modules/@babel/runtime/helpers/toConsumableArray.js","webpack://axon-division/./src/utils/loggers.utils.ts","webpack://axon-division/../../src/components/TransitionPortal.js","webpack://axon-division/./src/env.ts","webpack://axon-division/../../src/utils/shouldNavigate.js","webpack://axon-division/./.cache/emitter.js","webpack://axon-division/./node_modules/mitt/dist/mitt.es.js","webpack://axon-division/./node_modules/raf/index.js","webpack://axon-division/./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-dp.js","webpack://axon-division/./node_modules/split-on-first/index.js","webpack://axon-division/./src/utils/random.utils.ts","webpack://axon-division/../../src/hooks/index.js","webpack://axon-division/./node_modules/@babel/runtime/helpers/objectWithoutProperties.js","webpack://axon-division/./node_modules/react-transition-group/index.js","webpack://axon-division/./node_modules/@babel/runtime/helpers/nonIterableSpread.js","webpack://axon-division/./node_modules/react-transition-group/utils/PropTypes.js","webpack://axon-division/../../src/utils/secondsMs.js","webpack://axon-division/./src/utils/array.utils.ts","webpack://axon-division/./node_modules/gatsby-link/parse-path.js","webpack://axon-division/./node_modules/query-string/index.js","webpack://axon-division/./node_modules/babel-runtime/node_modules/core-js/library/modules/_fails.js","webpack://axon-division/./node_modules/@babel/runtime/helpers/assertThisInitialized.js","webpack://axon-division/./node_modules/babel-runtime/node_modules/core-js/library/modules/_enum-bug-keys.js","webpack://axon-division/./src/hooks/useObservableRef.hook.ts","webpack://axon-division/./node_modules/gatsby-plugin-ts-config/gatsby-browser.js","webpack://axon-division/./src/components/AnimatedLink/AnimatedLink.tsx","webpack://axon-division/./src/hooks/useGetDataAttributes.hook.ts","webpack://axon-division/./src/hooks/lifecycle.hooks.ts","webpack://axon-division/./node_modules/common-tags/es/TemplateTag/TemplateTag.js","webpack://axon-division/./node_modules/common-tags/es/inlineArrayTransformer/inlineArrayTransformer.js","webpack://axon-division/./node_modules/common-tags/es/stripIndentTransformer/stripIndentTransformer.js","webpack://axon-division/./node_modules/common-tags/es/trimResultTransformer/trimResultTransformer.js","webpack://axon-division/./node_modules/common-tags/es/splitStringTransformer/splitStringTransformer.js","webpack://axon-division/./node_modules/common-tags/es/commaLists/commaLists.js","webpack://axon-division/./node_modules/common-tags/es/commaListsAnd/commaListsAnd.js","webpack://axon-division/./node_modules/common-tags/es/commaListsOr/commaListsOr.js","webpack://axon-division/./node_modules/common-tags/es/removeNonPrintingValuesTransformer/removeNonPrintingValuesTransformer.js","webpack://axon-division/./node_modules/common-tags/es/replaceSubstitutionTransformer/replaceSubstitutionTransformer.js","webpack://axon-division/./node_modules/common-tags/es/html/html.js","webpack://axon-division/./node_modules/common-tags/es/replaceResultTransformer/replaceResultTransformer.js","webpack://axon-division/./node_modules/common-tags/es/safeHtml/safeHtml.js","webpack://axon-division/./node_modules/common-tags/es/oneLine/oneLine.js","webpack://axon-division/./node_modules/common-tags/es/oneLineTrim/oneLineTrim.js","webpack://axon-division/./node_modules/common-tags/es/oneLineCommaLists/oneLineCommaLists.js","webpack://axon-division/./node_modules/common-tags/es/oneLineCommaListsOr/oneLineCommaListsOr.js","webpack://axon-division/./node_modules/common-tags/es/oneLineCommaListsAnd/oneLineCommaListsAnd.js","webpack://axon-division/./node_modules/common-tags/es/inlineLists/inlineLists.js","webpack://axon-division/./node_modules/common-tags/es/oneLineInlineLists/oneLineInlineLists.js","webpack://axon-division/./node_modules/common-tags/es/stripIndent/stripIndent.js","webpack://axon-division/./node_modules/common-tags/es/stripIndents/stripIndents.js","webpack://axon-division/./.cache/react-lifecycles-compat.js","webpack://axon-division/./node_modules/dom-helpers/class/addClass.js","webpack://axon-division/./src/utils/typeChecks.utils.ts","webpack://axon-division/./node_modules/babel-runtime/node_modules/core-js/library/modules/_has.js","webpack://axon-division/./node_modules/babel-runtime/node_modules/core-js/library/modules/_uid.js","webpack://axon-division/./.cache/api-runner-browser-plugins.js","webpack://axon-division/./node_modules/react-transition-group/ReplaceTransition.js","webpack://axon-division/./node_modules/gatsby-react-router-scroll/scroll-handler.js","webpack://axon-division/./node_modules/babel-runtime/node_modules/core-js/library/modules/_iobject.js","webpack://axon-division/./node_modules/@gatsbyjs/reach-router/lib/history.js","webpack://axon-division/./.cache/register-service-worker.js","webpack://axon-division/./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-integer.js","webpack://axon-division/./node_modules/@babel/runtime/helpers/defineProperty.js","webpack://axon-division/./node_modules/gatsby-react-router-scroll/use-scroll-restoration.js","webpack://axon-division/./node_modules/@babel/runtime/helpers/typeof.js","webpack://axon-division/./node_modules/gatsby-plugin-mdx/loaders/mdx-components.js","webpack://axon-division/./node_modules/gatsby-plugin-manifest/get-manifest-pathname.js","webpack://axon-division/./node_modules/babel-runtime/node_modules/core-js/library/modules/_a-function.js","webpack://axon-division/./node_modules/babel-runtime/node_modules/core-js/library/modules/_ctx.js","webpack://axon-division/../src/image-utils.ts","webpack://axon-division/../src/components/hooks.ts","webpack://axon-division/../src/components/layout-wrapper.tsx","webpack://axon-division/../src/components/picture.tsx","webpack://axon-division/../src/components/placeholder.tsx","webpack://axon-division/../src/components/main-image.tsx","webpack://axon-division/../src/components/gatsby-image.server.tsx","webpack://axon-division/../src/components/gatsby-image.browser.tsx","webpack://axon-division/../src/components/static-image.server.tsx","webpack://axon-division/../src/components/static-image.tsx","webpack://axon-division/../src/components/later-hydrator.tsx","webpack://axon-division/./node_modules/performance-now/lib/performance-now.js","webpack://axon-division/./.cache/redirect-utils.js","webpack://axon-division/./src/utils/ramdaEquivalents.utils.ts","webpack://axon-division/./node_modules/babel-runtime/node_modules/core-js/library/modules/_cof.js","webpack://axon-division/./node_modules/gatsby-plugin-use-query-params/root.js","webpack://axon-division/./node_modules/gatsby-plugin-use-query-params/gatsby-browser.js","webpack://axon-division/./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-gops.js","webpack://axon-division/./node_modules/mdn-polyfills/Node.prototype.prepend.js","webpack://axon-division/./node_modules/requestanimationframe-timer/dist/cjs.js","webpack://axon-division/./node_modules/gatsby-react-router-scroll/session-storage.js","webpack://axon-division/../../src/components/TransitionRenderer.js","webpack://axon-division/./src/utils/dom.utils.ts","webpack://axon-division/./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack://axon-division/./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack://axon-division/./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack://axon-division/./node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack://axon-division/./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack://axon-division/./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack://axon-division/./node_modules/babel-runtime/node_modules/core-js/library/modules/_hide.js","webpack://axon-division/./node_modules/@babel/runtime/helpers/extends.js","webpack://axon-division/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://axon-division/./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://axon-division/./node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://axon-division/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://axon-division/./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-keys.js","webpack://axon-division/../../src/hooks/useTriggerTransition.js","webpack://axon-division/./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-object.js","webpack://axon-division/./node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","webpack://axon-division/./src/components/Line/Line.tsx","webpack://axon-division/./node_modules/babel-runtime/node_modules/core-js/library/modules/_ie8-dom-define.js","webpack://axon-division/./node_modules/babel-runtime/node_modules/core-js/library/modules/_defined.js","webpack://axon-division/./node_modules/gsap/index.js","webpack://axon-division/./node_modules/@babel/runtime/helpers/interopRequireDefault.js","webpack://axon-division/../../src/components/delayTransitionRender.js","webpack://axon-division/./node_modules/react-device-detect/node_modules/ua-parser-js/dist/ua-parser.min.js","webpack://axon-division/../src/wrap-page.js","webpack://axon-division/./node_modules/babel-runtime/node_modules/core-js/library/modules/_property-desc.js","webpack://axon-division/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://axon-division/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://axon-division/./node_modules/@babel/runtime/helpers/setPrototypeOf.js","webpack://axon-division/./node_modules/@gatsbyjs/reach-router/es/lib/utils.js","webpack://axon-division/./node_modules/@gatsbyjs/reach-router/es/lib/history.js","webpack://axon-division/./node_modules/@gatsbyjs/reach-router/es/index.js","webpack://axon-division/./.cache/public-page-renderer-prod.js","webpack://axon-division/../src/index.js","webpack://axon-division/./node_modules/gatsby-plugin-manifest/gatsby-browser.js","webpack://axon-division/./node_modules/babel-runtime/node_modules/core-js/library/modules/_descriptors.js","webpack://axon-division/./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","webpack://axon-division/./node_modules/webfontloader/webfontloader.js","webpack://axon-division/./node_modules/mobx-react-lite/es/utils/assertEnvironment.js","webpack://axon-division/./node_modules/mobx-react-lite/es/utils/observerBatching.js","webpack://axon-division/./node_modules/mobx-react-lite/es/utils/printDebugValue.js","webpack://axon-division/./node_modules/mobx-react-lite/es/utils/UniversalFinalizationRegistry.js","webpack://axon-division/./node_modules/mobx-react-lite/es/utils/observerFinalizationRegistry.js","webpack://axon-division/./node_modules/mobx-react-lite/es/staticRendering.js","webpack://axon-division/./node_modules/mobx-react-lite/es/useObserver.js","webpack://axon-division/./node_modules/mobx-react-lite/es/observer.js","webpack://axon-division/./node_modules/mobx-react-lite/es/ObserverComponent.js","webpack://axon-division/./node_modules/mobx-react-lite/es/useLocalObservable.js","webpack://axon-division/./node_modules/mobx-react-lite/es/useAsObservableSource.js","webpack://axon-division/./node_modules/mobx-react-lite/es/index.js","webpack://axon-division/./node_modules/babel-runtime/node_modules/core-js/library/modules/_shared-key.js","webpack://axon-division/./node_modules/@babel/runtime/helpers/inheritsLoose.js","webpack://axon-division/./node_modules/requestanimationframe-timer/dist/index.js","webpack://axon-division/./node_modules/@babel/runtime/helpers/interopRequireWildcard.js","webpack://axon-division/./src/components/BaseButton/BaseButton.tsx","webpack://axon-division/./node_modules/babel-runtime/core-js/object/assign.js","webpack://axon-division/../../src/functions/onExit.js","webpack://axon-division/../../src/context/InternalProvider.js","webpack://axon-division/./node_modules/strict-uri-encode/index.js","webpack://axon-division/./node_modules/babel-runtime/node_modules/core-js/library/modules/_core.js","webpack://axon-division/./.cache/route-announcer-props.js","webpack://axon-division/./.cache/navigation.js","webpack://axon-division/./node_modules/shallow-compare/es/index.js","webpack://axon-division/./.cache/ensure-resources.js","webpack://axon-division/./.cache/production-app.js","webpack://axon-division/./.cache/api-runner-browser.js","webpack://axon-division/./node_modules/babel-runtime/node_modules/core-js/library/modules/_global.js","webpack://axon-division/./node_modules/gatsby-react-router-scroll/index.js","webpack://axon-division/./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","webpack://axon-division/./src/utils/disposer.utils.ts","webpack://axon-division/./node_modules/gatsby-plugin-image/gatsby-browser.js","webpack://axon-division/../src/wrap-root.js","webpack://axon-division/./src/@configureMobx.tsx","webpack://axon-division/./src/components/PanelToggle/PanelToggle.tsx","webpack://axon-division/./src/components/AnalyticsManager/AnalyticsManager.tsx","webpack://axon-division/./src/analytics/loadLinkedInInsightTag.js","webpack://axon-division/./src/analytics/loadGTAG.analytics.ts","webpack://axon-division/./src/components/ErrorRenderer/ErrorList.tsx","webpack://axon-division/./src/components/ErrorRenderer/ErrorRenderer.tsx","webpack://axon-division/./src/components/ErrorBoundary/ErrorBoundary.tsx","webpack://axon-division/./src/components/CursorController/CursorController.tsx","webpack://axon-division/./src/components/DialogStack/DialogStack.tsx","webpack://axon-division/./src/components/Symbols.tsx","webpack://axon-division/./gatsby/gatsby-browser.tsx","webpack://axon-division/../../src/utils/triggerTransition.js","webpack://axon-division/./node_modules/react-fastclick/src/index.js","webpack://axon-division/./src/utils/parallax.utils.ts","webpack://axon-division/./node_modules/gatsby/dist/internal-plugins/bundle-optimisations/polyfills/object-assign.js","webpack://axon-division/./node_modules/filter-obj/index.js","webpack://axon-division/./node_modules/mdn-polyfills/Node.prototype.append.js","webpack://axon-division/./node_modules/babel-runtime/node_modules/core-js/library/modules/_shared.js","webpack://axon-division/./node_modules/gatsby-link/index.js","webpack://axon-division/./node_modules/intersection-observer/intersection-observer.js","webpack://axon-division/./src/utils/performance.utils.ts","webpack://axon-division/./src/hooks/useSyncObservableStateToStorage.hook.ts","webpack://axon-division/./node_modules/@babel/runtime/helpers/toPropertyKey.js","webpack://axon-division/./.cache/caches/gatsby-plugin-ts-config/gatsby-browser.js","webpack://axon-division/./node_modules/gatsby-plugin-offline/gatsby-browser.js","webpack://axon-division/../../src/components/TransitionLink.js","webpack://axon-division/./node_modules/gsap/CSSPlugin.js","webpack://axon-division/./node_modules/decode-uri-component/index.js","webpack://axon-division/./node_modules/@gatsbyjs/reach-router/lib/utils.js","webpack://axon-division/./src/utils/browsers.utils.ts","webpack://axon-division/./src/utils/visibilityObserver.util.ts","webpack://axon-division/./src/utils/object.utils.ts","webpack://axon-division/./.cache/prefetch.js","webpack://axon-division/./.cache/loader.js","webpack://axon-division/./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-primitive.js","webpack://axon-division/./src/controllers/decoTricolor.controller.tsx","webpack://axon-division/./node_modules/babel-runtime/node_modules/core-js/library/fn/object/assign.js","webpack://axon-division/./node_modules/react-transition-group/TransitionGroup.js","webpack://axon-division/./node_modules/@mdx-js/react/dist/esm.js","webpack://axon-division/./node_modules/gatsby-plugin-mdx/context.js","webpack://axon-division/./node_modules/gatsby-plugin-mdx/loaders/mdx-scopes.js","webpack://axon-division/./node_modules/gatsby-plugin-mdx/wrap-root-element.js","webpack://axon-division/./node_modules/gatsby-plugin-mdx/gatsby-browser.js","webpack://axon-division/./node_modules/react-device-detect/main.js","webpack://axon-division/./src/utils/functions.utils.ts","webpack://axon-division/./node_modules/babel-runtime/helpers/extends.js","webpack://axon-division/./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-absolute-index.js","webpack://axon-division/./node_modules/babel-runtime/node_modules/core-js/library/modules/_library.js","webpack://axon-division/./node_modules/gsap/gsap-core.js","webpack://axon-division/./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-pie.js","webpack://axon-division/../../src/components/TransitionHandler.js","webpack://axon-division/./node_modules/@babel/runtime/helpers/toPrimitive.js","webpack://axon-division/./node_modules/babel-runtime/node_modules/core-js/library/modules/es6.object.assign.js","webpack://axon-division/./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-iobject.js","webpack://axon-division/./src/utils/className.utils.ts","webpack://axon-division/./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-length.js","webpack://axon-division/./node_modules/@babel/runtime/helpers/iterableToArray.js","webpack://axon-division/./.cache/normalize-page-path.js","webpack://axon-division/./.cache/find-path.js","webpack://axon-division/./node_modules/react-transition-group/utils/ChildMapping.js","webpack://axon-division/./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-assign.js","webpack://axon-division/../../src/components/TransitionObserver.js","webpack://axon-division/../../src/utils/getPagesPromises.js","webpack://axon-division/./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-keys-internal.js","webpack://axon-division/../../src/functions/onEnter.js","webpack://axon-division/../../src/components/Layout.js","webpack://axon-division/./.cache/_this_is_virtual_fs_path_/$virtual/async-requires.js","webpack://axon-division/../../src/hooks/useTransitionState.js","webpack://axon-division/./node_modules/babel-runtime/node_modules/core-js/library/modules/_export.js","webpack://axon-division/./node_modules/babel-runtime/node_modules/core-js/library/modules/_array-includes.js","webpack://axon-division/./.cache/strip-prefix.js"],"sourcesContent":["'use strict';\n\nconst preserveCamelCase = string => {\n let isLastCharLower = false;\n let isLastCharUpper = false;\n let isLastLastCharUpper = false;\n for (let i = 0; i < string.length; i++) {\n const character = string[i];\n if (isLastCharLower && /[a-zA-Z]/.test(character) && character.toUpperCase() === character) {\n string = string.slice(0, i) + '-' + string.slice(i);\n isLastCharLower = false;\n isLastLastCharUpper = isLastCharUpper;\n isLastCharUpper = true;\n i++;\n } else if (isLastCharUpper && isLastLastCharUpper && /[a-zA-Z]/.test(character) && character.toLowerCase() === character) {\n string = string.slice(0, i - 1) + '-' + string.slice(i - 1);\n isLastLastCharUpper = isLastCharUpper;\n isLastCharUpper = false;\n isLastCharLower = true;\n } else {\n isLastCharLower = character.toLowerCase() === character && character.toUpperCase() !== character;\n isLastLastCharUpper = isLastCharUpper;\n isLastCharUpper = character.toUpperCase() === character && character.toLowerCase() !== character;\n }\n }\n return string;\n};\nconst camelCase = (input, options) => {\n if (!(typeof input === 'string' || Array.isArray(input))) {\n throw new TypeError('Expected the input to be `string | string[]`');\n }\n options = Object.assign({\n pascalCase: false\n }, options);\n const postProcess = x => options.pascalCase ? x.charAt(0).toUpperCase() + x.slice(1) : x;\n if (Array.isArray(input)) {\n input = input.map(x => x.trim()).filter(x => x.length).join('-');\n } else {\n input = input.trim();\n }\n if (input.length === 0) {\n return '';\n }\n if (input.length === 1) {\n return options.pascalCase ? input.toUpperCase() : input.toLowerCase();\n }\n const hasUpperCase = input !== input.toLowerCase();\n if (hasUpperCase) {\n input = preserveCamelCase(input);\n }\n input = input.replace(/^[_.\\- ]+/, '').toLowerCase().replace(/[_.\\- ]+(\\w|$)/g, (_, p1) => p1.toUpperCase()).replace(/\\d+(\\w|$)/g, m => m.toUpperCase());\n return postProcess(input);\n};\nmodule.exports = camelCase;\n// TODO: Remove this for the next major release\nmodule.exports.default = camelCase;","function _arrayLikeToArray(r, a) {\n (null == a || a > r.length) && (a = r.length);\n for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n return n;\n}\nmodule.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","import { createContext } from 'react'\n\nconst Context = createContext()\nconst { Provider, Consumer } = Context\n\nconst publicContext = createContext()\nconst { Provider: PublicProvider, Consumer: PublicConsumer } = publicContext\n\nexport {\n\tProvider,\n\tConsumer,\n\tContext,\n\tPublicProvider,\n\tPublicConsumer,\n\tpublicContext,\n}\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar PropTypes = _interopRequireWildcard(require(\"prop-types\"));\nvar _addClass = _interopRequireDefault(require(\"dom-helpers/class/addClass\"));\nvar _removeClass = _interopRequireDefault(require(\"dom-helpers/class/removeClass\"));\nvar _react = _interopRequireDefault(require(\"react\"));\nvar _Transition = _interopRequireDefault(require(\"./Transition\"));\nvar _PropTypes = require(\"./utils/PropTypes\");\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n } else {\n var newObj = {};\n if (obj != null) {\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};\n if (desc.get || desc.set) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n }\n newObj.default = obj;\n return newObj;\n }\n}\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\nvar addClass = function addClass(node, classes) {\n return node && classes && classes.split(' ').forEach(function (c) {\n return (0, _addClass.default)(node, c);\n });\n};\nvar removeClass = function removeClass(node, classes) {\n return node && classes && classes.split(' ').forEach(function (c) {\n return (0, _removeClass.default)(node, c);\n });\n};\n/**\n * A transition component inspired by the excellent\n * [ng-animate](http://www.nganimate.org/) library, you should use it if you're\n * using CSS transitions or animations. It's built upon the\n * [`Transition`](https://reactcommunity.org/react-transition-group/transition)\n * component, so it inherits all of its props.\n *\n * `CSSTransition` applies a pair of class names during the `appear`, `enter`,\n * and `exit` states of the transition. The first class is applied and then a\n * second `*-active` class in order to activate the CSSS transition. After the\n * transition, matching `*-done` class names are applied to persist the\n * transition state.\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n *
\n * \n *
\n * {\"I'll receive my-node-* classes\"}\n *
\n *
\n * \n *
\n * );\n * }\n * ```\n *\n * When the `in` prop is set to `true`, the child component will first receive\n * the class `example-enter`, then the `example-enter-active` will be added in\n * the next tick. `CSSTransition` [forces a\n * reflow](https://github.com/reactjs/react-transition-group/blob/5007303e729a74be66a21c3e2205e4916821524b/src/CSSTransition.js#L208-L215)\n * between before adding the `example-enter-active`. This is an important trick\n * because it allows us to transition between `example-enter` and\n * `example-enter-active` even though they were added immediately one after\n * another. Most notably, this is what makes it possible for us to animate\n * _appearance_.\n *\n * ```css\n * .my-node-enter {\n * opacity: 0;\n * }\n * .my-node-enter-active {\n * opacity: 1;\n * transition: opacity 200ms;\n * }\n * .my-node-exit {\n * opacity: 1;\n * }\n * .my-node-exit-active {\n * opacity: 0;\n * transition: opacity: 200ms;\n * }\n * ```\n *\n * `*-active` classes represent which styles you want to animate **to**.\n */\n\nvar CSSTransition = /*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(CSSTransition, _React$Component);\n function CSSTransition() {\n var _this;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n _this.onEnter = function (node, appearing) {\n var _this$getClassNames = _this.getClassNames(appearing ? 'appear' : 'enter'),\n className = _this$getClassNames.className;\n _this.removeClasses(node, 'exit');\n addClass(node, className);\n if (_this.props.onEnter) {\n _this.props.onEnter(node, appearing);\n }\n };\n _this.onEntering = function (node, appearing) {\n var _this$getClassNames2 = _this.getClassNames(appearing ? 'appear' : 'enter'),\n activeClassName = _this$getClassNames2.activeClassName;\n _this.reflowAndAddClass(node, activeClassName);\n if (_this.props.onEntering) {\n _this.props.onEntering(node, appearing);\n }\n };\n _this.onEntered = function (node, appearing) {\n var appearClassName = _this.getClassNames('appear').doneClassName;\n var enterClassName = _this.getClassNames('enter').doneClassName;\n var doneClassName = appearing ? appearClassName + \" \" + enterClassName : enterClassName;\n _this.removeClasses(node, appearing ? 'appear' : 'enter');\n addClass(node, doneClassName);\n if (_this.props.onEntered) {\n _this.props.onEntered(node, appearing);\n }\n };\n _this.onExit = function (node) {\n var _this$getClassNames3 = _this.getClassNames('exit'),\n className = _this$getClassNames3.className;\n _this.removeClasses(node, 'appear');\n _this.removeClasses(node, 'enter');\n addClass(node, className);\n if (_this.props.onExit) {\n _this.props.onExit(node);\n }\n };\n _this.onExiting = function (node) {\n var _this$getClassNames4 = _this.getClassNames('exit'),\n activeClassName = _this$getClassNames4.activeClassName;\n _this.reflowAndAddClass(node, activeClassName);\n if (_this.props.onExiting) {\n _this.props.onExiting(node);\n }\n };\n _this.onExited = function (node) {\n var _this$getClassNames5 = _this.getClassNames('exit'),\n doneClassName = _this$getClassNames5.doneClassName;\n _this.removeClasses(node, 'exit');\n addClass(node, doneClassName);\n if (_this.props.onExited) {\n _this.props.onExited(node);\n }\n };\n _this.getClassNames = function (type) {\n var classNames = _this.props.classNames;\n var isStringClassNames = typeof classNames === 'string';\n var prefix = isStringClassNames && classNames ? classNames + '-' : '';\n var className = isStringClassNames ? prefix + type : classNames[type];\n var activeClassName = isStringClassNames ? className + '-active' : classNames[type + 'Active'];\n var doneClassName = isStringClassNames ? className + '-done' : classNames[type + 'Done'];\n return {\n className: className,\n activeClassName: activeClassName,\n doneClassName: doneClassName\n };\n };\n return _this;\n }\n var _proto = CSSTransition.prototype;\n _proto.removeClasses = function removeClasses(node, type) {\n var _this$getClassNames6 = this.getClassNames(type),\n className = _this$getClassNames6.className,\n activeClassName = _this$getClassNames6.activeClassName,\n doneClassName = _this$getClassNames6.doneClassName;\n className && removeClass(node, className);\n activeClassName && removeClass(node, activeClassName);\n doneClassName && removeClass(node, doneClassName);\n };\n _proto.reflowAndAddClass = function reflowAndAddClass(node, className) {\n // This is for to force a repaint,\n // which is necessary in order to transition styles when adding a class name.\n if (className) {\n /* eslint-disable no-unused-expressions */\n node && node.scrollTop;\n /* eslint-enable no-unused-expressions */\n\n addClass(node, className);\n }\n };\n _proto.render = function render() {\n var props = _extends({}, this.props);\n delete props.classNames;\n return _react.default.createElement(_Transition.default, _extends({}, props, {\n onEnter: this.onEnter,\n onEntered: this.onEntered,\n onEntering: this.onEntering,\n onExit: this.onExit,\n onExiting: this.onExiting,\n onExited: this.onExited\n }));\n };\n return CSSTransition;\n}(_react.default.Component);\nCSSTransition.defaultProps = {\n classNames: ''\n};\nCSSTransition.propTypes = process.env.NODE_ENV !== \"production\" ? _extends({}, _Transition.default.propTypes, {\n /**\n * The animation classNames applied to the component as it enters, exits or\n * has finished the transition. A single name can be provided and it will be\n * suffixed for each stage: e.g.\n *\n * `classNames=\"fade\"` applies `fade-enter`, `fade-enter-active`,\n * `fade-enter-done`, `fade-exit`, `fade-exit-active`, `fade-exit-done`,\n * `fade-appear`, `fade-appear-active`, and `fade-appear-done`.\n *\n * **Note**: `fade-appear-done` and `fade-enter-done` will _both_ be applied.\n * This allows you to define different behavior for when appearing is done and\n * when regular entering is done, using selectors like\n * `.fade-enter-done:not(.fade-appear-done)`. For example, you could apply an\n * epic entrance animation when element first appears in the DOM using\n * [Animate.css](https://daneden.github.io/animate.css/). Otherwise you can\n * simply use `fade-enter-done` for defining both cases.\n *\n * Each individual classNames can also be specified independently like:\n *\n * ```js\n * classNames={{\n * appear: 'my-appear',\n * appearActive: 'my-active-appear',\n * appearDone: 'my-done-appear',\n * enter: 'my-enter',\n * enterActive: 'my-active-enter',\n * enterDone: 'my-done-enter',\n * exit: 'my-exit',\n * exitActive: 'my-active-exit',\n * exitDone: 'my-done-exit',\n * }}\n * ```\n *\n * If you want to set these classes using CSS Modules:\n *\n * ```js\n * import styles from './styles.css';\n * ```\n *\n * you might want to use camelCase in your CSS file, that way could simply\n * spread them instead of listing them one by one:\n *\n * ```js\n * classNames={{ ...styles }}\n * ```\n *\n * @type {string | {\n * appear?: string,\n * appearActive?: string,\n * appearDone?: string,\n * enter?: string,\n * enterActive?: string,\n * enterDone?: string,\n * exit?: string,\n * exitActive?: string,\n * exitDone?: string,\n * }}\n */\n classNames: _PropTypes.classNamesShape,\n /**\n * A `` callback fired immediately after the 'enter' or 'appear' class is\n * applied.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEnter: PropTypes.func,\n /**\n * A `` callback fired immediately after the 'enter-active' or\n * 'appear-active' class is applied.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n /**\n * A `` callback fired immediately after the 'enter' or\n * 'appear' classes are **removed** and the `done` class is added to the DOM node.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntered: PropTypes.func,\n /**\n * A `` callback fired immediately after the 'exit' class is\n * applied.\n *\n * @type Function(node: HtmlElement)\n */\n onExit: PropTypes.func,\n /**\n * A `` callback fired immediately after the 'exit-active' is applied.\n *\n * @type Function(node: HtmlElement)\n */\n onExiting: PropTypes.func,\n /**\n * A `` callback fired immediately after the 'exit' classes\n * are **removed** and the `exit-done` class is added to the DOM node.\n *\n * @type Function(node: HtmlElement)\n */\n onExited: PropTypes.func\n}) : {};\nvar _default = CSSTransition;\nexports.default = _default;\nmodule.exports = exports[\"default\"];","import { computed, extendObservable, IReactionOptions, IReactionPublic, isAction, isComputedProp, isObservableProp, makeObservable, observable, reaction, runInAction } from \"mobx\";\nimport { useLocalObservable } from \"mobx-react-lite\";\nimport { Annotation } from \"mobx/dist/internal\";\nimport { useEffect, useState } from \"react\";\nimport { isDevelopment } from \"../env\";\nimport { group, groupEnd } from \"./loggers.utils\";\nimport { isFunction } from \"./typeChecks.utils\";\n\nexport const immediateReaction = (\n expression: (r: IReactionPublic) => T,\n effect: (arg: T, prev: T, r: IReactionPublic) => void\n) => reaction(expression, effect, { fireImmediately: true })\n\nexport const multiExpressionReaction = (\n expressions: ((r: IReactionPublic) => any)[],\n effect: (arg: any, r: IReactionPublic) => void,\n options?: IReactionOptions,\n) => {\n const disposers = expressions.map(e => reaction(e, effect, options));\n return () => disposers.forEach(d => d());\n}\n\n/**\n * \n * A helper function to convert (typically) props object into an MobX observable state object.\n * Every time the component re-renders, the writable fields in the new set of props will be updated.\n * All props will be made observable and writable, but functions and components will be made with `observable.ref`, while other values with `observable.deep`.\n * \n * To help the function determine which props should be deep observable and which ones should only observe ref changes,\n * strictly use the following naming conventions for props that could potentially contain any React components (class / functional / lazy / memoized):\n * - Capitalize first letter, such as `StartSlot`. (The regex to match this is `/^[A-Z]/`).\n * - Name it exactly `children`, and write JSX children as a function.\n * \n * [Important]: For any non-component props that expects a function, \n * you MUST provide a NoOp stub function on mount.\n * \n * @param current: the props object.\n * @param annotations: Provide explicitly defined MobX observable annotations to override the auto-detected annotations by this utility function.\n * @see [Mobx Documentation: Observable State](https://mobx.js.org/observable-state.html)\n * \n * Note that \"useProps\" is only necessary if you are using props in a local MobX store.\n * If props are only used in rendering function, you can just use the original props object unchanged and let React handle the re-rendering.\n * This helper is really created to make it easier to write code and more consistent,\n * and does not necessarily mean better performance.\n * Although in practice, no significant performance hit has been observed. (* to be systematically tested)\n * \n * Rationale: By default, functions will be converted into non-writable, non-observable actions in MobX, \n * as in MobX \"logic\" and \"derivations\" are by default considered not 'state', thus non-mutable and non-enumerable.\n * However, for the automatic props conversion, we want to keep functions in props as \"things (state)\" and not just \"logic\",\n * and keep them writable and observable, because they might well change during a rerender.\n * However, simply using default observable behaviour on components will recursively make them observable,\n * creating a new proxied object and causing some type checks of React component type to fail.\n * So component class / functional component / lazy / memoized components should never be converted into observables,\n * But the *reference* to them in our props state object should.\n * It is not possible to tell apart from code itself whether a function was intended as a functional component,\n * hence strict naming conventions is required so this helper can recognize them and keep them intact.\n * \n */\n\nexport const useProps = (\n current: T,\n annotations: AuthorableAnnotationMap = {},\n options?: ObservableWrapperOptions,\n) => {\n\n const name = `useProps${options?.name ? `@${options?.name}` : ''}`;\n\n const s = useLocalObservable(\n () => createObservable(current, annotations, {\n ...options,\n name,\n includeWritableKeys: true,\n })\n );\n\n useEffect(() => {\n runInAction(() => {\n if (options?.debug) console.log(s.__writableKeys);\n for (let key of s.__writableKeys!) {\n if ((s as T)[key] !== current[key]) (s as T)[key] = current[key];\n }\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [current]);\n\n return s as T;\n\n}\n\n/**\n * A similar helper to MobX's useLocalObservable,\n * but with automatic annotations\n */\nexport const useStore = (\n initializer: () => T,\n annotations: AuthorableAnnotationMap = {},\n options?: ObservableWrapperOptions,\n) => useState(\n () => makeObservableStore(\n initializer(),\n annotations,\n {\n ...options,\n name: `useStore${options?.name ? `@${options?.name}` : ''}`\n }\n ),\n)[0];\n\n/**\n * An alias for useLocalObservable.\n * since the values of the keys are presumed to be CSSObject, it's safe to just use default mobx annotations.\n */\nexport const useStyle = useLocalObservable\n\n/**\n * \n * Performs similar function to `useProps` with automatic annotations,\n * but returns a standalone observable object instead of a state in a component.\n * \n * @param current: the props object.\n * @param annotations: Provide explicitly defined MobX observable annotations to override the auto-detected annotations by this utility function.\n * \n */\nexport const makeObservableStore = (\n object: T,\n annotations: AuthorableAnnotationMap = {},\n options?: ObservableWrapperOptions,\n) => createObservable(object, annotations, options) as T;\n\n\n// ------------------------\n// types & internal helpers\n// ------------------------\n\nexport type AuthorableAnnotationValue = true | false | Annotation;\nexport type AuthorableAnnotationMap = Partial, AuthorableAnnotationValue>>;\nexport type ObservableWrapperOptions = {\n name?: string,\n proxy?: boolean,\n autoBind?: boolean,\n includeWritableKeys?: boolean,\n inPlace?: boolean,\n debug?: boolean,\n}\n\n/**\n * An observable store where functions are treated as states in the store and thus writable and observable.\n * Two $ signs are used, because this is one level more abstract than the usual controllers.\n * For model factory and controller abstractions, a single $ sign is used for meta-level fields and methods.\n */\nexport type ObservableStore = T & {\n __writableKeys?: StringKeyList,\n __debug?: () => void;\n}\n\n/**\n * Making an object observable with our custom annotations.\n */\nexport const createObservable = (\n source: T,\n annotations: AuthorableAnnotationMap = {},\n options?: ObservableWrapperOptions,\n) => {\n\n const descriptors = Object.getOwnPropertyDescriptors(source);\n const _annotations = { ...annotations };\n\n Object.entries(descriptors).forEach(([key, desc]) => {\n if (key in _annotations) return;\n // must use get/set to filter out getter/setters first because they might refer to the constructed object,\n // and checking their values directly will result in error \"cannot access x before initialisation\".\n if (desc.get) {\n _annotations[key as StringKeyOf] = computed;\n return;\n };\n if (desc.set) {\n _annotations[key as StringKeyOf] = false; // ignore lone setter\n return;\n }\n if (_presumePropIsReactComponent(key) || isFunction(desc.value)) {\n _annotations[key as StringKeyOf] = observable.ref;\n return;\n }\n // leave the rest to mobx to figure out\n _annotations[key as StringKeyOf] = true;\n })\n\n if (options?.debug) {\n console.log(descriptors, Object.keys(source), _annotations);\n debugger;\n }\n\n const s = (options?.inPlace ? makeObservable : observable)(source, _annotations as any, options) as ObservableStore;\n\n if (options?.includeWritableKeys) {\n const writableKeys = [] as string[]\n extendObservable(s, {\n get __writableKeys() {\n if (writableKeys.length > 0) return writableKeys;\n writableKeys.push(...Object.entries(source).filter(e => e[1]?.writable !== false).map(e => e[0]));\n return writableKeys;\n },\n })\n }\n\n if (isDevelopment) {\n extendObservable(s, {\n __inspect: () => {\n const keys = Object.keys(Object.getOwnPropertyDescriptors(source)) as StringKeyList;\n console.log(`%c*** [${options?.name ?? 'observable'}] debug info ***`, 'color: green');\n console.log(s);\n console.log('annotations:', _annotations);\n group('keys grouped by:');\n console.log(` all keys : ${keys.join(' ')}`);\n console.log(` observable : ${keys.filter(k => isObservableProp(s, k)).join(' ')}`);\n console.log(`non-observable : ${keys.filter(k => !isObservableProp(s, k)).join(' ')}`);\n console.log(` computeds : ${keys.filter(k => isComputedProp(s, k)).join(' ')}`);\n console.log(` actions : ${keys.filter(k => isAction(s[k])).join(' ')}`);\n console.log(` flows : ${keys.filter(k => isFlow(s[k])).join(' ')}`);\n console.log(` writable : ${s!.__writableKeys?.join(' ')}`);\n console.log(` readonly : ${keys.filter(k => Object.getOwnPropertyDescriptor(s, k)?.writable === false).join(' ')}`);\n groupEnd();\n },\n __name: options?.name ?? 'OBSERVABLE_STORE',\n })\n }\n\n return s;\n\n}\n\nconst _presumePropIsReactComponent = (p: string) => p === 'children' || /^[A-Z]/.test(p);\n\nexport const isFlow = (fn: any) => fn?.isMobXFlow === true;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (process.env.NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","const WebFont = require('webfontloader')\n\nexports.onInitialClientRender = (a, options) => {\n\toptions = { ...options }\n\tdelete options.plugins\n\tWebFont.load(options)\n}","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = hasClass;\n\nfunction hasClass(element, className) {\n if (element.classList) return !!className && element.classList.contains(className);else return (\" \" + (element.className.baseVal || element.className) + \" \").indexOf(\" \" + className + \" \") !== -1;\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = exports.EXITING = exports.ENTERED = exports.ENTERING = exports.EXITED = exports.UNMOUNTED = void 0;\nvar PropTypes = _interopRequireWildcard(require(\"prop-types\"));\nvar _react = _interopRequireDefault(require(\"react\"));\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\nvar _reactLifecyclesCompat = require(\"react-lifecycles-compat\");\nvar _PropTypes = require(\"./utils/PropTypes\");\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n } else {\n var newObj = {};\n if (obj != null) {\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};\n if (desc.get || desc.set) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n }\n newObj.default = obj;\n return newObj;\n }\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\nvar UNMOUNTED = 'unmounted';\nexports.UNMOUNTED = UNMOUNTED;\nvar EXITED = 'exited';\nexports.EXITED = EXITED;\nvar ENTERING = 'entering';\nexports.ENTERING = ENTERING;\nvar ENTERED = 'entered';\nexports.ENTERED = ENTERED;\nvar EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n * transition: `opacity ${duration}ms ease-in-out`,\n * opacity: 0,\n * }\n *\n * const transitionStyles = {\n * entering: { opacity: 0 },\n * entered: { opacity: 1 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n * \n * {state => (\n *
\n * I'm a fade Transition!\n *
\n * )}\n *
\n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n * - `'entering'`\n * - `'entered'`\n * - `'exiting'`\n * - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n *
\n * \n * {state => (\n * // ...\n * )}\n * \n * \n *
\n * );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nexports.EXITING = EXITING;\nvar Transition = /*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Transition, _React$Component);\n function Transition(props, context) {\n var _this;\n _this = _React$Component.call(this, props, context) || this;\n var parentGroup = context.transitionGroup; // In the context of a TransitionGroup all enters are really appears\n\n var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n var initialStatus;\n _this.appearStatus = null;\n if (props.in) {\n if (appear) {\n initialStatus = EXITED;\n _this.appearStatus = ENTERING;\n } else {\n initialStatus = ENTERED;\n }\n } else {\n if (props.unmountOnExit || props.mountOnEnter) {\n initialStatus = UNMOUNTED;\n } else {\n initialStatus = EXITED;\n }\n }\n _this.state = {\n status: initialStatus\n };\n _this.nextCallback = null;\n return _this;\n }\n var _proto = Transition.prototype;\n _proto.getChildContext = function getChildContext() {\n return {\n transitionGroup: null // allows for nested Transitions\n };\n };\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var nextIn = _ref.in;\n if (nextIn && prevState.status === UNMOUNTED) {\n return {\n status: EXITED\n };\n }\n return null;\n }; // getSnapshotBeforeUpdate(prevProps) {\n // let nextStatus = null\n // if (prevProps !== this.props) {\n // const { status } = this.state\n // if (this.props.in) {\n // if (status !== ENTERING && status !== ENTERED) {\n // nextStatus = ENTERING\n // }\n // } else {\n // if (status === ENTERING || status === ENTERED) {\n // nextStatus = EXITING\n // }\n // }\n // }\n // return { nextStatus }\n // }\n\n _proto.componentDidMount = function componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n };\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var nextStatus = null;\n if (prevProps !== this.props) {\n var status = this.state.status;\n if (this.props.in) {\n if (status !== ENTERING && status !== ENTERED) {\n nextStatus = ENTERING;\n }\n } else {\n if (status === ENTERING || status === ENTERED) {\n nextStatus = EXITING;\n }\n }\n }\n this.updateStatus(false, nextStatus);\n };\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n _proto.getTimeouts = function getTimeouts() {\n var timeout = this.props.timeout;\n var exit, enter, appear;\n exit = enter = appear = timeout;\n if (timeout != null && typeof timeout !== 'number') {\n exit = timeout.exit;\n enter = timeout.enter; // TODO: remove fallback for next major\n\n appear = timeout.appear !== undefined ? timeout.appear : enter;\n }\n return {\n exit: exit,\n enter: enter,\n appear: appear\n };\n };\n _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n if (mounting === void 0) {\n mounting = false;\n }\n if (nextStatus !== null) {\n // nextStatus will always be ENTERING or EXITING.\n this.cancelNextCallback();\n var node = _reactDom.default.findDOMNode(this);\n if (nextStatus === ENTERING) {\n this.performEnter(node, mounting);\n } else {\n this.performExit(node);\n }\n } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n this.setState({\n status: UNMOUNTED\n });\n }\n };\n _proto.performEnter = function performEnter(node, mounting) {\n var _this2 = this;\n var enter = this.props.enter;\n var appearing = this.context.transitionGroup ? this.context.transitionGroup.isMounting : mounting;\n var timeouts = this.getTimeouts();\n var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n // if we are mounting and running this it means appear _must_ be set\n\n if (!mounting && !enter) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(node);\n });\n return;\n }\n this.props.onEnter(node, appearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(node, appearing);\n _this2.onTransitionEnd(node, enterTimeout, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(node, appearing);\n });\n });\n });\n };\n _proto.performExit = function performExit(node) {\n var _this3 = this;\n var exit = this.props.exit;\n var timeouts = this.getTimeouts(); // no exit animation skip right to EXITED\n\n if (!exit) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(node);\n });\n return;\n }\n this.props.onExit(node);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(node);\n _this3.onTransitionEnd(node, timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(node);\n });\n });\n });\n };\n _proto.cancelNextCallback = function cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n };\n _proto.safeSetState = function safeSetState(nextState, callback) {\n // This shouldn't be necessary, but there are weird race conditions with\n // setState callbacks and unmounting in testing, so always make sure that\n // we can cancel any pending setState callbacks after we unmount.\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n };\n _proto.setNextCallback = function setNextCallback(callback) {\n var _this4 = this;\n var active = true;\n this.nextCallback = function (event) {\n if (active) {\n active = false;\n _this4.nextCallback = null;\n callback(event);\n }\n };\n this.nextCallback.cancel = function () {\n active = false;\n };\n return this.nextCallback;\n };\n _proto.onTransitionEnd = function onTransitionEnd(node, timeout, handler) {\n this.setNextCallback(handler);\n var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n if (!node || doesNotHaveTimeoutOrListener) {\n setTimeout(this.nextCallback, 0);\n return;\n }\n if (this.props.addEndListener) {\n this.props.addEndListener(node, this.nextCallback);\n }\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n };\n _proto.render = function render() {\n var status = this.state.status;\n if (status === UNMOUNTED) {\n return null;\n }\n var _this$props = this.props,\n children = _this$props.children,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\"]); // filter props for Transtition\n\n delete childProps.in;\n delete childProps.mountOnEnter;\n delete childProps.unmountOnExit;\n delete childProps.appear;\n delete childProps.enter;\n delete childProps.exit;\n delete childProps.timeout;\n delete childProps.addEndListener;\n delete childProps.onEnter;\n delete childProps.onEntering;\n delete childProps.onEntered;\n delete childProps.onExit;\n delete childProps.onExiting;\n delete childProps.onExited;\n if (typeof children === 'function') {\n return children(status, childProps);\n }\n var child = _react.default.Children.only(children);\n return _react.default.cloneElement(child, childProps);\n };\n return Transition;\n}(_react.default.Component);\nTransition.contextTypes = {\n transitionGroup: PropTypes.object\n};\nTransition.childContextTypes = {\n transitionGroup: function transitionGroup() {}\n};\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A `function` child can be used instead of a React element. This function is\n * called with the current transition status (`'entering'`, `'entered'`,\n * `'exiting'`, `'exited'`, `'unmounted'`), which can be used to apply context\n * specific props to a component.\n *\n * ```jsx\n * \n * {state => (\n * \n * )}\n * \n * ```\n */\n children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n /**\n * Show the component; triggers the enter or exit states\n */\n in: PropTypes.bool,\n /**\n * By default the child component is mounted immediately along with\n * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n */\n mountOnEnter: PropTypes.bool,\n /**\n * By default the child component stays mounted after it reaches the `'exited'` state.\n * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n */\n unmountOnExit: PropTypes.bool,\n /**\n * Normally a component is not transitioned if it is shown when the `` component mounts.\n * If you want to transition on the first mount set `appear` to `true`, and the\n * component will transition in as soon as the `` mounts.\n *\n * > Note: there are no specific \"appear\" states. `appear` only adds an additional `enter` transition.\n */\n appear: PropTypes.bool,\n /**\n * Enable or disable enter transitions.\n */\n enter: PropTypes.bool,\n /**\n * Enable or disable exit transitions.\n */\n exit: PropTypes.bool,\n /**\n * The duration of the transition, in milliseconds.\n * Required unless `addEndListener` is provided.\n *\n * You may specify a single timeout for all transitions:\n *\n * ```jsx\n * timeout={500}\n * ```\n *\n * or individually:\n *\n * ```jsx\n * timeout={{\n * appear: 500,\n * enter: 300,\n * exit: 500,\n * }}\n * ```\n *\n * - `appear` defaults to the value of `enter`\n * - `enter` defaults to `0`\n * - `exit` defaults to `0`\n *\n * @type {number | { enter?: number, exit?: number, appear?: number }}\n */\n timeout: function timeout(props) {\n var pt = _PropTypes.timeoutsShape;\n if (!props.addEndListener) pt = pt.isRequired;\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n return pt.apply(void 0, [props].concat(args));\n },\n /**\n * Add a custom transition end trigger. Called with the transitioning\n * DOM node and a `done` callback. Allows for more fine grained transition end\n * logic. **Note:** Timeouts are still used as a fallback if provided.\n *\n * ```jsx\n * addEndListener={(node, done) => {\n * // use the css transitionend event to mark the finish of a transition\n * node.addEventListener('transitionend', done, false);\n * }}\n * ```\n */\n addEndListener: PropTypes.func,\n /**\n * Callback fired before the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEnter: PropTypes.func,\n /**\n * Callback fired after the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n /**\n * Callback fired after the \"entered\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEntered: PropTypes.func,\n /**\n * Callback fired before the \"exiting\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExit: PropTypes.func,\n /**\n * Callback fired after the \"exiting\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExiting: PropTypes.func,\n /**\n * Callback fired after the \"exited\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes.func // Name the function so it is clearer in the documentation\n} : {};\nfunction noop() {}\nTransition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop\n};\nTransition.UNMOUNTED = 0;\nTransition.EXITED = 1;\nTransition.ENTERING = 2;\nTransition.ENTERED = 3;\nTransition.EXITING = 4;\nvar _default = (0, _reactLifecyclesCompat.polyfill)(Transition);\nexports.default = _default;","import React, { createElement } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { apiRunner } from \"./api-runner-browser\"\nimport { grabMatchParams } from \"./find-path\"\n\n// Renders page\nclass PageRenderer extends React.Component {\n render() {\n const props = {\n ...this.props,\n params: {\n ...grabMatchParams(this.props.location.pathname),\n ...this.props.pageResources.json.pageContext.__params,\n },\n }\n\n const pageElement = createElement(this.props.pageResources.component, {\n ...props,\n key: this.props.path || this.props.pageResources.page.path,\n })\n\n const wrappedPage = apiRunner(\n `wrapPageElement`,\n { element: pageElement, props },\n pageElement,\n ({ result }) => {\n return { element: result, props }\n }\n ).pop()\n\n return wrappedPage\n }\n}\n\nPageRenderer.propTypes = {\n location: PropTypes.object.isRequired,\n pageResources: PropTypes.object.isRequired,\n data: PropTypes.object,\n pageContext: PropTypes.object.isRequired,\n}\n\nexport default PageRenderer\n","'use strict';\n\nfunction replaceClassName(origClass, classToRemove) {\n return origClass.replace(new RegExp('(^|\\\\s)' + classToRemove + '(?:\\\\s|$)', 'g'), '$1').replace(/\\s+/g, ' ').replace(/^\\s*|\\s*$/g, '');\n}\n\nmodule.exports = function removeClass(element, className) {\n if (element.classList) element.classList.remove(className);else if (typeof element.className === 'string') element.className = replaceClassName(element.className, className);else element.setAttribute('class', replaceClassName(element.className && element.className.baseVal || '', className));\n};","exports.wrapPageElement = require(`./wrap-page`)\nexports.wrapRootElement = require(`./wrap-root`)\n\nexports.shouldUpdateScroll = () => !window.__tl_inTransition\n","import { reaction } from \"mobx\";\n\nexport const resolveAfter = (dur?: number) => new Promise(resolve => setTimeout(resolve, dur));\n\nexport const tick = (msMin?: number, msMax?: number) => {\n const duration = msMin && msMax ? Math.random() * (msMax - msMin) + msMin : msMin;\n return resolveAfter(duration);\n}\nexport default tick;\n\nexport const runAfter = async (fn: Function, wait?: number) => {\n let alive = true;\n await tick(wait);\n if (alive) fn();\n return () => {\n alive = false;\n }\n}\n\nexport const doEvery = (\n fn: Function,\n interval: number,\n options?: {\n fireImmediately?: boolean,\n until?: () => boolean,\n while?: () => boolean,\n }\n) => {\n const ref = setInterval(() => {\n if (options?.while && !options.while()) {\n cleanup();\n return;\n }\n fn();\n }, interval);\n if (options?.fireImmediately) fn();\n let disposer: AnyFunction;\n if (options?.until) {\n disposer = reaction(options.until, value => value && cleanup());\n }\n const cleanup = () => {\n clearInterval(ref);\n disposer?.();\n }\n return cleanup\n}","var __spreadArray = this && this.__spreadArray || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++) to[j] = from[i];\n return to;\n};\n/**\n * Interprets an encoded string and returns either the string or null/undefined if not available.\n * Ignores array inputs (takes just first element in array)\n * @param input encoded string\n */\nfunction getEncodedValue(input, allowEmptyString) {\n if (input == null) {\n return input;\n }\n // '' or []\n if (input.length === 0 && (!allowEmptyString || allowEmptyString && input !== '')) {\n return null;\n }\n var str = input instanceof Array ? input[0] : input;\n if (str == null) {\n return str;\n }\n if (!allowEmptyString && str === '') {\n return null;\n }\n return str;\n}\n/**\n * Interprets an encoded string and return null/undefined or an array with\n * the encoded string contents\n * @param input encoded string\n */\nfunction getEncodedValueArray(input) {\n if (input == null) {\n return input;\n }\n return input instanceof Array ? input : input === '' ? [] : [input];\n}\n/**\n * Encodes a date as a string in YYYY-MM-DD format.\n *\n * @param {Date} date\n * @return {String} the encoded date\n */\nexport function encodeDate(date) {\n if (date == null) {\n return date;\n }\n var year = date.getFullYear();\n var month = date.getMonth() + 1;\n var day = date.getDate();\n return year + \"-\" + (month < 10 ? \"0\" + month : month) + \"-\" + (day < 10 ? \"0\" + day : day);\n}\n/**\n * Converts a date in the format 'YYYY-mm-dd...' into a proper date, because\n * new Date() does not do that correctly. The date can be as complete or incomplete\n * as necessary (aka, '2015', '2015-10', '2015-10-01').\n * It will not work for dates that have times included in them.\n *\n * If an array is provided, only the first entry is used.\n *\n * @param {String} input String date form like '2015-10-01'\n * @return {Date} parsed date\n */\nexport function decodeDate(input) {\n var dateString = getEncodedValue(input);\n if (dateString == null) return dateString;\n var parts = dateString.split('-');\n // may only be a year so won't even have a month\n if (parts[1] != null) {\n parts[1] -= 1; // Note: months are 0-based\n } else {\n // just a year, set the month and day to the first\n parts[1] = 0;\n parts[2] = 1;\n }\n var decoded = new (Date.bind.apply(Date, __spreadArray([void 0], parts)))();\n if (isNaN(decoded.getTime())) {\n return null;\n }\n return decoded;\n}\n/**\n * Encodes a date as a string in ISO 8601 (\"2019-05-28T10:58:40Z\") format.\n *\n * @param {Date} date\n * @return {String} the encoded date\n */\nexport function encodeDateTime(date) {\n if (date == null) {\n return date;\n }\n return date.toISOString();\n}\n/**\n * Converts a date in the https://en.wikipedia.org/wiki/ISO_8601 format.\n * For allowed inputs see specs:\n * - https://tools.ietf.org/html/rfc2822#page-14\n * - http://www.ecma-international.org/ecma-262/5.1/#sec-15.9.1.15\n *\n * If an array is provided, only the first entry is used.\n *\n * @param {String} input String date form like '1995-12-17T03:24:00'\n * @return {Date} parsed date\n */\nexport function decodeDateTime(input) {\n var dateString = getEncodedValue(input);\n if (dateString == null) return dateString;\n var decoded = new Date(dateString);\n if (isNaN(decoded.getTime())) {\n return null;\n }\n return decoded;\n}\n/**\n * Encodes a boolean as a string. true -> \"1\", false -> \"0\".\n *\n * @param {Boolean} bool\n * @return {String} the encoded boolean\n */\nexport function encodeBoolean(bool) {\n if (bool == null) {\n return bool;\n }\n return bool ? '1' : '0';\n}\n/**\n * Decodes a boolean from a string. \"1\" -> true, \"0\" -> false.\n * Everything else maps to undefined.\n *\n * If an array is provided, only the first entry is used.\n *\n * @param {String} input the encoded boolean string\n * @return {Boolean} the boolean value\n */\nexport function decodeBoolean(input) {\n var boolStr = getEncodedValue(input);\n if (boolStr == null) return boolStr;\n if (boolStr === '1') {\n return true;\n } else if (boolStr === '0') {\n return false;\n }\n return null;\n}\n/**\n * Encodes a number as a string.\n *\n * @param {Number} num\n * @return {String} the encoded number\n */\nexport function encodeNumber(num) {\n if (num == null) {\n return num;\n }\n return String(num);\n}\n/**\n * Decodes a number from a string. If the number is invalid,\n * it returns undefined.\n *\n * If an array is provided, only the first entry is used.\n *\n * @param {String} input the encoded number string\n * @return {Number} the number value\n */\nexport function decodeNumber(input) {\n var numStr = getEncodedValue(input);\n if (numStr == null) return numStr;\n if (numStr === '') return null;\n var result = +numStr;\n return result;\n}\n/**\n * Encodes a string while safely handling null and undefined values.\n *\n * @param {String} str a string to encode\n * @return {String} the encoded string\n */\nexport function encodeString(str) {\n if (str == null) {\n return str;\n }\n return String(str);\n}\n/**\n * Decodes a string while safely handling null and undefined values.\n *\n * If an array is provided, only the first entry is used.\n *\n * @param {String} input the encoded string\n * @return {String} the string value\n */\nexport function decodeString(input) {\n var str = getEncodedValue(input, true);\n if (str == null) return str;\n return String(str);\n}\n/**\n * Decodes an enum value while safely handling null and undefined values.\n *\n * If an array is provided, only the first entry is used.\n *\n * @param {String} input the encoded string\n * @param {String[]} enumValues allowed enum values\n * @return {String} the string value from enumValues\n */\nexport function decodeEnum(input, enumValues) {\n var str = decodeString(input);\n if (str == null) return str;\n return enumValues.includes(str) ? str : undefined;\n}\n/**\n * Encodes anything as a JSON string.\n *\n * @param {Any} any The thing to be encoded\n * @return {String} The JSON string representation of any\n */\nexport function encodeJson(any) {\n if (any == null) {\n return any;\n }\n return JSON.stringify(any);\n}\n/**\n * Decodes a JSON string into javascript\n *\n * If an array is provided, only the first entry is used.\n *\n * @param {String} input The JSON string representation\n * @return {Any} The javascript representation\n */\nexport function decodeJson(input) {\n var jsonStr = getEncodedValue(input);\n if (jsonStr == null) return jsonStr;\n var result = null;\n try {\n result = JSON.parse(jsonStr);\n } catch (e) {\n /* ignore errors, returning undefined */\n }\n return result;\n}\n/**\n * Encodes an array as a JSON string.\n *\n * @param {Array} array The array to be encoded\n * @return {String[]} The array of strings to be put in the URL\n * as repeated query parameters\n */\nexport function encodeArray(array) {\n if (array == null) {\n return array;\n }\n return array;\n}\n/**\n * Decodes an array or singular value and returns it as an array\n * or undefined if falsy. Filters out undefined values.\n *\n * @param {String | Array} input The input value\n * @return {Array} The javascript representation\n */\nexport function decodeArray(input) {\n var arr = getEncodedValueArray(input);\n if (arr == null) return arr;\n return arr;\n}\n/**\n * Encodes a numeric array as a JSON string.\n *\n * @param {Array} array The array to be encoded\n * @return {String[]} The array of strings to be put in the URL\n * as repeated query parameters\n */\nexport function encodeNumericArray(array) {\n if (array == null) {\n return array;\n }\n return array.map(String);\n}\n/**\n * Decodes an array or singular value and returns it as an array\n * or undefined if falsy. Filters out undefined and NaN values.\n *\n * @param {String | Array} input The input value\n * @return {Array} The javascript representation\n */\nexport function decodeNumericArray(input) {\n var arr = decodeArray(input);\n if (arr == null) return arr;\n return arr.map(function (d) {\n return d === '' || d == null ? null : +d;\n });\n}\n/**\n * Encodes an array as a delimited string. For example,\n * ['a', 'b'] -> 'a_b' with entrySeparator='_'\n *\n * @param array The array to be encoded\n * @param entrySeparator The string used to delimit entries\n * @return The array as a string with elements joined by the\n * entry separator\n */\nexport function encodeDelimitedArray(array, entrySeparator) {\n if (entrySeparator === void 0) {\n entrySeparator = '_';\n }\n if (array == null) {\n return array;\n }\n return array.join(entrySeparator);\n}\n/**\n * Decodes a delimited string into javascript array. For example,\n * 'a_b' -> ['a', 'b'] with entrySeparator='_'\n *\n * If an array is provided as input, only the first entry is used.\n *\n * @param {String} input The JSON string representation\n * @param entrySeparator The array as a string with elements joined by the\n * entry separator\n * @return {Array} The javascript representation\n */\nexport function decodeDelimitedArray(input, entrySeparator) {\n if (entrySeparator === void 0) {\n entrySeparator = '_';\n }\n var arrayStr = getEncodedValue(input, true);\n if (arrayStr == null) return arrayStr;\n if (arrayStr === '') return [];\n return arrayStr.split(entrySeparator);\n}\n/**\n * Encodes a numeric array as a delimited string. (alias of encodeDelimitedArray)\n * For example, [1, 2] -> '1_2' with entrySeparator='_'\n *\n * @param {Array} array The array to be encoded\n * @return {String} The JSON string representation of array\n */\nexport var encodeDelimitedNumericArray = encodeDelimitedArray;\n/**\n * Decodes a delimited string into javascript array where all entries are numbers\n * For example, '1_2' -> [1, 2] with entrySeparator='_'\n *\n * If an array is provided as input, only the first entry is used.\n *\n * @param {String} jsonStr The JSON string representation\n * @return {Array} The javascript representation\n */\nexport function decodeDelimitedNumericArray(arrayStr, entrySeparator) {\n if (entrySeparator === void 0) {\n entrySeparator = '_';\n }\n var decoded = decodeDelimitedArray(arrayStr, entrySeparator);\n if (decoded == null) return decoded;\n return decoded.map(function (d) {\n return d === '' || d == null ? null : +d;\n });\n}\n/**\n * Encode simple objects as readable strings. Works only for simple,\n * flat objects where values are numbers, strings.\n *\n * For example { foo: bar, boo: baz } -> \"foo-bar_boo-baz\"\n *\n * @param {Object} object The object to encode\n * @param {String} keyValSeparator=\"-\" The separator between keys and values\n * @param {String} entrySeparator=\"_\" The separator between entries\n * @return {String} The encoded object\n */\nexport function encodeObject(obj, keyValSeparator, entrySeparator) {\n if (keyValSeparator === void 0) {\n keyValSeparator = '-';\n }\n if (entrySeparator === void 0) {\n entrySeparator = '_';\n }\n if (obj == null) return obj; // null or undefined\n if (!Object.keys(obj).length) return ''; // {} case\n return Object.keys(obj).map(function (key) {\n return \"\" + key + keyValSeparator + obj[key];\n }).join(entrySeparator);\n}\n/**\n * Decodes a simple object to javascript. Currently works only for simple,\n * flat objects where values are strings.\n *\n * For example \"foo-bar_boo-baz\" -> { foo: bar, boo: baz }\n *\n * If an array is provided as input, only the first entry is used.\n *\n * @param {String} input The object string to decode\n * @param {String} keyValSeparator=\"-\" The separator between keys and values\n * @param {String} entrySeparator=\"_\" The separator between entries\n * @return {Object} The javascript object\n */\nexport function decodeObject(input, keyValSeparator, entrySeparator) {\n if (keyValSeparator === void 0) {\n keyValSeparator = '-';\n }\n if (entrySeparator === void 0) {\n entrySeparator = '_';\n }\n var objStr = getEncodedValue(input, true);\n if (objStr == null) return objStr;\n if (objStr === '') return {};\n var obj = {};\n var keyValSeparatorRegExp = new RegExp(keyValSeparator + \"(.*)\");\n objStr.split(entrySeparator).forEach(function (entryStr) {\n var _a = entryStr.split(keyValSeparatorRegExp),\n key = _a[0],\n value = _a[1];\n obj[key] = value;\n });\n return obj;\n}\n/**\n * Encode simple objects as readable strings. Alias of encodeObject.\n *\n * For example { foo: 123, boo: 521 } -> \"foo-123_boo-521\"\n *\n * @param {Object} object The object to encode\n * @param {String} keyValSeparator=\"-\" The separator between keys and values\n * @param {String} entrySeparator=\"_\" The separator between entries\n * @return {String} The encoded object\n */\nexport var encodeNumericObject = encodeObject;\n/**\n * Decodes a simple object to javascript where all values are numbers.\n * Currently works only for simple, flat objects.\n *\n * For example \"foo-123_boo-521\" -> { foo: 123, boo: 521 }\n *\n * If an array is provided as input, only the first entry is used.\n *\n * @param {String} input The object string to decode\n * @param {String} keyValSeparator=\"-\" The separator between keys and values\n * @param {String} entrySeparator=\"_\" The separator between entries\n * @return {Object} The javascript object\n */\nexport function decodeNumericObject(input, keyValSeparator, entrySeparator) {\n if (keyValSeparator === void 0) {\n keyValSeparator = '-';\n }\n if (entrySeparator === void 0) {\n entrySeparator = '_';\n }\n var decoded = decodeObject(input, keyValSeparator, entrySeparator);\n if (decoded == null) return decoded;\n // convert to numbers\n var decodedNumberObj = {};\n for (var _i = 0, _a = Object.keys(decoded); _i < _a.length; _i++) {\n var key = _a[_i];\n decodedNumberObj[key] = decodeNumber(decoded[key]);\n }\n return decodedNumberObj;\n}","import * as Serialize from './serialize';\n/**\n * String values\n */\nexport var StringParam = {\n encode: Serialize.encodeString,\n decode: Serialize.decodeString\n};\n/**\n * String enum\n */\nexport var createEnumParam = function (enumValues) {\n return {\n encode: Serialize.encodeString,\n decode: function (input) {\n return Serialize.decodeEnum(input, enumValues);\n }\n };\n};\n/**\n * Numbers (integers or floats)\n */\nexport var NumberParam = {\n encode: Serialize.encodeNumber,\n decode: Serialize.decodeNumber\n};\n/**\n * For flat objects where values are strings\n */\nexport var ObjectParam = {\n encode: Serialize.encodeObject,\n decode: Serialize.decodeObject\n};\n/**\n * For flat arrays of strings, filters out undefined values during decode\n */\nexport var ArrayParam = {\n encode: Serialize.encodeArray,\n decode: Serialize.decodeArray\n};\n/**\n * For flat arrays of strings, filters out undefined values during decode\n */\nexport var NumericArrayParam = {\n encode: Serialize.encodeNumericArray,\n decode: Serialize.decodeNumericArray\n};\n/**\n * For any type of data, encoded via JSON.stringify\n */\nexport var JsonParam = {\n encode: Serialize.encodeJson,\n decode: Serialize.decodeJson\n};\n/**\n * For simple dates (YYYY-MM-DD)\n */\nexport var DateParam = {\n encode: Serialize.encodeDate,\n decode: Serialize.decodeDate,\n equals: function (valueA, valueB) {\n if (valueA === valueB) return true;\n if (valueA == null || valueB == null) return valueA === valueB;\n // ignore time of day\n return valueA.getFullYear() === valueB.getFullYear() && valueA.getMonth() === valueB.getMonth() && valueA.getDate() === valueB.getDate();\n }\n};\n/**\n * For dates in simplified extended ISO format (YYYY-MM-DDTHH:mm:ss.sssZ or ±YYYYYY-MM-DDTHH:mm:ss.sssZ)\n */\nexport var DateTimeParam = {\n encode: Serialize.encodeDateTime,\n decode: Serialize.decodeDateTime,\n equals: function (valueA, valueB) {\n if (valueA === valueB) return true;\n if (valueA == null || valueB == null) return valueA === valueB;\n return valueA.valueOf() === valueB.valueOf();\n }\n};\n/**\n * For boolean values: 1 = true, 0 = false\n */\nexport var BooleanParam = {\n encode: Serialize.encodeBoolean,\n decode: Serialize.decodeBoolean\n};\n/**\n * For flat objects where the values are numbers\n */\nexport var NumericObjectParam = {\n encode: Serialize.encodeNumericObject,\n decode: Serialize.decodeNumericObject\n};\n/**\n * For flat arrays of strings, filters out undefined values during decode\n */\nexport var DelimitedArrayParam = {\n encode: Serialize.encodeDelimitedArray,\n decode: Serialize.decodeDelimitedArray\n};\n/**\n * For flat arrays where the values are numbers, filters out undefined values during decode\n */\nexport var DelimitedNumericArrayParam = {\n encode: Serialize.encodeDelimitedNumericArray,\n decode: Serialize.decodeDelimitedNumericArray\n};","var __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { stringify, parse as parseQueryString, parseUrl } from 'query-string';\n/**\n * An example of a transformSearchString function that undoes encoding of\n * common JSON characters that are technically allowed in URLs.\n */\nvar JSON_SAFE_CHARS = \"{}[],\\\":\".split('').map(function (d) {\n return [d, encodeURIComponent(d)];\n});\nexport function transformSearchStringJsonSafe(searchString) {\n var str = searchString;\n for (var _i = 0, JSON_SAFE_CHARS_1 = JSON_SAFE_CHARS; _i < JSON_SAFE_CHARS_1.length; _i++) {\n var _a = JSON_SAFE_CHARS_1[_i],\n char = _a[0],\n code = _a[1];\n str = str.replace(new RegExp('\\\\' + code, 'g'), char);\n }\n return str;\n}\n/**\n * Update a location, wiping out parameters not included in encodedQuery\n * If a param is set to undefined it will be removed from the URL.\n */\nexport function updateLocation(encodedQuery, location, stringifyOptions) {\n var encodedSearchString = stringify(encodedQuery, stringifyOptions);\n if (stringifyOptions && stringifyOptions.transformSearchString) {\n encodedSearchString = stringifyOptions.transformSearchString(encodedSearchString);\n }\n var search = encodedSearchString.length ? \"?\" + encodedSearchString : '';\n var href = parseUrl(location.href || '').url + search;\n var newLocation = __assign(__assign({}, location), {\n key: \"\" + Date.now(),\n // needed for some routers (e.g. react-router)\n href: href,\n search: search,\n query: encodedQuery\n });\n return newLocation;\n}\n/**\n * Update a location while retaining existing parameters.\n * If a param is set to undefined it will be removed from the URL.\n */\nexport function updateInLocation(encodedQueryReplacements, location, stringifyOptions) {\n // explicitly avoid parsing numbers to ensure the\n // return type has the same shape as EncodeQuery\n var currQuery = parseQueryString(location.search, {\n parseNumbers: false\n });\n var newQuery = __assign(__assign({}, currQuery), encodedQueryReplacements);\n return updateLocation(newQuery, location, stringifyOptions);\n}","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license at\n * https://github.com/facebook/fbjs/blob/master/LICENSE\n */\n/*eslint-disable no-self-compare */\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n/**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\nfunction is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n // Added the nonzero y check to make Flow happy, but it is redundant\n return x !== 0 || y !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n}\n/**\n * Performs equality by iterating through keys on an object and returning false\n * when any key has values which are not strictly equal between the arguments.\n * Returns true when the values of all keys are strictly equal.\n\n * @pbeshai modification of shallowEqual to take into consideration a map providing\n * equals functions\n */\nexport default function shallowEqual(objA, objB, equalMap) {\n var _a, _b;\n if (is(objA, objB)) {\n return true;\n }\n if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n return false;\n }\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n if (keysA.length !== keysB.length) {\n return false;\n }\n // Test for A's keys different from B.\n for (var i = 0; i < keysA.length; i++) {\n var isEqual = (_b = (_a = equalMap === null || equalMap === void 0 ? void 0 : equalMap[keysA[i]]) === null || _a === void 0 ? void 0 : _a.equals) !== null && _b !== void 0 ? _b : is;\n if (!hasOwnProperty.call(objB, keysA[i]) || !isEqual(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n return true;\n}","import * as React from 'react';\nimport { extract } from 'query-string';\nimport shallowEqual from './shallowEqual';\nexport function useUpdateRefIfShallowNew(ref, newValue, isEqual) {\n if (isEqual === void 0) {\n isEqual = shallowEqual;\n }\n var hasNew = (ref.current == null || newValue == null) && ref.current === newValue || !isEqual(ref.current, newValue);\n React.useEffect(function () {\n if (hasNew) {\n ref.current = newValue;\n }\n }, [ref, newValue, hasNew]);\n}\nexport function getSSRSafeSearchString(location) {\n // handle checking SSR (#13)\n if (typeof location === 'object') {\n // in browser\n if (typeof window !== 'undefined') {\n return location.search;\n } else {\n return extract(\"\" + location.pathname + (location.search ? location.search : ''));\n }\n }\n return '';\n}","import { updateLocation, updateInLocation } from 'serialize-query-params';\n/**\n * Creates a new location object containing the specified query changes.\n * If replaceIn or pushIn are used as the updateType, then parameters\n * not specified in queryReplacements are retained. If replace or push\n * are used, only the values in queryReplacements will be available.\n * The default is pushIn.\n */\nexport function createLocationWithChanges(queryReplacements, location, updateType, stringifyOptions) {\n if (updateType === void 0) {\n updateType = 'pushIn';\n }\n switch (updateType) {\n case 'replace':\n case 'push':\n return updateLocation(queryReplacements, location, stringifyOptions);\n case 'replaceIn':\n case 'pushIn':\n default:\n return updateInLocation(queryReplacements, location, stringifyOptions);\n }\n}\n/**\n * Updates the URL to the new location.\n */\nexport function updateUrlQuery(history, location, updateType) {\n if (updateType === void 0) {\n updateType = 'pushIn';\n }\n switch (updateType) {\n case 'pushIn':\n case 'push':\n history.push(location);\n break;\n case 'replaceIn':\n case 'replace':\n default:\n history.replace(location);\n break;\n }\n}","import * as React from 'react';\nimport { updateUrlQuery, createLocationWithChanges } from './updateUrlQuery';\nvar providerlessContextValue = {\n location: {},\n getLocation: function () {\n return {};\n },\n setLocation: function () {}\n};\nexport var LocationContext = React.createContext(providerlessContextValue);\nexport function useLocationContext() {\n var context = React.useContext(LocationContext);\n if (process.env.NODE_ENV !== 'production' && (context === undefined || context === providerlessContextValue)) {\n throw new Error('useQueryParams must be used within a QueryParamProvider');\n }\n return context;\n}\n/**\n * An internal-only context provider which provides down the most\n * recent location object and a callback to update the history.\n */\nexport function LocationProvider(_a) {\n var history = _a.history,\n location = _a.location,\n children = _a.children,\n stringifyOptions = _a.stringifyOptions;\n var locationRef = React.useRef(location);\n React.useEffect(function () {\n locationRef.current = location;\n }, [location]);\n // TODO: we can probably simplify this now that we are reading location from history\n var getLocation = React.useCallback(function () {\n return locationRef.current;\n }, [locationRef]);\n var setLocation = React.useCallback(function (queryReplacements, updateType) {\n // A ref is needed here to stop setLocation updating constantly (see #46)\n locationRef.current = createLocationWithChanges(queryReplacements, history == null || history.location == null ? locationRef.current : history.location, updateType, stringifyOptions);\n if (history) {\n updateUrlQuery(history, locationRef.current, updateType);\n }\n }, [history, stringifyOptions]);\n return React.createElement(LocationContext.Provider, {\n value: {\n location: location,\n getLocation: getLocation,\n setLocation: setLocation\n }\n }, children);\n}","import { parse as parseQueryString } from 'query-string';\nexport var makeMemoizedQueryParser = function (initialSearchString) {\n var cachedSearchString = initialSearchString;\n var cachedParsedQuery = parseQueryString(cachedSearchString || '');\n return function (newSearchString) {\n if (cachedSearchString !== newSearchString) {\n cachedSearchString = newSearchString;\n cachedParsedQuery = parseQueryString(cachedSearchString);\n }\n return cachedParsedQuery;\n };\n};\nexport var sharedMemoizedQueryParser = makeMemoizedQueryParser();","import * as React from 'react';\nimport { StringParam } from 'serialize-query-params';\nimport { getSSRSafeSearchString, useUpdateRefIfShallowNew } from './helpers';\nimport { useLocationContext } from './LocationProvider';\nimport { sharedMemoizedQueryParser } from './memoizedQueryParser';\nimport shallowEqual from './shallowEqual';\n/**\n * Helper to get the latest decoded value with smart caching.\n * Abstracted into its own function to allow re-use in a functional setter (#26)\n */\nfunction getLatestDecodedValue(location, name, paramConfig, paramConfigRef, encodedValueCacheRef, decodedValueCacheRef) {\n var _a;\n // check if we have a new param config\n var hasNewParamConfig = !shallowEqual(paramConfigRef.current, paramConfig);\n var isValueEqual = (_a = paramConfig.equals) !== null && _a !== void 0 ? _a : shallowEqual;\n // read in the parsed query\n var parsedQuery = sharedMemoizedQueryParser(getSSRSafeSearchString(location) // get the latest location object\n );\n // read in the encoded string value (we have to check cache if available because\n // sometimes the query string changes so we get a new parsedQuery but this value\n // didn't change, so we should avoid generating a new array or whatever value)\n var hasNewEncodedValue = !shallowEqual(encodedValueCacheRef.current, parsedQuery[name]);\n var encodedValue = hasNewEncodedValue ? parsedQuery[name] : encodedValueCacheRef.current;\n // only decode if we have changes to encoded value or the config.\n // check for undefined to handle initial case\n if (!hasNewEncodedValue && !hasNewParamConfig && decodedValueCacheRef.current !== undefined) {\n return decodedValueCacheRef.current;\n }\n var newDecodedValue = paramConfig.decode(encodedValue);\n var hasNewDecodedValue = (decodedValueCacheRef.current == null || newDecodedValue == null) && decodedValueCacheRef.current === newDecodedValue || !isValueEqual(decodedValueCacheRef.current, newDecodedValue);\n // if we have a new decoded value use it, otherwise use cached\n return hasNewDecodedValue ? newDecodedValue : decodedValueCacheRef.current;\n}\n/**\n * Given a query param name and query parameter configuration ({ encode, decode })\n * return the decoded value and a setter for updating it.\n *\n * The setter takes two arguments (newValue, updateType) where updateType\n * is one of 'replace' | 'replaceIn' | 'push' | 'pushIn', defaulting to\n * 'pushIn'.\n *\n * You may optionally pass in a rawQuery object, otherwise the query is derived\n * from the location available in the context.\n *\n * D = decoded type\n * D2 = return value from decode (typically same as D)\n */\nexport var useQueryParam = function (name, paramConfig) {\n if (paramConfig === void 0) {\n paramConfig = StringParam;\n }\n var _a = useLocationContext(),\n location = _a.location,\n getLocation = _a.getLocation,\n setLocation = _a.setLocation;\n // read in the raw query\n var parsedQuery = sharedMemoizedQueryParser(getSSRSafeSearchString(location));\n // make caches\n var encodedValueCacheRef = React.useRef();\n var paramConfigRef = React.useRef(paramConfig);\n var decodedValueCacheRef = React.useRef();\n var decodedValue = getLatestDecodedValue(location, name, paramConfig, paramConfigRef, encodedValueCacheRef, decodedValueCacheRef);\n // update cached values in a useEffect\n useUpdateRefIfShallowNew(encodedValueCacheRef, parsedQuery[name]);\n useUpdateRefIfShallowNew(paramConfigRef, paramConfig);\n useUpdateRefIfShallowNew(decodedValueCacheRef, decodedValue, paramConfig.equals);\n // create the setter, memoizing via useCallback\n var setValueDeps = {\n paramConfig: paramConfig,\n name: name,\n setLocation: setLocation,\n getLocation: getLocation\n };\n var setValueDepsRef = React.useRef(setValueDeps);\n setValueDepsRef.current = setValueDeps;\n var setValue = React.useCallback(function setValueCallback(newValue, updateType) {\n var _a;\n var deps = setValueDepsRef.current;\n var newEncodedValue;\n // allow functional updates #26\n if (typeof newValue === 'function') {\n // get latest decoded value to pass as a fresh arg to the setter fn\n var latestValue = getLatestDecodedValue(deps.getLocation(), deps.name, deps.paramConfig, paramConfigRef, encodedValueCacheRef, decodedValueCacheRef);\n decodedValueCacheRef.current = latestValue; // keep cache in sync\n newEncodedValue = deps.paramConfig.encode(newValue(latestValue));\n } else {\n newEncodedValue = deps.paramConfig.encode(newValue);\n }\n // update the URL\n deps.setLocation((_a = {}, _a[deps.name] = newEncodedValue, _a), updateType);\n }, []);\n return [decodedValue, setValue];\n};","import useQueryParams from './useQueryParams';\nexport var QueryParams = function (_a) {\n var config = _a.config,\n children = _a.children;\n var _b = useQueryParams(config),\n query = _b[0],\n setQuery = _b[1];\n return children({\n query: query,\n setQuery: setQuery\n });\n};\nexport default QueryParams;","var __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { LocationProvider } from './LocationProvider';\nimport shallowEqual from './shallowEqual';\n// we use a lazy caching solution to prevent #46 from happening\nvar cachedWindowHistory;\nvar cachedAdaptedWindowHistory;\n/**\n * Adapts standard DOM window history to work with our\n * { replace, push } interface.\n *\n * @param history Standard history provided by DOM\n */\nfunction adaptWindowHistory(history) {\n if (history === cachedWindowHistory && cachedAdaptedWindowHistory != null) {\n return cachedAdaptedWindowHistory;\n }\n var adaptedWindowHistory = {\n replace: function (location) {\n history.replaceState(location.state, '', location.protocol + \"//\" + location.host + location.pathname + location.search);\n },\n push: function (location) {\n history.pushState(location.state, '', location.protocol + \"//\" + location.host + location.pathname + location.search);\n },\n get location() {\n return window.location;\n }\n };\n cachedWindowHistory = history;\n cachedAdaptedWindowHistory = adaptedWindowHistory;\n return adaptedWindowHistory;\n}\n// we use a lazy caching solution to prevent #46 from happening\nvar cachedReachHistory;\nvar cachedAdaptedReachHistory;\n/**\n * Adapts @reach/router history to work with our\n * { replace, push } interface.\n *\n * @param history globalHistory from @reach/router\n */\nfunction adaptReachHistory(history) {\n if (history === cachedReachHistory && cachedAdaptedReachHistory != null) {\n return cachedAdaptedReachHistory;\n }\n var adaptedReachHistory = {\n replace: function (location) {\n history.navigate(location.protocol + \"//\" + location.host + location.pathname + location.search, {\n replace: true\n });\n },\n push: function (location) {\n history.navigate(location.protocol + \"//\" + location.host + location.pathname + location.search, {\n replace: false\n });\n },\n get location() {\n return history.location;\n }\n };\n cachedReachHistory = history;\n cachedAdaptedReachHistory = adaptedReachHistory;\n return adaptedReachHistory;\n}\n/**\n * Helper to produce the context value falling back to\n * window history and location if not provided.\n */\nexport function getLocationProps(_a) {\n var _b = _a === void 0 ? {} : _a,\n history = _b.history,\n location = _b.location;\n var hasWindow = typeof window !== 'undefined';\n if (hasWindow) {\n if (!history) {\n history = adaptWindowHistory(window.history);\n }\n if (!location) {\n location = window.location;\n }\n }\n if (!location) {\n throw new Error(\"\\n Could not read the location. Is the router wired up correctly?\\n \");\n }\n return {\n history: history,\n location: location\n };\n}\n/**\n * Context provider for query params to have access to the\n * active routing system, enabling updates to the URL.\n */\nexport function QueryParamProvider(_a) {\n var children = _a.children,\n ReactRouterRoute = _a.ReactRouterRoute,\n reachHistory = _a.reachHistory,\n history = _a.history,\n location = _a.location,\n stringifyOptions = _a.stringifyOptions;\n // cache the stringify options object so we users can just do\n // \n var stringifyOptionsRef = React.useRef(stringifyOptions);\n var hasNewStringifyOptions = !shallowEqual(stringifyOptionsRef.current, stringifyOptions);\n var stringifyOptionsCached = hasNewStringifyOptions ? stringifyOptions : stringifyOptionsRef.current;\n React.useEffect(function () {\n stringifyOptionsRef.current = stringifyOptionsCached;\n }, [stringifyOptionsCached]);\n // if we have React Router, use it to get the context value\n if (ReactRouterRoute) {\n return React.createElement(ReactRouterRoute, null, function (routeProps) {\n return React.createElement(LocationProvider, __assign({\n stringifyOptions: stringifyOptionsCached\n }, getLocationProps(routeProps)), children);\n });\n }\n // if we are using reach router, use its history\n if (reachHistory) {\n return React.createElement(LocationProvider, __assign({\n stringifyOptions: stringifyOptionsCached\n }, getLocationProps({\n history: adaptReachHistory(reachHistory),\n location: location\n })), children);\n }\n // neither reach nor react-router, so allow manual overrides\n return React.createElement(LocationProvider, __assign({\n stringifyOptions: stringifyOptionsCached\n }, getLocationProps({\n history: history,\n location: location\n })), children);\n}\nexport default QueryParamProvider;","import { observable } from \"mobx\";\nimport { ReactNode } from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { isBrowser } from \"../env\";\nimport { AppController } from \"./app.controller\";\n\nexport const makePortalController = () => {\n\n const c = observable({\n root: null as unknown as AppController,\n el: isBrowser ? document.getElementById('app-portal') : null,\n render: (renderable: ReactNode) => {\n if (!c.el) {\n return null;\n }\n return ReactDOM.createPortal(\n renderable,\n c.el,\n )\n },\n init: (root: AppController) => {\n c.root = root;\n }\n })\n\n return c;\n\n}\n\nexport type PortalController = ReturnType;\n","import { ActionConfig, DefaultActionResolveValue } from \"../types/app.types\";\n\nexport const defaultDialogActionsMap: Record<'true' | 'false', ActionConfig> = {\n true: {\n resolve: true,\n Label: 'OK',\n },\n false: {\n resolve: false,\n Label: 'Cancel',\n },\n}\nexport const defaultDialogActionsArray = [\n defaultDialogActionsMap.true,\n defaultDialogActionsMap.false,\n]","import { Observer } from 'mobx-react-lite';\nimport React from 'react';\nimport { ActionConfig, DefaultActionResolveValue, DialogConfig } from '../../types/app.types';\nimport { defaultDialogActionsArray } from '../../utils/dialogs.utils';\nimport { useProps, useStore } from '../../utils/mobx.utils';\nimport { isString } from '../../utils/typeChecks.utils';\nimport BaseButton from '../BaseButton/BaseButton';\nimport './DialogLayer.scss';\n\ntype DialogLayerProps = {\n config: DialogConfig,\n onActionTrigger: (action: ActionConfig) => void;\n}\n\nconst DialogLayer = (props: React.PropsWithChildren>) => {\n const p = useProps(props);\n const s = useStore(() => ({\n dismiss: () => p.onActionTrigger({resolve: false as T}),\n }))\n return (\n
\n \n
\n
\n
\n {isString(p.config.Heading) ?

{p.config.Heading}

: p.config.Heading}\n
\n \n
\n {p.config.Body &&
\n {isString(p.config.Body) ?

{p.config.Body}

: p.config.Body}\n
}\n
\n {(p.config.actions || defaultDialogActionsArray).map((action, i) => p.onActionTrigger(action as ActionConfig)}\n />)}\n
\n
\n
\n )} />\n}\n\nexport default DialogLayer;","\nexport class PointerDetector {\n valueArray: string[] = [];\n constructor(options: {\n debug?: boolean,\n onDetectingMouse?: Function,\n onDetectingTouch?: Function,\n onDetectingStylus?: Function,\n } = {}) {\n const { debug, onDetectingMouse, onDetectingTouch, onDetectingStylus } = options\n let lastMouseMove = performance.now();\n const mousemoveDetector = () => {\n const thisMouseMove = performance.now();\n if (lastMouseMove && thisMouseMove - lastMouseMove < 50) {\n this.valueArray.push('mouse');\n if (debug) {\n const el = document.createElement('pre');\n el.innerHTML = 'Mousemove detected with two consecutive events within 50ms. Presuming a mouse is available.';\n document.body.prepend(el);\n }\n document.documentElement.classList.add('mouse');\n onDetectingMouse && onDetectingMouse();\n window.removeEventListener('mousemove', mousemoveDetector);\n } else lastMouseMove = thisMouseMove;\n }\n const touchstartDetector = (e: TouchEvent) => {\n this.valueArray.push('touch');\n if (debug) {\n const el = document.createElement('pre');\n el.innerHTML = 'Touchstart event detected.';\n document.body.prepend(el);\n }\n if (e.touches[0] && e.touches[0].touchType === 'stylus') {\n document.documentElement.classList.add('stylus');\n onDetectingStylus && onDetectingStylus();\n } else {\n document.documentElement.classList.add('touch');\n onDetectingTouch && onDetectingTouch();\n }\n if (this.valueArray.includes('stylus') && this.valueArray.includes('touch')) {\n window.removeEventListener('touchstart', touchstartDetector);\n }\n }\n window.addEventListener('mousemove', mousemoveDetector);\n window.addEventListener('touchstart', touchstartDetector);\n }\n}\n\nexport default PointerDetector;","import { action, flow, observable } from \"mobx\";\nimport React, { ReactNode } from 'react';\nimport { isLegacyEdge } from \"react-device-detect\";\nimport DialogLayer from \"../components/DialogLayer/DialogLayer\";\nimport { isBrowser } from \"../env\";\nimport { ActionConfig, DefaultActionResolveValue, DialogConfig } from \"../types/app.types\";\nimport { addToArrayIfNew, removeFromArray } from \"../utils/array.utils\";\nimport { isFirefox, isIE } from \"../utils/browsers.utils\";\nimport { defaultDialogActionsMap } from \"../utils/dialogs.utils\";\nimport { addRootClass, getScrollY } from \"../utils/dom.utils\";\nimport { initParallax } from \"../utils/parallax.utils\";\nimport { highPerf } from \"../utils/performance.utils\";\nimport PointerDetector from \"../utils/pointerDetector.utils\";\nimport { getRandomNumericString } from \"../utils/random.utils\";\nimport { isString } from \"../utils/typeChecks.utils\";\nimport { runAfter } from \"../utils/waiters.utils\";\nimport { AppController } from \"./app.controller\";\nimport { makeDecoTricolorController } from \"./decoTricolor.controller\";\n\nexport const makeUIController = () => {\n let initHasCalled = false;\n const c = observable({\n ready: false,\n root: null as unknown as AppController,\n cssFeatures: {\n // grid: false,\n grid: isBrowser ? window.CSS?.supports('display: grid') && !isIE : true,\n customProperties: isBrowser ? window.CSS?.supports('--a: 1') && !isIE : true,\n },\n viewport: {\n width: isBrowser ? document.body.clientWidth : 768,\n height: isBrowser ? window.innerHeight : 768,\n scrollY: isBrowser ? getScrollY() : 0,\n },\n document: {\n width: isBrowser ? document.documentElement.scrollWidth : 768,\n height: isBrowser ? document.documentElement.scrollHeight : 768,\n },\n ui: {\n isDarkTheme: true,\n scrollbarWidth: isBrowser ? window.innerWidth - document.body.clientWidth : 0,\n pointerTypes: [] as string[],\n },\n cursor: {\n x: 0,\n y: 0,\n },\n tricolor: makeDecoTricolorController(),\n isFirstLoad: true,\n dialogs: observable.array([], { deep: false }) as ReactNode[],\n presentDialog: (\n config: DialogConfig\n ) => new Promise(resolve => {\n const d = observable({\n resolveValue: undefined as T | undefined,\n });\n const handleActionTrigger = flow(function* (action: ActionConfig) {\n yield action.beforeResolve?.();\n d.resolveValue = action.resolve;\n resolve(d.resolveValue);\n dispose();\n });\n const dialog = ;\n addToArrayIfNew(c.dialogs, dialog);\n const dispose = () => {\n if (d.resolveValue === undefined) d.resolveValue = false as T;\n removeFromArray(c.dialogs, dialog);\n }\n return observable({\n get resolveValue() { return d.resolveValue },\n get resolved() { return d.resolveValue !== undefined },\n dispose,\n })\n }),\n prompt: (\n config: string | Omit, 'actions'>\n ) => {\n const actions = [defaultDialogActionsMap.true];\n if (isString(config)) return c.presentDialog({ Heading: config, actions });\n else return c.presentDialog({ ...config, actions });\n },\n init: action((root: AppController) => {\n if (initHasCalled) {\n console.warn('initiating the same UI Controller instance twice. aborting.');\n return;\n }\n c.root = root;\n if (isBrowser) {\n if (!c.cssFeatures.grid) addRootClass('nogrid');\n if (!c.cssFeatures.customProperties) {\n addRootClass('nocssvar dark');\n }\n document.documentElement.classList.toggle('low-perf', !highPerf);\n let lastScrollY = getScrollY();\n const checkScrollY = action(() => {\n c.viewport.scrollY = getScrollY();\n document.documentElement.classList.toggle('page-scrolled', window.scrollY > 100);\n document.documentElement.classList.toggle('reverse-scroll', c.viewport.scrollY < lastScrollY);\n lastScrollY = c.viewport.scrollY <= 0 ? 0 : c.viewport.scrollY;\n })\n const checkScrollbarWidth = action(() => {\n c.ui.scrollbarWidth = window.innerWidth - document.body.clientWidth;\n })\n const handleWindowScroll = () => {\n checkScrollY();\n }\n const handleWindowResize = action(() => {\n c.viewport.width = document.body.clientWidth;\n c.viewport.height = window.innerHeight;\n c.document.width = document.documentElement.scrollWidth;\n c.document.height = document.documentElement.scrollHeight;\n document.documentElement.style.setProperty('--vw', c.viewport.width + 'px');\n document.documentElement.style.setProperty('--vh', c.viewport.height + 'px');\n checkScrollY();\n checkScrollbarWidth();\n })\n const handleWindowFocus = () => {\n checkScrollbarWidth();\n }\n if (!isIE && !isFirefox) window.addEventListener('scroll', handleWindowScroll);\n window.addEventListener('resize', handleWindowResize);\n window.addEventListener('focus', handleWindowFocus);\n handleWindowResize();\n runAfter(handleWindowResize, 200); // check size briefly after page load, the scrollbar might have appeared\n runAfter(handleWindowResize, 1000); // check again in case the device is slow\n runAfter(handleWindowResize, 2000); // check again in case the device is terribly slow\n const initPointerDetector = () => {\n new PointerDetector({\n onDetectingMouse: action(() => c.ui.pointerTypes.push('mouse')),\n onDetectingTouch: action(() => c.ui.pointerTypes.push('touch')),\n onDetectingStylus: action(() => c.ui.pointerTypes.push('stylus')),\n });\n }\n initPointerDetector();\n initParallax();\n runAfter(action(() => {\n c.isFirstLoad = false;\n }), 1000);\n runAfter(() => {\n if (isIE) {\n c.prompt({\n Heading: 'You are using Internet Explorer and might not see the page rendered as intended.',\n Body: 'We recommend visiting our website with newer browsers.',\n })\n } else if (isLegacyEdge) {\n c.prompt({\n Heading: 'You are using a legacy version of Microsoft Edge and might not see the page rendered as intended.',\n Body: 'We recommend visiting our website with the latest version of Microsoft Edge, or other newer browsers.',\n })\n }\n }, 4000);\n c.ready = true;\n }\n }),\n })\n return c;\n}\nexport type UIController = ReturnType;","import { observable } from \"mobx\";\nimport { createContext, useContext } from \"react\";\nimport packageJson from '../../package.json';\nimport { isBrowser, isDevelopment } from \"../env\";\nimport { makePortalController, PortalController } from \"./portal.controller\";\nimport { makeUIController, UIController } from \"./ui.controller\";\n\nconst makeSiteInfo = () => ({\n name: 'AxonDivision',\n version: packageJson.version,\n})\n\nexport type AppController = {\n siteInfo: ReturnType,\n PORTAL: PortalController,\n UI: UIController,\n}\n\nconst makeAppController = () => {\n const c: AppController = observable({\n siteInfo: makeSiteInfo(),\n PORTAL: makePortalController(),\n UI: makeUIController(),\n })\n c.PORTAL.init(c);\n c.UI.init(c);\n if (isDevelopment && isBrowser) {\n Reflect.set(window, 'ROOT', c);\n Reflect.set(window, 'UI', c.UI);\n }\n if (isBrowser) {\n document.documentElement.setAttribute('data-version', c.siteInfo.version);\n }\n return c;\n}\n\nexport const AppController = makeAppController();\n\nexport const AppContext = createContext(AppController);\n\nexport const useAppContext = () => useContext(AppContext);","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport Link, {\n withPrefix,\n withAssetPrefix,\n navigate,\n push,\n replace,\n navigateTo,\n parsePath,\n} from \"gatsby-link\"\nimport { useScrollRestoration } from \"gatsby-react-router-scroll\"\nimport PageRenderer from \"./public-page-renderer\"\nimport loader from \"./loader\"\n\nconst prefetchPathname = loader.enqueue\n\nconst StaticQueryContext = React.createContext({})\n\nfunction StaticQueryDataRenderer({ staticQueryData, data, query, render }) {\n const finalData = data\n ? data.data\n : staticQueryData[query] && staticQueryData[query].data\n\n return (\n \n {finalData && render(finalData)}\n {!finalData &&
Loading (StaticQuery)
}\n
\n )\n}\n\nconst StaticQuery = props => {\n const { data, query, render, children } = props\n\n return (\n \n {staticQueryData => (\n \n )}\n \n )\n}\n\nconst useStaticQuery = query => {\n if (\n typeof React.useContext !== `function` &&\n process.env.NODE_ENV === `development`\n ) {\n throw new Error(\n `You're likely using a version of React that doesn't support Hooks\\n` +\n `Please update React and ReactDOM to 16.8.0 or later to use the useStaticQuery hook.`\n )\n }\n const context = React.useContext(StaticQueryContext)\n\n // query is a stringified number like `3303882` when wrapped with graphql, If a user forgets\n // to wrap the query in a grqphql, then casting it to a Number results in `NaN` allowing us to\n // catch the misuse of the API and give proper direction\n if (isNaN(Number(query))) {\n throw new Error(`useStaticQuery was called with a string but expects to be called using \\`graphql\\`. Try this:\n\nimport { useStaticQuery, graphql } from 'gatsby';\n\nuseStaticQuery(graphql\\`${query}\\`);\n`)\n }\n\n if (context[query]?.data) {\n return context[query].data\n } else {\n throw new Error(\n `The result of this StaticQuery could not be fetched.\\n\\n` +\n `This is likely a bug in Gatsby and if refreshing the page does not fix it, ` +\n `please open an issue in https://github.com/gatsbyjs/gatsby/issues`\n )\n }\n}\n\nStaticQuery.propTypes = {\n data: PropTypes.object,\n query: PropTypes.string.isRequired,\n render: PropTypes.func,\n children: PropTypes.func,\n}\n\nfunction graphql() {\n throw new Error(\n `It appears like Gatsby is misconfigured. Gatsby related \\`graphql\\` calls ` +\n `are supposed to only be evaluated at compile time, and then compiled away. ` +\n `Unfortunately, something went wrong and the query was left in the compiled code.\\n\\n` +\n `Unless your site has a complex or custom babel/Gatsby configuration this is likely a bug in Gatsby.`\n )\n}\n\nexport {\n Link,\n withAssetPrefix,\n withPrefix,\n graphql,\n parsePath,\n navigate,\n useScrollRestoration,\n StaticQueryContext,\n StaticQuery,\n PageRenderer,\n useStaticQuery,\n prefetchPathname,\n}\n","const preferDefault = m => (m && m.default) || m\n\nif (process.env.BUILD_STAGE === `develop`) {\n module.exports = preferDefault(require(`./public-page-renderer-dev`))\n} else if (process.env.BUILD_STAGE === `build-javascript`) {\n module.exports = preferDefault(require(`./public-page-renderer-prod`))\n} else {\n module.exports = () => null\n}\n","var arrayWithoutHoles = require(\"./arrayWithoutHoles.js\");\nvar iterableToArray = require(\"./iterableToArray.js\");\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\nvar nonIterableSpread = require(\"./nonIterableSpread.js\");\nfunction _toConsumableArray(r) {\n return arrayWithoutHoles(r) || iterableToArray(r) || unsupportedIterableToArray(r) || nonIterableSpread();\n}\nmodule.exports = _toConsumableArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// import * as Sentry from '@sentry/react';\nimport { isProduction } from '../env';\n\n// export const shouldStartSentry = isBrowser && process.env.NODE_ENV === 'production';\nexport const shouldStartSentry = false;\n\nexport const log = (message?: any, ...optionalParams: any[]) => {\n if (isProduction) return;\n console.log(message, ...optionalParams);\n}\nexport const alwaysLog = (message?: any, ...optionalParams: any[]) => {\n console.log(message, ...optionalParams);\n}\n\nexport const warn = (message?: any, ...optionalParams: any[]) => {\n if (isProduction) return;\n console.warn(message, ...optionalParams);\n}\n\nexport const group = (...label: any[]) => {\n if (isProduction) return;\n console.group(...label);\n}\nexport const groupEnd = () => {\n if (isProduction) return;\n console.groupEnd();\n}\n\nexport function reportError(e: string | Error) {\n console.error(e);\n const error = typeof e === 'string' ? new Error(e) : e;\n // if (shouldStartSentry) Sentry.captureException(error);\n}\n\nexport function runAndIgnoreError(fn?: Function) {\n try {\n fn && fn()\n } catch(e) {\n console.warn('An error was ignored:', e);\n }\n} \n","import React, { Component } from 'react'\nimport ReactDOM from 'react-dom'\n\nconst portalRoot = typeof document !== `undefined` ? document.body : false\n\nconst PortalContainer = props => {\n\tconst zIndex = (function(level) {\n\t\tswitch (level) {\n\t\t\tcase 'bottom':\n\t\t\t\treturn 1000\n\t\t\tcase 'top':\n\t\t\t\treturn 1200\n\t\t\tdefault:\n\t\t\t\treturn 1100\n\t\t}\n\t})(props.level)\n\n\treturn (\n\t\t\n\t\t\t{props.children}\n\t\t\n\t)\n}\n\nexport default class TransitionPortal extends Component {\n\tconstructor() {\n\t\tsuper()\n\t\tthis.el =\n\t\t\ttypeof document !== `undefined`\n\t\t\t\t? document.createElement('section')\n\t\t\t\t: false\n\t}\n\n\tcomponentDidMount = () => {\n\t\tportalRoot && portalRoot.appendChild(this.el)\n\t}\n\n\tcomponentWillUnmount = () => {\n\t\tportalRoot && portalRoot.removeChild(this.el)\n\t}\n\n\trender() {\n\t\treturn this.el && portalRoot\n\t\t\t? ReactDOM.createPortal(\n\t\t\t\t\t<>\n\t\t\t\t\t\t{portalRoot && (\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{this.props.children}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t)}\n\t\t\t\t\t,\n\t\t\t\t\tthis.el\n\t\t\t )\n\t\t\t: null\n\t}\n}\n","export const isBrowser = typeof window !== \"undefined\";\nexport const isBuildTime = !isBrowser;\n\nexport const isProduction = process.env.NODE_ENV === 'production';\nexport const isDevelopment = process.env.NODE_ENV === 'development';\n\nexport const isInCypressTestMode = isBrowser && Boolean(window.Cypress);\n\nconst LocalAPIOverrideStorageKey = 'LOCAL_API_OVERRIDE';\n\nconst hostname = isBrowser ? window.location.hostname : '';\n\nexport const isLocalhost = hostname === 'localhost';\n\nexport const enableInsights = false;\nexport const enableAxonFlow = false;","/*\n * adapted from @reach/router implementation:\n * defintion: https://github.com/reach/router/blob/master/src/index.js#L542-L545\n * usage: https://github.com/reach/router/blob/master/src/index.js#L391-L397\n */\n\nconst shouldNavigate = event =>\n\t!event.defaultPrevented &&\n\tevent.button === 0 &&\n\t!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey)\n\nexport { shouldNavigate }\n","import mitt from \"mitt\"\n\nconst emitter = mitt()\nexport default emitter\n","// \n// An event handler can take an optional event argument\n// and should not return a value\n \n \n\n// An array of all currently registered event handlers for a type\n \n \n// A map of event types and their corresponding event handlers.\n \n \n \n \n\n/** Mitt: Tiny (~200b) functional event emitter / pubsub.\n * @name mitt\n * @returns {Mitt}\n */\nfunction mitt(all ) {\n\tall = all || Object.create(null);\n\n\treturn {\n\t\t/**\n\t\t * Register an event handler for the given type.\n\t\t *\n\t\t * @param {String} type\tType of event to listen for, or `\"*\"` for all events\n\t\t * @param {Function} handler Function to call in response to given event\n\t\t * @memberOf mitt\n\t\t */\n\t\ton: function on(type , handler ) {\n\t\t\t(all[type] || (all[type] = [])).push(handler);\n\t\t},\n\n\t\t/**\n\t\t * Remove an event handler for the given type.\n\t\t *\n\t\t * @param {String} type\tType of event to unregister `handler` from, or `\"*\"`\n\t\t * @param {Function} handler Handler function to remove\n\t\t * @memberOf mitt\n\t\t */\n\t\toff: function off(type , handler ) {\n\t\t\tif (all[type]) {\n\t\t\t\tall[type].splice(all[type].indexOf(handler) >>> 0, 1);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Invoke all handlers for the given type.\n\t\t * If present, `\"*\"` handlers are invoked after type-matched handlers.\n\t\t *\n\t\t * @param {String} type The event type to invoke\n\t\t * @param {Any} [evt] Any value (object is recommended and powerful), passed to each handler\n\t\t * @memberOf mitt\n\t\t */\n\t\temit: function emit(type , evt ) {\n\t\t\t(all[type] || []).slice().map(function (handler) { handler(evt); });\n\t\t\t(all['*'] || []).slice().map(function (handler) { handler(type, evt); });\n\t\t}\n\t};\n}\n\nexport default mitt;\n//# sourceMappingURL=mitt.es.js.map\n","var now = require('performance-now'),\n root = typeof window === 'undefined' ? global : window,\n vendors = ['moz', 'webkit'],\n suffix = 'AnimationFrame',\n raf = root['request' + suffix],\n caf = root['cancel' + suffix] || root['cancelRequest' + suffix];\nfor (var i = 0; !raf && i < vendors.length; i++) {\n raf = root[vendors[i] + 'Request' + suffix];\n caf = root[vendors[i] + 'Cancel' + suffix] || root[vendors[i] + 'CancelRequest' + suffix];\n}\n\n// Some versions of FF have rAF but not cAF\nif (!raf || !caf) {\n var last = 0,\n id = 0,\n queue = [],\n frameDuration = 1000 / 60;\n raf = function (callback) {\n if (queue.length === 0) {\n var _now = now(),\n next = Math.max(0, frameDuration - (_now - last));\n last = next + _now;\n setTimeout(function () {\n var cp = queue.slice(0);\n // Clear queue here to prevent\n // callbacks from appending listeners\n // to the current frame's queue\n queue.length = 0;\n for (var i = 0; i < cp.length; i++) {\n if (!cp[i].cancelled) {\n try {\n cp[i].callback(last);\n } catch (e) {\n setTimeout(function () {\n throw e;\n }, 0);\n }\n }\n }\n }, Math.round(next));\n }\n queue.push({\n handle: ++id,\n callback: callback,\n cancelled: false\n });\n return id;\n };\n caf = function (handle) {\n for (var i = 0; i < queue.length; i++) {\n if (queue[i].handle === handle) {\n queue[i].cancelled = true;\n }\n }\n };\n}\nmodule.exports = function (fn) {\n // Wrap in a new function to prevent\n // `cancel` potentially being assigned\n // to the native rAF function\n return raf.call(root, fn);\n};\nmodule.exports.cancel = function () {\n caf.apply(root, arguments);\n};\nmodule.exports.polyfill = function (object) {\n if (!object) {\n object = root;\n }\n object.requestAnimationFrame = raf;\n object.cancelAnimationFrame = caf;\n};","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","'use strict';\n\nmodule.exports = (string, separator) => {\n if (!(typeof string === 'string' && typeof separator === 'string')) {\n throw new TypeError('Expected the arguments to be of type `string`');\n }\n if (separator === '') {\n return [string];\n }\n const separatorIndex = string.indexOf(separator);\n if (separatorIndex === -1) {\n return [string];\n }\n return [string.slice(0, separatorIndex), string.slice(separatorIndex + separator.length)];\n};","export function getRandomInteger(floor: number = 0, ceil: number = 10) {\n return Math.round(Math.random() * (ceil - floor) + floor);\n}\n\nexport function getRandomNumericString(length = 8) {\n return (Math.random() * new Date().getTime() + '').replace('.', '').substr(0, length);\n}","export { useTransitionState } from './useTransitionState'\nexport { useTriggerTransition } from './useTriggerTransition'\n","var objectWithoutPropertiesLoose = require(\"./objectWithoutPropertiesLoose.js\");\nfunction _objectWithoutProperties(e, t) {\n if (null == e) return {};\n var o,\n r,\n i = objectWithoutPropertiesLoose(e, t);\n if (Object.getOwnPropertySymbols) {\n var n = Object.getOwnPropertySymbols(e);\n for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]);\n }\n return i;\n}\nmodule.exports = _objectWithoutProperties, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","\"use strict\";\n\nvar _CSSTransition = _interopRequireDefault(require(\"./CSSTransition\"));\nvar _ReplaceTransition = _interopRequireDefault(require(\"./ReplaceTransition\"));\nvar _TransitionGroup = _interopRequireDefault(require(\"./TransitionGroup\"));\nvar _Transition = _interopRequireDefault(require(\"./Transition\"));\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nmodule.exports = {\n Transition: _Transition.default,\n TransitionGroup: _TransitionGroup.default,\n ReplaceTransition: _ReplaceTransition.default,\n CSSTransition: _CSSTransition.default\n};","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nmodule.exports = _nonIterableSpread, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","\"use strict\";\n\nexports.__esModule = true;\nexports.classNamesShape = exports.timeoutsShape = void 0;\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nvar timeoutsShape = process.env.NODE_ENV !== 'production' ? _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.shape({\n enter: _propTypes.default.number,\n exit: _propTypes.default.number,\n appear: _propTypes.default.number\n}).isRequired]) : null;\nexports.timeoutsShape = timeoutsShape;\nvar classNamesShape = process.env.NODE_ENV !== 'production' ? _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.shape({\n enter: _propTypes.default.string,\n exit: _propTypes.default.string,\n active: _propTypes.default.string\n}), _propTypes.default.shape({\n enter: _propTypes.default.string,\n enterDone: _propTypes.default.string,\n enterActive: _propTypes.default.string,\n exit: _propTypes.default.string,\n exitDone: _propTypes.default.string,\n exitActive: _propTypes.default.string\n})]) : null;\nexports.classNamesShape = classNamesShape;","const getMs = seconds => seconds * 1000\n\nexport { getMs }\n","import { uniq } from \"./ramdaEquivalents.utils\";\n\nexport const addToArrayIfNew = (arr?: T[], ...itemsToAdd: T[]) => {\n if (!arr) return arr;\n for (let item of itemsToAdd) {\n if (arr.includes(item)) break;\n arr.push(item);\n }\n return arr;\n}\n\nexport const removeFromArray = (arr?: T[], ...itemsToRemove: T[]) => {\n if (!arr) return arr;\n for (let item of itemsToRemove) {\n let i = arr.indexOf(item);\n while (i >= 0) {\n arr.splice(i, 1);\n i = arr.indexOf(item);\n }\n }\n return arr;\n}\n\nexport const toggleInArrayWithPredicate = (arr?: T[], predicate?: any, ...itemsToToggle: T[]) => {\n if (!arr) return;\n if (Boolean(predicate)) addToArrayIfNew(arr, ...itemsToToggle);\n else removeFromArray(arr, ...itemsToToggle);\n}\n\nexport const intersection = (arrA: A[], arrB: B[]) => uniq(arrB.filter(b => arrA.includes(b as any))) as (A | B)[];\nexport const hasIntersection = (arrA: A[], arrB: B[]) => intersection(arrA, arrB).length > 0;\n\nexport const sortRandomly = (arr: T[]) => Array.from(arr).sort((a, b) => .5 - Math.random());\n","\"use strict\";\n\nexports.__esModule = true;\nexports.parsePath = parsePath;\n\nfunction parsePath(path) {\n var pathname = path || \"/\";\n var search = \"\";\n var hash = \"\";\n var hashIndex = pathname.indexOf(\"#\");\n\n if (hashIndex !== -1) {\n hash = pathname.substr(hashIndex);\n pathname = pathname.substr(0, hashIndex);\n }\n\n var searchIndex = pathname.indexOf(\"?\");\n\n if (searchIndex !== -1) {\n search = pathname.substr(searchIndex);\n pathname = pathname.substr(0, searchIndex);\n }\n\n return {\n pathname: pathname,\n search: search === \"?\" ? \"\" : search,\n hash: hash === \"#\" ? \"\" : hash\n };\n}","'use strict';\n\nconst strictUriEncode = require('strict-uri-encode');\nconst decodeComponent = require('decode-uri-component');\nconst splitOnFirst = require('split-on-first');\nconst filterObject = require('filter-obj');\nconst isNullOrUndefined = value => value === null || value === undefined;\nfunction encoderForArrayFormat(options) {\n switch (options.arrayFormat) {\n case 'index':\n return key => (result, value) => {\n const index = result.length;\n if (value === undefined || options.skipNull && value === null || options.skipEmptyString && value === '') {\n return result;\n }\n if (value === null) {\n return [...result, [encode(key, options), '[', index, ']'].join('')];\n }\n return [...result, [encode(key, options), '[', encode(index, options), ']=', encode(value, options)].join('')];\n };\n case 'bracket':\n return key => (result, value) => {\n if (value === undefined || options.skipNull && value === null || options.skipEmptyString && value === '') {\n return result;\n }\n if (value === null) {\n return [...result, [encode(key, options), '[]'].join('')];\n }\n return [...result, [encode(key, options), '[]=', encode(value, options)].join('')];\n };\n case 'comma':\n case 'separator':\n return key => (result, value) => {\n if (value === null || value === undefined || value.length === 0) {\n return result;\n }\n if (result.length === 0) {\n return [[encode(key, options), '=', encode(value, options)].join('')];\n }\n return [[result, encode(value, options)].join(options.arrayFormatSeparator)];\n };\n default:\n return key => (result, value) => {\n if (value === undefined || options.skipNull && value === null || options.skipEmptyString && value === '') {\n return result;\n }\n if (value === null) {\n return [...result, encode(key, options)];\n }\n return [...result, [encode(key, options), '=', encode(value, options)].join('')];\n };\n }\n}\nfunction parserForArrayFormat(options) {\n let result;\n switch (options.arrayFormat) {\n case 'index':\n return (key, value, accumulator) => {\n result = /\\[(\\d*)\\]$/.exec(key);\n key = key.replace(/\\[\\d*\\]$/, '');\n if (!result) {\n accumulator[key] = value;\n return;\n }\n if (accumulator[key] === undefined) {\n accumulator[key] = {};\n }\n accumulator[key][result[1]] = value;\n };\n case 'bracket':\n return (key, value, accumulator) => {\n result = /(\\[\\])$/.exec(key);\n key = key.replace(/\\[\\]$/, '');\n if (!result) {\n accumulator[key] = value;\n return;\n }\n if (accumulator[key] === undefined) {\n accumulator[key] = [value];\n return;\n }\n accumulator[key] = [].concat(accumulator[key], value);\n };\n case 'comma':\n case 'separator':\n return (key, value, accumulator) => {\n const isArray = typeof value === 'string' && value.includes(options.arrayFormatSeparator);\n const isEncodedArray = typeof value === 'string' && !isArray && decode(value, options).includes(options.arrayFormatSeparator);\n value = isEncodedArray ? decode(value, options) : value;\n const newValue = isArray || isEncodedArray ? value.split(options.arrayFormatSeparator).map(item => decode(item, options)) : value === null ? value : decode(value, options);\n accumulator[key] = newValue;\n };\n default:\n return (key, value, accumulator) => {\n if (accumulator[key] === undefined) {\n accumulator[key] = value;\n return;\n }\n accumulator[key] = [].concat(accumulator[key], value);\n };\n }\n}\nfunction validateArrayFormatSeparator(value) {\n if (typeof value !== 'string' || value.length !== 1) {\n throw new TypeError('arrayFormatSeparator must be single character string');\n }\n}\nfunction encode(value, options) {\n if (options.encode) {\n return options.strict ? strictUriEncode(value) : encodeURIComponent(value);\n }\n return value;\n}\nfunction decode(value, options) {\n if (options.decode) {\n return decodeComponent(value);\n }\n return value;\n}\nfunction keysSorter(input) {\n if (Array.isArray(input)) {\n return input.sort();\n }\n if (typeof input === 'object') {\n return keysSorter(Object.keys(input)).sort((a, b) => Number(a) - Number(b)).map(key => input[key]);\n }\n return input;\n}\nfunction removeHash(input) {\n const hashStart = input.indexOf('#');\n if (hashStart !== -1) {\n input = input.slice(0, hashStart);\n }\n return input;\n}\nfunction getHash(url) {\n let hash = '';\n const hashStart = url.indexOf('#');\n if (hashStart !== -1) {\n hash = url.slice(hashStart);\n }\n return hash;\n}\nfunction extract(input) {\n input = removeHash(input);\n const queryStart = input.indexOf('?');\n if (queryStart === -1) {\n return '';\n }\n return input.slice(queryStart + 1);\n}\nfunction parseValue(value, options) {\n if (options.parseNumbers && !Number.isNaN(Number(value)) && typeof value === 'string' && value.trim() !== '') {\n value = Number(value);\n } else if (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {\n value = value.toLowerCase() === 'true';\n }\n return value;\n}\nfunction parse(query, options) {\n options = Object.assign({\n decode: true,\n sort: true,\n arrayFormat: 'none',\n arrayFormatSeparator: ',',\n parseNumbers: false,\n parseBooleans: false\n }, options);\n validateArrayFormatSeparator(options.arrayFormatSeparator);\n const formatter = parserForArrayFormat(options);\n\n // Create an object with no prototype\n const ret = Object.create(null);\n if (typeof query !== 'string') {\n return ret;\n }\n query = query.trim().replace(/^[?#&]/, '');\n if (!query) {\n return ret;\n }\n for (const param of query.split('&')) {\n if (param === '') {\n continue;\n }\n let [key, value] = splitOnFirst(options.decode ? param.replace(/\\+/g, ' ') : param, '=');\n\n // Missing `=` should be `null`:\n // http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n value = value === undefined ? null : ['comma', 'separator'].includes(options.arrayFormat) ? value : decode(value, options);\n formatter(decode(key, options), value, ret);\n }\n for (const key of Object.keys(ret)) {\n const value = ret[key];\n if (typeof value === 'object' && value !== null) {\n for (const k of Object.keys(value)) {\n value[k] = parseValue(value[k], options);\n }\n } else {\n ret[key] = parseValue(value, options);\n }\n }\n if (options.sort === false) {\n return ret;\n }\n return (options.sort === true ? Object.keys(ret).sort() : Object.keys(ret).sort(options.sort)).reduce((result, key) => {\n const value = ret[key];\n if (Boolean(value) && typeof value === 'object' && !Array.isArray(value)) {\n // Sort object keys, not values\n result[key] = keysSorter(value);\n } else {\n result[key] = value;\n }\n return result;\n }, Object.create(null));\n}\nexports.extract = extract;\nexports.parse = parse;\nexports.stringify = (object, options) => {\n if (!object) {\n return '';\n }\n options = Object.assign({\n encode: true,\n strict: true,\n arrayFormat: 'none',\n arrayFormatSeparator: ','\n }, options);\n validateArrayFormatSeparator(options.arrayFormatSeparator);\n const shouldFilter = key => options.skipNull && isNullOrUndefined(object[key]) || options.skipEmptyString && object[key] === '';\n const formatter = encoderForArrayFormat(options);\n const objectCopy = {};\n for (const key of Object.keys(object)) {\n if (!shouldFilter(key)) {\n objectCopy[key] = object[key];\n }\n }\n const keys = Object.keys(objectCopy);\n if (options.sort !== false) {\n keys.sort(options.sort);\n }\n return keys.map(key => {\n const value = object[key];\n if (value === undefined) {\n return '';\n }\n if (value === null) {\n return encode(key, options);\n }\n if (Array.isArray(value)) {\n return value.reduce(formatter(key), []).join('&');\n }\n return encode(key, options) + '=' + encode(value, options);\n }).filter(x => x.length > 0).join('&');\n};\nexports.parseUrl = (url, options) => {\n options = Object.assign({\n decode: true\n }, options);\n const [url_, hash] = splitOnFirst(url, '#');\n return Object.assign({\n url: url_.split('?')[0] || '',\n query: parse(extract(url), options)\n }, options && options.parseFragmentIdentifier && hash ? {\n fragmentIdentifier: decode(hash, options)\n } : {});\n};\nexports.stringifyUrl = (object, options) => {\n options = Object.assign({\n encode: true,\n strict: true\n }, options);\n const url = removeHash(object.url).split('?')[0] || '';\n const queryFromUrl = exports.extract(object.url);\n const parsedQueryFromUrl = exports.parse(queryFromUrl, {\n sort: false\n });\n const query = Object.assign(parsedQueryFromUrl, object.query);\n let queryString = exports.stringify(query, options);\n if (queryString) {\n queryString = `?${queryString}`;\n }\n let hash = getHash(object.url);\n if (object.fragmentIdentifier) {\n hash = `#${encode(object.fragmentIdentifier, options)}`;\n }\n return `${url}${queryString}${hash}`;\n};\nexports.pick = (input, filter, options) => {\n options = Object.assign({\n parseFragmentIdentifier: true\n }, options);\n const {\n url,\n query,\n fragmentIdentifier\n } = exports.parseUrl(input, options);\n return exports.stringifyUrl({\n url,\n query: filterObject(query, filter),\n fragmentIdentifier\n }, options);\n};\nexports.exclude = (input, filter, options) => {\n const exclusionFilter = Array.isArray(filter) ? key => !filter.includes(key) : (key, value) => !filter(key, value);\n return exports.pick(input, exclusionFilter, options);\n};","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n","function _assertThisInitialized(e) {\n if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return e;\n}\nmodule.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","import { useStore } from \"../utils/mobx.utils\";\n\nexport const useObservableRef = (initialValue?: T) => {\n\tconst ref = useStore(() => ({\n\t\t_current: initialValue || null,\n\t\t// use of explicit getter and setter to avoid mobx strict-mode warnings,\n\t\t// otherwise modifying `current` value will not happen through action()\n\t\tget current() { return ref._current },\n\t\tset current(el: T | null) { ref._current = el }\n\t}));\n\treturn ref as { current: T | null };\n}\n\nexport type ObservableRef = {\n\tcurrent: T | null,\n}","\"use strict\";\n\nmodule.exports = require(\"gatsby-plugin-ts-config-cache/gatsby-browser\");","import TransitionLink from \"gatsby-plugin-transition-link\";\nimport { Power2, TweenLite } from 'gsap';\nimport React, { ReactNode } from 'react';\nimport { useGetDataAttributes } from \"../../hooks/useGetDataAttributes.hook\";\nimport { TransitionTrigger } from \"../../types/transitions.types\";\nimport joinClassName from \"../../utils/className.utils\";\nimport { getScrollY } from \"../../utils/dom.utils\";\nimport { highPerf } from \"../../utils/performance.utils\";\nimport { AlwaysFalseFn } from \"../../utils/ramdaEquivalents.utils\";\n\nconst AnimatedLinkTrigger: TransitionTrigger = args => {\n // log(args.exit);\n // log(args.node);\n const duration = highPerf ? (getScrollY() > window.innerHeight * .62 ? 0 : args.exit?.length ?? args.entry?.length ?? .5) : 0;\n if (duration === 0) TweenLite.set(args.node, { opacity: 0 });\n TweenLite.fromTo(args.node, duration, { opacity: 1 }, {\n opacity: 0,\n ease: Power2.easeInOut,\n x: -24,\n })\n}\n\ninterface AnimatedLinkProps {\n className?: string,\n to: string,\n title: string,\n length?: number,\n onClick?: () => void,\n activeClassChecker?: () => boolean,\n target?: string,\n rel?: string,\n children?: ReactNode\n}\n\n/**\n * A wrapper around the TransitionLink component, provides basic fading effect for exiting pages.\n */\nexport const AnimatedLink = React.forwardRef((props: React.PropsWithChildren, ref) => {\n const dataAttr = useGetDataAttributes(props);\n const commonAttr = {\n className: joinClassName(props.className, (props.activeClassChecker ?? AlwaysFalseFn)() ? 'active' : undefined),\n to: props.to,\n title: props.title,\n length: props.length,\n children: props.children,\n onClick: props.onClick,\n activeClassName: \"active\",\n target: props.target,\n rel: props.rel,\n ...dataAttr,\n }\n // if (enableHighPerfAnim) {\n return \n // } else {\n // return \n // }\n})","export const useGetDataAttributes = (p: AnyObject) => {\n const dataAttributes = {} as AnyObject;\n Object.keys(p).forEach(k => {\n if (k.match(/^data-/)) dataAttributes[k] = p[k];\n })\n return dataAttributes;\n}","import { useEffect } from \"react\";\n\nexport function useOnMount(fn: React.EffectCallback) {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useEffect(fn, []);\n}\n\nexport function useOnBeforeUnmount(fn: ReturnType) {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useEffect(() => fn, []);\n}","var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\nvar _templateObject = _taggedTemplateLiteral(['', ''], ['', '']);\nfunction _taggedTemplateLiteral(strings, raw) {\n return Object.freeze(Object.defineProperties(strings, {\n raw: {\n value: Object.freeze(raw)\n }\n }));\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\n/**\n * @class TemplateTag\n * @classdesc Consumes a pipeline of composable transformer plugins and produces a template tag.\n */\nvar TemplateTag = function () {\n /**\n * constructs a template tag\n * @constructs TemplateTag\n * @param {...Object} [...transformers] - an array or arguments list of transformers\n * @return {Function} - a template tag\n */\n function TemplateTag() {\n var _this = this;\n for (var _len = arguments.length, transformers = Array(_len), _key = 0; _key < _len; _key++) {\n transformers[_key] = arguments[_key];\n }\n _classCallCheck(this, TemplateTag);\n this.tag = function (strings) {\n for (var _len2 = arguments.length, expressions = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n expressions[_key2 - 1] = arguments[_key2];\n }\n if (typeof strings === 'function') {\n // if the first argument passed is a function, assume it is a template tag and return\n // an intermediary tag that processes the template using the aforementioned tag, passing the\n // result to our tag\n return _this.interimTag.bind(_this, strings);\n }\n if (typeof strings === 'string') {\n // if the first argument passed is a string, just transform it\n return _this.transformEndResult(strings);\n }\n\n // else, return a transformed end result of processing the template with our tag\n strings = strings.map(_this.transformString.bind(_this));\n return _this.transformEndResult(strings.reduce(_this.processSubstitutions.bind(_this, expressions)));\n };\n\n // if first argument is an array, extrude it as a list of transformers\n if (transformers.length > 0 && Array.isArray(transformers[0])) {\n transformers = transformers[0];\n }\n\n // if any transformers are functions, this means they are not initiated - automatically initiate them\n this.transformers = transformers.map(function (transformer) {\n return typeof transformer === 'function' ? transformer() : transformer;\n });\n\n // return an ES2015 template tag\n return this.tag;\n }\n\n /**\n * Applies all transformers to a template literal tagged with this method.\n * If a function is passed as the first argument, assumes the function is a template tag\n * and applies it to the template, returning a template tag.\n * @param {(Function|String|Array)} strings - Either a template tag or an array containing template strings separated by identifier\n * @param {...*} ...expressions - Optional list of substitution values.\n * @return {(String|Function)} - Either an intermediary tag function or the results of processing the template.\n */\n\n _createClass(TemplateTag, [{\n key: 'interimTag',\n /**\n * An intermediary template tag that receives a template tag and passes the result of calling the template with the received\n * template tag to our own template tag.\n * @param {Function} nextTag - the received template tag\n * @param {Array} template - the template to process\n * @param {...*} ...substitutions - `substitutions` is an array of all substitutions in the template\n * @return {*} - the final processed value\n */\n value: function interimTag(previousTag, template) {\n for (var _len3 = arguments.length, substitutions = Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++) {\n substitutions[_key3 - 2] = arguments[_key3];\n }\n return this.tag(_templateObject, previousTag.apply(undefined, [template].concat(substitutions)));\n }\n\n /**\n * Performs bulk processing on the tagged template, transforming each substitution and then\n * concatenating the resulting values into a string.\n * @param {Array<*>} substitutions - an array of all remaining substitutions present in this template\n * @param {String} resultSoFar - this iteration's result string so far\n * @param {String} remainingPart - the template chunk after the current substitution\n * @return {String} - the result of joining this iteration's processed substitution with the result\n */\n }, {\n key: 'processSubstitutions',\n value: function processSubstitutions(substitutions, resultSoFar, remainingPart) {\n var substitution = this.transformSubstitution(substitutions.shift(), resultSoFar);\n return ''.concat(resultSoFar, substitution, remainingPart);\n }\n\n /**\n * Iterate through each transformer, applying the transformer's `onString` method to the template\n * strings before all substitutions are processed.\n * @param {String} str - The input string\n * @return {String} - The final results of processing each transformer\n */\n }, {\n key: 'transformString',\n value: function transformString(str) {\n var cb = function cb(res, transform) {\n return transform.onString ? transform.onString(res) : res;\n };\n return this.transformers.reduce(cb, str);\n }\n\n /**\n * When a substitution is encountered, iterates through each transformer and applies the transformer's\n * `onSubstitution` method to the substitution.\n * @param {*} substitution - The current substitution\n * @param {String} resultSoFar - The result up to and excluding this substitution.\n * @return {*} - The final result of applying all substitution transformations.\n */\n }, {\n key: 'transformSubstitution',\n value: function transformSubstitution(substitution, resultSoFar) {\n var cb = function cb(res, transform) {\n return transform.onSubstitution ? transform.onSubstitution(res, resultSoFar) : res;\n };\n return this.transformers.reduce(cb, substitution);\n }\n\n /**\n * Iterates through each transformer, applying the transformer's `onEndResult` method to the\n * template literal after all substitutions have finished processing.\n * @param {String} endResult - The processed template, just before it is returned from the tag\n * @return {String} - The final results of processing each transformer\n */\n }, {\n key: 'transformEndResult',\n value: function transformEndResult(endResult) {\n var cb = function cb(res, transform) {\n return transform.onEndResult ? transform.onEndResult(res) : res;\n };\n return this.transformers.reduce(cb, endResult);\n }\n }]);\n return TemplateTag;\n}();\nexport default TemplateTag;","var defaults = {\n separator: '',\n conjunction: '',\n serial: false\n};\n\n/**\n * Converts an array substitution to a string containing a list\n * @param {String} [opts.separator = ''] - the character that separates each item\n * @param {String} [opts.conjunction = ''] - replace the last separator with this\n * @param {Boolean} [opts.serial = false] - include the separator before the conjunction? (Oxford comma use-case)\n *\n * @return {Object} - a TemplateTag transformer\n */\nvar inlineArrayTransformer = function inlineArrayTransformer() {\n var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaults;\n return {\n onSubstitution: function onSubstitution(substitution, resultSoFar) {\n // only operate on arrays\n if (Array.isArray(substitution)) {\n var arrayLength = substitution.length;\n var separator = opts.separator;\n var conjunction = opts.conjunction;\n var serial = opts.serial;\n // join each item in the array into a string where each item is separated by separator\n // be sure to maintain indentation\n var indent = resultSoFar.match(/(\\n?[^\\S\\n]+)$/);\n if (indent) {\n substitution = substitution.join(separator + indent[1]);\n } else {\n substitution = substitution.join(separator + ' ');\n }\n // if conjunction is set, replace the last separator with conjunction, but only if there is more than one substitution\n if (conjunction && arrayLength > 1) {\n var separatorIndex = substitution.lastIndexOf(separator);\n substitution = substitution.slice(0, separatorIndex) + (serial ? separator : '') + ' ' + conjunction + substitution.slice(separatorIndex + 1);\n }\n }\n return substitution;\n }\n };\n};\nexport default inlineArrayTransformer;","function _toConsumableArray(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n return arr2;\n } else {\n return Array.from(arr);\n }\n}\n\n/**\n * strips indentation from a template literal\n * @param {String} type = 'initial' - whether to remove all indentation or just leading indentation. can be 'all' or 'initial'\n * @return {Object} - a TemplateTag transformer\n */\nvar stripIndentTransformer = function stripIndentTransformer() {\n var type = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'initial';\n return {\n onEndResult: function onEndResult(endResult) {\n if (type === 'initial') {\n // remove the shortest leading indentation from each line\n var match = endResult.match(/^[^\\S\\n]*(?=\\S)/gm);\n var indent = match && Math.min.apply(Math, _toConsumableArray(match.map(function (el) {\n return el.length;\n })));\n if (indent) {\n var regexp = new RegExp('^.{' + indent + '}', 'gm');\n return endResult.replace(regexp, '');\n }\n return endResult;\n }\n if (type === 'all') {\n // remove all indentation from each line\n return endResult.replace(/^[^\\S\\n]+/gm, '');\n }\n throw new Error('Unknown type: ' + type);\n }\n };\n};\nexport default stripIndentTransformer;","/**\n * TemplateTag transformer that trims whitespace on the end result of a tagged template\n * @param {String} side = '' - The side of the string to trim. Can be 'start' or 'end' (alternatively 'left' or 'right')\n * @return {Object} - a TemplateTag transformer\n */\nvar trimResultTransformer = function trimResultTransformer() {\n var side = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n return {\n onEndResult: function onEndResult(endResult) {\n if (side === '') {\n return endResult.trim();\n }\n side = side.toLowerCase();\n if (side === 'start' || side === 'left') {\n return endResult.replace(/^\\s*/, '');\n }\n if (side === 'end' || side === 'right') {\n return endResult.replace(/\\s*$/, '');\n }\n throw new Error('Side not supported: ' + side);\n }\n };\n};\nexport default trimResultTransformer;","var splitStringTransformer = function splitStringTransformer(splitBy) {\n return {\n onSubstitution: function onSubstitution(substitution, resultSoFar) {\n if (splitBy != null && typeof splitBy === 'string') {\n if (typeof substitution === 'string' && substitution.includes(splitBy)) {\n substitution = substitution.split(splitBy);\n }\n } else {\n throw new Error('You need to specify a string character to split by.');\n }\n return substitution;\n }\n };\n};\nexport default splitStringTransformer;","import TemplateTag from '../TemplateTag';\nimport stripIndentTransformer from '../stripIndentTransformer';\nimport inlineArrayTransformer from '../inlineArrayTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\nvar commaLists = new TemplateTag(inlineArrayTransformer({\n separator: ','\n}), stripIndentTransformer, trimResultTransformer);\nexport default commaLists;","import TemplateTag from '../TemplateTag';\nimport stripIndentTransformer from '../stripIndentTransformer';\nimport inlineArrayTransformer from '../inlineArrayTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\nvar commaListsAnd = new TemplateTag(inlineArrayTransformer({\n separator: ',',\n conjunction: 'and'\n}), stripIndentTransformer, trimResultTransformer);\nexport default commaListsAnd;","import TemplateTag from '../TemplateTag';\nimport stripIndentTransformer from '../stripIndentTransformer';\nimport inlineArrayTransformer from '../inlineArrayTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\nvar commaListsOr = new TemplateTag(inlineArrayTransformer({\n separator: ',',\n conjunction: 'or'\n}), stripIndentTransformer, trimResultTransformer);\nexport default commaListsOr;","var isValidValue = function isValidValue(x) {\n return x != null && !Number.isNaN(x) && typeof x !== 'boolean';\n};\nvar removeNonPrintingValuesTransformer = function removeNonPrintingValuesTransformer() {\n return {\n onSubstitution: function onSubstitution(substitution) {\n if (Array.isArray(substitution)) {\n return substitution.filter(isValidValue);\n }\n if (isValidValue(substitution)) {\n return substitution;\n }\n return '';\n }\n };\n};\nexport default removeNonPrintingValuesTransformer;","var replaceSubstitutionTransformer = function replaceSubstitutionTransformer(replaceWhat, replaceWith) {\n return {\n onSubstitution: function onSubstitution(substitution, resultSoFar) {\n if (replaceWhat == null || replaceWith == null) {\n throw new Error('replaceSubstitutionTransformer requires at least 2 arguments.');\n }\n\n // Do not touch if null or undefined\n if (substitution == null) {\n return substitution;\n } else {\n return substitution.toString().replace(replaceWhat, replaceWith);\n }\n }\n };\n};\nexport default replaceSubstitutionTransformer;","import TemplateTag from '../TemplateTag';\nimport stripIndentTransformer from '../stripIndentTransformer';\nimport inlineArrayTransformer from '../inlineArrayTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\nimport splitStringTransformer from '../splitStringTransformer';\nimport removeNonPrintingValuesTransformer from '../removeNonPrintingValuesTransformer';\nvar html = new TemplateTag(splitStringTransformer('\\n'), removeNonPrintingValuesTransformer, inlineArrayTransformer, stripIndentTransformer, trimResultTransformer);\nexport default html;","/**\n * Replaces tabs, newlines and spaces with the chosen value when they occur in sequences\n * @param {(String|RegExp)} replaceWhat - the value or pattern that should be replaced\n * @param {*} replaceWith - the replacement value\n * @return {Object} - a TemplateTag transformer\n */\nvar replaceResultTransformer = function replaceResultTransformer(replaceWhat, replaceWith) {\n return {\n onEndResult: function onEndResult(endResult) {\n if (replaceWhat == null || replaceWith == null) {\n throw new Error('replaceResultTransformer requires at least 2 arguments.');\n }\n return endResult.replace(replaceWhat, replaceWith);\n }\n };\n};\nexport default replaceResultTransformer;","import TemplateTag from '../TemplateTag';\nimport stripIndentTransformer from '../stripIndentTransformer';\nimport inlineArrayTransformer from '../inlineArrayTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\nimport splitStringTransformer from '../splitStringTransformer';\nimport replaceSubstitutionTransformer from '../replaceSubstitutionTransformer';\nvar safeHtml = new TemplateTag(splitStringTransformer('\\n'), inlineArrayTransformer, stripIndentTransformer, trimResultTransformer, replaceSubstitutionTransformer(/&/g, '&'), replaceSubstitutionTransformer(//g, '>'), replaceSubstitutionTransformer(/\"/g, '"'), replaceSubstitutionTransformer(/'/g, '''), replaceSubstitutionTransformer(/`/g, '`'));\nexport default safeHtml;","import TemplateTag from '../TemplateTag';\nimport trimResultTransformer from '../trimResultTransformer';\nimport replaceResultTransformer from '../replaceResultTransformer';\nvar oneLine = new TemplateTag(replaceResultTransformer(/(?:\\n(?:\\s*))+/g, ' '), trimResultTransformer);\nexport default oneLine;","import TemplateTag from '../TemplateTag';\nimport trimResultTransformer from '../trimResultTransformer';\nimport replaceResultTransformer from '../replaceResultTransformer';\nvar oneLineTrim = new TemplateTag(replaceResultTransformer(/(?:\\n\\s*)/g, ''), trimResultTransformer);\nexport default oneLineTrim;","import TemplateTag from '../TemplateTag';\nimport inlineArrayTransformer from '../inlineArrayTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\nimport replaceResultTransformer from '../replaceResultTransformer';\nvar oneLineCommaLists = new TemplateTag(inlineArrayTransformer({\n separator: ','\n}), replaceResultTransformer(/(?:\\s+)/g, ' '), trimResultTransformer);\nexport default oneLineCommaLists;","import TemplateTag from '../TemplateTag';\nimport inlineArrayTransformer from '../inlineArrayTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\nimport replaceResultTransformer from '../replaceResultTransformer';\nvar oneLineCommaListsOr = new TemplateTag(inlineArrayTransformer({\n separator: ',',\n conjunction: 'or'\n}), replaceResultTransformer(/(?:\\s+)/g, ' '), trimResultTransformer);\nexport default oneLineCommaListsOr;","import TemplateTag from '../TemplateTag';\nimport inlineArrayTransformer from '../inlineArrayTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\nimport replaceResultTransformer from '../replaceResultTransformer';\nvar oneLineCommaListsAnd = new TemplateTag(inlineArrayTransformer({\n separator: ',',\n conjunction: 'and'\n}), replaceResultTransformer(/(?:\\s+)/g, ' '), trimResultTransformer);\nexport default oneLineCommaListsAnd;","import TemplateTag from '../TemplateTag';\nimport stripIndentTransformer from '../stripIndentTransformer';\nimport inlineArrayTransformer from '../inlineArrayTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\nvar inlineLists = new TemplateTag(inlineArrayTransformer, stripIndentTransformer, trimResultTransformer);\nexport default inlineLists;","import TemplateTag from '../TemplateTag';\nimport inlineArrayTransformer from '../inlineArrayTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\nimport replaceResultTransformer from '../replaceResultTransformer';\nvar oneLineInlineLists = new TemplateTag(inlineArrayTransformer, replaceResultTransformer(/(?:\\s+)/g, ' '), trimResultTransformer);\nexport default oneLineInlineLists;","import TemplateTag from '../TemplateTag';\nimport stripIndentTransformer from '../stripIndentTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\nvar stripIndent = new TemplateTag(stripIndentTransformer, trimResultTransformer);\nexport default stripIndent;","import TemplateTag from '../TemplateTag';\nimport stripIndentTransformer from '../stripIndentTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\nvar stripIndents = new TemplateTag(stripIndentTransformer('all'), trimResultTransformer);\nexport default stripIndents;","exports.polyfill = Component => Component\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = addClass;\n\nvar _hasClass = _interopRequireDefault(require(\"./hasClass\"));\n\nfunction addClass(element, className) {\n if (element.classList) element.classList.add(className);else if (!(0, _hasClass.default)(element, className)) if (typeof element.className === 'string') element.className = element.className + ' ' + className;else element.setAttribute('class', (element.className && element.className.baseVal || '') + ' ' + className);\n}\n\nmodule.exports = exports[\"default\"];","export function isNumber(v: any): v is number {\n return typeof v === 'number'\n}\nexport function isNumberLike(v: any): v is number | string {\n return v !== null && (typeof v === 'number' || !isNaN(v));\n}\nexport function isString(v: any): v is string {\n return typeof v === 'string';\n}\nexport function isBoolean(v: any): v is boolean {\n return typeof v === 'boolean';\n}\nexport function isUndefined(v: any): v is undefined {\n return v === undefined;\n}\nexport function isNull(v: any): v is null {\n return v === null;\n}\n\n/**\n * checks if given value is an object. `null` will return false, and arrays will return true;\n */\nexport function isObject(v: any): v is T {\n if (v === null) return false;\n return v instanceof Object\n}\nexport function isArray(v: any): v is T[] {\n return v instanceof Array\n}\nexport function isFunction(v: any): v is Function {\n return typeof v === 'function';\n}\nexport function isAsyncFunction(fn?: Function): fn is ((...args: any) => Promise) {\n return fn?.constructor?.name === 'AsyncFunction'\n}\nexport function isGeneratorFunction(fn?: Function) {\n return fn?.constructor?.name === 'AsyncFunction'\n}\nexport function isReactComponentClass(component: unknown): component is React.ComponentClass {\n return (\n typeof component === 'function' &&\n !!component?.prototype?.isReactComponent\n )\n}\n/**\n * native arrows don't have prototypes; class components have special prototype property 'isReactComponent'\n */\nexport function isReactFunctionalComponent(component: unknown): component is React.FC {\n if (!component) return false;\n return (\n typeof component === 'function' // can be various things\n && (!component?.prototype || !component?.prototype?.isReactComponent)\n );\n}\n\nexport function isReactComponent(component: unknown): component is React.ComponentClass | React.FC {\n return (\n isReactComponentClass(component) ||\n isReactFunctionalComponent(component)\n )\n}\n\nexport function isLazyComponent(component: unknown): component is React.LazyExoticComponent {\n return isObject(component) && component?.$$typeof?.toString() === 'Symbol(react.lazy)';\n}\n\nexport function isMemoizedComponent(component: unknown): component is React.NamedExoticComponent {\n return isObject(component) && component?.$$typeof?.toString() === 'Symbol(react.memo)';\n}\n\nexport const isAnyReactComponent = (component: unknown) => {\n return isObject(component) && (\n true\n )\n}","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","module.exports = [{\n plugin: require('../node_modules/gatsby-plugin-image/gatsby-browser.js'),\n options: {\"plugins\":[]},\n },{\n plugin: require('../node_modules/gatsby-plugin-offline/gatsby-browser.js'),\n options: {\"plugins\":[]},\n },{\n plugin: require('../node_modules/gatsby-plugin-manifest/gatsby-browser.js'),\n options: {\"plugins\":[],\"name\":\"AxonDivision\",\"short_name\":\"Axon\",\"start_url\":\"/\",\"description\":\"AxonDivision is a full-service digital agency based in Dublin. We help you and your business succeed in this great acceleration of digitalisation with our unique blend of expertise in design, data and technology.\",\"background_color\":\"#ffffff\",\"theme_color\":\"#141316\",\"display\":\"minimal-ui\",\"lang\":\"en\",\"icon\":\"src/favicon/@icons/icon-round.png\",\"icons\":[{\"src\":\"src/favicon/favicon-16x16.png\",\"type\":\"image/png\",\"sizes\":\"16x16\"},{\"src\":\"src/favicon/favicon-32x32.png\",\"type\":\"image/png\",\"sizes\":\"32x32\"},{\"src\":\"src/favicon/@icons/icon-round.png\",\"type\":\"image/png\",\"sizes\":\"512x512\"}],\"legacy\":true,\"theme_color_in_head\":true,\"cache_busting_mode\":\"query\",\"crossOrigin\":\"anonymous\",\"include_favicon\":true,\"cacheDigest\":\"05b49f4aeb6756b43616a9915b2ce18d\"},\n },{\n plugin: require('../node_modules/gatsby-plugin-mdx/gatsby-browser.js'),\n options: {\"plugins\":[],\"extensions\":[\".mdx\"],\"defaultLayouts\":{},\"gatsbyRemarkPlugins\":[],\"lessBabel\":false,\"remarkPlugins\":[],\"rehypePlugins\":[],\"mediaTypes\":[\"text/markdown\",\"text/x-markdown\"],\"root\":\"/Users/henrique/Valet/axon\",\"JSFrontmatterEngine\":false,\"engines\":{}},\n },{\n plugin: require('../node_modules/gatsby-plugin-transition-link/gatsby-browser.js'),\n options: {\"plugins\":[]},\n },{\n plugin: require('../node_modules/gatsby-plugin-use-query-params/gatsby-browser.js'),\n options: {\"plugins\":[]},\n },{\n plugin: require('../node_modules/gatsby-plugin-web-font-loader/gatsby-browser.js'),\n options: {\"plugins\":[],\"typekit\":{\"id\":\"xxxxxxx\"}},\n },{\n plugin: require('../node_modules/gatsby-plugin-ts-config/gatsby-browser.js'),\n options: {\"plugins\":[{\"resolve\":\"gatsby-plugin-linkedin-insight\",\"options\":{\"partnerId\":\"4048809\",\"includeInDevelopment\":false}}],\"configDir\":\"gatsby\",\"projectRoot\":\"/Users/henrique/Valet/axon\"},\n }]\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\nvar _react = _interopRequireDefault(require(\"react\"));\nvar _reactDom = require(\"react-dom\");\nvar _TransitionGroup = _interopRequireDefault(require(\"./TransitionGroup\"));\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\n/**\n * The `` component is a specialized `Transition` component\n * that animates between two children.\n *\n * ```jsx\n * \n *
I appear first
\n *
I replace the above
\n *
\n * ```\n */\nvar ReplaceTransition = /*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(ReplaceTransition, _React$Component);\n function ReplaceTransition() {\n var _this;\n for (var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++) {\n _args[_key] = arguments[_key];\n }\n _this = _React$Component.call.apply(_React$Component, [this].concat(_args)) || this;\n _this.handleEnter = function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n return _this.handleLifecycle('onEnter', 0, args);\n };\n _this.handleEntering = function () {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n return _this.handleLifecycle('onEntering', 0, args);\n };\n _this.handleEntered = function () {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n return _this.handleLifecycle('onEntered', 0, args);\n };\n _this.handleExit = function () {\n for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n args[_key5] = arguments[_key5];\n }\n return _this.handleLifecycle('onExit', 1, args);\n };\n _this.handleExiting = function () {\n for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n args[_key6] = arguments[_key6];\n }\n return _this.handleLifecycle('onExiting', 1, args);\n };\n _this.handleExited = function () {\n for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {\n args[_key7] = arguments[_key7];\n }\n return _this.handleLifecycle('onExited', 1, args);\n };\n return _this;\n }\n var _proto = ReplaceTransition.prototype;\n _proto.handleLifecycle = function handleLifecycle(handler, idx, originalArgs) {\n var _child$props;\n var children = this.props.children;\n var child = _react.default.Children.toArray(children)[idx];\n if (child.props[handler]) (_child$props = child.props)[handler].apply(_child$props, originalArgs);\n if (this.props[handler]) this.props[handler]((0, _reactDom.findDOMNode)(this));\n };\n _proto.render = function render() {\n var _this$props = this.props,\n children = _this$props.children,\n inProp = _this$props.in,\n props = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\"]);\n var _React$Children$toArr = _react.default.Children.toArray(children),\n first = _React$Children$toArr[0],\n second = _React$Children$toArr[1];\n delete props.onEnter;\n delete props.onEntering;\n delete props.onEntered;\n delete props.onExit;\n delete props.onExiting;\n delete props.onExited;\n return _react.default.createElement(_TransitionGroup.default, props, inProp ? _react.default.cloneElement(first, {\n key: 'first',\n onEnter: this.handleEnter,\n onEntering: this.handleEntering,\n onEntered: this.handleEntered\n }) : _react.default.cloneElement(second, {\n key: 'second',\n onEnter: this.handleExit,\n onEntering: this.handleExiting,\n onEntered: this.handleExited\n }));\n };\n return ReplaceTransition;\n}(_react.default.Component);\nReplaceTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n in: _propTypes.default.bool.isRequired,\n children: function children(props, propName) {\n if (_react.default.Children.count(props[propName]) !== 2) return new Error(\"\\\"\" + propName + \"\\\" must be exactly two transition components.\");\n return null;\n }\n} : {};\nvar _default = ReplaceTransition;\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.ScrollHandler = exports.ScrollContext = void 0;\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _inheritsLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inheritsLoose\"));\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _sessionStorage = require(\"./session-storage\");\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nvar ScrollContext = /*#__PURE__*/React.createContext(new _sessionStorage.SessionStorage());\nexports.ScrollContext = ScrollContext;\nScrollContext.displayName = \"GatsbyScrollContext\";\n\nvar ScrollHandler = /*#__PURE__*/function (_React$Component) {\n (0, _inheritsLoose2.default)(ScrollHandler, _React$Component);\n\n function ScrollHandler() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n _this._stateStorage = new _sessionStorage.SessionStorage();\n _this._isTicking = false;\n _this._latestKnownScrollY = 0;\n\n _this.scrollListener = function () {\n _this._latestKnownScrollY = window.scrollY;\n\n if (!_this._isTicking) {\n _this._isTicking = true;\n requestAnimationFrame(_this._saveScroll.bind((0, _assertThisInitialized2.default)(_this)));\n }\n };\n\n _this.windowScroll = function (position, prevProps) {\n if (_this.shouldUpdateScroll(prevProps, _this.props)) {\n window.scrollTo(0, position);\n }\n };\n\n _this.scrollToHash = function (hash, prevProps) {\n var node = document.getElementById(hash.substring(1));\n\n if (node && _this.shouldUpdateScroll(prevProps, _this.props)) {\n node.scrollIntoView();\n }\n };\n\n _this.shouldUpdateScroll = function (prevRouterProps, routerProps) {\n var shouldUpdateScroll = _this.props.shouldUpdateScroll;\n\n if (!shouldUpdateScroll) {\n return true;\n } // Hack to allow accessing this._stateStorage.\n\n\n return shouldUpdateScroll.call((0, _assertThisInitialized2.default)(_this), prevRouterProps, routerProps);\n };\n\n return _this;\n }\n\n var _proto = ScrollHandler.prototype;\n\n _proto._saveScroll = function _saveScroll() {\n var key = this.props.location.key || null;\n\n if (key) {\n this._stateStorage.save(this.props.location, key, this._latestKnownScrollY);\n }\n\n this._isTicking = false;\n };\n\n _proto.componentDidMount = function componentDidMount() {\n window.addEventListener(\"scroll\", this.scrollListener);\n var scrollPosition;\n var _this$props$location = this.props.location,\n key = _this$props$location.key,\n hash = _this$props$location.hash;\n\n if (key) {\n scrollPosition = this._stateStorage.read(this.props.location, key);\n }\n\n if (scrollPosition) {\n this.windowScroll(scrollPosition, undefined);\n } else if (hash) {\n this.scrollToHash(decodeURI(hash), undefined);\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n window.removeEventListener(\"scroll\", this.scrollListener);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var _this$props$location2 = this.props.location,\n hash = _this$props$location2.hash,\n key = _this$props$location2.key;\n var scrollPosition;\n\n if (key) {\n scrollPosition = this._stateStorage.read(this.props.location, key);\n }\n /** There are two pieces of state: the browser url and\n * history state which keeps track of scroll position\n * Native behaviour prescribes that we ought to restore scroll position\n * when a user navigates back in their browser (this is the `POP` action)\n * Currently, reach router has a bug that prevents this at https://github.com/reach/router/issues/228\n * So we _always_ stick to the url as a source of truth — if the url\n * contains a hash, we scroll to it\n */\n\n\n if (hash) {\n this.scrollToHash(decodeURI(hash), prevProps);\n } else {\n this.windowScroll(scrollPosition, prevProps);\n }\n };\n\n _proto.render = function render() {\n return /*#__PURE__*/React.createElement(ScrollContext.Provider, {\n value: this._stateStorage\n }, this.props.children);\n };\n\n return ScrollHandler;\n}(React.Component);\n\nexports.ScrollHandler = ScrollHandler;\nScrollHandler.propTypes = {\n shouldUpdateScroll: _propTypes.default.func,\n children: _propTypes.default.element.isRequired,\n location: _propTypes.default.object.isRequired\n};","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n","\"use strict\";\n\nexports.__esModule = true;\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n};\nvar getLocation = function getLocation(source) {\n var _source$location = source.location,\n search = _source$location.search,\n hash = _source$location.hash,\n href = _source$location.href,\n origin = _source$location.origin,\n protocol = _source$location.protocol,\n host = _source$location.host,\n hostname = _source$location.hostname,\n port = _source$location.port;\n var pathname = source.location.pathname;\n if (!pathname && href && canUseDOM) {\n var url = new URL(href);\n pathname = url.pathname;\n }\n return {\n pathname: encodeURI(decodeURI(pathname)),\n search: search,\n hash: hash,\n href: href,\n origin: origin,\n protocol: protocol,\n host: host,\n hostname: hostname,\n port: port,\n state: source.history.state,\n key: source.history.state && source.history.state.key || \"initial\"\n };\n};\nvar createHistory = function createHistory(source, options) {\n var listeners = [];\n var location = getLocation(source);\n var transitioning = false;\n var resolveTransition = function resolveTransition() {};\n return {\n get location() {\n return location;\n },\n get transitioning() {\n return transitioning;\n },\n _onTransitionComplete: function _onTransitionComplete() {\n transitioning = false;\n resolveTransition();\n },\n listen: function listen(listener) {\n listeners.push(listener);\n var popstateListener = function popstateListener() {\n location = getLocation(source);\n listener({\n location: location,\n action: \"POP\"\n });\n };\n source.addEventListener(\"popstate\", popstateListener);\n return function () {\n source.removeEventListener(\"popstate\", popstateListener);\n listeners = listeners.filter(function (fn) {\n return fn !== listener;\n });\n };\n },\n navigate: function navigate(to) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n state = _ref.state,\n _ref$replace = _ref.replace,\n replace = _ref$replace === undefined ? false : _ref$replace;\n if (typeof to === \"number\") {\n source.history.go(to);\n } else {\n state = _extends({}, state, {\n key: Date.now() + \"\"\n });\n // try...catch iOS Safari limits to 100 pushState calls\n try {\n if (transitioning || replace) {\n source.history.replaceState(state, null, to);\n } else {\n source.history.pushState(state, null, to);\n }\n } catch (e) {\n source.location[replace ? \"replace\" : \"assign\"](to);\n }\n }\n location = getLocation(source);\n transitioning = true;\n var transition = new Promise(function (res) {\n return resolveTransition = res;\n });\n listeners.forEach(function (listener) {\n return listener({\n location: location,\n action: \"PUSH\"\n });\n });\n return transition;\n }\n };\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// Stores history entries in memory for testing or other platforms like Native\nvar createMemorySource = function createMemorySource() {\n var initialPath = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"/\";\n var searchIndex = initialPath.indexOf(\"?\");\n var initialLocation = {\n pathname: searchIndex > -1 ? initialPath.substr(0, searchIndex) : initialPath,\n search: searchIndex > -1 ? initialPath.substr(searchIndex) : \"\"\n };\n var index = 0;\n var stack = [initialLocation];\n var states = [null];\n return {\n get location() {\n return stack[index];\n },\n addEventListener: function addEventListener(name, fn) {},\n removeEventListener: function removeEventListener(name, fn) {},\n history: {\n get entries() {\n return stack;\n },\n get index() {\n return index;\n },\n get state() {\n return states[index];\n },\n pushState: function pushState(state, _, uri) {\n var _uri$split = uri.split(\"?\"),\n pathname = _uri$split[0],\n _uri$split$ = _uri$split[1],\n search = _uri$split$ === undefined ? \"\" : _uri$split$;\n index++;\n stack.push({\n pathname: pathname,\n search: search.length ? \"?\" + search : search\n });\n states.push(state);\n },\n replaceState: function replaceState(state, _, uri) {\n var _uri$split2 = uri.split(\"?\"),\n pathname = _uri$split2[0],\n _uri$split2$ = _uri$split2[1],\n search = _uri$split2$ === undefined ? \"\" : _uri$split2$;\n stack[index] = {\n pathname: pathname,\n search: search\n };\n states[index] = state;\n },\n go: function go(to) {\n var newIndex = index + to;\n if (newIndex < 0 || newIndex > states.length - 1) {\n return;\n }\n index = newIndex;\n }\n }\n };\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// global history - uses window.history as the source if available, otherwise a\n// memory history\nvar canUseDOM = !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\nvar getSource = function getSource() {\n return canUseDOM ? window : createMemorySource();\n};\nvar globalHistory = createHistory(getSource());\nvar navigate = globalHistory.navigate;\n\n////////////////////////////////////////////////////////////////////////////////\n\nexports.globalHistory = globalHistory;\nexports.navigate = navigate;\nexports.createHistory = createHistory;\nexports.createMemorySource = createMemorySource;","import { apiRunner } from \"./api-runner-browser\"\n\nif (\n window.location.protocol !== `https:` &&\n window.location.hostname !== `localhost`\n) {\n console.error(\n `Service workers can only be used over HTTPS, or on localhost for development`\n )\n} else if (`serviceWorker` in navigator) {\n navigator.serviceWorker\n .register(`${__BASE_PATH__}/sw.js`)\n .then(function (reg) {\n reg.addEventListener(`updatefound`, () => {\n apiRunner(`onServiceWorkerUpdateFound`, { serviceWorker: reg })\n // The updatefound event implies that reg.installing is set; see\n // https://w3c.github.io/ServiceWorker/#service-worker-registration-updatefound-event\n const installingWorker = reg.installing\n console.log(`installingWorker`, installingWorker)\n installingWorker.addEventListener(`statechange`, () => {\n switch (installingWorker.state) {\n case `installed`:\n if (navigator.serviceWorker.controller) {\n // At this point, the old content will have been purged and the fresh content will\n // have been added to the cache.\n\n // We set a flag so Gatsby Link knows to refresh the page on next navigation attempt\n window.___swUpdated = true\n // We call the onServiceWorkerUpdateReady API so users can show update prompts.\n apiRunner(`onServiceWorkerUpdateReady`, { serviceWorker: reg })\n\n // If resources failed for the current page, reload.\n if (window.___failedResources) {\n console.log(`resources failed, SW updated - reloading`)\n window.location.reload()\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a \"Content is cached for offline use.\" message.\n console.log(`Content is now available offline!`)\n\n // Post to service worker that install is complete.\n // Delay to allow time for the event listener to be added --\n // otherwise fetch is called too soon and resources aren't cached.\n apiRunner(`onServiceWorkerInstalled`, { serviceWorker: reg })\n }\n break\n\n case `redundant`:\n console.error(`The installing service worker became redundant.`)\n apiRunner(`onServiceWorkerRedundant`, { serviceWorker: reg })\n break\n\n case `activated`:\n apiRunner(`onServiceWorkerActive`, { serviceWorker: reg })\n break\n }\n })\n })\n })\n .catch(function (e) {\n console.error(`Error during service worker registration:`, e)\n })\n}\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n","var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperty(e, r, t) {\n return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","\"use strict\";\n\nexports.__esModule = true;\nexports.useScrollRestoration = useScrollRestoration;\n\nvar _scrollHandler = require(\"./scroll-handler\");\n\nvar _react = require(\"react\");\n\nvar _reachRouter = require(\"@gatsbyjs/reach-router\");\n\nfunction useScrollRestoration(identifier) {\n var location = (0, _reachRouter.useLocation)();\n var state = (0, _react.useContext)(_scrollHandler.ScrollContext);\n var ref = (0, _react.useRef)(null);\n (0, _react.useLayoutEffect)(function () {\n if (ref.current) {\n var position = state.read(location, identifier);\n ref.current.scrollTo(0, position || 0);\n }\n }, [location.key]);\n return {\n ref: ref,\n onScroll: function onScroll() {\n if (ref.current) {\n state.save(location, identifier, ref.current.scrollTop);\n }\n }\n };\n}","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _typeof(o);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","module.exports = {plugins: []}","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\n/**\n * Get a manifest filename depending on localized pathname\n *\n * @param {string} pathname\n * @param {Array<{start_url: string, lang: string}>} localizedManifests\n * @return string\n */\nvar _default = function _default(pathname, localizedManifests) {\n var defaultFilename = \"manifest.webmanifest\";\n\n if (!Array.isArray(localizedManifests)) {\n return defaultFilename;\n }\n\n var localizedManifest = localizedManifests.find(function (app) {\n return pathname.startsWith(app.start_url);\n });\n\n if (!localizedManifest) {\n return defaultFilename;\n }\n\n return \"manifest_\" + localizedManifest.lang + \".webmanifest\";\n};\n\nexports.default = _default;","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","/* eslint-disable no-unused-expressions */\nimport { stripIndent } from \"common-tags\"\nimport camelCase from \"camelcase\"\nimport { IGatsbyImageData } from \".\"\n\nconst DEFAULT_PIXEL_DENSITIES = [0.25, 0.5, 1, 2]\nexport const DEFAULT_BREAKPOINTS = [750, 1080, 1366, 1920]\nexport const EVERY_BREAKPOINT = [\n 320, 654, 768, 1024, 1366, 1600, 1920, 2048, 2560, 3440, 3840, 4096,\n]\nconst DEFAULT_FLUID_WIDTH = 800\nconst DEFAULT_FIXED_WIDTH = 800\nconst DEFAULT_ASPECT_RATIO = 4 / 3\n\nexport type Fit = \"cover\" | \"fill\" | \"inside\" | \"outside\" | \"contain\"\n\nexport type Layout = \"fixed\" | \"fullWidth\" | \"constrained\"\nexport type ImageFormat = \"jpg\" | \"png\" | \"webp\" | \"avif\" | \"auto\" | \"\"\n\n/**\n * The minimal required reporter, as we don't want to import it from gatsby-cli\n */\nexport interface IReporter {\n warn(message: string): void\n}\n\nexport interface ISharpGatsbyImageArgs {\n layout?: Layout\n formats?: Array\n placeholder?: \"tracedSVG\" | \"dominantColor\" | \"blurred\" | \"none\"\n tracedSVGOptions?: Record\n width?: number\n height?: number\n aspectRatio?: number\n sizes?: string\n quality?: number\n transformOptions?: {\n fit?: Fit\n cropFocus?: number | string\n duotone?: {\n highlight: string\n shadow: string\n opacity?: number\n }\n grayscale?: boolean\n rotate?: number\n trim?: number\n }\n jpgOptions?: Record\n pngOptions?: Record\n webpOptions?: Record\n avifOptions?: Record\n blurredOptions?: { width?: number; toFormat?: ImageFormat }\n breakpoints?: Array\n backgroundColor?: string\n}\n\nexport interface IImageSizeArgs {\n width?: number\n height?: number\n layout?: Layout\n filename: string\n outputPixelDensities?: Array\n breakpoints?: Array\n fit?: Fit\n reporter?: IReporter\n sourceMetadata: { width: number; height: number }\n}\n\nexport interface IImageSizes {\n sizes: Array\n presentationWidth: number\n presentationHeight: number\n aspectRatio: number\n unscaledWidth: number\n}\n\nexport interface IImage {\n src: string\n width: number\n height: number\n format: ImageFormat\n}\n\nexport interface IGatsbyImageHelperArgs {\n pluginName: string\n generateImageSource: (\n filename: string,\n width: number,\n height: number,\n format: ImageFormat,\n fit?: Fit,\n options?: Record\n ) => IImage\n layout?: Layout\n formats?: Array\n filename: string\n placeholderURL?: string\n width?: number\n height?: number\n sizes?: string\n reporter?: IReporter\n sourceMetadata?: { width: number; height: number; format: ImageFormat }\n fit?: Fit\n options?: Record\n breakpoints?: Array\n backgroundColor?: string\n aspectRatio?: number\n}\n\nconst warn = (message: string): void => console.warn(message)\n\nconst sortNumeric = (a: number, b: number): number => a - b\n\nexport const getSizes = (width: number, layout: Layout): string | undefined => {\n switch (layout) {\n // If screen is wider than the max size, image width is the max size,\n // otherwise it's the width of the screen\n case `constrained`:\n return `(min-width: ${width}px) ${width}px, 100vw`\n\n // Image is always the same width, whatever the size of the screen\n case `fixed`:\n return `${width}px`\n\n // Image is always the width of the screen\n case `fullWidth`:\n return `100vw`\n\n default:\n return undefined\n }\n}\n\nexport const getSrcSet = (images: Array): string =>\n images.map(image => `${image.src} ${image.width}w`).join(`,\\n`)\n\nexport function formatFromFilename(filename: string): ImageFormat | undefined {\n const dot = filename.lastIndexOf(`.`)\n if (dot !== -1) {\n const ext = filename.substr(dot + 1)\n if (ext === `jpeg`) {\n return `jpg`\n }\n if (ext.length === 3 || ext.length === 4) {\n return ext as ImageFormat\n }\n }\n return undefined\n}\n\nexport function setDefaultDimensions(\n args: IGatsbyImageHelperArgs\n): IGatsbyImageHelperArgs {\n let {\n layout = `constrained`,\n width,\n height,\n sourceMetadata,\n breakpoints,\n aspectRatio,\n formats = [`auto`, `webp`],\n } = args\n formats = formats.map(format => format.toLowerCase() as ImageFormat)\n layout = camelCase(layout) as Layout\n\n if (width && height) {\n return { ...args, formats, layout, aspectRatio: width / height }\n }\n if (sourceMetadata.width && sourceMetadata.height && !aspectRatio) {\n aspectRatio = sourceMetadata.width / sourceMetadata.height\n }\n\n if (layout === `fullWidth`) {\n width = width || sourceMetadata.width || breakpoints[breakpoints.length - 1]\n height = height || Math.round(width / (aspectRatio || DEFAULT_ASPECT_RATIO))\n } else {\n if (!width) {\n if (height && aspectRatio) {\n width = height * aspectRatio\n } else if (sourceMetadata.width) {\n width = sourceMetadata.width\n } else if (height) {\n width = Math.round(height / DEFAULT_ASPECT_RATIO)\n } else {\n width = DEFAULT_FIXED_WIDTH\n }\n }\n\n if (aspectRatio && !height) {\n height = Math.round(width / aspectRatio)\n } else if (!aspectRatio) {\n aspectRatio = width / height\n }\n }\n return { ...args, width, height, aspectRatio, layout, formats }\n}\n\n/**\n * Use this for getting an image for the blurred placeholder. This ensures the\n * aspect ratio and crop match the main image\n */\nexport function getLowResolutionImageURL(\n args: IGatsbyImageHelperArgs,\n width = 20\n): string {\n args = setDefaultDimensions(args)\n const { generateImageSource, filename, aspectRatio } = args\n return generateImageSource(\n filename,\n width,\n Math.round(width / aspectRatio),\n args.sourceMetadata.format || `jpg`,\n args.fit,\n args.options\n )?.src\n}\n\nexport function generateImageData(\n args: IGatsbyImageHelperArgs\n): IGatsbyImageData {\n args = setDefaultDimensions(args)\n\n let {\n pluginName,\n sourceMetadata,\n generateImageSource,\n layout,\n fit,\n options,\n width,\n height,\n filename,\n reporter = { warn },\n backgroundColor,\n placeholderURL,\n } = args\n\n if (!pluginName) {\n reporter.warn(\n `[gatsby-plugin-image] \"generateImageData\" was not passed a plugin name`\n )\n }\n\n if (typeof generateImageSource !== `function`) {\n throw new Error(`generateImageSource must be a function`)\n }\n\n if (!sourceMetadata || (!sourceMetadata.width && !sourceMetadata.height)) {\n // No metadata means we let the CDN handle max size etc, aspect ratio etc\n sourceMetadata = {\n width,\n height,\n format: sourceMetadata?.format || formatFromFilename(filename) || `auto`,\n }\n } else if (!sourceMetadata.format) {\n sourceMetadata.format = formatFromFilename(filename)\n }\n\n const formats = new Set(args.formats)\n\n if (formats.size === 0 || formats.has(`auto`) || formats.has(``)) {\n formats.delete(`auto`)\n formats.delete(``)\n formats.add(sourceMetadata.format)\n }\n\n if (formats.has(`jpg`) && formats.has(`png`)) {\n reporter.warn(\n `[${pluginName}] Specifying both 'jpg' and 'png' formats is not supported. Using 'auto' instead`\n )\n if (sourceMetadata.format === `jpg`) {\n formats.delete(`png`)\n } else {\n formats.delete(`jpg`)\n }\n }\n\n const imageSizes = calculateImageSizes({ ...args, sourceMetadata })\n\n const result: IGatsbyImageData[\"images\"] = {\n sources: [],\n }\n\n let sizes = args.sizes\n if (!sizes) {\n sizes = getSizes(imageSizes.presentationWidth, layout)\n }\n\n formats.forEach(format => {\n const images = imageSizes.sizes\n .map(size => {\n const imageSrc = generateImageSource(\n filename,\n size,\n Math.round(size / imageSizes.aspectRatio),\n format,\n fit,\n options\n )\n if (\n !imageSrc?.width ||\n !imageSrc.height ||\n !imageSrc.src ||\n !imageSrc.format\n ) {\n reporter.warn(\n `[${pluginName}] The resolver for image ${filename} returned an invalid value.`\n )\n return undefined\n }\n return imageSrc\n })\n .filter(Boolean)\n\n if (format === `jpg` || format === `png` || format === `auto`) {\n const unscaled =\n images.find(img => img.width === imageSizes.unscaledWidth) || images[0]\n\n if (unscaled) {\n result.fallback = {\n src: unscaled.src,\n srcSet: getSrcSet(images),\n sizes,\n }\n }\n } else {\n result.sources?.push({\n srcSet: getSrcSet(images),\n sizes,\n type: `image/${format}`,\n })\n }\n })\n\n const imageProps: Partial = {\n images: result,\n layout,\n backgroundColor,\n }\n\n if (placeholderURL) {\n imageProps.placeholder = { fallback: placeholderURL }\n }\n\n switch (layout) {\n case `fixed`:\n imageProps.width = imageSizes.presentationWidth\n imageProps.height = imageSizes.presentationHeight\n break\n\n case `fullWidth`:\n imageProps.width = 1\n imageProps.height = 1 / imageSizes.aspectRatio\n break\n\n case `constrained`:\n imageProps.width = args.width || imageSizes.presentationWidth || 1\n imageProps.height = (imageProps.width || 1) / imageSizes.aspectRatio\n }\n\n return imageProps as IGatsbyImageData\n}\n\nconst dedupeAndSortDensities = (values: Array): Array =>\n Array.from(new Set([1, ...values])).sort(sortNumeric)\n\nexport function calculateImageSizes(args: IImageSizeArgs): IImageSizes {\n const {\n width,\n height,\n filename,\n layout = `constrained`,\n sourceMetadata: imgDimensions,\n reporter = { warn },\n breakpoints = DEFAULT_BREAKPOINTS,\n } = args\n\n // check that all dimensions provided are positive\n const userDimensions = { width, height }\n const erroneousUserDimensions = Object.entries(userDimensions).filter(\n ([_, size]) => typeof size === `number` && size < 1\n )\n if (erroneousUserDimensions.length) {\n throw new Error(\n `Specified dimensions for images must be positive numbers (> 0). Problem dimensions you have are ${erroneousUserDimensions\n .map(dim => dim.join(`: `))\n .join(`, `)}`\n )\n }\n\n if (layout === `fixed`) {\n return fixedImageSizes(args)\n } else if (layout === `constrained`) {\n return responsiveImageSizes(args)\n } else if (layout === `fullWidth`) {\n return responsiveImageSizes({ breakpoints, ...args })\n } else {\n reporter.warn(\n `No valid layout was provided for the image at ${filename}. Valid image layouts are fixed, fullWidth, and constrained. Found ${layout}`\n )\n return {\n sizes: [imgDimensions.width],\n presentationWidth: imgDimensions.width,\n presentationHeight: imgDimensions.height,\n aspectRatio: imgDimensions.width / imgDimensions.height,\n unscaledWidth: imgDimensions.width,\n }\n }\n}\nexport function fixedImageSizes({\n filename,\n sourceMetadata: imgDimensions,\n width,\n height,\n fit = `cover`,\n outputPixelDensities = DEFAULT_PIXEL_DENSITIES,\n reporter = { warn },\n}: IImageSizeArgs): IImageSizes {\n let aspectRatio = imgDimensions.width / imgDimensions.height\n // Sort, dedupe and ensure there's a 1\n const densities = dedupeAndSortDensities(outputPixelDensities)\n\n // If both are provided then we need to check the fit\n if (width && height) {\n const calculated = getDimensionsAndAspectRatio(imgDimensions, {\n width,\n height,\n fit,\n })\n width = calculated.width\n height = calculated.height\n aspectRatio = calculated.aspectRatio\n }\n\n if (!width) {\n if (!height) {\n width = DEFAULT_FIXED_WIDTH\n } else {\n width = Math.round(height * aspectRatio)\n }\n } else if (!height) {\n height = Math.round(width / aspectRatio)\n }\n\n const originalWidth = width // will use this for presentationWidth, don't want to lose it\n const isTopSizeOverriden =\n imgDimensions.width < width || imgDimensions.height < (height as number)\n\n // If the image is smaller than requested, warn the user that it's being processed as such\n // print out this message with the necessary information before we overwrite it for sizing\n if (isTopSizeOverriden) {\n const fixedDimension = imgDimensions.width < width ? `width` : `height`\n reporter.warn(stripIndent`\n The requested ${fixedDimension} \"${\n fixedDimension === `width` ? width : height\n }px\" for the image ${filename} was larger than the actual image ${fixedDimension} of ${\n imgDimensions[fixedDimension]\n }px. If possible, replace the current image with a larger one.`)\n\n if (fixedDimension === `width`) {\n width = imgDimensions.width\n height = Math.round(width / aspectRatio)\n } else {\n height = imgDimensions.height\n width = height * aspectRatio\n }\n }\n\n const sizes = densities\n .filter(size => size >= 1) // remove smaller densities because fixed images don't need them\n .map(density => Math.round(density * (width as number)))\n .filter(size => size <= imgDimensions.width)\n\n return {\n sizes,\n aspectRatio,\n presentationWidth: originalWidth,\n presentationHeight: Math.round(originalWidth / aspectRatio),\n unscaledWidth: width,\n }\n}\n\nexport function responsiveImageSizes({\n sourceMetadata: imgDimensions,\n width,\n height,\n fit = `cover`,\n outputPixelDensities = DEFAULT_PIXEL_DENSITIES,\n breakpoints,\n layout,\n}: IImageSizeArgs): IImageSizes {\n let sizes\n let aspectRatio = imgDimensions.width / imgDimensions.height\n // Sort, dedupe and ensure there's a 1\n const densities = dedupeAndSortDensities(outputPixelDensities)\n\n // If both are provided then we need to check the fit\n if (width && height) {\n const calculated = getDimensionsAndAspectRatio(imgDimensions, {\n width,\n height,\n fit,\n })\n width = calculated.width\n height = calculated.height\n aspectRatio = calculated.aspectRatio\n }\n\n // Case 1: width of height were passed in, make sure it isn't larger than the actual image\n width = width && Math.min(width, imgDimensions.width)\n height = height && Math.min(height, imgDimensions.height)\n\n // Case 2: neither width or height were passed in, use default size\n if (!width && !height) {\n width = Math.min(DEFAULT_FLUID_WIDTH, imgDimensions.width)\n height = width / aspectRatio\n }\n\n // if it still hasn't been found, calculate width from the derived height.\n // TS isn't smart enough to realise the type for height has been narrowed here\n if (!width) {\n width = (height as number) * aspectRatio\n }\n\n const originalWidth = width\n const isTopSizeOverriden =\n imgDimensions.width < width || imgDimensions.height < (height as number)\n if (isTopSizeOverriden) {\n width = imgDimensions.width\n height = imgDimensions.height\n }\n\n width = Math.round(width)\n\n if (breakpoints?.length > 0) {\n sizes = breakpoints.filter(size => size <= imgDimensions.width)\n\n // If a larger breakpoint has been filtered-out, add the actual image width instead\n if (\n sizes.length < breakpoints.length &&\n !sizes.includes(imgDimensions.width)\n ) {\n sizes.push(imgDimensions.width)\n }\n } else {\n sizes = densities.map(density => Math.round(density * (width as number)))\n sizes = sizes.filter(size => size <= imgDimensions.width)\n }\n\n // ensure that the size passed in is included in the final output\n if (layout === `constrained` && !sizes.includes(width)) {\n sizes.push(width)\n }\n sizes = sizes.sort(sortNumeric)\n return {\n sizes,\n aspectRatio,\n presentationWidth: originalWidth,\n presentationHeight: Math.round(originalWidth / aspectRatio),\n unscaledWidth: width,\n }\n}\n\nexport function getDimensionsAndAspectRatio(\n dimensions,\n options\n): { width: number; height: number; aspectRatio: number } {\n // Calculate the eventual width/height of the image.\n const imageAspectRatio = dimensions.width / dimensions.height\n\n let width = options.width\n let height = options.height\n\n switch (options.fit) {\n case `fill`: {\n width = options.width ? options.width : dimensions.width\n height = options.height ? options.height : dimensions.height\n break\n }\n case `inside`: {\n const widthOption = options.width\n ? options.width\n : Number.MAX_SAFE_INTEGER\n const heightOption = options.height\n ? options.height\n : Number.MAX_SAFE_INTEGER\n\n width = Math.min(widthOption, Math.round(heightOption * imageAspectRatio))\n height = Math.min(\n heightOption,\n Math.round(widthOption / imageAspectRatio)\n )\n break\n }\n case `outside`: {\n const widthOption = options.width ? options.width : 0\n const heightOption = options.height ? options.height : 0\n\n width = Math.max(widthOption, Math.round(heightOption * imageAspectRatio))\n height = Math.max(\n heightOption,\n Math.round(widthOption / imageAspectRatio)\n )\n break\n }\n\n default: {\n if (options.width && !options.height) {\n width = options.width\n height = Math.round(options.width / imageAspectRatio)\n }\n\n if (options.height && !options.width) {\n width = Math.round(options.height * imageAspectRatio)\n height = options.height\n }\n }\n }\n\n return {\n width,\n height,\n aspectRatio: width / height,\n }\n}\n","/* eslint-disable no-unused-expressions */\nimport {\n useState,\n CSSProperties,\n useEffect,\n HTMLAttributes,\n ImgHTMLAttributes,\n ReactEventHandler,\n SetStateAction,\n Dispatch,\n RefObject,\n} from \"react\"\nimport { Node } from \"gatsby\"\nimport { PlaceholderProps } from \"./placeholder\"\nimport { MainImageProps } from \"./main-image\"\nimport type { IGatsbyImageData } from \"./gatsby-image.browser\"\nimport {\n IGatsbyImageHelperArgs,\n generateImageData,\n Layout,\n EVERY_BREAKPOINT,\n IImage,\n ImageFormat,\n} from \"../image-utils\"\nconst imageCache = new Set()\n\n// Native lazy-loading support: https://addyosmani.com/blog/lazy-loading/\nexport const hasNativeLazyLoadSupport = (): boolean =>\n typeof HTMLImageElement !== `undefined` &&\n `loading` in HTMLImageElement.prototype\n\nexport function gatsbyImageIsInstalled(): boolean {\n return typeof GATSBY___IMAGE !== `undefined` && GATSBY___IMAGE\n}\n\nexport function storeImageloaded(cacheKey?: string): void {\n if (cacheKey) {\n imageCache.add(cacheKey)\n }\n}\n\nexport function hasImageLoaded(cacheKey: string): boolean {\n return imageCache.has(cacheKey)\n}\nexport type IGatsbyImageDataParent = T & {\n gatsbyImageData: IGatsbyImageData\n}\nexport type FileNode = Node & {\n childImageSharp?: IGatsbyImageDataParent\n}\n\nconst isGatsbyImageData = (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n node: IGatsbyImageData | any\n): node is IGatsbyImageData =>\n // 🦆 check for a deep prop to be sure this is a valid gatsbyImageData object\n Boolean(node?.images?.fallback?.src)\n\nconst isGatsbyImageDataParent = (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n node: IGatsbyImageDataParent | any\n): node is IGatsbyImageDataParent => Boolean(node?.gatsbyImageData)\n\nexport type ImageDataLike = FileNode | IGatsbyImageDataParent | IGatsbyImageData\nexport const getImage = (node: ImageDataLike): IGatsbyImageData | undefined => {\n if (isGatsbyImageData(node)) {\n return node\n }\n if (isGatsbyImageDataParent(node)) {\n return node.gatsbyImageData\n }\n return node?.childImageSharp?.gatsbyImageData\n}\n\nexport const getSrc = (node: ImageDataLike): string | undefined =>\n getImage(node)?.images?.fallback?.src\n\nexport const getSrcSet = (node: ImageDataLike): string | undefined =>\n getImage(node)?.images?.fallback?.srcSet\n\nexport function getWrapperProps(\n width: number,\n height: number,\n layout: Layout\n): Pick, \"className\" | \"style\"> & {\n \"data-gatsby-image-wrapper\": string\n} {\n const wrapperStyle: CSSProperties = {}\n\n let className = `gatsby-image-wrapper`\n\n // If the plugin isn't installed we need to apply the styles inline\n if (!gatsbyImageIsInstalled()) {\n wrapperStyle.position = `relative`\n wrapperStyle.overflow = `hidden`\n }\n\n if (layout === `fixed`) {\n wrapperStyle.width = width\n wrapperStyle.height = height\n } else if (layout === `constrained`) {\n if (!gatsbyImageIsInstalled()) {\n wrapperStyle.display = `inline-block`\n wrapperStyle.verticalAlign = `top`\n }\n className = `gatsby-image-wrapper gatsby-image-wrapper-constrained`\n }\n\n return {\n className,\n \"data-gatsby-image-wrapper\": ``,\n style: wrapperStyle,\n }\n}\n\nexport async function applyPolyfill(\n ref: RefObject\n): Promise {\n if (!(`objectFitPolyfill` in window)) {\n await import(\n // @ts-ignore typescript can't find the module for some reason ¯\\_(ツ)_/¯\n /* webpackChunkName: \"gatsby-plugin-image-objectfit-polyfill\" */ `objectFitPolyfill`\n )\n }\n ;(window as any).objectFitPolyfill(ref.current)\n}\n\nexport interface IUrlBuilderArgs {\n width: number\n height: number\n baseUrl: string\n format: ImageFormat\n options: OptionsType\n}\nexport interface IGetImageDataArgs> {\n baseUrl: string\n /**\n * For constrained and fixed images, the size of the image element\n */\n width?: number\n height?: number\n /**\n * If available, pass the source image width and height\n */\n sourceWidth?: number\n sourceHeight?: number\n /**\n * If only one dimension is passed, then this will be used to calculate the other.\n */\n aspectRatio?: number\n layout?: Layout\n /**\n * Returns a URL based on the passed arguments. Should be a pure function\n */\n urlBuilder: (args: IUrlBuilderArgs) => string\n\n /**\n * Should be a data URI\n */\n placeholderURL?: string\n backgroundColor?: string\n /**\n * Used in error messages etc\n */\n pluginName?: string\n\n /**\n * If you do not support auto-format, pass an array of image types here\n */\n formats?: Array\n\n breakpoints?: Array\n\n /**\n * Passed to the urlBuilder function\n */\n options?: OptionsType\n}\n\n/**\n * Use this hook to generate gatsby-plugin-image data in the browser.\n */\nexport function getImageData({\n baseUrl,\n urlBuilder,\n sourceWidth,\n sourceHeight,\n pluginName = `getImageData`,\n formats = [`auto`],\n breakpoints,\n options,\n ...props\n}: IGetImageDataArgs): IGatsbyImageData {\n if (\n !breakpoints?.length &&\n (props.layout === `fullWidth` || (props.layout as string) === `FULL_WIDTH`)\n ) {\n breakpoints = EVERY_BREAKPOINT\n }\n const generateImageSource = (\n baseUrl: string,\n width: number,\n height?: number,\n format?: ImageFormat\n ): IImage => {\n return {\n width,\n height,\n format,\n src: urlBuilder({ baseUrl, width, height, options, format }),\n }\n }\n\n const sourceMetadata: IGatsbyImageHelperArgs[\"sourceMetadata\"] = {\n width: sourceWidth,\n height: sourceHeight,\n format: `auto`,\n }\n\n const args: IGatsbyImageHelperArgs = {\n ...props,\n pluginName,\n generateImageSource,\n filename: baseUrl,\n formats,\n breakpoints,\n sourceMetadata,\n }\n return generateImageData(args)\n}\n\nexport function getMainProps(\n isLoading: boolean,\n isLoaded: boolean,\n images: IGatsbyImageData[\"images\"],\n loading?: \"eager\" | \"lazy\",\n toggleLoaded?: (loaded: boolean) => void,\n cacheKey?: string,\n ref?: RefObject,\n style: CSSProperties = {}\n): Partial {\n const onLoad: ReactEventHandler = function (e) {\n if (isLoaded) {\n return\n }\n\n storeImageloaded(cacheKey)\n\n const target = e.currentTarget\n const img = new Image()\n img.src = target.currentSrc\n\n if (img.decode) {\n // Decode the image through javascript to support our transition\n img\n .decode()\n .catch(() => {\n // ignore error, we just go forward\n })\n .then(() => {\n toggleLoaded(true)\n })\n } else {\n toggleLoaded(true)\n }\n }\n\n // Polyfill \"object-fit\" if unsupported (mostly IE)\n if (ref?.current && !(`objectFit` in document.documentElement.style)) {\n ref.current.dataset.objectFit = style.objectFit ?? `cover`\n ref.current.dataset.objectPosition = `${style.objectPosition ?? `50% 50%`}`\n applyPolyfill(ref)\n }\n\n // fallback when it's not configured in gatsby-config.\n if (!gatsbyImageIsInstalled()) {\n style = {\n height: `100%`,\n left: 0,\n position: `absolute`,\n top: 0,\n transform: `translateZ(0)`,\n transition: `opacity 250ms linear`,\n width: `100%`,\n willChange: `opacity`,\n ...style,\n }\n }\n\n const result = {\n ...images,\n loading,\n shouldLoad: isLoading,\n \"data-main-image\": ``,\n style: {\n ...style,\n opacity: isLoaded ? 1 : 0,\n },\n onLoad,\n ref,\n }\n\n return result\n}\n\nexport type PlaceholderImageAttrs = ImgHTMLAttributes &\n Pick & {\n \"data-placeholder-image\"?: string\n }\n\nexport function getPlaceholderProps(\n placeholder: PlaceholderImageAttrs | undefined,\n isLoaded: boolean,\n layout: Layout,\n width?: number,\n height?: number,\n backgroundColor?: string,\n objectFit?: CSSProperties[\"objectFit\"],\n objectPosition?: CSSProperties[\"objectPosition\"]\n): PlaceholderImageAttrs {\n const wrapperStyle: CSSProperties = {}\n\n if (backgroundColor) {\n wrapperStyle.backgroundColor = backgroundColor\n\n if (layout === `fixed`) {\n wrapperStyle.width = width\n wrapperStyle.height = height\n wrapperStyle.backgroundColor = backgroundColor\n wrapperStyle.position = `relative`\n } else if (layout === `constrained`) {\n wrapperStyle.position = `absolute`\n wrapperStyle.top = 0\n wrapperStyle.left = 0\n wrapperStyle.bottom = 0\n wrapperStyle.right = 0\n } else if (layout === `fullWidth`) {\n wrapperStyle.position = `absolute`\n wrapperStyle.top = 0\n wrapperStyle.left = 0\n wrapperStyle.bottom = 0\n wrapperStyle.right = 0\n }\n }\n\n if (objectFit) {\n wrapperStyle.objectFit = objectFit\n }\n\n if (objectPosition) {\n wrapperStyle.objectPosition = objectPosition\n }\n const result: PlaceholderImageAttrs = {\n ...placeholder,\n \"aria-hidden\": true,\n \"data-placeholder-image\": ``,\n style: {\n opacity: isLoaded ? 0 : 1,\n transition: `opacity 500ms linear`,\n ...wrapperStyle,\n },\n }\n\n // fallback when it's not configured in gatsby-config.\n if (!gatsbyImageIsInstalled()) {\n result.style = {\n height: `100%`,\n left: 0,\n position: `absolute`,\n top: 0,\n width: `100%`,\n }\n }\n\n return result\n}\n\nexport function useImageLoaded(\n cacheKey: string,\n loading: \"lazy\" | \"eager\",\n ref: any\n): {\n isLoaded: boolean\n isLoading: boolean\n toggleLoaded: Dispatch>\n} {\n const [isLoaded, toggleLoaded] = useState(false)\n const [isLoading, toggleIsLoading] = useState(loading === `eager`)\n\n const rAF =\n typeof window !== `undefined` && `requestAnimationFrame` in window\n ? requestAnimationFrame\n : function (cb: TimerHandler): number {\n return setTimeout(cb, 16)\n }\n const cRAF =\n typeof window !== `undefined` && `cancelAnimationFrame` in window\n ? cancelAnimationFrame\n : clearTimeout\n\n useEffect(() => {\n let interval: number\n // @see https://stackoverflow.com/questions/44074747/componentdidmount-called-before-ref-callback/50019873#50019873\n function toggleIfRefExists(): void {\n if (ref.current) {\n if (loading === `eager` && ref.current.complete) {\n storeImageloaded(cacheKey)\n toggleLoaded(true)\n } else {\n toggleIsLoading(true)\n }\n } else {\n interval = rAF(toggleIfRefExists)\n }\n }\n toggleIfRefExists()\n\n return (): void => {\n cRAF(interval)\n }\n }, [])\n\n return {\n isLoading,\n isLoaded,\n toggleLoaded,\n }\n}\n\nexport interface IArtDirectedImage {\n media: string\n image: IGatsbyImageData\n}\n\n/**\n * Generate a Gatsby image data object with multiple, art-directed images that display at different\n * resolutions.\n *\n * @param defaultImage The image displayed when no media query matches.\n * It is also used for all other settings applied to the image, such as width, height and layout.\n * You should pass a className to the component with media queries to adjust the size of the container,\n * as this cannot be adjusted automatically.\n * @param artDirected Array of objects which each contains a `media` string which is a media query\n * such as `(min-width: 320px)`, and the image object to use when that query matches.\n */\nexport function withArtDirection(\n defaultImage: IGatsbyImageData,\n artDirected: Array\n): IGatsbyImageData {\n const { images, placeholder, ...props } = defaultImage\n const output: IGatsbyImageData = {\n ...props,\n images: {\n ...images,\n sources: [],\n },\n placeholder: placeholder && {\n ...placeholder,\n sources: [],\n },\n }\n\n artDirected.forEach(({ media, image }) => {\n if (!media) {\n if (process.env.NODE_ENV === `development`) {\n console.warn(\n \"[gatsby-plugin-image] All art-directed images passed to must have a value set for `media`. Skipping.\"\n )\n }\n return\n }\n\n if (\n image.layout !== defaultImage.layout &&\n process.env.NODE_ENV === `development`\n ) {\n console.warn(\n `[gatsby-plugin-image] Mismatched image layout: expected \"${defaultImage.layout}\" but received \"${image.layout}\". All art-directed images use the same layout as the default image`\n )\n }\n\n output.images.sources.push(\n ...image.images.sources.map(source => {\n return { ...source, media }\n }),\n {\n media,\n srcSet: image.images.fallback.srcSet,\n }\n )\n\n if (!output.placeholder) {\n return\n }\n\n output.placeholder.sources.push({\n media,\n srcSet: image.placeholder.fallback,\n })\n })\n output.images.sources.push(...images.sources)\n if (placeholder?.sources) {\n output.placeholder?.sources.push(...placeholder.sources)\n }\n return output\n}\n","// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// \n\nimport React, { Fragment, FunctionComponent } from \"react\"\nimport terserMacro from \"../../macros/terser.macro\"\nimport { Layout } from \"../image-utils\"\n\nexport interface ILayoutWrapperProps {\n layout: Layout\n width: number\n height: number\n}\n\nconst NativeScriptLoading: FunctionComponent = () => (\n \n)\n\nexport function getSizer(\n layout: Layout,\n width: number,\n height: number\n): string {\n let sizer: string | null = null\n if (layout === `fullWidth`) {\n sizer = `
`\n }\n if (layout === `constrained`) {\n sizer = `
\"\"
`\n }\n return sizer\n}\n\nconst Sizer: FunctionComponent = function Sizer({\n layout,\n width,\n height,\n}) {\n if (layout === `fullWidth`) {\n return (\n
\n )\n }\n if (layout === `constrained`) {\n return (\n
\n \n
\n )\n }\n\n return null\n}\n\nexport const LayoutWrapper: FunctionComponent =\n function LayoutWrapper({ children, ...props }) {\n return (\n \n \n {children}\n\n {\n // eslint-disable-next-line no-undef\n SERVER && \n }\n \n )\n }\n","/* eslint-disable filenames/match-regex */\nimport React, {\n FunctionComponent,\n ImgHTMLAttributes,\n forwardRef,\n LegacyRef,\n} from \"react\"\nimport * as PropTypes from \"prop-types\"\n\nexport interface IResponsiveImageProps {\n sizes?: string\n srcSet: string\n}\n\nexport type SourceProps = IResponsiveImageProps &\n (\n | {\n media: string\n type?: string\n }\n | {\n media?: string\n type: string\n }\n )\n\ntype FallbackProps = { src: string } & Partial\n\ntype ImageProps = ImgHTMLAttributes & {\n src: string\n alt: string\n shouldLoad: boolean\n innerRef: LegacyRef\n}\n\nexport type PictureProps = ImgHTMLAttributes & {\n fallback?: FallbackProps\n sources?: Array\n alt: string\n shouldLoad?: boolean\n}\n\nconst Image: FunctionComponent = function Image({\n src,\n srcSet,\n loading,\n alt = ``,\n shouldLoad,\n innerRef,\n ...props\n}) {\n return (\n \n )\n}\n\nexport const Picture = forwardRef(\n function Picture(\n { fallback, sources = [], shouldLoad = true, ...props },\n ref\n ) {\n const sizes = props.sizes || fallback?.sizes\n const fallbackImage = (\n \n )\n\n if (!sources.length) {\n return fallbackImage\n }\n\n return (\n \n {sources.map(({ media, srcSet, type }) => (\n \n ))}\n {fallbackImage}\n \n )\n }\n)\n\nImage.propTypes = {\n src: PropTypes.string.isRequired,\n alt: PropTypes.string.isRequired,\n sizes: PropTypes.string,\n srcSet: PropTypes.string,\n shouldLoad: PropTypes.bool,\n}\n\nPicture.displayName = `Picture`\nPicture.propTypes = {\n alt: PropTypes.string.isRequired,\n shouldLoad: PropTypes.bool,\n fallback: PropTypes.exact({\n src: PropTypes.string.isRequired,\n srcSet: PropTypes.string,\n sizes: PropTypes.string,\n }),\n sources: PropTypes.arrayOf(\n PropTypes.oneOfType([\n PropTypes.exact({\n media: PropTypes.string.isRequired,\n type: PropTypes.string,\n sizes: PropTypes.string,\n srcSet: PropTypes.string.isRequired,\n }),\n PropTypes.exact({\n media: PropTypes.string,\n type: PropTypes.string.isRequired,\n sizes: PropTypes.string,\n srcSet: PropTypes.string.isRequired,\n }),\n ])\n ),\n}\n","import React, { FunctionComponent, ImgHTMLAttributes } from \"react\"\nimport * as PropTypes from \"prop-types\"\nimport { Picture, SourceProps } from \"./picture\"\n\nexport type PlaceholderProps = ImgHTMLAttributes & {\n fallback?: string\n sources?: Array\n}\n\nexport const Placeholder: FunctionComponent =\n function Placeholder({ fallback, ...props }) {\n if (fallback) {\n return (\n \n )\n } else {\n return
\n }\n }\n\nPlaceholder.displayName = `Placeholder`\nPlaceholder.propTypes = {\n fallback: PropTypes.string,\n sources: Picture.propTypes?.sources,\n alt: function (props, propName, componentName): Error | null {\n if (!props[propName]) {\n return null\n }\n return new Error(\n `Invalid prop \\`${propName}\\` supplied to \\`${componentName}\\`. Validation failed.`\n )\n },\n}\n","import React, { forwardRef } from \"react\"\nimport { Picture, PictureProps } from \"./picture\"\n\nexport type MainImageProps = PictureProps\n\nexport const MainImage = forwardRef(\n function MainImage(props, ref) {\n return (\n <>\n \n \n \n )\n }\n)\n\nMainImage.displayName = `MainImage`\nMainImage.propTypes = Picture.propTypes\n","import React, {\n ElementType,\n FunctionComponent,\n CSSProperties,\n WeakValidationMap,\n} from \"react\"\nimport { GatsbyImageProps, IGatsbyImageData } from \"./gatsby-image.browser\"\nimport { getWrapperProps, getMainProps, getPlaceholderProps } from \"./hooks\"\nimport { Placeholder } from \"./placeholder\"\nimport { MainImage, MainImageProps } from \"./main-image\"\nimport { LayoutWrapper } from \"./layout-wrapper\"\nimport PropTypes from \"prop-types\"\n\nconst removeNewLines = (str: string): string => str.replace(/\\n/g, ``)\n\nexport const GatsbyImageHydrator: FunctionComponent<{\n as?: ElementType\n style?: CSSProperties\n className?: string\n}> = function GatsbyImageHydrator({ as: Type = `div`, children, ...props }) {\n return {children}\n}\n\nexport const GatsbyImage: FunctionComponent =\n function GatsbyImage({\n as,\n className,\n class: preactClass,\n style,\n image,\n loading = `lazy`,\n imgClassName,\n imgStyle,\n backgroundColor,\n objectFit,\n objectPosition,\n ...props\n }) {\n if (!image) {\n console.warn(`[gatsby-plugin-image] Missing image prop`)\n return null\n }\n if (preactClass) {\n className = preactClass\n }\n imgStyle = {\n objectFit,\n objectPosition,\n backgroundColor,\n ...imgStyle,\n }\n\n const {\n width,\n height,\n layout,\n images,\n placeholder,\n backgroundColor: placeholderBackgroundColor,\n } = image\n\n const {\n style: wStyle,\n className: wClass,\n ...wrapperProps\n } = getWrapperProps(width, height, layout)\n\n const cleanedImages: IGatsbyImageData[\"images\"] = {\n fallback: undefined,\n sources: [],\n }\n if (images.fallback) {\n cleanedImages.fallback = {\n ...images.fallback,\n srcSet: images.fallback.srcSet\n ? removeNewLines(images.fallback.srcSet)\n : undefined,\n }\n }\n\n if (images.sources) {\n cleanedImages.sources = images.sources.map(source => {\n return {\n ...source,\n srcSet: removeNewLines(source.srcSet),\n }\n })\n }\n\n return (\n \n \n \n\n )}\n // When eager is set we want to start the isLoading state on true (we want to load the img without react)\n {...getMainProps(\n loading === `eager`,\n false,\n cleanedImages,\n loading,\n undefined,\n undefined,\n undefined,\n imgStyle\n )}\n />\n \n \n )\n }\n\nexport const altValidator: PropTypes.Validator = (\n props: GatsbyImageProps,\n propName,\n componentName,\n ...rest\n): Error | undefined => {\n if (!props.alt && props.alt !== ``) {\n return new Error(\n `The \"alt\" prop is required in ${componentName}. If the image is purely presentational then pass an empty string: e.g. alt=\"\". Learn more: https://a11y-style-guide.com/style-guide/section-media.html`\n )\n }\n return PropTypes.string(props, propName, componentName, ...rest)\n}\nexport const propTypes = {\n image: PropTypes.object.isRequired,\n alt: altValidator,\n} as WeakValidationMap\n","/* eslint-disable no-unused-expressions */\nimport React, {\n Component,\n ElementType,\n createRef,\n MutableRefObject,\n FunctionComponent,\n ImgHTMLAttributes,\n RefObject,\n CSSProperties,\n} from \"react\"\nimport {\n getWrapperProps,\n hasNativeLazyLoadSupport,\n storeImageloaded,\n hasImageLoaded,\n gatsbyImageIsInstalled,\n} from \"./hooks\"\nimport { PlaceholderProps } from \"./placeholder\"\nimport { MainImageProps } from \"./main-image\"\nimport { Layout } from \"../image-utils\"\nimport { getSizer } from \"./layout-wrapper\"\nimport { propTypes } from \"./gatsby-image.server\"\nimport { Unobserver } from \"./intersection-observer\"\nimport { render } from \"react-dom\"\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport interface GatsbyImageProps\n extends Omit<\n ImgHTMLAttributes,\n \"placeholder\" | \"onLoad\" | \"src\" | \"srcSet\" | \"width\" | \"height\"\n > {\n alt: string\n as?: ElementType\n className?: string\n class?: string\n imgClassName?: string\n image: IGatsbyImageData\n imgStyle?: CSSProperties\n backgroundColor?: string\n objectFit?: CSSProperties[\"objectFit\"]\n objectPosition?: CSSProperties[\"objectPosition\"]\n onLoad?: () => void\n onError?: () => void\n onStartLoad?: (props: { wasCached?: boolean }) => void\n}\n\nexport interface IGatsbyImageData {\n layout: Layout\n width: number\n height: number\n backgroundColor?: string\n images: Pick\n placeholder?: Pick\n}\n\nclass GatsbyImageHydrator extends Component<\n GatsbyImageProps,\n { isLoading: boolean; isLoaded: boolean }\n> {\n root: RefObject = createRef<\n HTMLImageElement | undefined\n >()\n hydrated: MutableRefObject = { current: false }\n forceRender: MutableRefObject = {\n // In dev we use render not hydrate, to avoid hydration warnings\n current: process.env.NODE_ENV === `development`,\n }\n lazyHydrator: () => void | null = null\n ref = createRef()\n unobserveRef: Unobserver\n\n constructor(props) {\n super(props)\n\n this.state = {\n isLoading: hasNativeLazyLoadSupport(),\n isLoaded: false,\n }\n }\n\n _lazyHydrate(props, state): Promise {\n const hasSSRHtml = this.root.current.querySelector(\n `[data-gatsby-image-ssr]`\n )\n // On first server hydration do nothing\n if (hasNativeLazyLoadSupport() && hasSSRHtml && !this.hydrated.current) {\n this.hydrated.current = true\n return Promise.resolve()\n }\n\n return import(`./lazy-hydrate`).then(({ lazyHydrate }) => {\n const cacheKey = JSON.stringify(this.props.image.images)\n this.lazyHydrator = lazyHydrate(\n {\n image: props.image.images,\n isLoading: state.isLoading || hasImageLoaded(cacheKey),\n isLoaded: state.isLoaded || hasImageLoaded(cacheKey),\n toggleIsLoaded: () => {\n props.onLoad?.()\n\n this.setState({\n isLoaded: true,\n })\n },\n ref: this.ref,\n ...props,\n },\n this.root,\n this.hydrated,\n this.forceRender\n )\n })\n }\n\n /**\n * Choose if setupIntersectionObserver should use the image cache or not.\n */\n _setupIntersectionObserver(useCache = true): void {\n import(`./intersection-observer`).then(({ createIntersectionObserver }) => {\n const intersectionObserver = createIntersectionObserver(() => {\n if (this.root.current) {\n const cacheKey = JSON.stringify(this.props.image.images)\n this.props.onStartLoad?.({\n wasCached: useCache && hasImageLoaded(cacheKey),\n })\n this.setState({\n isLoading: true,\n isLoaded: useCache && hasImageLoaded(cacheKey),\n })\n }\n })\n\n if (this.root.current) {\n this.unobserveRef = intersectionObserver(this.root)\n }\n })\n }\n\n shouldComponentUpdate(nextProps, nextState): boolean {\n let hasChanged = false\n if (!this.state.isLoading && nextState.isLoading && !nextState.isLoaded) {\n // Props have changed between SSR and hydration, so we need to force render instead of hydrate\n this.forceRender.current = true\n }\n // this check mostly means people do not have the correct ref checks in place, we want to reset some state to suppport loading effects\n if (this.props.image.images !== nextProps.image.images) {\n // reset state, we'll rely on intersection observer to reload\n if (this.unobserveRef) {\n // unregister intersectionObserver\n this.unobserveRef()\n\n // // on unmount, make sure we cleanup\n if (this.hydrated.current && this.lazyHydrator) {\n render(null, this.root.current)\n }\n }\n\n this.setState(\n {\n isLoading: false,\n isLoaded: false,\n },\n () => {\n this._setupIntersectionObserver(false)\n }\n )\n\n hasChanged = true\n }\n\n if (this.root.current && !hasChanged) {\n this._lazyHydrate(nextProps, nextState)\n }\n\n return false\n }\n\n componentDidMount(): void {\n if (this.root.current) {\n const ssrElement = this.root.current.querySelector(\n `[data-gatsby-image-ssr]`\n ) as HTMLImageElement\n const cacheKey = JSON.stringify(this.props.image.images)\n\n // when SSR and native lazyload is supported we'll do nothing ;)\n if (\n hasNativeLazyLoadSupport() &&\n ssrElement &&\n gatsbyImageIsInstalled()\n ) {\n this.props.onStartLoad?.({ wasCached: false })\n\n // When the image is already loaded before we have hydrated, we trigger onLoad and cache the item\n if (ssrElement.complete) {\n this.props.onLoad?.()\n storeImageloaded(cacheKey)\n } else {\n // We need the current class context (this) inside our named onLoad function\n // The named function is necessary to easily remove the listener afterward.\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const _this = this\n // add an onLoad to the image\n ssrElement.addEventListener(`load`, function onLoad() {\n ssrElement.removeEventListener(`load`, onLoad)\n\n _this.props.onLoad?.()\n storeImageloaded(cacheKey)\n })\n }\n\n return\n }\n\n // Fallback to custom lazy loading (intersection observer)\n this._setupIntersectionObserver(true)\n }\n }\n\n componentWillUnmount(): void {\n // Cleanup when onmount happens\n if (this.unobserveRef) {\n // unregister intersectionObserver\n this.unobserveRef()\n\n // on unmount, make sure we cleanup\n if (this.hydrated.current && this.lazyHydrator) {\n this.lazyHydrator()\n }\n }\n\n return\n }\n\n render(): JSX.Element {\n const Type = this.props.as || `div`\n const { width, height, layout } = this.props.image\n const {\n style: wStyle,\n className: wClass,\n ...wrapperProps\n } = getWrapperProps(width, height, layout)\n\n let className = this.props.className\n // preact class\n if (this.props.class) {\n className = this.props.class\n }\n\n const sizer = getSizer(layout, width, height)\n\n return (\n \n )\n }\n}\n\nexport const GatsbyImage: FunctionComponent =\n function GatsbyImage(props) {\n if (!props.image) {\n if (process.env.NODE_ENV === `development`) {\n console.warn(`[gatsby-plugin-image] Missing image prop`)\n }\n return null\n }\n\n if (!gatsbyImageIsInstalled() && process.env.NODE_ENV === `development`) {\n console.warn(\n `[gatsby-plugin-image] You're missing out on some cool performance features. Please add \"gatsby-plugin-image\" to your gatsby-config.js`\n )\n }\n const { className, class: classSafe, backgroundColor, image } = props\n const { width, height, layout } = image\n const propsKey = JSON.stringify([\n width,\n height,\n layout,\n className,\n classSafe,\n backgroundColor,\n ])\n return \n }\n\nGatsbyImage.propTypes = propTypes\n\nGatsbyImage.displayName = `GatsbyImage`\n","import React, { FunctionComponent, ReactElement } from \"react\"\nimport {\n altValidator,\n GatsbyImage as GatsbyImageServer,\n} from \"./gatsby-image.server\"\nimport { GatsbyImageProps, IGatsbyImageData } from \"./gatsby-image.browser\"\nimport PropTypes from \"prop-types\"\nimport { ISharpGatsbyImageArgs } from \"../image-utils\"\n\nexport interface IStaticImageProps\n extends Omit,\n Omit {\n src: string\n}\n\n// These values are added by Babel. Do not add them manually\ninterface IPrivateProps {\n __imageData?: IGatsbyImageData\n __error?: string\n}\n\nexport function _getStaticImage(\n GatsbyImage: FunctionComponent\n): React.FC {\n return function StaticImage({\n src,\n __imageData: imageData,\n __error,\n // We extract these because they're not meant to be passed-down to GatsbyImage\n /* eslint-disable @typescript-eslint/no-unused-vars */\n width,\n height,\n aspectRatio,\n tracedSVGOptions,\n placeholder,\n formats,\n quality,\n transformOptions,\n jpgOptions,\n pngOptions,\n webpOptions,\n avifOptions,\n blurredOptions,\n /* eslint-enable @typescript-eslint/no-unused-vars */\n ...props\n }): ReactElement {\n if (__error) {\n console.warn(__error)\n }\n\n if (imageData) {\n return \n }\n console.warn(`Image not loaded`, src)\n if (!__error && process.env.NODE_ENV === `development`) {\n console.warn(\n `Please ensure that \"gatsby-plugin-image\" is included in the plugins array in gatsby-config.js, and that your version of gatsby is at least 2.24.78`\n )\n }\n return null\n }\n}\n\nconst StaticImage: React.FC =\n _getStaticImage(GatsbyImageServer)\n\nconst checkDimensionProps: PropTypes.Validator = (\n props: IStaticImageProps & IPrivateProps,\n propName: keyof IStaticImageProps & IPrivateProps,\n ...rest\n) => {\n if (\n props.layout === `fullWidth` &&\n (propName === `width` || propName === `height`) &&\n props[propName]\n ) {\n return new Error(\n `\"${propName}\" ${props[propName]} may not be passed when layout is fullWidth.`\n )\n }\n return PropTypes.number(props, propName, ...rest)\n}\n\nconst validLayouts = new Set([`fixed`, `fullWidth`, `constrained`])\n\nexport const propTypes = {\n src: PropTypes.string.isRequired,\n alt: altValidator,\n width: checkDimensionProps,\n height: checkDimensionProps,\n sizes: PropTypes.string,\n layout: (props: IStaticImageProps & IPrivateProps): Error | undefined => {\n if (props.layout === undefined) {\n return undefined\n }\n if (validLayouts.has(props.layout)) {\n return undefined\n }\n\n return new Error(\n `Invalid value ${props.layout}\" provided for prop \"layout\". Defaulting to \"constrained\". Valid values are \"fixed\", \"fullWidth\" or \"constrained\".`\n )\n },\n}\n\nStaticImage.displayName = `StaticImage`\nStaticImage.propTypes = propTypes\n\nexport { StaticImage }\n","import {\n GatsbyImage as GatsbyImageBrowser,\n IGatsbyImageData,\n} from \"./gatsby-image.browser\"\nimport React from \"react\"\nimport {\n _getStaticImage,\n propTypes,\n IStaticImageProps,\n} from \"./static-image.server\"\n// These values are added by Babel. Do not add them manually\ninterface IPrivateProps {\n __imageData?: IGatsbyImageData\n __error?: string\n}\n\nconst StaticImage: React.FC =\n _getStaticImage(GatsbyImageBrowser)\n\nStaticImage.displayName = `StaticImage`\nStaticImage.propTypes = propTypes\n\nexport { StaticImage }\n","import * as React from \"react\"\nexport function LaterHydrator({\n children,\n}: React.PropsWithChildren>): React.ReactNode {\n React.useEffect(() => {\n // eslint-disable-next-line no-unused-expressions\n import(`./lazy-hydrate`)\n }, [])\n\n return children\n}\n","// Generated by CoffeeScript 1.12.2\n(function () {\n var getNanoSeconds, hrtime, loadTime, moduleLoadTime, nodeLoadTime, upTime;\n if (typeof performance !== \"undefined\" && performance !== null && performance.now) {\n module.exports = function () {\n return performance.now();\n };\n } else if (typeof process !== \"undefined\" && process !== null && process.hrtime) {\n module.exports = function () {\n return (getNanoSeconds() - nodeLoadTime) / 1e6;\n };\n hrtime = process.hrtime;\n getNanoSeconds = function () {\n var hr;\n hr = hrtime();\n return hr[0] * 1e9 + hr[1];\n };\n moduleLoadTime = getNanoSeconds();\n upTime = process.uptime() * 1e9;\n nodeLoadTime = moduleLoadTime - upTime;\n } else if (Date.now) {\n module.exports = function () {\n return Date.now() - loadTime;\n };\n loadTime = Date.now();\n } else {\n module.exports = function () {\n return new Date().getTime() - loadTime;\n };\n loadTime = new Date().getTime();\n }\n}).call(this);","import redirects from \"./redirects.json\"\n\n// Convert to a map for faster lookup in maybeRedirect()\n\nconst redirectMap = new Map()\nconst redirectIgnoreCaseMap = new Map()\n\nredirects.forEach(redirect => {\n if (redirect.ignoreCase) {\n redirectIgnoreCaseMap.set(redirect.fromPath, redirect)\n } else {\n redirectMap.set(redirect.fromPath, redirect)\n }\n})\n\nexport function maybeGetBrowserRedirect(pathname) {\n let redirect = redirectMap.get(pathname)\n if (!redirect) {\n redirect = redirectIgnoreCaseMap.get(pathname.toLowerCase())\n }\n return redirect\n}\n","export const AlwaysTrueFn = () => true;\nexport const AlwaysFalseFn = () => false;\n\nexport const always = (a: T) => () => a;\n\nexport const cond = (\n items: [(...args: any) => any, (...args: any) => any][]\n) => (...args: any) => {\n for (let i of items) {\n if (i[0](...args)) return i[1](...args);\n }\n}\n\nexport const eqBy = (\n fn: (v: X | Y) => any = v => v, a: X, b: Y\n) => fn(a) === fn(b);\n\nexport const eqByFn = (fn: (v: any) => any) => (a: any, b: any) => eqBy(fn, a, b);\n\nexport const first = (arr?: T[]) => arr && arr.length > 0 ? arr[0] : undefined;\n\nexport const last = (arr?: T[]) => arr ? arr[arr.length - 1] : undefined;\nexport const lastInString = (arr?: string) => arr ? arr[arr.length - 1] : undefined;\n\nexport const take = (num: number, arr: T[]) => arr.slice(0, num);\n\nexport const sum = (numbers: number[]) => numbers.reduce((a,b) => a + b, 0);\nexport const mean = (numbers: number[]) => sum(numbers) / numbers.length;\n\nexport const median = (arr: number[]) => {\n const mid = Math.floor(arr.length / 2),\n nums = [...arr].sort((a, b) => a - b);\n return arr.length % 2 !== 0 ? nums[mid] : (nums[mid - 1] + nums[mid]) / 2;\n};\n\nexport function isNil(v: any): v is null | undefined {\n return v === null || v === undefined;\n}\nexport const dissoc = (key: keyof T, obj: T): Omit => {\n const newObj: AnyObject = {};\n for (let k in obj) {\n if (k !== key) newObj[k] = obj[k];\n }\n return newObj as Omit;\n}\n\nexport const omit = (arr: T[], ...elementsToOmit: T[]) => {\n return arr.filter(a => !elementsToOmit.includes(a));\n}\n\nexport const both = (a: Function, b: Function) => a() && b();\nexport const bothFn = (a: Function, b: Function) => () => a() && b();\n\nexport const prop = (key: keyof T, object: T) => object[key];\nexport const propFn = (key: keyof T) => (object: T) => prop(key, object);\n\nexport const groupBy = (fn: (obj: T) => any, array: T[]) => {\n const result = {} as AnyObject;\n array.forEach(o => {\n const key = fn(o) + '';\n if (!result[key]) result[key] = [];\n result[key].push(o);\n })\n return result as Record;\n}\n\nexport const allPass = (...fns: Function[]) => fns.every(f => f());\nexport const allPassFn = (...fns: Function[]) => () => fns.every(f => f());\n\nexport const uniq = (arr: T[]) => Array.from(new Set(arr));\nexport const uniqById = (arr: T[]) => Array.from(new Set(arr.map(a => a.id))).map(id => arr.find(a => a.id === id)!);\n\nexport const findLast = (fn: (x: T, i: number, a: T[]) => any, array: T[]) => [...array].reverse().find(fn);\n\nexport const pick = (keys: (keyof T)[], object: T) => {\n const result: AnyObject = {};\n const keysConst = [...keys] as const;\n keysConst.forEach(k => result[k as string] = object[k]);\n return result as Pick;\n}\n\nexport const merge = <\n A extends AnyObject, \n B extends AnyObject,\n C extends AnyObject,\n>(a?: A, b?: B, c?: C) => {\n return { ...a, ...b, ...c };\n}\nexport const mergeLeft = (a: A, b: B) => {\n return { ...b, ...a };\n}\nexport const mergeRight = merge;\n\nexport const mapObject = (\n transformer: (a: T) => R,\n object: T,\n) => {\n const result = {} as AnyObject;\n Object.entries(object).forEach(e => result[e[0]] = transformer(e[1]));\n return result as Record;\n}\n\n\nexport const intersection = (A: TA[], B: TB[]) => A.filter(a => B.includes(a as any));\nexport const difference = (A: TA[], B: TB[]) => A.filter(a => !B.includes(a as any));\nexport const symmetricDifference = (A: TA[], B: TB[]) => [...difference(A, B), ...difference(B, A)];\n\nexport const defaultComparator = (a: any, b: any) => a === b;\nexport const idComparator = (a: HasId, b: HasId) => a.id === b.id;\n\nexport const intersectionBy = (comparator: (a: any, b: any) => boolean = defaultComparator, A: TA[], B: TB[]) => A.filter(a => B.find(b => comparator(a, b)));\nexport const differenceBy = (comparator: (a: any, b: any) => boolean = defaultComparator, A: TA[], B: TB[]) => A.filter(a => !B.find(b => comparator(a, b)));\nexport const symmetricDifferenceBy = (comparator: (a: any, b: any) => boolean = defaultComparator, A: TA[], B: TB[]) => [...differenceBy(comparator, A, B), ...differenceBy(comparator, B, A)];\n\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","import React from \"react\";\nimport { Location, globalHistory } from \"@reach/router\";\nimport { QueryParamProvider } from \"use-query-params\";\n\nexport default ({ children }) => (\n \n {({ location }) => (\n \n {children}\n \n )}\n \n);\n","import React from \"react\";\nimport Root from \"./root\";\n\nexport const wrapRootElement = ({ element }) => {element};\n","exports.f = Object.getOwnPropertySymbols;\n","!function () {\n function t() {\n var e = Array.prototype.slice.call(arguments),\n n = document.createDocumentFragment();\n e.forEach(function (e) {\n var t = e instanceof Node;\n n.appendChild(t ? e : document.createTextNode(String(e)));\n }), this.insertBefore(n, this.firstChild);\n }\n [Element.prototype, Document.prototype, DocumentFragment.prototype].forEach(function (e) {\n e.hasOwnProperty(\"prepend\") || Object.defineProperty(e, \"prepend\", {\n configurable: !0,\n enumerable: !0,\n writable: !0,\n value: t\n });\n });\n}();","'use strict';\n\nmodule.exports = require('./index').default;","\"use strict\";\n\nexports.__esModule = true;\nexports.SessionStorage = void 0;\nvar STATE_KEY_PREFIX = \"@@scroll|\";\nvar GATSBY_ROUTER_SCROLL_STATE = \"___GATSBY_REACT_ROUTER_SCROLL\";\n\nvar SessionStorage = /*#__PURE__*/function () {\n function SessionStorage() {}\n\n var _proto = SessionStorage.prototype;\n\n _proto.read = function read(location, key) {\n var stateKey = this.getStateKey(location, key);\n\n try {\n var value = window.sessionStorage.getItem(stateKey);\n return value ? JSON.parse(value) : 0;\n } catch (e) {\n if (process.env.NODE_ENV !== \"production\") {\n console.warn(\"[gatsby-react-router-scroll] Unable to access sessionStorage; sessionStorage is not available.\");\n }\n\n if (window && window[GATSBY_ROUTER_SCROLL_STATE] && window[GATSBY_ROUTER_SCROLL_STATE][stateKey]) {\n return window[GATSBY_ROUTER_SCROLL_STATE][stateKey];\n }\n\n return 0;\n }\n };\n\n _proto.save = function save(location, key, value) {\n var stateKey = this.getStateKey(location, key);\n var storedValue = JSON.stringify(value);\n\n try {\n window.sessionStorage.setItem(stateKey, storedValue);\n } catch (e) {\n if (window && window[GATSBY_ROUTER_SCROLL_STATE]) {\n window[GATSBY_ROUTER_SCROLL_STATE][stateKey] = JSON.parse(storedValue);\n } else {\n window[GATSBY_ROUTER_SCROLL_STATE] = {};\n window[GATSBY_ROUTER_SCROLL_STATE][stateKey] = JSON.parse(storedValue);\n }\n\n if (process.env.NODE_ENV !== \"production\") {\n console.warn(\"[gatsby-react-router-scroll] Unable to save state in sessionStorage; sessionStorage is not available.\");\n }\n }\n };\n\n _proto.getStateKey = function getStateKey(location, key) {\n var stateKeyBase = \"\" + STATE_KEY_PREFIX + location.pathname;\n return key === null || typeof key === \"undefined\" ? stateKeyBase : stateKeyBase + \"|\" + key;\n };\n\n return SessionStorage;\n}();\n\nexports.SessionStorage = SessionStorage;","import React, { Component, cloneElement } from 'react'\nimport { setTimeout, clearTimeout } from 'requestanimationframe-timer'\nimport { PublicProvider } from '../context/createTransitionContext'\n\nexport default class TransitionRenderer extends Component {\n\tstate = {\n\t\tshouldBeVisible: !!!this.props.appearAfter,\n\t}\n\n\tshouldComponentUpdate(nextProps, nextState) {\n\t\t// only rerender if the transition status changes.\n\t\treturn (\n\t\t\tthis.props.transitionStatus !== nextProps.transitionStatus ||\n\t\t\tthis.state.shouldBeVisible !== nextState.shouldBeVisible ||\n\t\t\tthis.props.children !== nextProps.children\n\t\t)\n\t}\n\n\tcomponentDidMount = () => {\n\t\tconst delay =\n\t\t\ttypeof this.props.delay === 'number' ? this.props.delay : 0\n\t\tconst appearafter =\n\t\t\ttypeof this.props.appearAfter === 'number'\n\t\t\t\t? this.props.appearAfter\n\t\t\t\t: 0\n\t\tconst timeout = delay + appearafter\n\n\t\tthis.appearTimeout = setTimeout(\n\t\t\t() => this.setState({ shouldBeVisible: true }),\n\t\t\ttimeout\n\t\t)\n\t}\n\n\tcomponentWillUnmount = () => {\n\t\tclearTimeout(this.appearTimeout)\n\t}\n\n\trender() {\n\t\tconst {\n\t\t\tmount,\n\t\t\tentryZindex,\n\t\t\texitZindex,\n\t\t\ttransitionStatus,\n\t\t\ttransitionState,\n\t\t\tchildren,\n\t\t\tinjectPageProps,\n\t\t} = this.props\n\n\t\treturn (\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t{/* pass transition state to page/template */}\n\t\t\t\t\t{// injectPageProps is a plugin option\n\t\t\t\t\tinjectPageProps\n\t\t\t\t\t\t? cloneElement(children, {\n\t\t\t\t\t\t\t\t...transitionState,\n\t\t\t\t\t\t })\n\t\t\t\t\t\t: children}\n\t\t\t\t\n\t\t\t
\n\t\t)\n\t}\n}\n","import { isBrowser } from \"../env\";\nimport tick from \"./waiters.utils\";\n\nexport const addRootClass = (value: string) => isBrowser ? (value.includes(' ') ? value.split(' ').forEach(c => document.documentElement.classList.add(c)) : document.documentElement.classList.add(value)) : null;\nexport const removeRootClass = (value: string) => isBrowser ? (value.includes(' ') ? value.split(' ').forEach(c => document.documentElement.classList.remove(c)) : document.documentElement.classList.remove(value)) : null;\nexport const hasRootClass = (value: string) => isBrowser ? (value.includes(' ') ? value.split(' ').some(c => document.documentElement.classList.contains(c)) : document.documentElement.classList.contains(value)) : null;\n\nexport function makeElement(\n tagName: K,\n className: string = '',\n ...content: (string | HTMLElement | null | undefined)[]\n) {\n const el = document.createElement(tagName);\n className.split(' ').forEach(c => c && el.classList.add(c));\n content?.forEach(c => {\n if (c === null || c === undefined) return;\n if (typeof c === 'string') {\n const temp = document.createElement('div');\n temp.innerHTML = c;\n el.append(...Array.from(temp.childNodes));\n } else {\n el.append(c);\n }\n })\n return el;\n}\n\nexport const loadScript = (src: string) => new Promise(\n (resolve, reject) => {\n const script = document.createElement(\"script\");\n script.src = src;\n script.onload = () => resolve(true);\n script.onerror = (e) => reject(e)\n document.head.appendChild(script);\n }\n)\n\nexport const asyncPrependToContainer = async (\n elementGetter: () => HTMLElement,\n containerGetter: () => HTMLElement,\n delay?: number\n) => {\n await tick(delay);\n containerGetter().prepend(elementGetter());\n}\n\nexport const getScrollY = () => window.scrollY ?? window.pageYOffset ?? document.documentElement.scrollTop;","function _arrayLikeToArray(r, a) {\n (null == a || a > r.length) && (a = r.length);\n for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n return n;\n}\nexport { _arrayLikeToArray as default };","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nfunction _toConsumableArray(r) {\n return arrayWithoutHoles(r) || iterableToArray(r) || unsupportedIterableToArray(r) || nonIterableSpread();\n}\nexport { _toConsumableArray as default };","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nfunction _arrayWithoutHoles(r) {\n if (Array.isArray(r)) return arrayLikeToArray(r);\n}\nexport { _arrayWithoutHoles as default };","function _iterableToArray(r) {\n if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r);\n}\nexport { _iterableToArray as default };","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nfunction _unsupportedIterableToArray(r, a) {\n if (r) {\n if (\"string\" == typeof r) return arrayLikeToArray(r, a);\n var t = {}.toString.call(r).slice(8, -1);\n return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? arrayLikeToArray(r, a) : void 0;\n }\n}\nexport { _unsupportedIterableToArray as default };","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _nonIterableSpread as default };","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","function _extends() {\n return module.exports = _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _extends.apply(null, arguments);\n}\nmodule.exports = _extends, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nexport { _typeof as default };","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nexport { toPropertyKey as default };","import _typeof from \"./typeof.js\";\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nexport { toPrimitive as default };","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperty(e, r, t) {\n return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nexport { _defineProperty as default };","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n","import { useContext } from 'react'\nimport { navigate } from 'gatsby'\nimport { Context } from '../context/createTransitionContext'\nimport { triggerTransition } from '../utils/triggerTransition'\n\nconst useTriggerTransition = defaultOptions => {\n\tconst context = useContext(Context)\n\tconst programmaticallyTriggerTransition = calledOptions => {\n\t\t// allow passing an event directly instead of options\n\t\tif (\n\t\t\tcalledOptions instanceof Event ||\n\t\t\t(calledOptions.nativeEvent &&\n\t\t\t\tcalledOptions.nativeEvent instanceof Event)\n\t\t) {\n\t\t\tcalledOptions = {\n\t\t\t\tevent: calledOptions,\n\t\t\t}\n\t\t}\n\n\t\tconst options = {\n\t\t\t...defaultOptions,\n\t\t\t...calledOptions,\n\t\t}\n\n\t\tif (context.disableAnimation) {\n\t\t\t// If the user has set their browser or OS to prefers-reduced-motion\n\t\t\t// we should respect that.\n\t\t\tif (options.event) {\n\t\t\t\toptions.event.persist()\n\t\t\t\toptions.event.preventDefault()\n\t\t\t}\n\t\t\tnavigate(options.to)\n\t\t} else {\n\t\t\ttriggerTransition({\n\t\t\t\t...context,\n\t\t\t\t...options,\n\t\t\t})\n\t\t}\n\t}\n\treturn programmaticallyTriggerTransition\n}\n\nexport { useTriggerTransition }\n","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n","function _objectWithoutPropertiesLoose(r, e) {\n if (null == r) return {};\n var t = {};\n for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n if (-1 !== e.indexOf(n)) continue;\n t[n] = r[n];\n }\n return t;\n}\nmodule.exports = _objectWithoutPropertiesLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","import React, { CSSProperties } from 'react';\nimport joinClassName from '../../utils/className.utils';\nimport './Line.scss';\n\ntype LineProps = {\n className?: string,\n width?: number | string,\n animate?: boolean,\n animationDelay?: CSSProperties['animationDelay'],\n}\n\nconst Line: React.FC = props => {\n return \n}\n\nexport default Line;","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","import { gsap, Power0, Power1, Power2, Power3, Power4, Linear, Quad, Cubic, Quart, Quint, Strong, Elastic, Back, SteppedEase, Bounce, Sine, Expo, Circ, TweenLite, TimelineLite, TimelineMax } from \"./gsap-core.js\";\nimport { CSSPlugin } from \"./CSSPlugin.js\";\nvar gsapWithCSS = gsap.registerPlugin(CSSPlugin) || gsap,\n // to protect from tree shaking\n TweenMaxWithCSS = gsapWithCSS.core.Tween;\nexport { gsapWithCSS as gsap, gsapWithCSS as default, CSSPlugin, TweenMaxWithCSS as TweenMax, TweenLite, TimelineMax, TimelineLite, Power0, Power1, Power2, Power3, Power4, Linear, Quad, Cubic, Quart, Quint, Strong, Elastic, Back, SteppedEase, Bounce, Sine, Expo, Circ };","function _interopRequireDefault(e) {\n return e && e.__esModule ? e : {\n \"default\": e\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","import React, { Component } from 'react'\nimport { setTimeout, clearTimeout } from 'requestanimationframe-timer'\n\nexport default function delayTransitionRender(WrappedComponent) {\n\tclass DelayedTransitionWrapper extends Component {\n\t\tconstructor(props) {\n\t\t\tsuper(props)\n\n\t\t\tthis.state = {\n\t\t\t\t// if there is a delay, set shouldRender to false\n\t\t\t\t// then in componentdid mount shouldRender becomes true\n\t\t\t\t// after the delay.\n\t\t\t\tshouldRender: !!!this.props.delay,\n\t\t\t}\n\t\t}\n\n\t\tcomponentDidMount() {\n\t\t\tthis.renderTimeout = setTimeout(\n\t\t\t\t() => this.setState({ shouldRender: true }),\n\t\t\t\tthis.props.delay\n\t\t\t)\n\t\t}\n\n\t\tcomponentWillUnmount() {\n\t\t\tclearTimeout(this.renderTimeout)\n\t\t}\n\n\t\trender() {\n\t\t\treturn this.state.shouldRender || typeof window === `undefined` ? (\n\t\t\t\t\n\t\t\t) : null\n\t\t}\n\t}\n\n\treturn DelayedTransitionWrapper\n}\n","/* UAParser.js v0.7.40\n Copyright © 2012-2024 Faisal Salman \n MIT License */\n(function (window, undefined) {\n \"use strict\";\n\n var LIBVERSION = \"0.7.40\",\n EMPTY = \"\",\n UNKNOWN = \"?\",\n FUNC_TYPE = \"function\",\n UNDEF_TYPE = \"undefined\",\n OBJ_TYPE = \"object\",\n STR_TYPE = \"string\",\n MAJOR = \"major\",\n MODEL = \"model\",\n NAME = \"name\",\n TYPE = \"type\",\n VENDOR = \"vendor\",\n VERSION = \"version\",\n ARCHITECTURE = \"architecture\",\n CONSOLE = \"console\",\n MOBILE = \"mobile\",\n TABLET = \"tablet\",\n SMARTTV = \"smarttv\",\n WEARABLE = \"wearable\",\n EMBEDDED = \"embedded\",\n UA_MAX_LENGTH = 500;\n var AMAZON = \"Amazon\",\n APPLE = \"Apple\",\n ASUS = \"ASUS\",\n BLACKBERRY = \"BlackBerry\",\n BROWSER = \"Browser\",\n CHROME = \"Chrome\",\n EDGE = \"Edge\",\n FIREFOX = \"Firefox\",\n GOOGLE = \"Google\",\n HUAWEI = \"Huawei\",\n LG = \"LG\",\n MICROSOFT = \"Microsoft\",\n MOTOROLA = \"Motorola\",\n OPERA = \"Opera\",\n SAMSUNG = \"Samsung\",\n SHARP = \"Sharp\",\n SONY = \"Sony\",\n XIAOMI = \"Xiaomi\",\n ZEBRA = \"Zebra\",\n FACEBOOK = \"Facebook\",\n CHROMIUM_OS = \"Chromium OS\",\n MAC_OS = \"Mac OS\",\n SUFFIX_BROWSER = \" Browser\";\n var extend = function (regexes, extensions) {\n var mergedRegexes = {};\n for (var i in regexes) {\n if (extensions[i] && extensions[i].length % 2 === 0) {\n mergedRegexes[i] = extensions[i].concat(regexes[i]);\n } else {\n mergedRegexes[i] = regexes[i];\n }\n }\n return mergedRegexes;\n },\n enumerize = function (arr) {\n var enums = {};\n for (var i = 0; i < arr.length; i++) {\n enums[arr[i].toUpperCase()] = arr[i];\n }\n return enums;\n },\n has = function (str1, str2) {\n return typeof str1 === STR_TYPE ? lowerize(str2).indexOf(lowerize(str1)) !== -1 : false;\n },\n lowerize = function (str) {\n return str.toLowerCase();\n },\n majorize = function (version) {\n return typeof version === STR_TYPE ? version.replace(/[^\\d\\.]/g, EMPTY).split(\".\")[0] : undefined;\n },\n trim = function (str, len) {\n if (typeof str === STR_TYPE) {\n str = str.replace(/^\\s\\s*/, EMPTY);\n return typeof len === UNDEF_TYPE ? str : str.substring(0, UA_MAX_LENGTH);\n }\n };\n var rgxMapper = function (ua, arrays) {\n var i = 0,\n j,\n k,\n p,\n q,\n matches,\n match;\n while (i < arrays.length && !matches) {\n var regex = arrays[i],\n props = arrays[i + 1];\n j = k = 0;\n while (j < regex.length && !matches) {\n if (!regex[j]) {\n break;\n }\n matches = regex[j++].exec(ua);\n if (!!matches) {\n for (p = 0; p < props.length; p++) {\n match = matches[++k];\n q = props[p];\n if (typeof q === OBJ_TYPE && q.length > 0) {\n if (q.length === 2) {\n if (typeof q[1] == FUNC_TYPE) {\n this[q[0]] = q[1].call(this, match);\n } else {\n this[q[0]] = q[1];\n }\n } else if (q.length === 3) {\n if (typeof q[1] === FUNC_TYPE && !(q[1].exec && q[1].test)) {\n this[q[0]] = match ? q[1].call(this, match, q[2]) : undefined;\n } else {\n this[q[0]] = match ? match.replace(q[1], q[2]) : undefined;\n }\n } else if (q.length === 4) {\n this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : undefined;\n }\n } else {\n this[q] = match ? match : undefined;\n }\n }\n }\n }\n i += 2;\n }\n },\n strMapper = function (str, map) {\n for (var i in map) {\n if (typeof map[i] === OBJ_TYPE && map[i].length > 0) {\n for (var j = 0; j < map[i].length; j++) {\n if (has(map[i][j], str)) {\n return i === UNKNOWN ? undefined : i;\n }\n }\n } else if (has(map[i], str)) {\n return i === UNKNOWN ? undefined : i;\n }\n }\n return map.hasOwnProperty(\"*\") ? map[\"*\"] : str;\n };\n var oldSafariMap = {\n \"1.0\": \"/8\",\n 1.2: \"/1\",\n 1.3: \"/3\",\n \"2.0\": \"/412\",\n \"2.0.2\": \"/416\",\n \"2.0.3\": \"/417\",\n \"2.0.4\": \"/419\",\n \"?\": \"/\"\n },\n windowsVersionMap = {\n ME: \"4.90\",\n \"NT 3.11\": \"NT3.51\",\n \"NT 4.0\": \"NT4.0\",\n 2e3: \"NT 5.0\",\n XP: [\"NT 5.1\", \"NT 5.2\"],\n Vista: \"NT 6.0\",\n 7: \"NT 6.1\",\n 8: \"NT 6.2\",\n 8.1: \"NT 6.3\",\n 10: [\"NT 6.4\", \"NT 10.0\"],\n RT: \"ARM\"\n };\n var regexes = {\n browser: [[/\\b(?:crmo|crios)\\/([\\w\\.]+)/i], [VERSION, [NAME, \"Chrome\"]], [/edg(?:e|ios|a)?\\/([\\w\\.]+)/i], [VERSION, [NAME, \"Edge\"]], [/(opera mini)\\/([-\\w\\.]+)/i, /(opera [mobiletab]{3,6})\\b.+version\\/([-\\w\\.]+)/i, /(opera)(?:.+version\\/|[\\/ ]+)([\\w\\.]+)/i], [NAME, VERSION], [/opios[\\/ ]+([\\w\\.]+)/i], [VERSION, [NAME, OPERA + \" Mini\"]], [/\\bop(?:rg)?x\\/([\\w\\.]+)/i], [VERSION, [NAME, OPERA + \" GX\"]], [/\\bopr\\/([\\w\\.]+)/i], [VERSION, [NAME, OPERA]], [/\\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\\/ ]?([\\w\\.]+)/i], [VERSION, [NAME, \"Baidu\"]], [/\\b(?:mxbrowser|mxios|myie2)\\/?([-\\w\\.]*)\\b/i], [VERSION, [NAME, \"Maxthon\"]], [/(kindle)\\/([\\w\\.]+)/i, /(lunascape|maxthon|netfront|jasmine|blazer|sleipnir)[\\/ ]?([\\w\\.]*)/i, /(avant|iemobile|slim(?:browser|boat|jet))[\\/ ]?([\\d\\.]*)/i, /(?:ms|\\()(ie) ([\\w\\.]+)/i, /(flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|duckduckgo|klar|helio|(?=comodo_)?dragon)\\/([-\\w\\.]+)/i, /(heytap|ovi|115)browser\\/([\\d\\.]+)/i, /(weibo)__([\\d\\.]+)/i], [NAME, VERSION], [/quark(?:pc)?\\/([-\\w\\.]+)/i], [VERSION, [NAME, \"Quark\"]], [/\\bddg\\/([\\w\\.]+)/i], [VERSION, [NAME, \"DuckDuckGo\"]], [/(?:\\buc? ?browser|(?:juc.+)ucweb)[\\/ ]?([\\w\\.]+)/i], [VERSION, [NAME, \"UC\" + BROWSER]], [/microm.+\\bqbcore\\/([\\w\\.]+)/i, /\\bqbcore\\/([\\w\\.]+).+microm/i, /micromessenger\\/([\\w\\.]+)/i], [VERSION, [NAME, \"WeChat\"]], [/konqueror\\/([\\w\\.]+)/i], [VERSION, [NAME, \"Konqueror\"]], [/trident.+rv[: ]([\\w\\.]{1,9})\\b.+like gecko/i], [VERSION, [NAME, \"IE\"]], [/ya(?:search)?browser\\/([\\w\\.]+)/i], [VERSION, [NAME, \"Yandex\"]], [/slbrowser\\/([\\w\\.]+)/i], [VERSION, [NAME, \"Smart Lenovo \" + BROWSER]], [/(avast|avg)\\/([\\w\\.]+)/i], [[NAME, /(.+)/, \"$1 Secure \" + BROWSER], VERSION], [/\\bfocus\\/([\\w\\.]+)/i], [VERSION, [NAME, FIREFOX + \" Focus\"]], [/\\bopt\\/([\\w\\.]+)/i], [VERSION, [NAME, OPERA + \" Touch\"]], [/coc_coc\\w+\\/([\\w\\.]+)/i], [VERSION, [NAME, \"Coc Coc\"]], [/dolfin\\/([\\w\\.]+)/i], [VERSION, [NAME, \"Dolphin\"]], [/coast\\/([\\w\\.]+)/i], [VERSION, [NAME, OPERA + \" Coast\"]], [/miuibrowser\\/([\\w\\.]+)/i], [VERSION, [NAME, \"MIUI\" + SUFFIX_BROWSER]], [/fxios\\/([\\w\\.-]+)/i], [VERSION, [NAME, FIREFOX]], [/\\bqihoobrowser\\/?([\\w\\.]*)/i], [VERSION, [NAME, \"360\"]], [/\\b(qq)\\/([\\w\\.]+)/i], [[NAME, /(.+)/, \"$1Browser\"], VERSION], [/(oculus|sailfish|huawei|vivo|pico)browser\\/([\\w\\.]+)/i], [[NAME, /(.+)/, \"$1\" + SUFFIX_BROWSER], VERSION], [/samsungbrowser\\/([\\w\\.]+)/i], [VERSION, [NAME, SAMSUNG + \" Internet\"]], [/metasr[\\/ ]?([\\d\\.]+)/i], [VERSION, [NAME, \"Sogou Explorer\"]], [/(sogou)mo\\w+\\/([\\d\\.]+)/i], [[NAME, \"Sogou Mobile\"], VERSION], [/(electron)\\/([\\w\\.]+) safari/i, /(tesla)(?: qtcarbrowser|\\/(20\\d\\d\\.[-\\w\\.]+))/i, /m?(qqbrowser|2345(?=browser|chrome|explorer))\\w*[\\/ ]?v?([\\w\\.]+)/i], [NAME, VERSION], [/(lbbrowser|rekonq)/i, /\\[(linkedin)app\\]/i], [NAME], [/ome\\/([\\w\\.]+) \\w* ?(iron) saf/i, /ome\\/([\\w\\.]+).+qihu (360)[es]e/i], [VERSION, NAME], [/((?:fban\\/fbios|fb_iab\\/fb4a)(?!.+fbav)|;fbav\\/([\\w\\.]+);)/i], [[NAME, FACEBOOK], VERSION], [/(Klarna)\\/([\\w\\.]+)/i, /(kakao(?:talk|story))[\\/ ]([\\w\\.]+)/i, /(naver)\\(.*?(\\d+\\.[\\w\\.]+).*\\)/i, /safari (line)\\/([\\w\\.]+)/i, /\\b(line)\\/([\\w\\.]+)\\/iab/i, /(alipay)client\\/([\\w\\.]+)/i, /(twitter)(?:and| f.+e\\/([\\w\\.]+))/i, /(chromium|instagram|snapchat)[\\/ ]([-\\w\\.]+)/i], [NAME, VERSION], [/\\bgsa\\/([\\w\\.]+) .*safari\\//i], [VERSION, [NAME, \"GSA\"]], [/musical_ly(?:.+app_?version\\/|_)([\\w\\.]+)/i], [VERSION, [NAME, \"TikTok\"]], [/headlesschrome(?:\\/([\\w\\.]+)| )/i], [VERSION, [NAME, CHROME + \" Headless\"]], [/ wv\\).+(chrome)\\/([\\w\\.]+)/i], [[NAME, CHROME + \" WebView\"], VERSION], [/droid.+ version\\/([\\w\\.]+)\\b.+(?:mobile safari|safari)/i], [VERSION, [NAME, \"Android \" + BROWSER]], [/(chrome|omniweb|arora|[tizenoka]{5} ?browser)\\/v?([\\w\\.]+)/i], [NAME, VERSION], [/version\\/([\\w\\.\\,]+) .*mobile\\/\\w+ (safari)/i], [VERSION, [NAME, \"Mobile Safari\"]], [/version\\/([\\w(\\.|\\,)]+) .*(mobile ?safari|safari)/i], [VERSION, NAME], [/webkit.+?(mobile ?safari|safari)(\\/[\\w\\.]+)/i], [NAME, [VERSION, strMapper, oldSafariMap]], [/(webkit|khtml)\\/([\\w\\.]+)/i], [NAME, VERSION], [/(navigator|netscape\\d?)\\/([-\\w\\.]+)/i], [[NAME, \"Netscape\"], VERSION], [/(wolvic|librewolf)\\/([\\w\\.]+)/i], [NAME, VERSION], [/mobile vr; rv:([\\w\\.]+)\\).+firefox/i], [VERSION, [NAME, FIREFOX + \" Reality\"]], [/ekiohf.+(flow)\\/([\\w\\.]+)/i, /(swiftfox)/i, /(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror)[\\/ ]?([\\w\\.\\+]+)/i, /(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\\/([-\\w\\.]+)$/i, /(firefox)\\/([\\w\\.]+)/i, /(mozilla)\\/([\\w\\.]+) .+rv\\:.+gecko\\/\\d+/i, /(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|obigo|mosaic|(?:go|ice|up)[\\. ]?browser)[-\\/ ]?v?([\\w\\.]+)/i, /(links) \\(([\\w\\.]+)/i], [NAME, [VERSION, /_/g, \".\"]], [/(cobalt)\\/([\\w\\.]+)/i], [NAME, [VERSION, /master.|lts./, \"\"]]],\n cpu: [[/(?:(amd|x(?:(?:86|64)[-_])?|wow|win)64)[;\\)]/i], [[ARCHITECTURE, \"amd64\"]], [/(ia32(?=;))/i], [[ARCHITECTURE, lowerize]], [/((?:i[346]|x)86)[;\\)]/i], [[ARCHITECTURE, \"ia32\"]], [/\\b(aarch64|arm(v?8e?l?|_?64))\\b/i], [[ARCHITECTURE, \"arm64\"]], [/\\b(arm(?:v[67])?ht?n?[fl]p?)\\b/i], [[ARCHITECTURE, \"armhf\"]], [/windows (ce|mobile); ppc;/i], [[ARCHITECTURE, \"arm\"]], [/((?:ppc|powerpc)(?:64)?)(?: mac|;|\\))/i], [[ARCHITECTURE, /ower/, EMPTY, lowerize]], [/(sun4\\w)[;\\)]/i], [[ARCHITECTURE, \"sparc\"]], [/((?:avr32|ia64(?=;))|68k(?=\\))|\\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\\b|pa-risc)/i], [[ARCHITECTURE, lowerize]]],\n device: [[/\\b(sch-i[89]0\\d|shw-m380s|sm-[ptx]\\w{2,4}|gt-[pn]\\d{2,4}|sgh-t8[56]9|nexus 10)/i], [MODEL, [VENDOR, SAMSUNG], [TYPE, TABLET]], [/\\b((?:s[cgp]h|gt|sm)-(?![lr])\\w+|sc[g-]?[\\d]+a?|galaxy nexus)/i, /samsung[- ]((?!sm-[lr])[-\\w]+)/i, /sec-(sgh\\w+)/i], [MODEL, [VENDOR, SAMSUNG], [TYPE, MOBILE]], [/(?:\\/|\\()(ip(?:hone|od)[\\w, ]*)(?:\\/|;)/i], [MODEL, [VENDOR, APPLE], [TYPE, MOBILE]], [/\\((ipad);[-\\w\\),; ]+apple/i, /applecoremedia\\/[\\w\\.]+ \\((ipad)/i, /\\b(ipad)\\d\\d?,\\d\\d?[;\\]].+ios/i], [MODEL, [VENDOR, APPLE], [TYPE, TABLET]], [/(macintosh);/i], [MODEL, [VENDOR, APPLE]], [/\\b(sh-?[altvz]?\\d\\d[a-ekm]?)/i], [MODEL, [VENDOR, SHARP], [TYPE, MOBILE]], [/(?:honor)([-\\w ]+)[;\\)]/i], [MODEL, [VENDOR, \"Honor\"], [TYPE, MOBILE]], [/\\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\\d{2})\\b(?!.+d\\/s)/i], [MODEL, [VENDOR, HUAWEI], [TYPE, TABLET]], [/(?:huawei)([-\\w ]+)[;\\)]/i, /\\b(nexus 6p|\\w{2,4}e?-[atu]?[ln][\\dx][012359c][adn]?)\\b(?!.+d\\/s)/i], [MODEL, [VENDOR, HUAWEI], [TYPE, MOBILE]], [/\\b(poco[\\w ]+|m2\\d{3}j\\d\\d[a-z]{2})(?: bui|\\))/i, /\\b; (\\w+) build\\/hm\\1/i, /\\b(hm[-_ ]?note?[_ ]?(?:\\d\\w)?) bui/i, /\\b(redmi[\\-_ ]?(?:note|k)?[\\w_ ]+)(?: bui|\\))/i, /oid[^\\)]+; (m?[12][0-389][01]\\w{3,6}[c-y])( bui|; wv|\\))/i, /\\b(mi[-_ ]?(?:a\\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\\d?\\w?)[_ ]?(?:plus|se|lite|pro)?)(?: bui|\\))/i], [[MODEL, /_/g, \" \"], [VENDOR, XIAOMI], [TYPE, MOBILE]], [/oid[^\\)]+; (2\\d{4}(283|rpbf)[cgl])( bui|\\))/i, /\\b(mi[-_ ]?(?:pad)(?:[\\w_ ]+))(?: bui|\\))/i], [[MODEL, /_/g, \" \"], [VENDOR, XIAOMI], [TYPE, TABLET]], [/; (\\w+) bui.+ oppo/i, /\\b(cph[12]\\d{3}|p(?:af|c[al]|d\\w|e[ar])[mt]\\d0|x9007|a101op)\\b/i], [MODEL, [VENDOR, \"OPPO\"], [TYPE, MOBILE]], [/\\b(opd2\\d{3}a?) bui/i], [MODEL, [VENDOR, \"OPPO\"], [TYPE, TABLET]], [/vivo (\\w+)(?: bui|\\))/i, /\\b(v[12]\\d{3}\\w?[at])(?: bui|;)/i], [MODEL, [VENDOR, \"Vivo\"], [TYPE, MOBILE]], [/\\b(rmx[1-3]\\d{3})(?: bui|;|\\))/i], [MODEL, [VENDOR, \"Realme\"], [TYPE, MOBILE]], [/\\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\\b[\\w ]+build\\//i, /\\bmot(?:orola)?[- ](\\w*)/i, /((?:moto[\\w\\(\\) ]+|xt\\d{3,4}|nexus 6)(?= bui|\\)))/i], [MODEL, [VENDOR, MOTOROLA], [TYPE, MOBILE]], [/\\b(mz60\\d|xoom[2 ]{0,2}) build\\//i], [MODEL, [VENDOR, MOTOROLA], [TYPE, TABLET]], [/((?=lg)?[vl]k\\-?\\d{3}) bui| 3\\.[-\\w; ]{10}lg?-([06cv9]{3,4})/i], [MODEL, [VENDOR, LG], [TYPE, TABLET]], [/(lm(?:-?f100[nv]?|-[\\w\\.]+)(?= bui|\\))|nexus [45])/i, /\\blg[-e;\\/ ]+((?!browser|netcast|android tv)\\w+)/i, /\\blg-?([\\d\\w]+) bui/i], [MODEL, [VENDOR, LG], [TYPE, MOBILE]], [/(ideatab[-\\w ]+)/i, /lenovo ?(s[56]000[-\\w]+|tab(?:[\\w ]+)|yt[-\\d\\w]{6}|tb[-\\d\\w]{6})/i], [MODEL, [VENDOR, \"Lenovo\"], [TYPE, TABLET]], [/(?:maemo|nokia).*(n900|lumia \\d+)/i, /nokia[-_ ]?([-\\w\\.]*)/i], [[MODEL, /_/g, \" \"], [VENDOR, \"Nokia\"], [TYPE, MOBILE]], [/(pixel c)\\b/i], [MODEL, [VENDOR, GOOGLE], [TYPE, TABLET]], [/droid.+; (pixel[\\daxl ]{0,6})(?: bui|\\))/i], [MODEL, [VENDOR, GOOGLE], [TYPE, MOBILE]], [/droid.+; (a?\\d[0-2]{2}so|[c-g]\\d{4}|so[-gl]\\w+|xq-a\\w[4-7][12])(?= bui|\\).+chrome\\/(?![1-6]{0,1}\\d\\.))/i], [MODEL, [VENDOR, SONY], [TYPE, MOBILE]], [/sony tablet [ps]/i, /\\b(?:sony)?sgp\\w+(?: bui|\\))/i], [[MODEL, \"Xperia Tablet\"], [VENDOR, SONY], [TYPE, TABLET]], [/ (kb2005|in20[12]5|be20[12][59])\\b/i, /(?:one)?(?:plus)? (a\\d0\\d\\d)(?: b|\\))/i], [MODEL, [VENDOR, \"OnePlus\"], [TYPE, MOBILE]], [/(alexa)webm/i, /(kf[a-z]{2}wi|aeo(?!bc)\\w\\w)( bui|\\))/i, /(kf[a-z]+)( bui|\\)).+silk\\//i], [MODEL, [VENDOR, AMAZON], [TYPE, TABLET]], [/((?:sd|kf)[0349hijorstuw]+)( bui|\\)).+silk\\//i], [[MODEL, /(.+)/g, \"Fire Phone $1\"], [VENDOR, AMAZON], [TYPE, MOBILE]], [/(playbook);[-\\w\\),; ]+(rim)/i], [MODEL, VENDOR, [TYPE, TABLET]], [/\\b((?:bb[a-f]|st[hv])100-\\d)/i, /\\(bb10; (\\w+)/i], [MODEL, [VENDOR, BLACKBERRY], [TYPE, MOBILE]], [/(?:\\b|asus_)(transfo[prime ]{4,10} \\w+|eeepc|slider \\w+|nexus 7|padfone|p00[cj])/i], [MODEL, [VENDOR, ASUS], [TYPE, TABLET]], [/ (z[bes]6[027][012][km][ls]|zenfone \\d\\w?)\\b/i], [MODEL, [VENDOR, ASUS], [TYPE, MOBILE]], [/(nexus 9)/i], [MODEL, [VENDOR, \"HTC\"], [TYPE, TABLET]], [/(htc)[-;_ ]{1,2}([\\w ]+(?=\\)| bui)|\\w+)/i, /(zte)[- ]([\\w ]+?)(?: bui|\\/|\\))/i, /(alcatel|geeksphone|nexian|panasonic(?!(?:;|\\.))|sony(?!-bra))[-_ ]?([-\\w]*)/i], [VENDOR, [MODEL, /_/g, \" \"], [TYPE, MOBILE]], [/droid [\\w\\.]+; ((?:8[14]9[16]|9(?:0(?:48|60|8[01])|1(?:3[27]|66)|2(?:6[69]|9[56])|466))[gqswx])\\w*(\\)| bui)/i], [MODEL, [VENDOR, \"TCL\"], [TYPE, TABLET]], [/(itel) ((\\w+))/i], [[VENDOR, lowerize], MODEL, [TYPE, strMapper, {\n tablet: [\"p10001l\", \"w7001\"],\n \"*\": \"mobile\"\n }]], [/droid.+; ([ab][1-7]-?[0178a]\\d\\d?)/i], [MODEL, [VENDOR, \"Acer\"], [TYPE, TABLET]], [/droid.+; (m[1-5] note) bui/i, /\\bmz-([-\\w]{2,})/i], [MODEL, [VENDOR, \"Meizu\"], [TYPE, MOBILE]], [/; ((?:power )?armor(?:[\\w ]{0,8}))(?: bui|\\))/i], [MODEL, [VENDOR, \"Ulefone\"], [TYPE, MOBILE]], [/; (energy ?\\w+)(?: bui|\\))/i, /; energizer ([\\w ]+)(?: bui|\\))/i], [MODEL, [VENDOR, \"Energizer\"], [TYPE, MOBILE]], [/; cat (b35);/i, /; (b15q?|s22 flip|s48c|s62 pro)(?: bui|\\))/i], [MODEL, [VENDOR, \"Cat\"], [TYPE, MOBILE]], [/((?:new )?andromax[\\w- ]+)(?: bui|\\))/i], [MODEL, [VENDOR, \"Smartfren\"], [TYPE, MOBILE]], [/droid.+; (a(?:015|06[35]|142p?))/i], [MODEL, [VENDOR, \"Nothing\"], [TYPE, MOBILE]], [/(blackberry|benq|palm(?=\\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron|infinix|tecno|micromax|advan)[-_ ]?([-\\w]*)/i, /; (imo) ((?!tab)[\\w ]+?)(?: bui|\\))/i, /(hp) ([\\w ]+\\w)/i, /(asus)-?(\\w+)/i, /(microsoft); (lumia[\\w ]+)/i, /(lenovo)[-_ ]?([-\\w]+)/i, /(jolla)/i, /(oppo) ?([\\w ]+) bui/i], [VENDOR, MODEL, [TYPE, MOBILE]], [/(imo) (tab \\w+)/i, /(kobo)\\s(ereader|touch)/i, /(archos) (gamepad2?)/i, /(hp).+(touchpad(?!.+tablet)|tablet)/i, /(kindle)\\/([\\w\\.]+)/i, /(nook)[\\w ]+build\\/(\\w+)/i, /(dell) (strea[kpr\\d ]*[\\dko])/i, /(le[- ]+pan)[- ]+(\\w{1,9}) bui/i, /(trinity)[- ]*(t\\d{3}) bui/i, /(gigaset)[- ]+(q\\w{1,9}) bui/i, /(vodafone) ([\\w ]+)(?:\\)| bui)/i], [VENDOR, MODEL, [TYPE, TABLET]], [/(surface duo)/i], [MODEL, [VENDOR, MICROSOFT], [TYPE, TABLET]], [/droid [\\d\\.]+; (fp\\du?)(?: b|\\))/i], [MODEL, [VENDOR, \"Fairphone\"], [TYPE, MOBILE]], [/(u304aa)/i], [MODEL, [VENDOR, \"AT&T\"], [TYPE, MOBILE]], [/\\bsie-(\\w*)/i], [MODEL, [VENDOR, \"Siemens\"], [TYPE, MOBILE]], [/\\b(rct\\w+) b/i], [MODEL, [VENDOR, \"RCA\"], [TYPE, TABLET]], [/\\b(venue[\\d ]{2,7}) b/i], [MODEL, [VENDOR, \"Dell\"], [TYPE, TABLET]], [/\\b(q(?:mv|ta)\\w+) b/i], [MODEL, [VENDOR, \"Verizon\"], [TYPE, TABLET]], [/\\b(?:barnes[& ]+noble |bn[rt])([\\w\\+ ]*) b/i], [MODEL, [VENDOR, \"Barnes & Noble\"], [TYPE, TABLET]], [/\\b(tm\\d{3}\\w+) b/i], [MODEL, [VENDOR, \"NuVision\"], [TYPE, TABLET]], [/\\b(k88) b/i], [MODEL, [VENDOR, \"ZTE\"], [TYPE, TABLET]], [/\\b(nx\\d{3}j) b/i], [MODEL, [VENDOR, \"ZTE\"], [TYPE, MOBILE]], [/\\b(gen\\d{3}) b.+49h/i], [MODEL, [VENDOR, \"Swiss\"], [TYPE, MOBILE]], [/\\b(zur\\d{3}) b/i], [MODEL, [VENDOR, \"Swiss\"], [TYPE, TABLET]], [/\\b((zeki)?tb.*\\b) b/i], [MODEL, [VENDOR, \"Zeki\"], [TYPE, TABLET]], [/\\b([yr]\\d{2}) b/i, /\\b(dragon[- ]+touch |dt)(\\w{5}) b/i], [[VENDOR, \"Dragon Touch\"], MODEL, [TYPE, TABLET]], [/\\b(ns-?\\w{0,9}) b/i], [MODEL, [VENDOR, \"Insignia\"], [TYPE, TABLET]], [/\\b((nxa|next)-?\\w{0,9}) b/i], [MODEL, [VENDOR, \"NextBook\"], [TYPE, TABLET]], [/\\b(xtreme\\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i], [[VENDOR, \"Voice\"], MODEL, [TYPE, MOBILE]], [/\\b(lvtel\\-)?(v1[12]) b/i], [[VENDOR, \"LvTel\"], MODEL, [TYPE, MOBILE]], [/\\b(ph-1) /i], [MODEL, [VENDOR, \"Essential\"], [TYPE, MOBILE]], [/\\b(v(100md|700na|7011|917g).*\\b) b/i], [MODEL, [VENDOR, \"Envizen\"], [TYPE, TABLET]], [/\\b(trio[-\\w\\. ]+) b/i], [MODEL, [VENDOR, \"MachSpeed\"], [TYPE, TABLET]], [/\\btu_(1491) b/i], [MODEL, [VENDOR, \"Rotor\"], [TYPE, TABLET]], [/(shield[\\w ]+) b/i], [MODEL, [VENDOR, \"Nvidia\"], [TYPE, TABLET]], [/(sprint) (\\w+)/i], [VENDOR, MODEL, [TYPE, MOBILE]], [/(kin\\.[onetw]{3})/i], [[MODEL, /\\./g, \" \"], [VENDOR, MICROSOFT], [TYPE, MOBILE]], [/droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\\)/i], [MODEL, [VENDOR, ZEBRA], [TYPE, TABLET]], [/droid.+; (ec30|ps20|tc[2-8]\\d[kx])\\)/i], [MODEL, [VENDOR, ZEBRA], [TYPE, MOBILE]], [/smart-tv.+(samsung)/i], [VENDOR, [TYPE, SMARTTV]], [/hbbtv.+maple;(\\d+)/i], [[MODEL, /^/, \"SmartTV\"], [VENDOR, SAMSUNG], [TYPE, SMARTTV]], [/(nux; netcast.+smarttv|lg (netcast\\.tv-201\\d|android tv))/i], [[VENDOR, LG], [TYPE, SMARTTV]], [/(apple) ?tv/i], [VENDOR, [MODEL, APPLE + \" TV\"], [TYPE, SMARTTV]], [/crkey/i], [[MODEL, CHROME + \"cast\"], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [/droid.+aft(\\w+)( bui|\\))/i], [MODEL, [VENDOR, AMAZON], [TYPE, SMARTTV]], [/\\(dtv[\\);].+(aquos)/i, /(aquos-tv[\\w ]+)\\)/i], [MODEL, [VENDOR, SHARP], [TYPE, SMARTTV]], [/(bravia[\\w ]+)( bui|\\))/i], [MODEL, [VENDOR, SONY], [TYPE, SMARTTV]], [/(mitv-\\w{5}) bui/i], [MODEL, [VENDOR, XIAOMI], [TYPE, SMARTTV]], [/Hbbtv.*(technisat) (.*);/i], [VENDOR, MODEL, [TYPE, SMARTTV]], [/\\b(roku)[\\dx]*[\\)\\/]((?:dvp-)?[\\d\\.]*)/i, /hbbtv\\/\\d+\\.\\d+\\.\\d+ +\\([\\w\\+ ]*; *([\\w\\d][^;]*);([^;]*)/i], [[VENDOR, trim], [MODEL, trim], [TYPE, SMARTTV]], [/\\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\\b/i], [[TYPE, SMARTTV]], [/(ouya)/i, /(nintendo) ([wids3utch]+)/i], [VENDOR, MODEL, [TYPE, CONSOLE]], [/droid.+; (shield) bui/i], [MODEL, [VENDOR, \"Nvidia\"], [TYPE, CONSOLE]], [/(playstation [345portablevi]+)/i], [MODEL, [VENDOR, SONY], [TYPE, CONSOLE]], [/\\b(xbox(?: one)?(?!; xbox))[\\); ]/i], [MODEL, [VENDOR, MICROSOFT], [TYPE, CONSOLE]], [/\\b(sm-[lr]\\d\\d[05][fnuw]?s?)\\b/i], [MODEL, [VENDOR, SAMSUNG], [TYPE, WEARABLE]], [/((pebble))app/i], [VENDOR, MODEL, [TYPE, WEARABLE]], [/(watch)(?: ?os[,\\/]|\\d,\\d\\/)[\\d\\.]+/i], [MODEL, [VENDOR, APPLE], [TYPE, WEARABLE]], [/droid.+; (glass) \\d/i], [MODEL, [VENDOR, GOOGLE], [TYPE, WEARABLE]], [/droid.+; (wt63?0{2,3})\\)/i], [MODEL, [VENDOR, ZEBRA], [TYPE, WEARABLE]], [/droid.+; (glass) \\d/i], [MODEL, [VENDOR, GOOGLE], [TYPE, WEARABLE]], [/(pico) (4|neo3(?: link|pro)?)/i], [VENDOR, MODEL, [TYPE, WEARABLE]], [/; (quest( \\d| pro)?)/i], [MODEL, [VENDOR, FACEBOOK], [TYPE, WEARABLE]], [/(tesla)(?: qtcarbrowser|\\/[-\\w\\.]+)/i], [VENDOR, [TYPE, EMBEDDED]], [/(aeobc)\\b/i], [MODEL, [VENDOR, AMAZON], [TYPE, EMBEDDED]], [/droid .+?; ([^;]+?)(?: bui|; wv\\)|\\) applew).+? mobile safari/i], [MODEL, [TYPE, MOBILE]], [/droid .+?; ([^;]+?)(?: bui|\\) applew).+?(?! mobile) safari/i], [MODEL, [TYPE, TABLET]], [/\\b((tablet|tab)[;\\/]|focus\\/\\d(?!.+mobile))/i], [[TYPE, TABLET]], [/(phone|mobile(?:[;\\/]| [ \\w\\/\\.]*safari)|pda(?=.+windows ce))/i], [[TYPE, MOBILE]], [/(android[-\\w\\. ]{0,9});.+buil/i], [MODEL, [VENDOR, \"Generic\"]]],\n engine: [[/windows.+ edge\\/([\\w\\.]+)/i], [VERSION, [NAME, EDGE + \"HTML\"]], [/(arkweb)\\/([\\w\\.]+)/i], [NAME, VERSION], [/webkit\\/537\\.36.+chrome\\/(?!27)([\\w\\.]+)/i], [VERSION, [NAME, \"Blink\"]], [/(presto)\\/([\\w\\.]+)/i, /(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna|servo)\\/([\\w\\.]+)/i, /ekioh(flow)\\/([\\w\\.]+)/i, /(khtml|tasman|links)[\\/ ]\\(?([\\w\\.]+)/i, /(icab)[\\/ ]([23]\\.[\\d\\.]+)/i, /\\b(libweb)/i], [NAME, VERSION], [/rv\\:([\\w\\.]{1,9})\\b.+(gecko)/i], [VERSION, NAME]],\n os: [[/microsoft (windows) (vista|xp)/i], [NAME, VERSION], [/(windows (?:phone(?: os)?|mobile))[\\/ ]?([\\d\\.\\w ]*)/i], [NAME, [VERSION, strMapper, windowsVersionMap]], [/windows nt 6\\.2; (arm)/i, /windows[\\/ ]?([ntce\\d\\. ]+\\w)(?!.+xbox)/i, /(?:win(?=3|9|n)|win 9x )([nt\\d\\.]+)/i], [[VERSION, strMapper, windowsVersionMap], [NAME, \"Windows\"]], [/ip[honead]{2,4}\\b(?:.*os ([\\w]+) like mac|; opera)/i, /(?:ios;fbsv\\/|iphone.+ios[\\/ ])([\\d\\.]+)/i, /cfnetwork\\/.+darwin/i], [[VERSION, /_/g, \".\"], [NAME, \"iOS\"]], [/(mac os x) ?([\\w\\. ]*)/i, /(macintosh|mac_powerpc\\b)(?!.+haiku)/i], [[NAME, MAC_OS], [VERSION, /_/g, \".\"]], [/droid ([\\w\\.]+)\\b.+(android[- ]x86|harmonyos)/i], [VERSION, NAME], [/(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish|openharmony)[-\\/ ]?([\\w\\.]*)/i, /(blackberry)\\w*\\/([\\w\\.]*)/i, /(tizen|kaios)[\\/ ]([\\w\\.]+)/i, /\\((series40);/i], [NAME, VERSION], [/\\(bb(10);/i], [VERSION, [NAME, BLACKBERRY]], [/(?:symbian ?os|symbos|s60(?=;)|series60)[-\\/ ]?([\\w\\.]*)/i], [VERSION, [NAME, \"Symbian\"]], [/mozilla\\/[\\d\\.]+ \\((?:mobile|tablet|tv|mobile; [\\w ]+); rv:.+ gecko\\/([\\w\\.]+)/i], [VERSION, [NAME, FIREFOX + \" OS\"]], [/web0s;.+rt(tv)/i, /\\b(?:hp)?wos(?:browser)?\\/([\\w\\.]+)/i], [VERSION, [NAME, \"webOS\"]], [/watch(?: ?os[,\\/]|\\d,\\d\\/)([\\d\\.]+)/i], [VERSION, [NAME, \"watchOS\"]], [/crkey\\/([\\d\\.]+)/i], [VERSION, [NAME, CHROME + \"cast\"]], [/(cros) [\\w]+(?:\\)| ([\\w\\.]+)\\b)/i], [[NAME, CHROMIUM_OS], VERSION], [/panasonic;(viera)/i, /(netrange)mmh/i, /(nettv)\\/(\\d+\\.[\\w\\.]+)/i, /(nintendo|playstation) ([wids345portablevuch]+)/i, /(xbox); +xbox ([^\\);]+)/i, /\\b(joli|palm)\\b ?(?:os)?\\/?([\\w\\.]*)/i, /(mint)[\\/\\(\\) ]?(\\w*)/i, /(mageia|vectorlinux)[; ]/i, /([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\\/ ]?(?!chrom|package)([-\\w\\.]*)/i, /(hurd|linux) ?([\\w\\.]*)/i, /(gnu) ?([\\w\\.]*)/i, /\\b([-frentopcghs]{0,5}bsd|dragonfly)[\\/ ]?(?!amd|[ix346]{1,2}86)([\\w\\.]*)/i, /(haiku) (\\w+)/i], [NAME, VERSION], [/(sunos) ?([\\w\\.\\d]*)/i], [[NAME, \"Solaris\"], VERSION], [/((?:open)?solaris)[-\\/ ]?([\\w\\.]*)/i, /(aix) ((\\d)(?=\\.|\\)| )[\\w\\.])*/i, /\\b(beos|os\\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i, /(unix) ?([\\w\\.]*)/i], [NAME, VERSION]]\n };\n var UAParser = function (ua, extensions) {\n if (typeof ua === OBJ_TYPE) {\n extensions = ua;\n ua = undefined;\n }\n if (!(this instanceof UAParser)) {\n return new UAParser(ua, extensions).getResult();\n }\n var _navigator = typeof window !== UNDEF_TYPE && window.navigator ? window.navigator : undefined;\n var _ua = ua || (_navigator && _navigator.userAgent ? _navigator.userAgent : EMPTY);\n var _uach = _navigator && _navigator.userAgentData ? _navigator.userAgentData : undefined;\n var _rgxmap = extensions ? extend(regexes, extensions) : regexes;\n var _isSelfNav = _navigator && _navigator.userAgent == _ua;\n this.getBrowser = function () {\n var _browser = {};\n _browser[NAME] = undefined;\n _browser[VERSION] = undefined;\n rgxMapper.call(_browser, _ua, _rgxmap.browser);\n _browser[MAJOR] = majorize(_browser[VERSION]);\n if (_isSelfNav && _navigator && _navigator.brave && typeof _navigator.brave.isBrave == FUNC_TYPE) {\n _browser[NAME] = \"Brave\";\n }\n return _browser;\n };\n this.getCPU = function () {\n var _cpu = {};\n _cpu[ARCHITECTURE] = undefined;\n rgxMapper.call(_cpu, _ua, _rgxmap.cpu);\n return _cpu;\n };\n this.getDevice = function () {\n var _device = {};\n _device[VENDOR] = undefined;\n _device[MODEL] = undefined;\n _device[TYPE] = undefined;\n rgxMapper.call(_device, _ua, _rgxmap.device);\n if (_isSelfNav && !_device[TYPE] && _uach && _uach.mobile) {\n _device[TYPE] = MOBILE;\n }\n if (_isSelfNav && _device[MODEL] == \"Macintosh\" && _navigator && typeof _navigator.standalone !== UNDEF_TYPE && _navigator.maxTouchPoints && _navigator.maxTouchPoints > 2) {\n _device[MODEL] = \"iPad\";\n _device[TYPE] = TABLET;\n }\n return _device;\n };\n this.getEngine = function () {\n var _engine = {};\n _engine[NAME] = undefined;\n _engine[VERSION] = undefined;\n rgxMapper.call(_engine, _ua, _rgxmap.engine);\n return _engine;\n };\n this.getOS = function () {\n var _os = {};\n _os[NAME] = undefined;\n _os[VERSION] = undefined;\n rgxMapper.call(_os, _ua, _rgxmap.os);\n if (_isSelfNav && !_os[NAME] && _uach && _uach.platform && _uach.platform != \"Unknown\") {\n _os[NAME] = _uach.platform.replace(/chrome os/i, CHROMIUM_OS).replace(/macos/i, MAC_OS);\n }\n return _os;\n };\n this.getResult = function () {\n return {\n ua: this.getUA(),\n browser: this.getBrowser(),\n engine: this.getEngine(),\n os: this.getOS(),\n device: this.getDevice(),\n cpu: this.getCPU()\n };\n };\n this.getUA = function () {\n return _ua;\n };\n this.setUA = function (ua) {\n _ua = typeof ua === STR_TYPE && ua.length > UA_MAX_LENGTH ? trim(ua, UA_MAX_LENGTH) : ua;\n return this;\n };\n this.setUA(_ua);\n return this;\n };\n UAParser.VERSION = LIBVERSION;\n UAParser.BROWSER = enumerize([NAME, VERSION, MAJOR]);\n UAParser.CPU = enumerize([ARCHITECTURE]);\n UAParser.DEVICE = enumerize([MODEL, VENDOR, TYPE, CONSOLE, MOBILE, SMARTTV, TABLET, WEARABLE, EMBEDDED]);\n UAParser.ENGINE = UAParser.OS = enumerize([NAME, VERSION]);\n if (typeof exports !== UNDEF_TYPE) {\n if (typeof module !== UNDEF_TYPE && module.exports) {\n exports = module.exports = UAParser;\n }\n exports.UAParser = UAParser;\n } else {\n if (typeof define === FUNC_TYPE && define.amd) {\n define(function () {\n return UAParser;\n });\n } else if (typeof window !== UNDEF_TYPE) {\n window.UAParser = UAParser;\n }\n }\n var $ = typeof window !== UNDEF_TYPE && (window.jQuery || window.Zepto);\n if ($ && !$.ua) {\n var parser = new UAParser();\n $.ua = parser.getResult();\n $.ua.get = function () {\n return parser.getUA();\n };\n $.ua.set = function (ua) {\n parser.setUA(ua);\n var result = parser.getResult();\n for (var prop in result) {\n $.ua[prop] = result[prop];\n }\n };\n }\n})(typeof window === \"object\" ? window : this);","const React = require('react')\nconst TransitionHandler = require('./components/TransitionHandler').default\nconst Layout = require('./components/Layout').LayoutComponent\n\n// eslint-disable-next-line react/prop-types,react/display-name\nmodule.exports = ({ element, props }, pluginOptions) => {\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t{element}\n\t\t\t\n\t\t\n\t)\n}\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","function _setPrototypeOf(t, e) {\n return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n return t.__proto__ = e, t;\n }, _setPrototypeOf(t, e);\n}\nexport { _setPrototypeOf as default };","import setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _inheritsLoose(t, o) {\n t.prototype = Object.create(o.prototype), t.prototype.constructor = t, setPrototypeOf(t, o);\n}\nexport { _inheritsLoose as default };","function _setPrototypeOf(t, e) {\n return module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n return t.__proto__ = e, t;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _setPrototypeOf(t, e);\n}\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","import invariant from \"invariant\";\n\n////////////////////////////////////////////////////////////////////////////////\n// startsWith(string, search) - Check if `string` starts with `search`\nvar startsWith = function startsWith(string, search) {\n return string.substr(0, search.length) === search;\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// pick(routes, uri)\n//\n// Ranks and picks the best route to match. Each segment gets the highest\n// amount of points, then the type of segment gets an additional amount of\n// points where\n//\n// static > dynamic > splat > root\n//\n// This way we don't have to worry about the order of our routes, let the\n// computers do it.\n//\n// A route looks like this\n//\n// { path, default, value }\n//\n// And a returned match looks like:\n//\n// { route, params, uri }\n//\n// I know, I should use TypeScript not comments for these types.\nvar pick = function pick(routes, uri) {\n var match = void 0;\n var default_ = void 0;\n var _uri$split = uri.split(\"?\"),\n uriPathname = _uri$split[0];\n var uriSegments = segmentize(uriPathname);\n var isRootUri = uriSegments[0] === \"\";\n var ranked = rankRoutes(routes);\n for (var i = 0, l = ranked.length; i < l; i++) {\n var missed = false;\n var route = ranked[i].route;\n if (route.default) {\n default_ = {\n route: route,\n params: {},\n uri: uri\n };\n continue;\n }\n var routeSegments = segmentize(route.path);\n var params = {};\n var max = Math.max(uriSegments.length, routeSegments.length);\n var index = 0;\n for (; index < max; index++) {\n var routeSegment = routeSegments[index];\n var uriSegment = uriSegments[index];\n if (isSplat(routeSegment)) {\n // Hit a splat, just grab the rest, and return a match\n // uri: /files/documents/work\n // route: /files/*\n var param = routeSegment.slice(1) || \"*\";\n params[param] = uriSegments.slice(index).map(decodeURIComponent).join(\"/\");\n break;\n }\n if (uriSegment === undefined) {\n // URI is shorter than the route, no match\n // uri: /users\n // route: /users/:userId\n missed = true;\n break;\n }\n var dynamicMatch = paramRe.exec(routeSegment);\n if (dynamicMatch && !isRootUri) {\n var matchIsNotReserved = reservedNames.indexOf(dynamicMatch[1]) === -1;\n !matchIsNotReserved ? process.env.NODE_ENV !== \"production\" ? invariant(false, \" dynamic segment \\\"\" + dynamicMatch[1] + \"\\\" is a reserved name. Please use a different name in path \\\"\" + route.path + \"\\\".\") : invariant(false) : void 0;\n var value = decodeURIComponent(uriSegment);\n params[dynamicMatch[1]] = value;\n } else if (routeSegment !== uriSegment) {\n // Current segments don't match, not dynamic, not splat, so no match\n // uri: /users/123/settings\n // route: /users/:id/profile\n missed = true;\n break;\n }\n }\n if (!missed) {\n match = {\n route: route,\n params: params,\n uri: \"/\" + uriSegments.slice(0, index).join(\"/\")\n };\n break;\n }\n }\n return match || default_ || null;\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// match(path, uri) - Matches just one path to a uri, also lol\nvar match = function match(path, uri) {\n return pick([{\n path: path\n }], uri);\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// resolve(to, basepath)\n//\n// Resolves URIs as though every path is a directory, no files. Relative URIs\n// in the browser can feel awkward because not only can you be \"in a directory\"\n// you can be \"at a file\", too. For example\n//\n// browserSpecResolve('foo', '/bar/') => /bar/foo\n// browserSpecResolve('foo', '/bar') => /foo\n//\n// But on the command line of a file system, it's not as complicated, you can't\n// `cd` from a file, only directories. This way, links have to know less about\n// their current path. To go deeper you can do this:\n//\n// \n// // instead of\n// \n//\n// Just like `cd`, if you want to go deeper from the command line, you do this:\n//\n// cd deeper\n// # not\n// cd $(pwd)/deeper\n//\n// By treating every path as a directory, linking to relative paths should\n// require less contextual information and (fingers crossed) be more intuitive.\nvar resolve = function resolve(to, base) {\n // /foo/bar, /baz/qux => /foo/bar\n if (startsWith(to, \"/\")) {\n return to;\n }\n var _to$split = to.split(\"?\"),\n toPathname = _to$split[0],\n toQuery = _to$split[1];\n var _base$split = base.split(\"?\"),\n basePathname = _base$split[0];\n var toSegments = segmentize(toPathname);\n var baseSegments = segmentize(basePathname);\n\n // ?a=b, /users?b=c => /users?a=b\n if (toSegments[0] === \"\") {\n return addQuery(basePathname, toQuery);\n }\n\n // profile, /users/789 => /users/789/profile\n if (!startsWith(toSegments[0], \".\")) {\n var pathname = baseSegments.concat(toSegments).join(\"/\");\n return addQuery((basePathname === \"/\" ? \"\" : \"/\") + pathname, toQuery);\n }\n\n // ./ /users/123 => /users/123\n // ../ /users/123 => /users\n // ../.. /users/123 => /\n // ../../one /a/b/c/d => /a/b/one\n // .././one /a/b/c/d => /a/b/c/one\n var allSegments = baseSegments.concat(toSegments);\n var segments = [];\n for (var i = 0, l = allSegments.length; i < l; i++) {\n var segment = allSegments[i];\n if (segment === \"..\") segments.pop();else if (segment !== \".\") segments.push(segment);\n }\n return addQuery(\"/\" + segments.join(\"/\"), toQuery);\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// insertParams(path, params)\n\nvar insertParams = function insertParams(path, params) {\n var _path$split = path.split(\"?\"),\n pathBase = _path$split[0],\n _path$split$ = _path$split[1],\n query = _path$split$ === undefined ? \"\" : _path$split$;\n var segments = segmentize(pathBase);\n var constructedPath = \"/\" + segments.map(function (segment) {\n var match = paramRe.exec(segment);\n return match ? params[match[1]] : segment;\n }).join(\"/\");\n var _params$location = params.location;\n _params$location = _params$location === undefined ? {} : _params$location;\n var _params$location$sear = _params$location.search,\n search = _params$location$sear === undefined ? \"\" : _params$location$sear;\n var searchSplit = search.split(\"?\")[1] || \"\";\n constructedPath = addQuery(constructedPath, query, searchSplit);\n return constructedPath;\n};\nvar validateRedirect = function validateRedirect(from, to) {\n var filter = function filter(segment) {\n return isDynamic(segment);\n };\n var fromString = segmentize(from).filter(filter).sort().join(\"/\");\n var toString = segmentize(to).filter(filter).sort().join(\"/\");\n return fromString === toString;\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// Junk\nvar paramRe = /^:(.+)/;\nvar SEGMENT_POINTS = 4;\nvar STATIC_POINTS = 3;\nvar DYNAMIC_POINTS = 2;\nvar SPLAT_PENALTY = 1;\nvar ROOT_POINTS = 1;\nvar isRootSegment = function isRootSegment(segment) {\n return segment === \"\";\n};\nvar isDynamic = function isDynamic(segment) {\n return paramRe.test(segment);\n};\nvar isSplat = function isSplat(segment) {\n return segment && segment[0] === \"*\";\n};\nvar rankRoute = function rankRoute(route, index) {\n var score = route.default ? 0 : segmentize(route.path).reduce(function (score, segment) {\n score += SEGMENT_POINTS;\n if (isRootSegment(segment)) score += ROOT_POINTS;else if (isDynamic(segment)) score += DYNAMIC_POINTS;else if (isSplat(segment)) score -= SEGMENT_POINTS + SPLAT_PENALTY;else score += STATIC_POINTS;\n return score;\n }, 0);\n return {\n route: route,\n score: score,\n index: index\n };\n};\nvar rankRoutes = function rankRoutes(routes) {\n return routes.map(rankRoute).sort(function (a, b) {\n return a.score < b.score ? 1 : a.score > b.score ? -1 : a.index - b.index;\n });\n};\nvar segmentize = function segmentize(uri) {\n return uri\n // strip starting/ending slashes\n .replace(/(^\\/+|\\/+$)/g, \"\").split(\"/\");\n};\nvar addQuery = function addQuery(pathname) {\n for (var _len = arguments.length, query = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n query[_key - 1] = arguments[_key];\n }\n query = query.filter(function (q) {\n return q && q.length > 0;\n });\n return pathname + (query && query.length > 0 ? \"?\" + query.join(\"&\") : \"\");\n};\nvar reservedNames = [\"uri\", \"path\"];\n\n/**\n * Shallow compares two objects.\n * @param {Object} obj1 The first object to compare.\n * @param {Object} obj2 The second object to compare.\n */\nvar shallowCompare = function shallowCompare(obj1, obj2) {\n var obj1Keys = Object.keys(obj1);\n return obj1Keys.length === Object.keys(obj2).length && obj1Keys.every(function (key) {\n return obj2.hasOwnProperty(key) && obj1[key] === obj2[key];\n });\n};\n\n////////////////////////////////////////////////////////////////////////////////\nexport { startsWith, pick, match, resolve, insertParams, validateRedirect, shallowCompare };","var _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n};\nvar getLocation = function getLocation(source) {\n var _source$location = source.location,\n search = _source$location.search,\n hash = _source$location.hash,\n href = _source$location.href,\n origin = _source$location.origin,\n protocol = _source$location.protocol,\n host = _source$location.host,\n hostname = _source$location.hostname,\n port = _source$location.port;\n var pathname = source.location.pathname;\n if (!pathname && href && canUseDOM) {\n var url = new URL(href);\n pathname = url.pathname;\n }\n return {\n pathname: encodeURI(decodeURI(pathname)),\n search: search,\n hash: hash,\n href: href,\n origin: origin,\n protocol: protocol,\n host: host,\n hostname: hostname,\n port: port,\n state: source.history.state,\n key: source.history.state && source.history.state.key || \"initial\"\n };\n};\nvar createHistory = function createHistory(source, options) {\n var listeners = [];\n var location = getLocation(source);\n var transitioning = false;\n var resolveTransition = function resolveTransition() {};\n return {\n get location() {\n return location;\n },\n get transitioning() {\n return transitioning;\n },\n _onTransitionComplete: function _onTransitionComplete() {\n transitioning = false;\n resolveTransition();\n },\n listen: function listen(listener) {\n listeners.push(listener);\n var popstateListener = function popstateListener() {\n location = getLocation(source);\n listener({\n location: location,\n action: \"POP\"\n });\n };\n source.addEventListener(\"popstate\", popstateListener);\n return function () {\n source.removeEventListener(\"popstate\", popstateListener);\n listeners = listeners.filter(function (fn) {\n return fn !== listener;\n });\n };\n },\n navigate: function navigate(to) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n state = _ref.state,\n _ref$replace = _ref.replace,\n replace = _ref$replace === undefined ? false : _ref$replace;\n if (typeof to === \"number\") {\n source.history.go(to);\n } else {\n state = _extends({}, state, {\n key: Date.now() + \"\"\n });\n // try...catch iOS Safari limits to 100 pushState calls\n try {\n if (transitioning || replace) {\n source.history.replaceState(state, null, to);\n } else {\n source.history.pushState(state, null, to);\n }\n } catch (e) {\n source.location[replace ? \"replace\" : \"assign\"](to);\n }\n }\n location = getLocation(source);\n transitioning = true;\n var transition = new Promise(function (res) {\n return resolveTransition = res;\n });\n listeners.forEach(function (listener) {\n return listener({\n location: location,\n action: \"PUSH\"\n });\n });\n return transition;\n }\n };\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// Stores history entries in memory for testing or other platforms like Native\nvar createMemorySource = function createMemorySource() {\n var initialPath = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"/\";\n var searchIndex = initialPath.indexOf(\"?\");\n var initialLocation = {\n pathname: searchIndex > -1 ? initialPath.substr(0, searchIndex) : initialPath,\n search: searchIndex > -1 ? initialPath.substr(searchIndex) : \"\"\n };\n var index = 0;\n var stack = [initialLocation];\n var states = [null];\n return {\n get location() {\n return stack[index];\n },\n addEventListener: function addEventListener(name, fn) {},\n removeEventListener: function removeEventListener(name, fn) {},\n history: {\n get entries() {\n return stack;\n },\n get index() {\n return index;\n },\n get state() {\n return states[index];\n },\n pushState: function pushState(state, _, uri) {\n var _uri$split = uri.split(\"?\"),\n pathname = _uri$split[0],\n _uri$split$ = _uri$split[1],\n search = _uri$split$ === undefined ? \"\" : _uri$split$;\n index++;\n stack.push({\n pathname: pathname,\n search: search.length ? \"?\" + search : search\n });\n states.push(state);\n },\n replaceState: function replaceState(state, _, uri) {\n var _uri$split2 = uri.split(\"?\"),\n pathname = _uri$split2[0],\n _uri$split2$ = _uri$split2[1],\n search = _uri$split2$ === undefined ? \"\" : _uri$split2$;\n stack[index] = {\n pathname: pathname,\n search: search\n };\n states[index] = state;\n },\n go: function go(to) {\n var newIndex = index + to;\n if (newIndex < 0 || newIndex > states.length - 1) {\n return;\n }\n index = newIndex;\n }\n }\n };\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// global history - uses window.history as the source if available, otherwise a\n// memory history\nvar canUseDOM = !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\nvar getSource = function getSource() {\n return canUseDOM ? window : createMemorySource();\n};\nvar globalHistory = createHistory(getSource());\nvar navigate = globalHistory.navigate;\n\n////////////////////////////////////////////////////////////////////////////////\n\nexport { globalHistory, navigate, createHistory, createMemorySource };","var _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n};\nfunction _objectWithoutProperties(obj, keys) {\n var target = {};\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n return target;\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\n/* eslint-disable jsx-a11y/anchor-has-content */\nimport React, { useContext, createContext } from \"react\";\nimport invariant from \"invariant\";\nimport { polyfill } from \"react-lifecycles-compat\";\nimport { startsWith, pick, resolve, match, insertParams, validateRedirect, shallowCompare } from \"./lib/utils\";\nimport { globalHistory, navigate, createHistory, createMemorySource } from \"./lib/history\";\n\n////////////////////////////////////////////////////////////////////////////////\n\nvar createNamedContext = function createNamedContext(name, defaultValue) {\n var Ctx = createContext(defaultValue);\n Ctx.displayName = name;\n return Ctx;\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// Location Context/Provider\nvar LocationContext = createNamedContext(\"Location\");\n\n// sets up a listener if there isn't one already so apps don't need to be\n// wrapped in some top level provider\nvar Location = function Location(_ref) {\n var children = _ref.children;\n return React.createElement(LocationContext.Consumer, null, function (context) {\n return context ? children(context) : React.createElement(LocationProvider, null, children);\n });\n};\nvar LocationProvider = function (_React$Component) {\n _inherits(LocationProvider, _React$Component);\n function LocationProvider() {\n var _temp, _this, _ret;\n _classCallCheck(this, LocationProvider);\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = {\n context: _this.getContext(),\n refs: {\n unlisten: null\n }\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n LocationProvider.prototype.getContext = function getContext() {\n var _props$history = this.props.history,\n navigate = _props$history.navigate,\n location = _props$history.location;\n return {\n navigate: navigate,\n location: location\n };\n };\n LocationProvider.prototype.componentDidCatch = function componentDidCatch(error, info) {\n if (isRedirect(error)) {\n var _navigate = this.props.history.navigate;\n _navigate(error.uri, {\n replace: true\n });\n } else {\n throw error;\n }\n };\n LocationProvider.prototype.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n if (prevState.context.location !== this.state.context.location) {\n this.props.history._onTransitionComplete();\n }\n };\n LocationProvider.prototype.componentDidMount = function componentDidMount() {\n var _this2 = this;\n var refs = this.state.refs,\n history = this.props.history;\n history._onTransitionComplete();\n refs.unlisten = history.listen(function () {\n Promise.resolve().then(function () {\n // TODO: replace rAF with react deferred update API when it's ready https://github.com/facebook/react/issues/13306\n requestAnimationFrame(function () {\n if (!_this2.unmounted) {\n _this2.setState(function () {\n return {\n context: _this2.getContext()\n };\n });\n }\n });\n });\n });\n };\n LocationProvider.prototype.componentWillUnmount = function componentWillUnmount() {\n var refs = this.state.refs;\n this.unmounted = true;\n refs.unlisten();\n };\n LocationProvider.prototype.render = function render() {\n var context = this.state.context,\n children = this.props.children;\n return React.createElement(LocationContext.Provider, {\n value: context\n }, typeof children === \"function\" ? children(context) : children || null);\n };\n return LocationProvider;\n}(React.Component);\n\n////////////////////////////////////////////////////////////////////////////////\n\nLocationProvider.defaultProps = {\n history: globalHistory\n};\nprocess.env.NODE_ENV !== \"production\" ? void 0 : void 0;\nvar ServerLocation = function ServerLocation(_ref2) {\n var url = _ref2.url,\n children = _ref2.children;\n var searchIndex = url.indexOf(\"?\");\n var searchExists = searchIndex > -1;\n var pathname = void 0;\n var search = \"\";\n var hash = \"\";\n if (searchExists) {\n pathname = url.substring(0, searchIndex);\n search = url.substring(searchIndex);\n } else {\n pathname = url;\n }\n return React.createElement(LocationContext.Provider, {\n value: {\n location: {\n pathname: pathname,\n search: search,\n hash: hash\n },\n navigate: function navigate() {\n throw new Error(\"You can't call navigate on the server.\");\n }\n }\n }, children);\n};\n////////////////////////////////////////////////////////////////////////////////\n// Sets baseuri and basepath for nested routers and links\nvar BaseContext = createNamedContext(\"Base\", {\n baseuri: \"/\",\n basepath: \"/\",\n navigate: globalHistory.navigate\n});\n\n////////////////////////////////////////////////////////////////////////////////\n// The main event, welcome to the show everybody.\nvar Router = function Router(props) {\n return React.createElement(BaseContext.Consumer, null, function (baseContext) {\n return React.createElement(Location, null, function (locationContext) {\n return React.createElement(RouterImpl, _extends({}, baseContext, locationContext, props));\n });\n });\n};\nvar RouterImpl = function (_React$PureComponent) {\n _inherits(RouterImpl, _React$PureComponent);\n function RouterImpl() {\n _classCallCheck(this, RouterImpl);\n return _possibleConstructorReturn(this, _React$PureComponent.apply(this, arguments));\n }\n RouterImpl.prototype.render = function render() {\n var _props = this.props,\n location = _props.location,\n _navigate2 = _props.navigate,\n basepath = _props.basepath,\n primary = _props.primary,\n children = _props.children,\n baseuri = _props.baseuri,\n _props$component = _props.component,\n component = _props$component === undefined ? \"div\" : _props$component,\n domProps = _objectWithoutProperties(_props, [\"location\", \"navigate\", \"basepath\", \"primary\", \"children\", \"baseuri\", \"component\"]);\n var routes = React.Children.toArray(children).reduce(function (array, child) {\n var routes = createRoute(basepath)(child);\n return array.concat(routes);\n }, []);\n var pathname = location.pathname;\n var match = pick(routes, pathname);\n if (match) {\n var params = match.params,\n uri = match.uri,\n route = match.route,\n element = match.route.value;\n\n // remove the /* from the end for child routes relative paths\n\n basepath = route.default ? basepath : route.path.replace(/\\*$/, \"\");\n var props = _extends({}, params, {\n uri: uri,\n location: location,\n navigate: function navigate(to, options) {\n return _navigate2(resolve(to, uri), options);\n }\n });\n var clone = React.cloneElement(element, props, element.props.children ? React.createElement(Router, {\n location: location,\n primary: primary\n }, element.props.children) : undefined);\n\n // using 'div' for < 16.3 support\n var FocusWrapper = primary ? FocusHandler : component;\n // don't pass any props to 'div'\n var wrapperProps = primary ? _extends({\n uri: uri,\n location: location,\n component: component\n }, domProps) : domProps;\n return React.createElement(BaseContext.Provider, {\n value: {\n baseuri: uri,\n basepath: basepath,\n navigate: props.navigate\n }\n }, React.createElement(FocusWrapper, wrapperProps, clone));\n } else {\n // Not sure if we want this, would require index routes at every level\n // warning(\n // false,\n // `\\n\\nNothing matched:\\n\\t${\n // location.pathname\n // }\\n\\nPaths checked: \\n\\t${routes\n // .map(route => route.path)\n // .join(\n // \"\\n\\t\"\n // )}\\n\\nTo get rid of this warning, add a default NotFound component as child of Router:\n // \\n\\tlet NotFound = () =>
Not Found!
\n // \\n\\t\\n\\t \\n\\t {/* ... */}\\n\\t`\n // );\n return null;\n }\n };\n return RouterImpl;\n}(React.PureComponent);\nRouterImpl.defaultProps = {\n primary: true\n};\nvar FocusContext = createNamedContext(\"Focus\");\nvar FocusHandler = function FocusHandler(_ref3) {\n var uri = _ref3.uri,\n location = _ref3.location,\n component = _ref3.component,\n domProps = _objectWithoutProperties(_ref3, [\"uri\", \"location\", \"component\"]);\n return React.createElement(FocusContext.Consumer, null, function (requestFocus) {\n return React.createElement(FocusHandlerImpl, _extends({}, domProps, {\n component: component,\n requestFocus: requestFocus,\n uri: uri,\n location: location\n }));\n });\n};\n\n// don't focus on initial render\nvar initialRender = true;\nvar focusHandlerCount = 0;\nvar FocusHandlerImpl = function (_React$Component2) {\n _inherits(FocusHandlerImpl, _React$Component2);\n function FocusHandlerImpl() {\n var _temp2, _this4, _ret2;\n _classCallCheck(this, FocusHandlerImpl);\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n return _ret2 = (_temp2 = (_this4 = _possibleConstructorReturn(this, _React$Component2.call.apply(_React$Component2, [this].concat(args))), _this4), _this4.state = {}, _this4.requestFocus = function (node) {\n if (!_this4.state.shouldFocus && node) {\n node.focus();\n }\n }, _temp2), _possibleConstructorReturn(_this4, _ret2);\n }\n FocusHandlerImpl.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, prevState) {\n var initial = prevState.uri == null;\n if (initial) {\n return _extends({\n shouldFocus: true\n }, nextProps);\n } else {\n var myURIChanged = nextProps.uri !== prevState.uri;\n var navigatedUpToMe = prevState.location.pathname !== nextProps.location.pathname && nextProps.location.pathname === nextProps.uri;\n return _extends({\n shouldFocus: myURIChanged || navigatedUpToMe\n }, nextProps);\n }\n };\n FocusHandlerImpl.prototype.componentDidMount = function componentDidMount() {\n focusHandlerCount++;\n this.focus();\n };\n FocusHandlerImpl.prototype.componentWillUnmount = function componentWillUnmount() {\n focusHandlerCount--;\n if (focusHandlerCount === 0) {\n initialRender = true;\n }\n };\n FocusHandlerImpl.prototype.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n if (prevProps.location !== this.props.location && this.state.shouldFocus) {\n this.focus();\n }\n };\n FocusHandlerImpl.prototype.focus = function focus() {\n if (process.env.NODE_ENV === \"test\") {\n // getting cannot read property focus of null in the tests\n // and that bit of global `initialRender` state causes problems\n // should probably figure it out!\n return;\n }\n var requestFocus = this.props.requestFocus;\n if (requestFocus) {\n requestFocus(this.node);\n } else {\n if (initialRender) {\n initialRender = false;\n } else if (this.node) {\n // React polyfills [autofocus] and it fires earlier than cDM,\n // so we were stealing focus away, this line prevents that.\n if (!this.node.contains(document.activeElement)) {\n this.node.focus();\n }\n }\n }\n };\n FocusHandlerImpl.prototype.render = function render() {\n var _this5 = this;\n var _props2 = this.props,\n children = _props2.children,\n style = _props2.style,\n requestFocus = _props2.requestFocus,\n _props2$component = _props2.component,\n Comp = _props2$component === undefined ? \"div\" : _props2$component,\n uri = _props2.uri,\n location = _props2.location,\n domProps = _objectWithoutProperties(_props2, [\"children\", \"style\", \"requestFocus\", \"component\", \"uri\", \"location\"]);\n return React.createElement(Comp, _extends({\n style: _extends({\n outline: \"none\"\n }, style),\n tabIndex: \"-1\",\n ref: function ref(n) {\n return _this5.node = n;\n }\n }, domProps), React.createElement(FocusContext.Provider, {\n value: this.requestFocus\n }, this.props.children));\n };\n return FocusHandlerImpl;\n}(React.Component);\npolyfill(FocusHandlerImpl);\nvar k = function k() {};\n\n////////////////////////////////////////////////////////////////////////////////\nvar forwardRef = React.forwardRef;\nif (typeof forwardRef === \"undefined\") {\n forwardRef = function forwardRef(C) {\n return C;\n };\n}\nvar Link = forwardRef(function (_ref4, ref) {\n var innerRef = _ref4.innerRef,\n props = _objectWithoutProperties(_ref4, [\"innerRef\"]);\n return React.createElement(BaseContext.Consumer, null, function (_ref5) {\n var basepath = _ref5.basepath,\n baseuri = _ref5.baseuri;\n return React.createElement(Location, null, function (_ref6) {\n var location = _ref6.location,\n navigate = _ref6.navigate;\n var to = props.to,\n state = props.state,\n replace = props.replace,\n _props$getProps = props.getProps,\n getProps = _props$getProps === undefined ? k : _props$getProps,\n anchorProps = _objectWithoutProperties(props, [\"to\", \"state\", \"replace\", \"getProps\"]);\n var href = resolve(to, baseuri);\n var encodedHref = encodeURI(href);\n var isCurrent = location.pathname === encodedHref;\n var isPartiallyCurrent = startsWith(location.pathname, encodedHref);\n return React.createElement(\"a\", _extends({\n ref: ref || innerRef,\n \"aria-current\": isCurrent ? \"page\" : undefined\n }, anchorProps, getProps({\n isCurrent: isCurrent,\n isPartiallyCurrent: isPartiallyCurrent,\n href: href,\n location: location\n }), {\n href: href,\n onClick: function onClick(event) {\n if (anchorProps.onClick) anchorProps.onClick(event);\n if (shouldNavigate(event)) {\n event.preventDefault();\n var shouldReplace = replace;\n if (typeof replace !== \"boolean\" && isCurrent) {\n var _location$state = _extends({}, location.state),\n key = _location$state.key,\n restState = _objectWithoutProperties(_location$state, [\"key\"]);\n shouldReplace = shallowCompare(_extends({}, state), restState);\n }\n navigate(href, {\n state: state,\n replace: shouldReplace\n });\n }\n }\n }));\n });\n });\n});\nLink.displayName = \"Link\";\nprocess.env.NODE_ENV !== \"production\" ? void 0 : void 0;\n\n////////////////////////////////////////////////////////////////////////////////\nfunction RedirectRequest(uri) {\n this.uri = uri;\n}\nvar isRedirect = function isRedirect(o) {\n return o instanceof RedirectRequest;\n};\nvar redirectTo = function redirectTo(to) {\n throw new RedirectRequest(to);\n};\nvar RedirectImpl = function (_React$Component3) {\n _inherits(RedirectImpl, _React$Component3);\n function RedirectImpl() {\n _classCallCheck(this, RedirectImpl);\n return _possibleConstructorReturn(this, _React$Component3.apply(this, arguments));\n }\n\n // Support React < 16 with this hook\n RedirectImpl.prototype.componentDidMount = function componentDidMount() {\n var _props3 = this.props,\n navigate = _props3.navigate,\n to = _props3.to,\n from = _props3.from,\n _props3$replace = _props3.replace,\n replace = _props3$replace === undefined ? true : _props3$replace,\n state = _props3.state,\n noThrow = _props3.noThrow,\n baseuri = _props3.baseuri,\n props = _objectWithoutProperties(_props3, [\"navigate\", \"to\", \"from\", \"replace\", \"state\", \"noThrow\", \"baseuri\"]);\n Promise.resolve().then(function () {\n var resolvedTo = resolve(to, baseuri);\n navigate(insertParams(resolvedTo, props), {\n replace: replace,\n state: state\n });\n });\n };\n RedirectImpl.prototype.render = function render() {\n var _props4 = this.props,\n navigate = _props4.navigate,\n to = _props4.to,\n from = _props4.from,\n replace = _props4.replace,\n state = _props4.state,\n noThrow = _props4.noThrow,\n baseuri = _props4.baseuri,\n props = _objectWithoutProperties(_props4, [\"navigate\", \"to\", \"from\", \"replace\", \"state\", \"noThrow\", \"baseuri\"]);\n var resolvedTo = resolve(to, baseuri);\n if (!noThrow) redirectTo(insertParams(resolvedTo, props));\n return null;\n };\n return RedirectImpl;\n}(React.Component);\nvar Redirect = function Redirect(props) {\n return React.createElement(BaseContext.Consumer, null, function (_ref7) {\n var baseuri = _ref7.baseuri;\n return React.createElement(Location, null, function (locationContext) {\n return React.createElement(RedirectImpl, _extends({}, locationContext, {\n baseuri: baseuri\n }, props));\n });\n });\n};\nprocess.env.NODE_ENV !== \"production\" ? void 0 : void 0;\n\n////////////////////////////////////////////////////////////////////////////////\nvar Match = function Match(_ref8) {\n var path = _ref8.path,\n children = _ref8.children;\n return React.createElement(BaseContext.Consumer, null, function (_ref9) {\n var baseuri = _ref9.baseuri;\n return React.createElement(Location, null, function (_ref10) {\n var navigate = _ref10.navigate,\n location = _ref10.location;\n var resolvedPath = resolve(path, baseuri);\n var result = match(resolvedPath, location.pathname);\n return children({\n navigate: navigate,\n location: location,\n match: result ? _extends({}, result.params, {\n uri: result.uri,\n path: path\n }) : null\n });\n });\n });\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// Hooks\n\nvar useLocation = function useLocation() {\n var context = useContext(LocationContext);\n if (!context) {\n throw new Error(\"useLocation hook was used but a LocationContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router\");\n }\n return context.location;\n};\nvar useNavigate = function useNavigate() {\n var context = useContext(BaseContext);\n if (!context) {\n throw new Error(\"useNavigate hook was used but a BaseContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router\");\n }\n return context.navigate;\n};\nvar useParams = function useParams() {\n var context = useContext(BaseContext);\n if (!context) {\n throw new Error(\"useParams hook was used but a LocationContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router\");\n }\n var location = useLocation();\n var results = match(context.basepath, location.pathname);\n return results ? results.params : null;\n};\nvar useMatch = function useMatch(path) {\n if (!path) {\n throw new Error(\"useMatch(path: string) requires an argument of a string to match against\");\n }\n var context = useContext(BaseContext);\n if (!context) {\n throw new Error(\"useMatch hook was used but a LocationContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router\");\n }\n var location = useLocation();\n var resolvedPath = resolve(path, context.baseuri);\n var result = match(resolvedPath, location.pathname);\n return result ? _extends({}, result.params, {\n uri: result.uri,\n path: path\n }) : null;\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// Junk\nvar stripSlashes = function stripSlashes(str) {\n return str.replace(/(^\\/+|\\/+$)/g, \"\");\n};\nvar createRoute = function createRoute(basepath) {\n return function (element) {\n if (!element) {\n return null;\n }\n if (element.type === React.Fragment && element.props.children) {\n return React.Children.map(element.props.children, createRoute(basepath));\n }\n !(element.props.path || element.props.default || element.type === Redirect) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \": Children of must have a `path` or `default` prop, or be a ``. None found on element type `\" + element.type + \"`\") : invariant(false) : void 0;\n !!(element.type === Redirect && (!element.props.from || !element.props.to)) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \" requires both \\\"from\\\" and \\\"to\\\" props when inside a .\") : invariant(false) : void 0;\n !!(element.type === Redirect && !validateRedirect(element.props.from, element.props.to)) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \" has mismatched dynamic segments, ensure both paths have the exact same dynamic segments.\") : invariant(false) : void 0;\n if (element.props.default) {\n return {\n value: element,\n default: true\n };\n }\n var elementPath = element.type === Redirect ? element.props.from : element.props.path;\n var path = elementPath === \"/\" ? basepath : stripSlashes(basepath) + \"/\" + stripSlashes(elementPath);\n return {\n value: element,\n default: element.props.default,\n path: element.props.children ? stripSlashes(path) + \"/*\" : path\n };\n };\n};\nvar shouldNavigate = function shouldNavigate(event) {\n return !event.defaultPrevented && event.button === 0 && !(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n};\n\n////////////////////////////////////////////////////////////////////////\nexport { Link, Location, LocationProvider, Match, Redirect, Router, ServerLocation, createHistory, createMemorySource, isRedirect, navigate, redirectTo, globalHistory, match as matchPath, useLocation, useNavigate, useParams, useMatch, resolve , BaseContext };","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nimport loader from \"./loader\"\nimport InternalPageRenderer from \"./page-renderer\"\n\nconst ProdPageRenderer = ({ location }) => {\n const pageResources = loader.loadPageSync(location.pathname)\n if (!pageResources) {\n return null\n }\n return React.createElement(InternalPageRenderer, {\n location,\n pageResources,\n ...pageResources.json,\n })\n}\n\nProdPageRenderer.propTypes = {\n location: PropTypes.shape({\n pathname: PropTypes.string.isRequired,\n }).isRequired,\n}\n\nexport default ProdPageRenderer\n","import { TransitionLink } from './components/TransitionLink'\nimport TransitionHandler from './components/TransitionHandler'\nimport { PublicConsumer as TransitionState } from './context/createTransitionContext'\nimport TransitionPortal from './components/TransitionPortal'\nimport TransitionObserver from './components/TransitionObserver'\nimport { useTriggerTransition } from './hooks'\n\nexport {\n\tTransitionHandler,\n\tTransitionState,\n\tTransitionPortal,\n\tTransitionObserver,\n\tuseTriggerTransition,\n}\nexport default TransitionLink\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _gatsby = require(\"gatsby\");\n\nvar _getManifestPathname = _interopRequireDefault(require(\"./get-manifest-pathname\"));\n\n/* global __MANIFEST_PLUGIN_HAS_LOCALISATION__ */\n// when we don't have localisation in our manifest, we tree shake everything away\nif (__MANIFEST_PLUGIN_HAS_LOCALISATION__) {\n exports.onRouteUpdate = function (_ref, pluginOptions) {\n var location = _ref.location;\n var localize = pluginOptions.localize;\n var manifestFilename = (0, _getManifestPathname.default)(location.pathname, localize);\n var manifestEl = document.head.querySelector(\"link[rel=\\\"manifest\\\"]\");\n\n if (manifestEl) {\n manifestEl.setAttribute(\"href\", (0, _gatsby.withPrefix)(manifestFilename));\n }\n };\n}","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\nfunction _arrayWithoutHoles(r) {\n if (Array.isArray(r)) return arrayLikeToArray(r);\n}\nmodule.exports = _arrayWithoutHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/* Web Font Loader v1.6.28 - (c) Adobe Systems, Google. License: Apache 2.0 */(function () {\n function aa(a, b, c) {\n return a.call.apply(a.bind, arguments);\n }\n function ba(a, b, c) {\n if (!a) throw Error();\n if (2 < arguments.length) {\n var d = Array.prototype.slice.call(arguments, 2);\n return function () {\n var c = Array.prototype.slice.call(arguments);\n Array.prototype.unshift.apply(c, d);\n return a.apply(b, c);\n };\n }\n return function () {\n return a.apply(b, arguments);\n };\n }\n function p(a, b, c) {\n p = Function.prototype.bind && -1 != Function.prototype.bind.toString().indexOf(\"native code\") ? aa : ba;\n return p.apply(null, arguments);\n }\n var q = Date.now || function () {\n return +new Date();\n };\n function ca(a, b) {\n this.a = a;\n this.o = b || a;\n this.c = this.o.document;\n }\n var da = !!window.FontFace;\n function t(a, b, c, d) {\n b = a.c.createElement(b);\n if (c) for (var e in c) c.hasOwnProperty(e) && (\"style\" == e ? b.style.cssText = c[e] : b.setAttribute(e, c[e]));\n d && b.appendChild(a.c.createTextNode(d));\n return b;\n }\n function u(a, b, c) {\n a = a.c.getElementsByTagName(b)[0];\n a || (a = document.documentElement);\n a.insertBefore(c, a.lastChild);\n }\n function v(a) {\n a.parentNode && a.parentNode.removeChild(a);\n }\n function w(a, b, c) {\n b = b || [];\n c = c || [];\n for (var d = a.className.split(/\\s+/), e = 0; e < b.length; e += 1) {\n for (var f = !1, g = 0; g < d.length; g += 1) if (b[e] === d[g]) {\n f = !0;\n break;\n }\n f || d.push(b[e]);\n }\n b = [];\n for (e = 0; e < d.length; e += 1) {\n f = !1;\n for (g = 0; g < c.length; g += 1) if (d[e] === c[g]) {\n f = !0;\n break;\n }\n f || b.push(d[e]);\n }\n a.className = b.join(\" \").replace(/\\s+/g, \" \").replace(/^\\s+|\\s+$/, \"\");\n }\n function y(a, b) {\n for (var c = a.className.split(/\\s+/), d = 0, e = c.length; d < e; d++) if (c[d] == b) return !0;\n return !1;\n }\n function ea(a) {\n return a.o.location.hostname || a.a.location.hostname;\n }\n function z(a, b, c) {\n function d() {\n m && e && f && (m(g), m = null);\n }\n b = t(a, \"link\", {\n rel: \"stylesheet\",\n href: b,\n media: \"all\"\n });\n var e = !1,\n f = !0,\n g = null,\n m = c || null;\n da ? (b.onload = function () {\n e = !0;\n d();\n }, b.onerror = function () {\n e = !0;\n g = Error(\"Stylesheet failed to load\");\n d();\n }) : setTimeout(function () {\n e = !0;\n d();\n }, 0);\n u(a, \"head\", b);\n }\n function A(a, b, c, d) {\n var e = a.c.getElementsByTagName(\"head\")[0];\n if (e) {\n var f = t(a, \"script\", {\n src: b\n }),\n g = !1;\n f.onload = f.onreadystatechange = function () {\n g || this.readyState && \"loaded\" != this.readyState && \"complete\" != this.readyState || (g = !0, c && c(null), f.onload = f.onreadystatechange = null, \"HEAD\" == f.parentNode.tagName && e.removeChild(f));\n };\n e.appendChild(f);\n setTimeout(function () {\n g || (g = !0, c && c(Error(\"Script load timeout\")));\n }, d || 5E3);\n return f;\n }\n return null;\n }\n ;\n function B() {\n this.a = 0;\n this.c = null;\n }\n function C(a) {\n a.a++;\n return function () {\n a.a--;\n D(a);\n };\n }\n function E(a, b) {\n a.c = b;\n D(a);\n }\n function D(a) {\n 0 == a.a && a.c && (a.c(), a.c = null);\n }\n ;\n function F(a) {\n this.a = a || \"-\";\n }\n F.prototype.c = function (a) {\n for (var b = [], c = 0; c < arguments.length; c++) b.push(arguments[c].replace(/[\\W_]+/g, \"\").toLowerCase());\n return b.join(this.a);\n };\n function G(a, b) {\n this.c = a;\n this.f = 4;\n this.a = \"n\";\n var c = (b || \"n4\").match(/^([nio])([1-9])$/i);\n c && (this.a = c[1], this.f = parseInt(c[2], 10));\n }\n function fa(a) {\n return H(a) + \" \" + (a.f + \"00\") + \" 300px \" + I(a.c);\n }\n function I(a) {\n var b = [];\n a = a.split(/,\\s*/);\n for (var c = 0; c < a.length; c++) {\n var d = a[c].replace(/['\"]/g, \"\");\n -1 != d.indexOf(\" \") || /^\\d/.test(d) ? b.push(\"'\" + d + \"'\") : b.push(d);\n }\n return b.join(\",\");\n }\n function J(a) {\n return a.a + a.f;\n }\n function H(a) {\n var b = \"normal\";\n \"o\" === a.a ? b = \"oblique\" : \"i\" === a.a && (b = \"italic\");\n return b;\n }\n function ga(a) {\n var b = 4,\n c = \"n\",\n d = null;\n a && ((d = a.match(/(normal|oblique|italic)/i)) && d[1] && (c = d[1].substr(0, 1).toLowerCase()), (d = a.match(/([1-9]00|normal|bold)/i)) && d[1] && (/bold/i.test(d[1]) ? b = 7 : /[1-9]00/.test(d[1]) && (b = parseInt(d[1].substr(0, 1), 10))));\n return c + b;\n }\n ;\n function ha(a, b) {\n this.c = a;\n this.f = a.o.document.documentElement;\n this.h = b;\n this.a = new F(\"-\");\n this.j = !1 !== b.events;\n this.g = !1 !== b.classes;\n }\n function ia(a) {\n a.g && w(a.f, [a.a.c(\"wf\", \"loading\")]);\n K(a, \"loading\");\n }\n function L(a) {\n if (a.g) {\n var b = y(a.f, a.a.c(\"wf\", \"active\")),\n c = [],\n d = [a.a.c(\"wf\", \"loading\")];\n b || c.push(a.a.c(\"wf\", \"inactive\"));\n w(a.f, c, d);\n }\n K(a, \"inactive\");\n }\n function K(a, b, c) {\n if (a.j && a.h[b]) if (c) a.h[b](c.c, J(c));else a.h[b]();\n }\n ;\n function ja() {\n this.c = {};\n }\n function ka(a, b, c) {\n var d = [],\n e;\n for (e in b) if (b.hasOwnProperty(e)) {\n var f = a.c[e];\n f && d.push(f(b[e], c));\n }\n return d;\n }\n ;\n function M(a, b) {\n this.c = a;\n this.f = b;\n this.a = t(this.c, \"span\", {\n \"aria-hidden\": \"true\"\n }, this.f);\n }\n function N(a) {\n u(a.c, \"body\", a.a);\n }\n function O(a) {\n return \"display:block;position:absolute;top:-9999px;left:-9999px;font-size:300px;width:auto;height:auto;line-height:normal;margin:0;padding:0;font-variant:normal;white-space:nowrap;font-family:\" + I(a.c) + \";\" + (\"font-style:\" + H(a) + \";font-weight:\" + (a.f + \"00\") + \";\");\n }\n ;\n function P(a, b, c, d, e, f) {\n this.g = a;\n this.j = b;\n this.a = d;\n this.c = c;\n this.f = e || 3E3;\n this.h = f || void 0;\n }\n P.prototype.start = function () {\n var a = this.c.o.document,\n b = this,\n c = q(),\n d = new Promise(function (d, e) {\n function f() {\n q() - c >= b.f ? e() : a.fonts.load(fa(b.a), b.h).then(function (a) {\n 1 <= a.length ? d() : setTimeout(f, 25);\n }, function () {\n e();\n });\n }\n f();\n }),\n e = null,\n f = new Promise(function (a, d) {\n e = setTimeout(d, b.f);\n });\n Promise.race([f, d]).then(function () {\n e && (clearTimeout(e), e = null);\n b.g(b.a);\n }, function () {\n b.j(b.a);\n });\n };\n function Q(a, b, c, d, e, f, g) {\n this.v = a;\n this.B = b;\n this.c = c;\n this.a = d;\n this.s = g || \"BESbswy\";\n this.f = {};\n this.w = e || 3E3;\n this.u = f || null;\n this.m = this.j = this.h = this.g = null;\n this.g = new M(this.c, this.s);\n this.h = new M(this.c, this.s);\n this.j = new M(this.c, this.s);\n this.m = new M(this.c, this.s);\n a = new G(this.a.c + \",serif\", J(this.a));\n a = O(a);\n this.g.a.style.cssText = a;\n a = new G(this.a.c + \",sans-serif\", J(this.a));\n a = O(a);\n this.h.a.style.cssText = a;\n a = new G(\"serif\", J(this.a));\n a = O(a);\n this.j.a.style.cssText = a;\n a = new G(\"sans-serif\", J(this.a));\n a = O(a);\n this.m.a.style.cssText = a;\n N(this.g);\n N(this.h);\n N(this.j);\n N(this.m);\n }\n var R = {\n D: \"serif\",\n C: \"sans-serif\"\n },\n S = null;\n function T() {\n if (null === S) {\n var a = /AppleWebKit\\/([0-9]+)(?:\\.([0-9]+))/.exec(window.navigator.userAgent);\n S = !!a && (536 > parseInt(a[1], 10) || 536 === parseInt(a[1], 10) && 11 >= parseInt(a[2], 10));\n }\n return S;\n }\n Q.prototype.start = function () {\n this.f.serif = this.j.a.offsetWidth;\n this.f[\"sans-serif\"] = this.m.a.offsetWidth;\n this.A = q();\n U(this);\n };\n function la(a, b, c) {\n for (var d in R) if (R.hasOwnProperty(d) && b === a.f[R[d]] && c === a.f[R[d]]) return !0;\n return !1;\n }\n function U(a) {\n var b = a.g.a.offsetWidth,\n c = a.h.a.offsetWidth,\n d;\n (d = b === a.f.serif && c === a.f[\"sans-serif\"]) || (d = T() && la(a, b, c));\n d ? q() - a.A >= a.w ? T() && la(a, b, c) && (null === a.u || a.u.hasOwnProperty(a.a.c)) ? V(a, a.v) : V(a, a.B) : ma(a) : V(a, a.v);\n }\n function ma(a) {\n setTimeout(p(function () {\n U(this);\n }, a), 50);\n }\n function V(a, b) {\n setTimeout(p(function () {\n v(this.g.a);\n v(this.h.a);\n v(this.j.a);\n v(this.m.a);\n b(this.a);\n }, a), 0);\n }\n ;\n function W(a, b, c) {\n this.c = a;\n this.a = b;\n this.f = 0;\n this.m = this.j = !1;\n this.s = c;\n }\n var X = null;\n W.prototype.g = function (a) {\n var b = this.a;\n b.g && w(b.f, [b.a.c(\"wf\", a.c, J(a).toString(), \"active\")], [b.a.c(\"wf\", a.c, J(a).toString(), \"loading\"), b.a.c(\"wf\", a.c, J(a).toString(), \"inactive\")]);\n K(b, \"fontactive\", a);\n this.m = !0;\n na(this);\n };\n W.prototype.h = function (a) {\n var b = this.a;\n if (b.g) {\n var c = y(b.f, b.a.c(\"wf\", a.c, J(a).toString(), \"active\")),\n d = [],\n e = [b.a.c(\"wf\", a.c, J(a).toString(), \"loading\")];\n c || d.push(b.a.c(\"wf\", a.c, J(a).toString(), \"inactive\"));\n w(b.f, d, e);\n }\n K(b, \"fontinactive\", a);\n na(this);\n };\n function na(a) {\n 0 == --a.f && a.j && (a.m ? (a = a.a, a.g && w(a.f, [a.a.c(\"wf\", \"active\")], [a.a.c(\"wf\", \"loading\"), a.a.c(\"wf\", \"inactive\")]), K(a, \"active\")) : L(a.a));\n }\n ;\n function oa(a) {\n this.j = a;\n this.a = new ja();\n this.h = 0;\n this.f = this.g = !0;\n }\n oa.prototype.load = function (a) {\n this.c = new ca(this.j, a.context || this.j);\n this.g = !1 !== a.events;\n this.f = !1 !== a.classes;\n pa(this, new ha(this.c, a), a);\n };\n function qa(a, b, c, d, e) {\n var f = 0 == --a.h;\n (a.f || a.g) && setTimeout(function () {\n var a = e || null,\n m = d || null || {};\n if (0 === c.length && f) L(b.a);else {\n b.f += c.length;\n f && (b.j = f);\n var h,\n l = [];\n for (h = 0; h < c.length; h++) {\n var k = c[h],\n n = m[k.c],\n r = b.a,\n x = k;\n r.g && w(r.f, [r.a.c(\"wf\", x.c, J(x).toString(), \"loading\")]);\n K(r, \"fontloading\", x);\n r = null;\n if (null === X) if (window.FontFace) {\n var x = /Gecko.*Firefox\\/(\\d+)/.exec(window.navigator.userAgent),\n xa = /OS X.*Version\\/10\\..*Safari/.exec(window.navigator.userAgent) && /Apple/.exec(window.navigator.vendor);\n X = x ? 42 < parseInt(x[1], 10) : xa ? !1 : !0;\n } else X = !1;\n X ? r = new P(p(b.g, b), p(b.h, b), b.c, k, b.s, n) : r = new Q(p(b.g, b), p(b.h, b), b.c, k, b.s, a, n);\n l.push(r);\n }\n for (h = 0; h < l.length; h++) l[h].start();\n }\n }, 0);\n }\n function pa(a, b, c) {\n var d = [],\n e = c.timeout;\n ia(b);\n var d = ka(a.a, c, a.c),\n f = new W(a.c, b, e);\n a.h = d.length;\n b = 0;\n for (c = d.length; b < c; b++) d[b].load(function (b, d, c) {\n qa(a, f, b, d, c);\n });\n }\n ;\n function ra(a, b) {\n this.c = a;\n this.a = b;\n }\n ra.prototype.load = function (a) {\n function b() {\n if (f[\"__mti_fntLst\" + d]) {\n var c = f[\"__mti_fntLst\" + d](),\n e = [],\n h;\n if (c) for (var l = 0; l < c.length; l++) {\n var k = c[l].fontfamily;\n void 0 != c[l].fontStyle && void 0 != c[l].fontWeight ? (h = c[l].fontStyle + c[l].fontWeight, e.push(new G(k, h))) : e.push(new G(k));\n }\n a(e);\n } else setTimeout(function () {\n b();\n }, 50);\n }\n var c = this,\n d = c.a.projectId,\n e = c.a.version;\n if (d) {\n var f = c.c.o;\n A(this.c, (c.a.api || \"https://fast.fonts.net/jsapi\") + \"/\" + d + \".js\" + (e ? \"?v=\" + e : \"\"), function (e) {\n e ? a([]) : (f[\"__MonotypeConfiguration__\" + d] = function () {\n return c.a;\n }, b());\n }).id = \"__MonotypeAPIScript__\" + d;\n } else a([]);\n };\n function sa(a, b) {\n this.c = a;\n this.a = b;\n }\n sa.prototype.load = function (a) {\n var b,\n c,\n d = this.a.urls || [],\n e = this.a.families || [],\n f = this.a.testStrings || {},\n g = new B();\n b = 0;\n for (c = d.length; b < c; b++) z(this.c, d[b], C(g));\n var m = [];\n b = 0;\n for (c = e.length; b < c; b++) if (d = e[b].split(\":\"), d[1]) for (var h = d[1].split(\",\"), l = 0; l < h.length; l += 1) m.push(new G(d[0], h[l]));else m.push(new G(d[0]));\n E(g, function () {\n a(m, f);\n });\n };\n function ta(a, b) {\n a ? this.c = a : this.c = ua;\n this.a = [];\n this.f = [];\n this.g = b || \"\";\n }\n var ua = \"https://fonts.googleapis.com/css\";\n function va(a, b) {\n for (var c = b.length, d = 0; d < c; d++) {\n var e = b[d].split(\":\");\n 3 == e.length && a.f.push(e.pop());\n var f = \"\";\n 2 == e.length && \"\" != e[1] && (f = \":\");\n a.a.push(e.join(f));\n }\n }\n function wa(a) {\n if (0 == a.a.length) throw Error(\"No fonts to load!\");\n if (-1 != a.c.indexOf(\"kit=\")) return a.c;\n for (var b = a.a.length, c = [], d = 0; d < b; d++) c.push(a.a[d].replace(/ /g, \"+\"));\n b = a.c + \"?family=\" + c.join(\"%7C\");\n 0 < a.f.length && (b += \"&subset=\" + a.f.join(\",\"));\n 0 < a.g.length && (b += \"&text=\" + encodeURIComponent(a.g));\n return b;\n }\n ;\n function ya(a) {\n this.f = a;\n this.a = [];\n this.c = {};\n }\n var za = {\n latin: \"BESbswy\",\n \"latin-ext\": \"\\u00e7\\u00f6\\u00fc\\u011f\\u015f\",\n cyrillic: \"\\u0439\\u044f\\u0416\",\n greek: \"\\u03b1\\u03b2\\u03a3\",\n khmer: \"\\u1780\\u1781\\u1782\",\n Hanuman: \"\\u1780\\u1781\\u1782\"\n },\n Aa = {\n thin: \"1\",\n extralight: \"2\",\n \"extra-light\": \"2\",\n ultralight: \"2\",\n \"ultra-light\": \"2\",\n light: \"3\",\n regular: \"4\",\n book: \"4\",\n medium: \"5\",\n \"semi-bold\": \"6\",\n semibold: \"6\",\n \"demi-bold\": \"6\",\n demibold: \"6\",\n bold: \"7\",\n \"extra-bold\": \"8\",\n extrabold: \"8\",\n \"ultra-bold\": \"8\",\n ultrabold: \"8\",\n black: \"9\",\n heavy: \"9\",\n l: \"3\",\n r: \"4\",\n b: \"7\"\n },\n Ba = {\n i: \"i\",\n italic: \"i\",\n n: \"n\",\n normal: \"n\"\n },\n Ca = /^(thin|(?:(?:extra|ultra)-?)?light|regular|book|medium|(?:(?:semi|demi|extra|ultra)-?)?bold|black|heavy|l|r|b|[1-9]00)?(n|i|normal|italic)?$/;\n function Da(a) {\n for (var b = a.f.length, c = 0; c < b; c++) {\n var d = a.f[c].split(\":\"),\n e = d[0].replace(/\\+/g, \" \"),\n f = [\"n4\"];\n if (2 <= d.length) {\n var g;\n var m = d[1];\n g = [];\n if (m) for (var m = m.split(\",\"), h = m.length, l = 0; l < h; l++) {\n var k;\n k = m[l];\n if (k.match(/^[\\w-]+$/)) {\n var n = Ca.exec(k.toLowerCase());\n if (null == n) k = \"\";else {\n k = n[2];\n k = null == k || \"\" == k ? \"n\" : Ba[k];\n n = n[1];\n if (null == n || \"\" == n) n = \"4\";else var r = Aa[n],\n n = r ? r : isNaN(n) ? \"4\" : n.substr(0, 1);\n k = [k, n].join(\"\");\n }\n } else k = \"\";\n k && g.push(k);\n }\n 0 < g.length && (f = g);\n 3 == d.length && (d = d[2], g = [], d = d ? d.split(\",\") : g, 0 < d.length && (d = za[d[0]]) && (a.c[e] = d));\n }\n a.c[e] || (d = za[e]) && (a.c[e] = d);\n for (d = 0; d < f.length; d += 1) a.a.push(new G(e, f[d]));\n }\n }\n ;\n function Ea(a, b) {\n this.c = a;\n this.a = b;\n }\n var Fa = {\n Arimo: !0,\n Cousine: !0,\n Tinos: !0\n };\n Ea.prototype.load = function (a) {\n var b = new B(),\n c = this.c,\n d = new ta(this.a.api, this.a.text),\n e = this.a.families;\n va(d, e);\n var f = new ya(e);\n Da(f);\n z(c, wa(d), C(b));\n E(b, function () {\n a(f.a, f.c, Fa);\n });\n };\n function Ga(a, b) {\n this.c = a;\n this.a = b;\n }\n Ga.prototype.load = function (a) {\n var b = this.a.id,\n c = this.c.o;\n b ? A(this.c, (this.a.api || \"https://use.typekit.net\") + \"/\" + b + \".js\", function (b) {\n if (b) a([]);else if (c.Typekit && c.Typekit.config && c.Typekit.config.fn) {\n b = c.Typekit.config.fn;\n for (var e = [], f = 0; f < b.length; f += 2) for (var g = b[f], m = b[f + 1], h = 0; h < m.length; h++) e.push(new G(g, m[h]));\n try {\n c.Typekit.load({\n events: !1,\n classes: !1,\n async: !0\n });\n } catch (l) {}\n a(e);\n }\n }, 2E3) : a([]);\n };\n function Ha(a, b) {\n this.c = a;\n this.f = b;\n this.a = [];\n }\n Ha.prototype.load = function (a) {\n var b = this.f.id,\n c = this.c.o,\n d = this;\n b ? (c.__webfontfontdeckmodule__ || (c.__webfontfontdeckmodule__ = {}), c.__webfontfontdeckmodule__[b] = function (b, c) {\n for (var g = 0, m = c.fonts.length; g < m; ++g) {\n var h = c.fonts[g];\n d.a.push(new G(h.name, ga(\"font-weight:\" + h.weight + \";font-style:\" + h.style)));\n }\n a(d.a);\n }, A(this.c, (this.f.api || \"https://f.fontdeck.com/s/css/js/\") + ea(this.c) + \"/\" + b + \".js\", function (b) {\n b && a([]);\n })) : a([]);\n };\n var Y = new oa(window);\n Y.a.c.custom = function (a, b) {\n return new sa(b, a);\n };\n Y.a.c.fontdeck = function (a, b) {\n return new Ha(b, a);\n };\n Y.a.c.monotype = function (a, b) {\n return new ra(b, a);\n };\n Y.a.c.typekit = function (a, b) {\n return new Ga(b, a);\n };\n Y.a.c.google = function (a, b) {\n return new Ea(b, a);\n };\n var Z = {\n load: p(Y.load, Y)\n };\n \"function\" === typeof define && define.amd ? define(function () {\n return Z;\n }) : \"undefined\" !== typeof module && module.exports ? module.exports = Z : (window.WebFont = Z, window.WebFontConfig && Y.load(window.WebFontConfig));\n})();","import { makeObservable } from \"mobx\";\nimport { useState } from \"react\";\nif (!useState) {\n throw new Error(\"mobx-react-lite requires React with Hooks support\");\n}\nif (!makeObservable) {\n throw new Error(\"mobx-react-lite@3 requires mobx at least version 6 to be available\");\n}","import { configure } from \"mobx\";\nexport function defaultNoopBatch(callback) {\n callback();\n}\nexport function observerBatching(reactionScheduler) {\n if (!reactionScheduler) {\n reactionScheduler = defaultNoopBatch;\n if (\"production\" !== process.env.NODE_ENV) {\n console.warn(\"[MobX] Failed to get unstable_batched updates from react-dom / react-native\");\n }\n }\n configure({\n reactionScheduler: reactionScheduler\n });\n}\nexport var isObserverBatched = function () {\n if (\"production\" !== process.env.NODE_ENV) {\n console.warn(\"[MobX] Deprecated\");\n }\n return true;\n};","import { getDependencyTree } from \"mobx\";\nexport function printDebugValue(v) {\n return getDependencyTree(v);\n}","export var REGISTRY_FINALIZE_AFTER = 10000;\nexport var REGISTRY_SWEEP_INTERVAL = 10000;\nvar TimerBasedFinalizationRegistry = /** @class */function () {\n function TimerBasedFinalizationRegistry(finalize) {\n var _this = this;\n Object.defineProperty(this, \"finalize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: finalize\n });\n Object.defineProperty(this, \"registrations\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new Map()\n });\n Object.defineProperty(this, \"sweepTimeout\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n // Bound so it can be used directly as setTimeout callback.\n Object.defineProperty(this, \"sweep\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: function (maxAge) {\n if (maxAge === void 0) {\n maxAge = REGISTRY_FINALIZE_AFTER;\n }\n // cancel timeout so we can force sweep anytime\n clearTimeout(_this.sweepTimeout);\n _this.sweepTimeout = undefined;\n var now = Date.now();\n _this.registrations.forEach(function (registration, token) {\n if (now - registration.registeredAt >= maxAge) {\n _this.finalize(registration.value);\n _this.registrations.delete(token);\n }\n });\n if (_this.registrations.size > 0) {\n _this.scheduleSweep();\n }\n }\n });\n // Bound so it can be exported directly as clearTimers test utility.\n Object.defineProperty(this, \"finalizeAllImmediately\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: function () {\n _this.sweep(0);\n }\n });\n }\n // Token is actually required with this impl\n Object.defineProperty(TimerBasedFinalizationRegistry.prototype, \"register\", {\n enumerable: false,\n configurable: true,\n writable: true,\n value: function (target, value, token) {\n this.registrations.set(token, {\n value: value,\n registeredAt: Date.now()\n });\n this.scheduleSweep();\n }\n });\n Object.defineProperty(TimerBasedFinalizationRegistry.prototype, \"unregister\", {\n enumerable: false,\n configurable: true,\n writable: true,\n value: function (token) {\n this.registrations.delete(token);\n }\n });\n Object.defineProperty(TimerBasedFinalizationRegistry.prototype, \"scheduleSweep\", {\n enumerable: false,\n configurable: true,\n writable: true,\n value: function () {\n if (this.sweepTimeout === undefined) {\n this.sweepTimeout = setTimeout(this.sweep, REGISTRY_SWEEP_INTERVAL);\n }\n }\n });\n return TimerBasedFinalizationRegistry;\n}();\nexport { TimerBasedFinalizationRegistry };\nexport var UniversalFinalizationRegistry = typeof FinalizationRegistry !== \"undefined\" ? FinalizationRegistry : TimerBasedFinalizationRegistry;","import { UniversalFinalizationRegistry } from \"./UniversalFinalizationRegistry\";\nexport var observerFinalizationRegistry = new UniversalFinalizationRegistry(function (adm) {\n var _a;\n (_a = adm.reaction) === null || _a === void 0 ? void 0 : _a.dispose();\n adm.reaction = null;\n});","var globalIsUsingStaticRendering = false;\nexport function enableStaticRendering(enable) {\n globalIsUsingStaticRendering = enable;\n}\nexport function isUsingStaticRendering() {\n return globalIsUsingStaticRendering;\n}","var __read = this && this.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\nimport { Reaction } from \"mobx\";\nimport React from \"react\";\nimport { printDebugValue } from \"./utils/printDebugValue\";\nimport { observerFinalizationRegistry } from \"./utils/observerFinalizationRegistry\";\nimport { isUsingStaticRendering } from \"./staticRendering\";\nfunction observerComponentNameFor(baseComponentName) {\n return \"observer\".concat(baseComponentName);\n}\n/**\n * We use class to make it easier to detect in heap snapshots by name\n */\nvar ObjectToBeRetainedByReact = /** @class */function () {\n function ObjectToBeRetainedByReact() {}\n return ObjectToBeRetainedByReact;\n}();\nfunction objectToBeRetainedByReactFactory() {\n return new ObjectToBeRetainedByReact();\n}\nexport function useObserver(fn, baseComponentName) {\n if (baseComponentName === void 0) {\n baseComponentName = \"observed\";\n }\n if (isUsingStaticRendering()) {\n return fn();\n }\n var _a = __read(React.useState(objectToBeRetainedByReactFactory), 1),\n objectRetainedByReact = _a[0];\n // Force update, see #2982\n var _b = __read(React.useState(), 2),\n setState = _b[1];\n var forceUpdate = function () {\n return setState([]);\n };\n // StrictMode/ConcurrentMode/Suspense may mean that our component is\n // rendered and abandoned multiple times, so we need to track leaked\n // Reactions.\n var admRef = React.useRef(null);\n if (!admRef.current) {\n // First render\n admRef.current = {\n reaction: null,\n mounted: false,\n changedBeforeMount: false\n };\n }\n var adm = admRef.current;\n if (!adm.reaction) {\n // First render or component was not committed and reaction was disposed by registry\n adm.reaction = new Reaction(observerComponentNameFor(baseComponentName), function () {\n // Observable has changed, meaning we want to re-render\n // BUT if we're a component that hasn't yet got to the useEffect()\n // stage, we might be a component that _started_ to render, but\n // got dropped, and we don't want to make state changes then.\n // (It triggers warnings in StrictMode, for a start.)\n if (adm.mounted) {\n // We have reached useEffect(), so we're mounted, and can trigger an update\n forceUpdate();\n } else {\n // We haven't yet reached useEffect(), so we'll need to trigger a re-render\n // when (and if) useEffect() arrives.\n adm.changedBeforeMount = true;\n }\n });\n observerFinalizationRegistry.register(objectRetainedByReact, adm, adm);\n }\n React.useDebugValue(adm.reaction, printDebugValue);\n React.useEffect(function () {\n observerFinalizationRegistry.unregister(adm);\n adm.mounted = true;\n if (adm.reaction) {\n if (adm.changedBeforeMount) {\n // Got a change before mount, force an update\n adm.changedBeforeMount = false;\n forceUpdate();\n }\n } else {\n // The reaction we set up in our render has been disposed.\n // This can be due to bad timings of renderings, e.g. our\n // component was paused for a _very_ long time, and our\n // reaction got cleaned up\n // Re-create the reaction\n adm.reaction = new Reaction(observerComponentNameFor(baseComponentName), function () {\n // We've definitely already been mounted at this point\n forceUpdate();\n });\n forceUpdate();\n }\n return function () {\n adm.reaction.dispose();\n adm.reaction = null;\n adm.mounted = false;\n adm.changedBeforeMount = false;\n };\n }, []);\n // render the original component, but have the\n // reaction track the observables, so that rendering\n // can be invalidated (see above) once a dependency changes\n var rendering;\n var exception;\n adm.reaction.track(function () {\n try {\n rendering = fn();\n } catch (e) {\n exception = e;\n }\n });\n if (exception) {\n throw exception; // re-throw any exceptions caught during rendering\n }\n return rendering;\n}","import { forwardRef, memo } from \"react\";\nimport { isUsingStaticRendering } from \"./staticRendering\";\nimport { useObserver } from \"./useObserver\";\nvar warnObserverOptionsDeprecated = true;\nvar hasSymbol = typeof Symbol === \"function\" && Symbol.for;\n// Using react-is had some issues (and operates on elements, not on types), see #608 / #609\nvar ReactForwardRefSymbol = hasSymbol ? Symbol.for(\"react.forward_ref\") : typeof forwardRef === \"function\" && forwardRef(function (props) {\n return null;\n})[\"$$typeof\"];\nvar ReactMemoSymbol = hasSymbol ? Symbol.for(\"react.memo\") : typeof memo === \"function\" && memo(function (props) {\n return null;\n})[\"$$typeof\"];\n// n.b. base case is not used for actual typings or exported in the typing files\nexport function observer(baseComponent,\n// TODO remove in next major\noptions) {\n var _a;\n if (process.env.NODE_ENV !== \"production\" && warnObserverOptionsDeprecated && options) {\n warnObserverOptionsDeprecated = false;\n console.warn(\"[mobx-react-lite] `observer(fn, { forwardRef: true })` is deprecated, use `observer(React.forwardRef(fn))`\");\n }\n if (ReactMemoSymbol && baseComponent[\"$$typeof\"] === ReactMemoSymbol) {\n throw new Error(\"[mobx-react-lite] You are trying to use `observer` on a function component wrapped in either another `observer` or `React.memo`. The observer already applies 'React.memo' for you.\");\n }\n // The working of observer is explained step by step in this talk: https://www.youtube.com/watch?v=cPF4iBedoF0&feature=youtu.be&t=1307\n if (isUsingStaticRendering()) {\n return baseComponent;\n }\n var useForwardRef = (_a = options === null || options === void 0 ? void 0 : options.forwardRef) !== null && _a !== void 0 ? _a : false;\n var render = baseComponent;\n var baseComponentName = baseComponent.displayName || baseComponent.name;\n // If already wrapped with forwardRef, unwrap,\n // so we can patch render and apply memo\n if (ReactForwardRefSymbol && baseComponent[\"$$typeof\"] === ReactForwardRefSymbol) {\n useForwardRef = true;\n render = baseComponent[\"render\"];\n if (typeof render !== \"function\") {\n throw new Error(\"[mobx-react-lite] `render` property of ForwardRef was not a function\");\n }\n }\n var observerComponent = function (props, ref) {\n return useObserver(function () {\n return render(props, ref);\n }, baseComponentName);\n };\n // Don't set `displayName` for anonymous components,\n // so the `displayName` can be customized by user, see #3192.\n if (baseComponentName !== \"\") {\n ;\n observerComponent.displayName = baseComponentName;\n }\n // Support legacy context: `contextTypes` must be applied before `memo`\n if (baseComponent.contextTypes) {\n ;\n observerComponent.contextTypes = baseComponent.contextTypes;\n }\n if (useForwardRef) {\n // `forwardRef` must be applied prior `memo`\n // `forwardRef(observer(cmp))` throws:\n // \"forwardRef requires a render function but received a `memo` component. Instead of forwardRef(memo(...)), use memo(forwardRef(...))\"\n observerComponent = forwardRef(observerComponent);\n }\n // memo; we are not interested in deep updates\n // in props; we assume that if deep objects are changed,\n // this is in observables, which would have been tracked anyway\n observerComponent = memo(observerComponent);\n copyStaticProperties(baseComponent, observerComponent);\n if (\"production\" !== process.env.NODE_ENV) {\n Object.defineProperty(observerComponent, \"contextTypes\", {\n set: function () {\n var _a;\n throw new Error(\"[mobx-react-lite] `\".concat(this.displayName || ((_a = this.type) === null || _a === void 0 ? void 0 : _a.displayName) || \"Component\", \".contextTypes` must be set before applying `observer`.\"));\n }\n });\n }\n return observerComponent;\n}\n// based on https://github.com/mridgway/hoist-non-react-statics/blob/master/src/index.js\nvar hoistBlackList = {\n $$typeof: true,\n render: true,\n compare: true,\n type: true,\n // Don't redefine `displayName`,\n // it's defined as getter-setter pair on `memo` (see #3192).\n displayName: true\n};\nfunction copyStaticProperties(base, target) {\n Object.keys(base).forEach(function (key) {\n if (!hoistBlackList[key]) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(base, key));\n }\n });\n}","import { useObserver } from \"./useObserver\";\nfunction ObserverComponent(_a) {\n var children = _a.children,\n render = _a.render;\n var component = children || render;\n if (typeof component !== \"function\") {\n return null;\n }\n return useObserver(component);\n}\nif (\"production\" !== process.env.NODE_ENV) {\n ObserverComponent.propTypes = {\n children: ObserverPropsCheck,\n render: ObserverPropsCheck\n };\n}\nObserverComponent.displayName = \"Observer\";\nexport { ObserverComponent as Observer };\nfunction ObserverPropsCheck(props, key, componentName, location, propFullName) {\n var extraKey = key === \"children\" ? \"render\" : \"children\";\n var hasProp = typeof props[key] === \"function\";\n var hasExtraProp = typeof props[extraKey] === \"function\";\n if (hasProp && hasExtraProp) {\n return new Error(\"MobX Observer: Do not use children and render in the same time in`\" + componentName);\n }\n if (hasProp || hasExtraProp) {\n return null;\n }\n return new Error(\"Invalid prop `\" + propFullName + \"` of type `\" + typeof props[key] + \"` supplied to\" + \" `\" + componentName + \"`, expected `function`.\");\n}","import { observable } from \"mobx\";\nimport { useState } from \"react\";\nexport function useLocalObservable(initializer, annotations) {\n return useState(function () {\n return observable(initializer(), annotations, {\n autoBind: true\n });\n })[0];\n}","var __read = this && this.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\nimport { useDeprecated } from \"./utils/utils\";\nimport { observable, runInAction } from \"mobx\";\nimport { useState } from \"react\";\nexport function useAsObservableSource(current) {\n if (\"production\" !== process.env.NODE_ENV) useDeprecated(\"[mobx-react-lite] 'useAsObservableSource' is deprecated, please store the values directly in an observable, for example by using 'useLocalObservable', and sync future updates using 'useEffect' when needed. See the README for examples.\");\n var _a = __read(useState(function () {\n return observable(current, {}, {\n deep: false\n });\n }), 1),\n res = _a[0];\n runInAction(function () {\n Object.assign(res, current);\n });\n return res;\n}","var _a;\nimport \"./utils/assertEnvironment\";\nimport { unstable_batchedUpdates as batch } from \"./utils/reactBatchedUpdates\";\nimport { observerBatching } from \"./utils/observerBatching\";\nimport { useDeprecated } from \"./utils/utils\";\nimport { useObserver as useObserverOriginal } from \"./useObserver\";\nimport { enableStaticRendering } from \"./staticRendering\";\nimport { observerFinalizationRegistry } from \"./utils/observerFinalizationRegistry\";\nobserverBatching(batch);\nexport { isUsingStaticRendering, enableStaticRendering } from \"./staticRendering\";\nexport { observer } from \"./observer\";\nexport { Observer } from \"./ObserverComponent\";\nexport { useLocalObservable } from \"./useLocalObservable\";\nexport { useLocalStore } from \"./useLocalStore\";\nexport { useAsObservableSource } from \"./useAsObservableSource\";\nexport var clearTimers = (_a = observerFinalizationRegistry[\"finalizeAllImmediately\"]) !== null && _a !== void 0 ? _a : function () {};\nexport function useObserver(fn, baseComponentName) {\n if (baseComponentName === void 0) {\n baseComponentName = \"observed\";\n }\n if (\"production\" !== process.env.NODE_ENV) {\n useDeprecated(\"[mobx-react-lite] 'useObserver(fn)' is deprecated. Use `{fn}` instead, or wrap the entire component in `observer`.\");\n }\n return useObserverOriginal(fn, baseComponentName);\n}\nexport { isObserverBatched, observerBatching } from \"./utils/observerBatching\";\nexport function useStaticRendering(enable) {\n if (\"production\" !== process.env.NODE_ENV) {\n console.warn(\"[mobx-react-lite] 'useStaticRendering' is deprecated, use 'enableStaticRendering' instead\");\n }\n enableStaticRendering(enable);\n}","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n","var setPrototypeOf = require(\"./setPrototypeOf.js\");\nfunction _inheritsLoose(t, o) {\n t.prototype = Object.create(o.prototype), t.prototype.constructor = t, setPrototypeOf(t, o);\n}\nmodule.exports = _inheritsLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar _raf = require('raf');\nvar _raf2 = _interopRequireDefault(_raf);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction _toConsumableArray(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n return arr2;\n } else {\n return Array.from(arr);\n }\n}\nvar MODE_TIMEOUT = 0;\nvar MODE_INTERVAL = 1;\nvar fnStacks = new Map();\nvar runArray = new Set();\nvar rafStarted = false;\nvar startId = 0;\nfunction getTimeStamp() {\n return new Date().getTime();\n}\nfunction executeFn(value) {\n var fn = value.fn,\n args = value.args;\n fn.apply(undefined, _toConsumableArray(args));\n}\nfunction runFunction() {\n if (runArray.size === 0) return;\n runArray.forEach(executeFn);\n runArray.clear();\n}\nvar checkTick = function checkTick(currentTimeTick) {\n return function (value, id) {\n var nextTick = value.nextTick,\n ms = value.ms,\n mode = value.mode;\n if (currentTimeTick - nextTick >= 0) {\n runArray.add(value);\n if (mode === MODE_TIMEOUT) {\n fnStacks.delete(id);\n } else {\n fnStacks.set(id, Object.assign({}, value, {\n nextTick: nextTick + ms\n }));\n }\n }\n };\n};\nfunction loop() {\n var currentTimeTick = getTimeStamp();\n fnStacks.forEach(checkTick(currentTimeTick));\n runFunction();\n if (fnStacks.size === 0) {\n rafStarted = false;\n return;\n }\n (0, _raf2.default)(loop);\n}\nfunction addId(_ref) {\n var fn = _ref.fn,\n _ref$ms = _ref.ms,\n ms = _ref$ms === undefined ? 0 : _ref$ms,\n args = _ref.args,\n mode = _ref.mode;\n if (!fn) return null;\n var currentId = startId;\n fnStacks.set(currentId, {\n fn: fn,\n ms: ms,\n nextTick: getTimeStamp() + ms,\n args: args,\n mode: mode\n });\n if (!rafStarted) {\n rafStarted = true;\n (0, _raf2.default)(loop);\n }\n startId += 1;\n return currentId;\n}\nfunction removeId(id) {\n if (fnStacks.has(id)) {\n fnStacks.delete(id);\n }\n if (fnStacks.size === 0) {\n rafStarted = false;\n }\n}\nexports.default = {\n setTimeout: function setTimeout(fn) {\n for (var _len = arguments.length, args = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n var ms = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n return addId({\n fn: fn,\n ms: ms,\n args: args,\n mode: MODE_TIMEOUT\n });\n },\n clearTimeout: removeId,\n setInterval: function setInterval(fn) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n var ms = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n return addId({\n fn: fn,\n ms: ms,\n args: args,\n mode: MODE_INTERVAL\n });\n },\n clearInterval: removeId\n};","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _getRequireWildcardCache(e) {\n if (\"function\" != typeof WeakMap) return null;\n var r = new WeakMap(),\n t = new WeakMap();\n return (_getRequireWildcardCache = function _getRequireWildcardCache(e) {\n return e ? t : r;\n })(e);\n}\nfunction _interopRequireWildcard(e, r) {\n if (!r && e && e.__esModule) return e;\n if (null === e || \"object\" != _typeof(e) && \"function\" != typeof e) return {\n \"default\": e\n };\n var t = _getRequireWildcardCache(r);\n if (t && t.has(e)) return t.get(e);\n var n = {\n __proto__: null\n },\n a = Object.defineProperty && Object.getOwnPropertyDescriptor;\n for (var u in e) if (\"default\" !== u && {}.hasOwnProperty.call(e, u)) {\n var i = a ? Object.getOwnPropertyDescriptor(e, u) : null;\n i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u];\n }\n return n[\"default\"] = e, t && t.set(e, n), n;\n}\nmodule.exports = _interopRequireWildcard, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","import { Observer } from 'mobx-react-lite';\nimport React from 'react';\nimport joinClassName from '../../utils/className.utils';\nimport './BaseButton.scss';\n\ntype BaseButtonProps = {\n className?: string,\n solid?: boolean,\n onClick?: () => void,\n title?: string,\n}\n\nconst BaseButton: React.FC = props => {\n return (\n \n {props.children}\n \n )} />\n}\n\nexport default BaseButton;","module.exports = {\n \"default\": require(\"core-js/library/fn/object/assign\"),\n __esModule: true\n};","const onExit = ({\n\tnode,\n\tinTransition,\n\texitTrigger,\n\tentryProps,\n\texitProps,\n\ttriggerResolve,\n\te,\n}) => {\n\tif (!inTransition) return\n\n\tconst { trigger: removed, ...exitPropsTrimmed } = exitProps\n\n\ttriggerResolve.exit({\n\t\t...exitPropsTrimmed,\n\t\tnode,\n\t})\n\n\treturn (\n\t\texitTrigger &&\n\t\ttypeof exitTrigger === 'function' &&\n\t\texitTrigger({\n\t\t\tentry: entryProps,\n\t\t\texit: exitProps,\n\t\t\tnode,\n\t\t\te,\n\t\t})\n\t)\n}\n\nexport { onExit }\n","import React, { Component } from 'react'\nimport PropTypes from 'prop-types'\nimport { Provider } from './createTransitionContext'\nimport getPagesPromises from '../utils/getPagesPromises'\n\nclass InternalProvider extends Component {\n\tconstructor(props) {\n\t\tsuper(props)\n\t\tconst prefersReducedMotionSetting =\n\t\t\ttypeof window !== `undefined` &&\n\t\t\twindow.matchMedia('(prefers-reduced-motion: reduce)')\n\n\t\tconst prefersReducedMotion = prefersReducedMotionSetting\n\n\t\tif (\n\t\t\tprefersReducedMotionSetting.matches &&\n\t\t\tprocess.env.NODE_ENV === `development`\n\t\t) {\n\t\t\tconsole.warn(\n\t\t\t\t`[gatsby-plugin-transition-link] Warning! prefers-reduced-motion is activated via your OS settings. This means TransitionLink animations will not run.`\n\t\t\t)\n\t\t}\n\n\t\tthis.state = {\n\t\t\tinTransition: false,\n\t\t\tdisableAnimation: prefersReducedMotion.matches,\n\t\t\t// event\n\t\t\te: false,\n\t\t\t// exit\n\t\t\texitDelay: 0,\n\t\t\texitLength: 0,\n\t\t\texitState: {},\n\t\t\texitProps: {},\n\t\t\texitTrigger: false,\n\t\t\t// entry\n\t\t\tentryDelay: 0,\n\t\t\tentryLength: 0,\n\t\t\tentryState: {},\n\t\t\tentryProps: {},\n\t\t\tentryTrigger: false,\n\t\t\t// state updates\n\t\t\tupdateContext: obj => this.setState(obj),\n\t\t}\n\n\t\tif (\n\t\t\tprefersReducedMotion &&\n\t\t\ttypeof prefersReducedMotion.addEventListener === `function`\n\t\t) {\n\t\t\tprefersReducedMotion.addEventListener('change', () => {\n\t\t\t\tthis.setState({\n\t\t\t\t\tdisableAnimation: prefersReducedMotion.matches,\n\t\t\t\t})\n\t\t\t})\n\t\t} else if (\n\t\t\tprefersReducedMotion &&\n\t\t\ttypeof prefersReducedMotion.addListener === `function`\n\t\t) {\n\t\t\tprefersReducedMotion.addListener(() => {\n\t\t\t\tthis.setState({\n\t\t\t\t\tdisableAnimation: prefersReducedMotion.matches,\n\t\t\t\t})\n\t\t\t})\n\t\t}\n\t}\n\n\tcomponentDidMount() {\n\t\tthis.state.updateContext(getPagesPromises())\n\t}\n\n\trender() {\n\t\treturn {this.props.children}\n\t}\n}\n\nInternalProvider.propTypes = {\n\tchildren: PropTypes.node.isRequired,\n}\n\nexport default InternalProvider\n","'use strict';\n\nmodule.exports = str => encodeURIComponent(str).replace(/[!'()*]/g, x => `%${x.charCodeAt(0).toString(16).toUpperCase()}`);","var core = module.exports = { version: '2.6.12' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","// This is extracted to separate module because it's shared\n// between browser and SSR code\nexport const RouteAnnouncerProps = {\n id: `gatsby-announcer`,\n style: {\n position: `absolute`,\n top: 0,\n width: 1,\n height: 1,\n padding: 0,\n overflow: `hidden`,\n clip: `rect(0, 0, 0, 0)`,\n whiteSpace: `nowrap`,\n border: 0,\n },\n \"aria-live\": `assertive`,\n \"aria-atomic\": `true`,\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport loader, { PageResourceStatus } from \"./loader\"\nimport { maybeGetBrowserRedirect } from \"./redirect-utils.js\"\nimport { apiRunner } from \"./api-runner-browser\"\nimport emitter from \"./emitter\"\nimport { RouteAnnouncerProps } from \"./route-announcer-props\"\nimport { navigate as reachNavigate } from \"@gatsbyjs/reach-router\"\nimport { globalHistory } from \"@gatsbyjs/reach-router/lib/history\"\nimport { parsePath } from \"gatsby-link\"\n\nfunction maybeRedirect(pathname) {\n const redirect = maybeGetBrowserRedirect(pathname)\n const { hash, search } = window.location\n\n if (redirect != null) {\n window.___replace(redirect.toPath + search + hash)\n return true\n } else {\n return false\n }\n}\n\n// Catch unhandled chunk loading errors and force a restart of the app.\nlet nextRoute = ``\n\nwindow.addEventListener(`unhandledrejection`, event => {\n if (/loading chunk \\d* failed./i.test(event.reason)) {\n if (nextRoute) {\n window.location.pathname = nextRoute\n }\n }\n})\n\nconst onPreRouteUpdate = (location, prevLocation) => {\n if (!maybeRedirect(location.pathname)) {\n nextRoute = location.pathname\n apiRunner(`onPreRouteUpdate`, { location, prevLocation })\n }\n}\n\nconst onRouteUpdate = (location, prevLocation) => {\n if (!maybeRedirect(location.pathname)) {\n apiRunner(`onRouteUpdate`, { location, prevLocation })\n if (\n process.env.GATSBY_EXPERIMENTAL_QUERY_ON_DEMAND &&\n process.env.GATSBY_QUERY_ON_DEMAND_LOADING_INDICATOR === `true`\n ) {\n emitter.emit(`onRouteUpdate`, { location, prevLocation })\n }\n }\n}\n\nconst navigate = (to, options = {}) => {\n // Support forward/backward navigation with numbers\n // navigate(-2) (jumps back 2 history steps)\n // navigate(2) (jumps forward 2 history steps)\n if (typeof to === `number`) {\n globalHistory.navigate(to)\n return\n }\n\n const { pathname, search, hash } = parsePath(to)\n const redirect = maybeGetBrowserRedirect(pathname)\n\n // If we're redirecting, just replace the passed in pathname\n // to the one we want to redirect to.\n if (redirect) {\n to = redirect.toPath + search + hash\n }\n\n // If we had a service worker update, no matter the path, reload window and\n // reset the pathname whitelist\n if (window.___swUpdated) {\n window.location = pathname + search + hash\n return\n }\n\n // Start a timer to wait for a second before transitioning and showing a\n // loader in case resources aren't around yet.\n const timeoutId = setTimeout(() => {\n emitter.emit(`onDelayedLoadPageResources`, { pathname })\n apiRunner(`onRouteUpdateDelayed`, {\n location: window.location,\n })\n }, 1000)\n\n loader.loadPage(pathname).then(pageResources => {\n // If no page resources, then refresh the page\n // Do this, rather than simply `window.location.reload()`, so that\n // pressing the back/forward buttons work - otherwise when pressing\n // back, the browser will just change the URL and expect JS to handle\n // the change, which won't always work since it might not be a Gatsby\n // page.\n if (!pageResources || pageResources.status === PageResourceStatus.Error) {\n window.history.replaceState({}, ``, location.href)\n window.location = pathname\n clearTimeout(timeoutId)\n return\n }\n\n // If the loaded page has a different compilation hash to the\n // window, then a rebuild has occurred on the server. Reload.\n if (process.env.NODE_ENV === `production` && pageResources) {\n // window.___webpackCompilationHash gets set in production-app.js after navigationInit() is called\n // So on a direct visit of a page with a browser redirect this check is truthy and thus the codepath is hit\n // While the resource actually exists, but only too late\n // TODO: This should probably be fixed by setting ___webpackCompilationHash before navigationInit() is called\n if (\n pageResources.page.webpackCompilationHash !==\n window.___webpackCompilationHash\n ) {\n // Purge plugin-offline cache\n if (\n `serviceWorker` in navigator &&\n navigator.serviceWorker.controller !== null &&\n navigator.serviceWorker.controller.state === `activated`\n ) {\n navigator.serviceWorker.controller.postMessage({\n gatsbyApi: `clearPathResources`,\n })\n }\n\n window.location = pathname + search + hash\n }\n }\n reachNavigate(to, options)\n clearTimeout(timeoutId)\n })\n}\n\nfunction shouldUpdateScroll(prevRouterProps, { location }) {\n const { pathname, hash } = location\n const results = apiRunner(`shouldUpdateScroll`, {\n prevRouterProps,\n // `pathname` for backwards compatibility\n pathname,\n routerProps: { location },\n getSavedScrollPosition: args => [\n 0,\n // FIXME this is actually a big code smell, we should fix this\n // eslint-disable-next-line @babel/no-invalid-this\n this._stateStorage.read(args, args.key),\n ],\n })\n if (results.length > 0) {\n // Use the latest registered shouldUpdateScroll result, this allows users to override plugin's configuration\n // @see https://github.com/gatsbyjs/gatsby/issues/12038\n return results[results.length - 1]\n }\n\n if (prevRouterProps) {\n const {\n location: { pathname: oldPathname },\n } = prevRouterProps\n if (oldPathname === pathname) {\n // Scroll to element if it exists, if it doesn't, or no hash is provided,\n // scroll to top.\n return hash ? decodeURI(hash.slice(1)) : [0, 0]\n }\n }\n return true\n}\n\nfunction init() {\n // The \"scroll-behavior\" package expects the \"action\" to be on the location\n // object so let's copy it over.\n globalHistory.listen(args => {\n args.location.action = args.action\n })\n\n window.___push = to => navigate(to, { replace: false })\n window.___replace = to => navigate(to, { replace: true })\n window.___navigate = (to, options) => navigate(to, options)\n\n // Check for initial page-load redirect\n maybeRedirect(window.location.pathname)\n}\n\nclass RouteAnnouncer extends React.Component {\n constructor(props) {\n super(props)\n this.announcementRef = React.createRef()\n }\n\n componentDidUpdate(prevProps, nextProps) {\n requestAnimationFrame(() => {\n let pageName = `new page at ${this.props.location.pathname}`\n if (document.title) {\n pageName = document.title\n }\n const pageHeadings = document.querySelectorAll(`#gatsby-focus-wrapper h1`)\n if (pageHeadings && pageHeadings.length) {\n pageName = pageHeadings[0].textContent\n }\n const newAnnouncement = `Navigated to ${pageName}`\n if (this.announcementRef.current) {\n const oldAnnouncement = this.announcementRef.current.innerText\n if (oldAnnouncement !== newAnnouncement) {\n this.announcementRef.current.innerText = newAnnouncement\n }\n }\n })\n }\n\n render() {\n return
\n }\n}\n\nconst compareLocationProps = (prevLocation, nextLocation) => {\n if (prevLocation.href !== nextLocation.href) {\n return true\n }\n\n if (prevLocation?.state?.key !== nextLocation?.state?.key) {\n return true\n }\n\n return false\n}\n\n// Fire on(Pre)RouteUpdate APIs\nclass RouteUpdates extends React.Component {\n constructor(props) {\n super(props)\n onPreRouteUpdate(props.location, null)\n }\n\n componentDidMount() {\n onRouteUpdate(this.props.location, null)\n }\n\n shouldComponentUpdate(prevProps) {\n if (compareLocationProps(prevProps.location, this.props.location)) {\n onPreRouteUpdate(this.props.location, prevProps.location)\n return true\n }\n return false\n }\n\n componentDidUpdate(prevProps) {\n if (compareLocationProps(prevProps.location, this.props.location)) {\n onRouteUpdate(this.props.location, prevProps.location)\n }\n }\n\n render() {\n return (\n \n {this.props.children}\n \n \n )\n }\n}\n\nRouteUpdates.propTypes = {\n location: PropTypes.object.isRequired,\n}\n\nexport { init, shouldUpdateScroll, RouteUpdates, maybeGetBrowserRedirect }\n","// Pulled from react-compat\n// https://github.com/developit/preact-compat/blob/7c5de00e7c85e2ffd011bf3af02899b63f699d3a/src/index.js#L349\nfunction shallowDiffers(a, b) {\n for (var i in a) {\n if (!(i in b)) return true;\n }for (var _i in b) {\n if (a[_i] !== b[_i]) return true;\n }return false;\n}\n\nexport default (function (instance, nextProps, nextState) {\n return shallowDiffers(instance.props, nextProps) || shallowDiffers(instance.state, nextState);\n});","import React from \"react\"\nimport loader, { PageResourceStatus } from \"./loader\"\nimport shallowCompare from \"shallow-compare\"\n\nclass EnsureResources extends React.Component {\n constructor(props) {\n super()\n const { location, pageResources } = props\n this.state = {\n location: { ...location },\n pageResources:\n pageResources ||\n loader.loadPageSync(location.pathname, { withErrorDetails: true }),\n }\n }\n\n static getDerivedStateFromProps({ location }, prevState) {\n if (prevState.location.href !== location.href) {\n const pageResources = loader.loadPageSync(location.pathname, {\n withErrorDetails: true,\n })\n\n return {\n pageResources,\n location: { ...location },\n }\n }\n\n return {\n location: { ...location },\n }\n }\n\n loadResources(rawPath) {\n loader.loadPage(rawPath).then(pageResources => {\n if (pageResources && pageResources.status !== PageResourceStatus.Error) {\n this.setState({\n location: { ...window.location },\n pageResources,\n })\n } else {\n window.history.replaceState({}, ``, location.href)\n window.location = rawPath\n }\n })\n }\n\n shouldComponentUpdate(nextProps, nextState) {\n // Always return false if we're missing resources.\n if (!nextState.pageResources) {\n this.loadResources(nextProps.location.pathname)\n return false\n }\n\n if (\n process.env.BUILD_STAGE === `develop` &&\n nextState.pageResources.stale\n ) {\n this.loadResources(nextProps.location.pathname)\n return false\n }\n\n // Check if the component or json have changed.\n if (this.state.pageResources !== nextState.pageResources) {\n return true\n }\n if (\n this.state.pageResources.component !== nextState.pageResources.component\n ) {\n return true\n }\n\n if (this.state.pageResources.json !== nextState.pageResources.json) {\n return true\n }\n // Check if location has changed on a page using internal routing\n // via matchPath configuration.\n if (\n this.state.location.key !== nextState.location.key &&\n nextState.pageResources.page &&\n (nextState.pageResources.page.matchPath ||\n nextState.pageResources.page.path)\n ) {\n return true\n }\n return shallowCompare(this, nextProps, nextState)\n }\n\n render() {\n if (\n process.env.NODE_ENV !== `production` &&\n (!this.state.pageResources ||\n this.state.pageResources.status === PageResourceStatus.Error)\n ) {\n const message = `EnsureResources was not able to find resources for path: \"${this.props.location.pathname}\"\nThis typically means that an issue occurred building components for that path.\nRun \\`gatsby clean\\` to remove any cached elements.`\n if (this.state.pageResources?.error) {\n console.error(message)\n throw this.state.pageResources.error\n }\n\n throw new Error(message)\n }\n\n return this.props.children(this.state)\n }\n}\n\nexport default EnsureResources\n","import { apiRunner, apiRunnerAsync } from \"./api-runner-browser\"\nimport React from \"react\"\nimport ReactDOM from \"react-dom\"\nimport { Router, navigate, Location, BaseContext } from \"@gatsbyjs/reach-router\"\nimport { ScrollContext } from \"gatsby-react-router-scroll\"\nimport { StaticQueryContext } from \"gatsby\"\nimport {\n shouldUpdateScroll,\n init as navigationInit,\n RouteUpdates,\n} from \"./navigation\"\nimport emitter from \"./emitter\"\nimport PageRenderer from \"./page-renderer\"\nimport asyncRequires from \"$virtual/async-requires\"\nimport {\n setLoader,\n ProdLoader,\n publicLoader,\n PageResourceStatus,\n getStaticQueryResults,\n} from \"./loader\"\nimport EnsureResources from \"./ensure-resources\"\nimport stripPrefix from \"./strip-prefix\"\n\n// Generated during bootstrap\nimport matchPaths from \"$virtual/match-paths.json\"\n\nconst loader = new ProdLoader(asyncRequires, matchPaths, window.pageData)\nsetLoader(loader)\nloader.setApiRunner(apiRunner)\n\nwindow.asyncRequires = asyncRequires\nwindow.___emitter = emitter\nwindow.___loader = publicLoader\n\nnavigationInit()\n\napiRunnerAsync(`onClientEntry`).then(() => {\n // Let plugins register a service worker. The plugin just needs\n // to return true.\n if (apiRunner(`registerServiceWorker`).filter(Boolean).length > 0) {\n require(`./register-service-worker`)\n }\n\n // In gatsby v2 if Router is used in page using matchPaths\n // paths need to contain full path.\n // For example:\n // - page have `/app/*` matchPath\n // - inside template user needs to use `/app/xyz` as path\n // Resetting `basepath`/`baseuri` keeps current behaviour\n // to not introduce breaking change.\n // Remove this in v3\n const RouteHandler = props => (\n \n \n \n )\n\n const DataContext = React.createContext({})\n\n class GatsbyRoot extends React.Component {\n render() {\n const { children } = this.props\n return (\n \n {({ location }) => (\n \n {({ pageResources, location }) => {\n const staticQueryResults = getStaticQueryResults()\n return (\n \n \n {children}\n \n \n )\n }}\n \n )}\n \n )\n }\n }\n\n class LocationHandler extends React.Component {\n render() {\n return (\n \n {({ pageResources, location }) => (\n \n \n \n \n
\n \n \n )}\n \n )\n }\n }\n\n const { pagePath, location: browserLoc } = window\n\n // Explicitly call navigate if the canonical path (window.pagePath)\n // is different to the browser path (window.location.pathname). But\n // only if NONE of the following conditions hold:\n //\n // - The url matches a client side route (page.matchPath)\n // - it's a 404 page\n // - it's the offline plugin shell (/offline-plugin-app-shell-fallback/)\n if (\n pagePath &&\n __BASE_PATH__ + pagePath !== browserLoc.pathname &&\n !(\n loader.findMatchPath(stripPrefix(browserLoc.pathname, __BASE_PATH__)) ||\n pagePath === `/404.html` ||\n pagePath.match(/^\\/404\\/?$/) ||\n pagePath.match(/^\\/offline-plugin-app-shell-fallback\\/?$/)\n )\n ) {\n navigate(__BASE_PATH__ + pagePath + browserLoc.search + browserLoc.hash, {\n replace: true,\n })\n }\n\n publicLoader.loadPage(browserLoc.pathname).then(page => {\n if (!page || page.status === PageResourceStatus.Error) {\n const message = `page resources for ${browserLoc.pathname} not found. Not rendering React`\n\n // if the chunk throws an error we want to capture the real error\n // This should help with https://github.com/gatsbyjs/gatsby/issues/19618\n if (page && page.error) {\n console.error(message)\n throw page.error\n }\n\n throw new Error(message)\n }\n\n window.___webpackCompilationHash = page.page.webpackCompilationHash\n\n const SiteRoot = apiRunner(\n `wrapRootElement`,\n { element: },\n ,\n ({ result }) => {\n return { element: result }\n }\n ).pop()\n\n const App = function App() {\n const onClientEntryRanRef = React.useRef(false)\n\n React.useEffect(() => {\n if (!onClientEntryRanRef.current) {\n onClientEntryRanRef.current = true\n if (performance.mark) {\n performance.mark(`onInitialClientRender`)\n }\n\n apiRunner(`onInitialClientRender`)\n }\n }, [])\n\n return {SiteRoot}\n }\n\n const renderer = apiRunner(\n `replaceHydrateFunction`,\n undefined,\n ReactDOM.hydrateRoot ? ReactDOM.hydrateRoot : ReactDOM.hydrate\n )[0]\n\n function runRender() {\n const rootElement =\n typeof window !== `undefined`\n ? document.getElementById(`___gatsby`)\n : null\n\n if (renderer === ReactDOM.hydrateRoot) {\n renderer(rootElement, )\n } else {\n renderer(, rootElement)\n }\n }\n\n // https://github.com/madrobby/zepto/blob/b5ed8d607f67724788ec9ff492be297f64d47dfc/src/zepto.js#L439-L450\n // TODO remove IE 10 support\n const doc = document\n if (\n doc.readyState === `complete` ||\n (doc.readyState !== `loading` && !doc.documentElement.doScroll)\n ) {\n setTimeout(function () {\n runRender()\n }, 0)\n } else {\n const handler = function () {\n doc.removeEventListener(`DOMContentLoaded`, handler, false)\n window.removeEventListener(`load`, handler, false)\n\n runRender()\n }\n\n doc.addEventListener(`DOMContentLoaded`, handler, false)\n window.addEventListener(`load`, handler, false)\n }\n })\n})\n","const plugins = require(`./api-runner-browser-plugins`)\nconst { getResourceURLsForPathname, loadPage, loadPageSync } =\n require(`./loader`).publicLoader\n\nexports.apiRunner = (api, args = {}, defaultReturn, argTransform) => {\n // Hooks for gatsby-cypress's API handler\n if (process.env.CYPRESS_SUPPORT) {\n if (window.___apiHandler) {\n window.___apiHandler(api)\n } else if (window.___resolvedAPIs) {\n window.___resolvedAPIs.push(api)\n } else {\n window.___resolvedAPIs = [api]\n }\n }\n\n let results = plugins.map(plugin => {\n if (!plugin.plugin[api]) {\n return undefined\n }\n\n args.getResourceURLsForPathname = getResourceURLsForPathname\n args.loadPage = loadPage\n args.loadPageSync = loadPageSync\n\n const result = plugin.plugin[api](args, plugin.options)\n if (result && argTransform) {\n args = argTransform({ args, result, plugin })\n }\n return result\n })\n\n // Filter out undefined results.\n results = results.filter(result => typeof result !== `undefined`)\n\n if (results.length > 0) {\n return results\n } else if (defaultReturn) {\n return [defaultReturn]\n } else {\n return []\n }\n}\n\nexports.apiRunnerAsync = (api, args, defaultReturn) =>\n plugins.reduce(\n (previous, next) =>\n next.plugin[api]\n ? previous.then(() => next.plugin[api](args, next.options))\n : previous,\n Promise.resolve()\n )\n","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","\"use strict\";\n\nexports.__esModule = true;\nexports.useScrollRestoration = exports.ScrollContext = void 0;\n\nvar _scrollHandler = require(\"./scroll-handler\");\n\nexports.ScrollContext = _scrollHandler.ScrollHandler;\n\nvar _useScrollRestoration = require(\"./use-scroll-restoration\");\n\nexports.useScrollRestoration = _useScrollRestoration.useScrollRestoration;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\nfunction _unsupportedIterableToArray(r, a) {\n if (r) {\n if (\"string\" == typeof r) return arrayLikeToArray(r, a);\n var t = {}.toString.call(r).slice(8, -1);\n return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? arrayLikeToArray(r, a) : void 0;\n }\n}\nmodule.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","export const makeDisposerController = () => {\n const disposers: Function[] = [];\n return {\n add: (fn: Function) => disposers.push(fn),\n disposer: () => disposers.forEach(d => d())\n }\n}","import React from \"react\"\nimport { LaterHydrator } from \".\"\n\nexport function wrapRootElement({ element }) {\n return {element}\n}\n","const React = require('react')\nconst { navigate } = require('gatsby')\n\nconst InternalProvider = require('./context/InternalProvider').default\n\nmodule.exports = ({ element }) => {\n\tif (typeof window !== `undefined`) {\n\t\twindow.addEventListener('popstate', function(event) {\n\t\t\t// prevent the back button during transitions as it breaks pages\n\t\t\tif (window.__tl_inTransition) {\n\t\t\t\twindow.__tl_back_button_pressed = true\n\t\t\t\tnavigate(window.__tl_desiredPathname)\n\t\t\t}\n\t\t})\n\t}\n\n\treturn {element}\n}\n","// this file name starts with @ because it will be automatically listed before other modules in the same when imported.\n// it is used in gatsby-browser.tsx configuration file.\n\nimport { configure } from \"mobx\";\n\nconfigure({\n // enforceActions: 'never',\n //useProxies: 'ifavailable',\n useProxies: 'always',\n})\n\nexport default function configureMobx () {};","import { action } from 'mobx';\nimport { Observer } from 'mobx-react-lite';\nimport React from 'react';\nimport joinClassName from '../../utils/className.utils';\nimport { useProps, useStore } from '../../utils/mobx.utils';\nimport './PanelToggle.scss';\n\ntype PanelToggleProps = {\n id: string,\n className?: string,\n getter: () => boolean,\n setter?: (v: boolean) => void,\n onChange?: (v: boolean) => void,\n disabled?: boolean,\n}\n\nconst PanelToggle = (props: React.PropsWithChildren) => {\n const p = useProps(props);\n const s = useStore(() => ({\n get value() {\n return p.getter();\n },\n set value(v) {\n p.setter?.(v);\n },\n get disabled() { \n return p.disabled || !p.setter;\n },\n handleInputValueChange: action((e: React.ChangeEvent) => {\n s.value = e.currentTarget.checked;\n p.onChange && p.onChange(s.value);\n })\n }))\n return (\n \n )} />\n}\n\nexport default PanelToggle;","import { action, flow, toJS } from 'mobx';\nimport { Observer } from 'mobx-react-lite';\nimport React from 'react';\nimport { StringParam, useQueryParam } from 'use-query-params';\nimport { LOAD_GTAG } from '../../analytics/loadGTAG.analytics';\nimport { LOAD_LINKEDIN_INSIGHT } from '../../analytics/loadLinkedInInsightTag';\nimport { isBuildTime } from '../../env';\nimport { useOnMount } from '../../hooks/lifecycle.hooks';\nimport { useSyncObservableStateToStorage } from '../../hooks/useSyncObservableStateToStorage.hook';\nimport { useStore } from '../../utils/mobx.utils';\nimport { AnimatedLink } from '../AnimatedLink/AnimatedLink';\nimport BaseButton from '../BaseButton/BaseButton';\nimport Line from '../Line/Line';\nimport PanelToggle from '../PanelToggle/PanelToggle';\nimport './AnalyticsManager.scss';\n\n\ntype AnalyticsManagerProps = {}\n\nexport type GDPR_PREFERENCES = {\n enableEssentialCookies: boolean,\n enableGoogleAnalytics: boolean,\n enableLinkedInInsightTag: boolean,\n hasReviewed: boolean,\n}\n\nconst AnalyticsManager: React.FC = props => {\n const s = useStore(() => ({\n get shouldShowBanner() {\n return !s.serialisable.hasReviewed;\n },\n serialisable: {\n enableEssentialCookies: true,\n enableGoogleAnalytics: true,\n enableLinkedInInsightTag: true,\n hasReviewed: false,\n },\n showManagerOverlay: false,\n hasLoaded: {\n googleAnalytics: false,\n linkedInInsightTag: false,\n \n }\n }))\n useSyncObservableStateToStorage(\n 'GDPR_PREFERENCES',\n () => toJS(s.serialisable),\n value => Object.assign(s.serialisable, value)\n )\n const manage = action(() => {\n s.serialisable.hasReviewed = true;\n s.showManagerOverlay = true;\n })\n const acceptAll = action(() => {\n s.serialisable.hasReviewed = true;\n s.serialisable.enableGoogleAnalytics = true;\n s.serialisable.enableLinkedInInsightTag = true;\n applyChanges();\n })\n const applyChanges = action(() => {\n s.showManagerOverlay = false;\n s.serialisable.hasReviewed = true;\n initAllEnabled();\n })\n const initAllEnabled = async () => {\n if (s.serialisable.enableGoogleAnalytics) await initGA();\n if (s.serialisable.enableLinkedInInsightTag) await initLI();\n }\n\n const initLI = () => new Promise(action((resolve) => {\n if (s.hasLoaded.linkedInInsightTag) return;\n s.hasLoaded.linkedInInsightTag = true;\n\n if(process.env.LINKEDIN_INSIGHT_ID) LOAD_LINKEDIN_INSIGHT(process.env.LINKEDIN_INSIGHT_TAG, resolve);\n }))\n\n const initGA = () => new Promise(action((resolve) => {\n if (s.hasLoaded.googleAnalytics) return;\n s.hasLoaded.googleAnalytics = true;\n // if (isDevelopment) {\n // log('Google Analytics is not loaded as the app is in development mode. Tracking ID: ', process.env.GTAG_ID);\n // return;\n // }\n /** It's using GTAG, but the global variable is curiously \"ga\". Whatever! */\n if (process.env.GTAG_ID) LOAD_GTAG(process.env.GTAG_ID, resolve);\n else resolve();\n }))\n\n const origin = useQueryParam('o', StringParam)[0];\n\n useOnMount(() => {\n flow(function* () {\n if (isBuildTime) return;\n window.MANAGE_PRIVACY_SETTINGS = manage;\n s.serialisable.enableEssentialCookies = true;\n yield initAllEnabled();\n if (origin && window.dataLayer) {\n // this will run only once, as only gets loaded once in the global wrapping component. \n window.dataLayer.push({ origin });\n }\n })()\n })\n \n return (\n
\n {s.shouldShowBanner &&
\n
\n

Oh hi there, we've got cookies!

\n {/*

We use cookies and similar tech to analyse traffic and site usage. You can read about our Data Protection Policy, or click here to review settings.

*/}\n

We use cookies and similar tech to analyse traffic and site usage. You can read about our Data Protection Policy here.

\n
\n \n
🍪
\n
Accept
\n
\n
}\n {\n s.showManagerOverlay &&
\n \n
\n
\n

Privacy Settings

\n \n
\n
\n

Please manage your cookie choices and privacy settings listed below by switching the consent toggles on or off. You can also choose to:

\n s.serialisable.enableEssentialCookies}\n >\n

Essential Cookies

\n

Some cookies and similar technologies are used to run the website and application properly and cannot be turned off.

\n \n s.serialisable.enableGoogleAnalytics}\n setter={v => s.serialisable.enableGoogleAnalytics = v}\n >\n

Google Analytics

\n

Collects site traffic and usage information. This provides insight to where our visitors are coming from, and how everyone uses our services. You can know more about how Google Analytics and Google Tag Manager manages cookies and user/device information on their website.

\n

Know more about Google Analytics ↗

\n \n s.serialisable.enableLinkedInInsightTag}\n setter={v => s.serialisable.enableLinkedInInsightTag = v}\n >\n

LinkedIn Insight

\n

\n It helps us optimize our LinkedIn campaigns, retarget our website visitors and learn more about your audiences.\n

\n

Know more about LinkedIn Insight Tag ↗

\n \n
\n
\n \n
\n Confirm Your Preferences\n Accept All\n
\n
\n
\n
\n }\n
\n )} />\n}\n\nexport default AnalyticsManager;","// LinkedIn Insight Tag\nimport { asyncPrependToContainer, makeElement } from \"../utils/dom.utils\";\nimport { log } from \"../utils/loggers.utils\";\n\nexport const LOAD_LINKEDIN_INSIGHT = async id => {\n\n log('LOAD_LINKEDIN_INSIGHT', id);\n\n const noscript = makeElement('noscript');\n const img = makeElement('img');\n img.setAttribute('height', 1);\n img.setAttribute('width', 1);\n img.setAttribute('src', `https://px.ads.linkedin.com/collect/?pid=4048809&fmt=gif`);\n\n const _linkedin_partner_id = \"4048809\";\n window._linkedin_data_partner_ids = window._linkedin_data_partner_ids || [];\n window._linkedin_data_partner_ids.push(_linkedin_partner_id);\n\n (function(l) {\n if (!l){window.lintrk = function(a,b){window.lintrk.q.push([a,b])};\n window.lintrk.q=[]}\n var s = document.getElementsByTagName(\"script\")[0];\n var b = document.createElement(\"script\");\n b.type = \"text/javascript\";b.async = true;\n b.src = \"https://snap.licdn.com/li.lms-analytics/insight.min.js\";\n s.parentNode.insertBefore(b, s);})(window.lintrk);\n\n asyncPrependToContainer(() => noscript, () => document.body);\n\n}","// import { loadScript } from \"./utils\";\n\nimport { asyncPrependToContainer, makeElement } from \"../utils/dom.utils\";\nimport { log } from \"../utils/loggers.utils\";\n\n// Google Tag Manager\n\nexport const LOAD_GTAG = (id: string, onLoad?: () => void) => {\n console.log(\"LOAD_GTAG\", id);\n\n // Create the external Google Analytics script\n const scriptExternal = document.createElement(\"script\");\n scriptExternal.async = true;\n scriptExternal.src = `https://www.googletagmanager.com/gtag/js?id=${id}`;\n\n // Create the inline script with the gtag configuration\n const scriptInline = document.createElement(\"script\");\n scriptInline.innerHTML = `\n window.dataLayer = window.dataLayer || [];\n function gtag(){ dataLayer.push(arguments); }\n gtag('js', new Date());\n gtag('config', '${id}');\n `;\n\n // Add the scripts at the same time in the important to keep both together.\n document.head.appendChild(scriptExternal);\n document.head.appendChild(scriptInline);\n\n // Execute the callback function (if required)\n scriptExternal.onload = () => onLoad?.();\n};\n","import { Observer } from 'mobx-react-lite';\nimport React from 'react';\nimport { isObject, isString } from '../../utils/typeChecks.utils';\n\ninterface ErrorListProps {\n errors: AnyObject\n}\n\nconst ErrorListItem: React.FC<{e: AnyObject}> = props => {\n return (\n \n {isNaN(+props.e[0]) && <>{props.e[0]}: }\n {isString(props.e[1]) ? {props.e[1]} : isObject(props.e[1]) ? : props.e[1] + ''}\n \n )} />\n}\n\nconst ErrorList: React.FC = props => {\n return {\n const array = Object.entries(props.errors);\n return (\n array.length === 1 ? :\n
    \n { array.map((d, i) =>
  • \n \n
  • )}\n
\n )\n }} />\n}\n\nexport default ErrorList;","import { action } from 'mobx';\nimport { Observer } from 'mobx-react-lite';\nimport React from 'react';\nimport { AnyObject } from '../../@types';\nimport { runAndIgnoreError } from '../../utils/loggers.utils';\nimport { useProps, useStore } from '../../utils/mobx.utils';\nimport { isObject, isString } from '../../utils/typeChecks.utils';\nimport ErrorList from './ErrorList';\nimport './ErrorRenderer.scss';\n\ninterface ErrorRendererProps {\n e?: string | Error | null | any,\n error?: string | Error | null | any,\n // TODO\n messageIsUserFriendly?: boolean,\n}\n\nconst defaultMessage = 'An unknown error occured.';\n\nconst ErrorRenderer: React.FC = props => {\n\n const p = useProps(props);\n\n const s = useStore(() => ({\n errorMessage: defaultMessage,\n details: {} as AnyObject,\n get originalError() {\n return p.error || p.e;\n },\n get errorDetails() {\n return s.originalError instanceof Object ? 'response' in s.originalError ? s.originalError.response : s.originalError : s.originalError;\n },\n get shouldRenderDetails() {\n return Object.keys(s.details).length > 0;\n }\n }));\n \n runAndIgnoreError(action(() => {\n const e = (isObject(s.errorDetails) && s.errorDetails?.data ? s.errorDetails?.data : s.errorDetails);\n s.errorMessage = (isString(e) ? e : (e?.message || e?.error)) ?? s.originalError?.message ?? 'Unknown Error';\n if (isObject(e) && 'errors' in e) {\n Object.assign(s.details, e?.errors);\n }\n }))\n\n return (\n
\n

{s.errorMessage}

\n { s.shouldRenderDetails && }\n
\n )} />\n\n}\n\nexport default ErrorRenderer;","import React from 'react';\nimport joinClassName from '../../utils/className.utils';\nimport { reportError } from '../../utils/loggers.utils';\nimport ErrorRenderer from '../ErrorRenderer/ErrorRenderer';\n\ninterface ErrorBoundaryProps {\n className?: string,\n fallback?: (error?: unknown) => (string | React.ReactElement | null);\n}\ninterface ErrorBoundaryState {\n error: unknown,\n}\n\nclass ErrorBoundary extends React.Component {\n constructor(props: ErrorBoundaryProps) {\n super(props);\n this.state = { error: null };\n }\n\n static getDerivedStateFromError(error: unknown) {\n // Update state so the next render will show the fallback UI.\n return { error };\n }\n\n componentDidCatch(error: unknown, errorInfo: unknown) {\n reportError(error as Error);\n }\n\n render() {\n if (!!this.state.error) {\n const { fallback: Fallback } = this.props;\n // You can render any custom fallback UI\n return
\n {\n Fallback ? (\n typeof Fallback === 'string' ? Fallback : Fallback(this.state.error)\n ) : \n }\n
\n }\n\n return this.props.children;\n }\n}\n\nexport default ErrorBoundary;","import { TweenLite } from 'gsap';\nimport { action, flow, reaction, when } from 'mobx';\nimport { Observer } from 'mobx-react-lite';\nimport React from 'react';\nimport { useAppContext } from '../../controllers/app.controller';\nimport { useOnMount } from '../../hooks/lifecycle.hooks';\nimport { useObservableRef } from '../../hooks/useObservableRef.hook';\nimport { isFirefox, isIE, isIPad, isWebKit } from '../../utils/browsers.utils';\nimport joinClassName from '../../utils/className.utils';\nimport { makeDisposerController } from '../../utils/disposer.utils';\nimport { addRootClass, hasRootClass, removeRootClass } from '../../utils/dom.utils';\nimport { reportError } from '../../utils/loggers.utils';\nimport { useStore } from '../../utils/mobx.utils';\nimport { highPerf } from '../../utils/performance.utils';\nimport tick from '../../utils/waiters.utils';\nimport ErrorBoundary from '../ErrorBoundary/ErrorBoundary';\nimport './CursorController.scss';\n\ntype CursorControllerProps = {}\n\nlet mounted = false;\n\n/**\n * Must only be used in a browser environment. \n * Do not render this during build time or SSR.\n */\nconst CursorController: React.FC = props => {\n const { UI } = useAppContext();\n const cursorTargetFocusOverlayRef = useObservableRef();\n const s = useStore(() => ({\n disposer: makeDisposerController(),\n showCoordinationLines: false,\n get x() { return UI.cursor.x },\n set x(v) { UI.cursor.x = v },\n get y() { return UI.cursor.y },\n set y(v) { UI.cursor.y = v },\n get xInt() { return Math.round(s.x) },\n get yInt() { return Math.round(s.y) },\n get vw() { return UI.viewport.width },\n get vh() { return UI.viewport.height },\n get scrollbarWidth() { return UI.ui.scrollbarWidth },\n get scrollY() { return UI.viewport.scrollY },\n target: null as Nullable,\n rect: {\n top: null as Nullable,\n left: null as Nullable,\n width: null as Nullable,\n height: null as Nullable,\n offset: null as Nullable,\n },\n elementIsInteractable: (el: HTMLElement) => {\n const actions = el.nodeName == 'A' || el.nodeName === 'BUTTON';\n if (isIPad) return actions;\n const inputs = (el.nodeName === 'INPUT') || el.nodeName === 'TEXTAREA' || (el.nodeName === 'LABEL' && !!el.getAttribute('for'));\n return actions || inputs;\n },\n animateTricolorPaths: () => {\n Array.from(document.querySelectorAll('.DecoTricolorContainer path')).forEach((path, i) => {\n const deltaX = (UI.cursor.x / UI.viewport.width - .5) * -25 * ((i + 3) / 7);\n const deltaY = (UI.cursor.y / UI.viewport.height - .5) * -25 * ((i + 3) / 7);\n TweenLite.to(path, 1, { x: deltaX, y: deltaY });\n })\n Array.from(document.querySelectorAll('.DecoAxonLines path')).forEach((path, i) => {\n const deltaX = (UI.cursor.x / UI.viewport.width - .5) * -8 * ((i + 3) / 7);\n const deltaY = (UI.cursor.y / UI.viewport.height - .5) * -8 * ((i + 3) / 7);\n TweenLite.to(path, 1, { x: deltaX, y: deltaY });\n })\n },\n handleMousemove: flow(function * (e: MouseEvent) {\n try {\n // TweenLite.to(s, .62, { x: e.clientX, y: e.clientY, ease: Power2.easeOut });\n s.x = e.clientX;\n s.y = e.clientY;\n const target = e.target as HTMLElement;\n if (!target) return;\n if (s.elementIsInteractable(target) && !target.classList.contains('no-rect')) {\n yield tick(50);\n s.target = e.target as HTMLAnchorElement | HTMLButtonElement;\n }\n else s.target = null;\n if (isWebKit) s.animateTricolorPaths();\n } catch(e) {\n handleError(e);\n }\n }),\n updateTargetBoundingBox: action(() => {\n try {\n if (!s.target) {\n s.rect.top = null;\n s.rect.left = null;\n s.rect.width = null;\n s.rect.height = null;\n s.rect.offset = null;\n return;\n }\n const br = s.target.getBoundingClientRect();\n s.rect.top = br.top;\n s.rect.left = br.left;\n s.rect.width = br.width;\n s.rect.height = br.height;\n const offset = s.target.getAttribute('data-rect-offset');\n s.rect.offset = offset ? +offset : 3;\n cursorTargetFocusOverlayRef.current?.style.setProperty(\n 'transform',\n `translate(${(s.rect.left === null ? s.x : s.rect.left - (s.rect.offset ?? 0)) + 'px'}, ${(s.rect.top === null ? s.y : s.rect.top - (s.rect.offset ?? 0)) + 'px'}) scale(${((s.rect.width ?? 0) + (s.rect.offset ?? 0) * 2) / s.vw},${((s.rect.height ?? 0) + (s.rect.offset ?? 0) * 2) / s.vh})`\n )\n } catch(e) {\n handleError(e);\n }\n }),\n handleClick: action((e: MouseEvent) => {\n try {\n const target = e.target as HTMLElement;\n if (s.elementIsInteractable(target)) s.target = null;\n } catch(e) {\n handleError(e);\n }\n }),\n handleFocusChange: action(() => {\n try {\n if (document.activeElement?.nodeName === 'A' || document.activeElement?.nodeName === 'BUTTON') {\n s.target = document.activeElement as HTMLAnchorElement | HTMLButtonElement;\n }\n } catch(e) {\n handleError(e);\n }\n })\n }))\n const handleError = (e: Error) => {\n console.warn('Failed to initiate cursor controller. This will not affect functionalities of the website, so errors have been hidden.');\n removeRootClass('CursorControllerActive');\n reportError(e);\n s.disposer.disposer();\n }\n useOnMount(() => {\n (async () => {\n if (mounted) return;\n if ((!highPerf || isFirefox) && !isIE) return;\n if (hasRootClass('CursorControllerActive')) return;\n await when(() => s.vw >= 768);\n try {\n mounted = true;\n window.addEventListener('click', s.handleClick);\n window.addEventListener('mousemove', s.handleMousemove);\n s.disposer.add(reaction(() => s.target, s.updateTargetBoundingBox));\n document.addEventListener('focusin', s.handleFocusChange, true);\n s.disposer.add(() => {\n window.removeEventListener('click', s.handleClick);\n window.removeEventListener('mousemove', s.handleMousemove);\n document.removeEventListener('focusin', s.handleFocusChange);\n addRootClass('CursorControllerActive');\n })\n s.disposer.add(reaction(() => s.scrollY, () => s.target = null));\n addRootClass('CursorControllerActive');\n return s.disposer.disposer\n } catch (e) {\n handleError(e);\n }\n })()\n })\n return (\n highPerf ? null}>\n
\n
\n
\n : null\n )} />\n}\n\nexport default CursorController;","import { Observer } from 'mobx-react-lite';\nimport React from 'react';\nimport { useAppContext } from '../../controllers/app.controller';\nimport './DialogStack.scss';\n\ntype DialogStackProps = {}\n\nconst DialogStack: React.FC = props => {\n const { PORTAL, UI } = useAppContext();\n return (\n UI.dialogs.length > 0 ? PORTAL.render(
\n { UI.dialogs }\n
) : null\n )} />\n}\n\nexport default DialogStack;","import React, { CSSProperties } from 'react';\n\nconst style: CSSProperties = {\n position: 'fixed',\n top: -24,\n left: -24,\n opacity: 0,\n}\n\nconst Symbols: React.FC = () => {\n return
\n \n \n \n \n \n \n \n \n \n
\n}\n\nexport default Symbols;","// if (process.env.NODE_ENV === 'development') {\n// process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = '0'\n// }\n// import * as Sentry from \"@sentry/react\";\n// import { Integrations } from \"@sentry/tracing\";\nimport { WrapPageElementBrowserArgs } from \"gatsby\";\nimport { Observer } from \"mobx-react-lite\";\nimport React from \"react\";\nimport initReactFastClick from 'react-fastclick';\nimport configureMobx from \"../src/@configureMobx\";\nimport applyPolyfills from \"../src/@polyfills\";\nimport AnalyticsManager from \"../src/components/AnalyticsManager/AnalyticsManager\";\nimport CursorController from \"../src/components/CursorController/CursorController\";\nimport DialogStack from \"../src/components/DialogStack/DialogStack\";\nimport Symbols from \"../src/components/Symbols\";\nimport { AppContext, AppController } from \"../src/controllers/app.controller\";\nimport { detectBrowsers } from \"../src/utils/browsers.utils\";\n\napplyPolyfills();\nconfigureMobx();\ndetectBrowsers();\ninitReactFastClick();\n\n// if (isBrowser && process.env.NODE_ENV === 'production') Sentry.init({\n// dsn: \"https://5ebe11845822447f9c09b860004a8f03@o165875.ingest.sentry.io/5743081\",\n// integrations: [new Integrations.BrowserTracing()],\n\n// // Set tracesSampleRate to 1.0 to capture 100%\n// // of transactions for performance monitoring.\n// // We recommend adjusting this value in production\n// tracesSampleRate: 1.0,\n// });\n\nexport const wrapPageElement = (args: WrapPageElementBrowserArgs) => {\n const { props, element } = args;\n return (\n \n \n { element }\n \n \n \n \n )} />\n}\n\nexport { };\n","import { navigate, withPrefix } from 'gatsby'\nimport { setTimeout } from 'requestanimationframe-timer'\nimport { getMs } from './secondsMs'\nimport getPagesPromises from './getPagesPromises'\n\nconst triggerTransition = ({\n\tto,\n\tevent = null,\n\texit = {},\n\tentry = {},\n\tinTransition,\n\tpages,\n\ttrigger,\n\tupdateContext,\n\tlinkState,\n\treplace,\n\tpreventScrollJump,\n}) => {\n\tif (event) {\n\t\tevent.persist()\n\t\tevent.preventDefault()\n\t}\n\n\tif (inTransition) return false\n\n\tlet hash\n\n\t// handle anchor links to ID's\n\tif (to.includes('#')) {\n\t\tconst toSplit = to.split('#')\n\t\tto = toSplit[0]\n\t\thash = toSplit[1]\n\t}\n\n\t// these globals prevent the back button from being pressed during a transition as that can have unexpected results\n\twindow.__tl_inTransition = true\n\twindow.__tl_desiredPathname = withPrefix(to)\n\n\tupdateContext({\n\t\tinTransition: true,\n\t\texitDelay: 0,\n\t\texitLength: 0,\n\t\tappearAfter: 0,\n\t\texitState: {},\n\t})\n\n\tif (trigger && typeof trigger === 'function') {\n\t\ttrigger(pages)\n\t}\n\n\tconst {\n\t\tlength: exitLength = 0,\n\t\tdelay: exitDelay = 0,\n\t\tstate: exitState = {},\n\t\ttrigger: exitTrigger = () => {},\n\t} = exit\n\tconst {\n\t\tlength: entryLength = 1, // this allows scrollposition to be reset when there is no transition.\n\t\tdelay: entryDelay = 0,\n\t\tstate: entryState = {},\n\t\ttrigger: entryTrigger = () => {},\n\t\tappearAfter = 0,\n\t} = entry\n\n\tupdateContext({\n\t\tentryLength: entryLength,\n\t\tentryDelay: entryDelay,\n\t\texitLength: exitLength,\n\t\texitDelay: exitDelay,\n\t\tentryProps: entry,\n\t\texitProps: exit,\n\t\tappearAfter,\n\t\tpreventScrollJump,\n\t\texitTrigger: (exit, node, e) => exitTrigger(exit, node, e),\n\t\tentryTrigger: (entry, node, e) => entryTrigger(entry, node, e),\n\t\te: event,\n\t})\n\n\t// after exitDelay\n\tsetTimeout(() => {\n\t\tnavigate(to, {\n\t\t\tstate: {\n\t\t\t\t...linkState,\n\t\t\t},\n\t\t\treplace,\n\t\t})\n\n\t\tupdateContext({\n\t\t\texitState: exitState,\n\t\t\thash,\n\t\t})\n\t}, getMs(exitDelay))\n\n\tsetTimeout(() => {\n\t\t// wait for entryDelay before we add entry state\n\t\tupdateContext({ entryState: entryState })\n\t}, getMs(exitDelay + entryDelay))\n\n\t// reset entry animation times so they dont apply when using browser back/forward.\n\t// this will be replaced with a better solution in the future\n\tsetTimeout(\n\t\t() =>\n\t\t\tupdateContext({\n\t\t\t\tentryDelay: 0,\n\t\t\t\tappearAfter: 0,\n\t\t\t\tentryLength: 0,\n\t\t\t}),\n\t\tgetMs(exitDelay + entryDelay + entryLength)\n\t)\n\n\tconst finalResetSeconds =\n\t\texitDelay + Math.max(exitLength, entryDelay + entryLength)\n\n\t// reset exit animation times so they dont apply when using browser back/forward.\n\t// this will be replaced with a better solution in the future\n\tsetTimeout(() => {\n\t\t// these globals prevent the back button from being pressed during a transition as that can have unexpected results\n\t\twindow.__tl_inTransition = false\n\t\twindow.__tl_desiredPathname = false\n\t\twindow.__tl_back_button_pressed = false\n\n\t\tupdateContext({\n\t\t\texitDelay: 0,\n\t\t\texitLength: 0,\n\t\t\t// Once all animation is finished, it's safe to start a new animation since we're no longer inTransition.\n\t\t\tinTransition: false,\n\t\t\t// create new page promises for the trigger prop\n\t\t\t...getPagesPromises(),\n\t\t})\n\t}, getMs(finalResetSeconds) + 1)\n}\n\nexport { triggerTransition }\n","'use strict';\n\n(function () {\n var getReactFCInitializer = function (React) {\n return function initializeReactFastclick() {\n var originalCreateElement = React.createElement;\n\n // Moved if Math.abs(downX - upX) > MOVE_THRESHOLD;\n var MOVE_THRESHOLD = 8;\n var TOUCH_DELAY = 1000;\n var touchKeysToStore = ['clientX', 'clientY', 'pageX', 'pageY', 'screenX', 'screenY', 'radiusX', 'radiusY'];\n var touchEvents = {\n downPos: {},\n lastPos: {}\n };\n var isDisabled = function (element) {\n if (!element) {\n return false;\n }\n var disabled = element.getAttribute('disabled');\n return disabled !== false && disabled !== null;\n };\n var focus = function (event, target) {\n var myTarget = target || event.currentTarget;\n if (!myTarget || isDisabled(myTarget)) {\n return;\n }\n myTarget.focus();\n };\n var handleType = {\n input: function (event) {\n focus(event);\n event.stopPropagation();\n },\n textarea: function (event) {\n focus(event);\n event.stopPropagation();\n },\n select: function (event) {\n focus(event);\n event.stopPropagation();\n },\n label: function (event) {\n var input;\n var forTarget = event.currentTarget.getAttribute('for');\n if (forTarget) {\n input = document.getElementById(forTarget);\n } else {\n input = event.currentTarget.querySelectorAll('input, textarea, select')[0];\n }\n if (input) {\n focus(event, input);\n }\n }\n };\n var fakeClickEvent = function (event) {\n if (typeof event.persist === 'function') {\n event.persist();\n }\n event.fastclick = true;\n event.type = 'click';\n event.button = 0;\n };\n var copyTouchKeys = function (touch, target) {\n if (typeof target.persist === 'function') {\n target.persist();\n }\n if (touch) {\n for (var i = 0; i < touchKeysToStore.length; i += 1) {\n var key = touchKeysToStore[i];\n target[key] = touch[key];\n }\n }\n };\n var noTouchHappened = function () {\n return !touchEvents.touched && (!touchEvents.lastTouchDate || new Date().getTime() > touchEvents.lastTouchDate + TOUCH_DELAY);\n };\n var invalidateIfMoreThanOneTouch = function (event) {\n touchEvents.invalid = event.touches && event.touches.length > 1 || touchEvents.invalid;\n };\n var onMouseEvent = function (callback, event) {\n var touched = !noTouchHappened();\n\n // Prevent mouse events on other elements\n if (touched && event.target !== touchEvents.target) {\n event.preventDefault();\n }\n\n // Prevent any mouse events if we touched recently\n if (typeof callback === 'function' && !touched) {\n callback(event);\n }\n if (event.type === 'click') {\n touchEvents.invalid = false;\n touchEvents.touched = false;\n touchEvents.moved = false;\n }\n };\n var onTouchStart = function (callback, event) {\n touchEvents.invalid = false;\n touchEvents.moved = false;\n touchEvents.touched = true;\n touchEvents.target = event.target;\n touchEvents.lastTouchDate = new Date().getTime();\n copyTouchKeys(event.touches[0], touchEvents.downPos);\n copyTouchKeys(event.touches[0], touchEvents.lastPos);\n invalidateIfMoreThanOneTouch(event);\n if (typeof callback === 'function') {\n callback(event);\n }\n };\n var onTouchMove = function (callback, event) {\n touchEvents.touched = true;\n touchEvents.lastTouchDate = new Date().getTime();\n copyTouchKeys(event.touches[0], touchEvents.lastPos);\n invalidateIfMoreThanOneTouch(event);\n if (Math.abs(touchEvents.downPos.clientX - touchEvents.lastPos.clientX) > MOVE_THRESHOLD || Math.abs(touchEvents.downPos.clientY - touchEvents.lastPos.clientY) > MOVE_THRESHOLD) {\n touchEvents.moved = true;\n }\n if (typeof callback === 'function') {\n callback(event);\n }\n };\n var onTouchEnd = function (callback, onClick, type, event) {\n touchEvents.touched = true;\n touchEvents.lastTouchDate = new Date().getTime();\n invalidateIfMoreThanOneTouch(event);\n if (typeof callback === 'function') {\n callback(event);\n }\n if (!touchEvents.invalid && !touchEvents.moved) {\n var box = event.currentTarget.getBoundingClientRect();\n if (touchEvents.lastPos.clientX - (touchEvents.lastPos.radiusX || 0) <= box.right && touchEvents.lastPos.clientX + (touchEvents.lastPos.radiusX || 0) >= box.left && touchEvents.lastPos.clientY - (touchEvents.lastPos.radiusY || 0) <= box.bottom && touchEvents.lastPos.clientY + (touchEvents.lastPos.radiusY || 0) >= box.top) {\n if (!isDisabled(event.currentTarget)) {\n if (typeof onClick === 'function') {\n copyTouchKeys(touchEvents.lastPos, event);\n fakeClickEvent(event);\n onClick(event);\n }\n if (!event.defaultPrevented && handleType[type]) {\n handleType[type](event);\n }\n }\n }\n }\n };\n var propsWithFastclickEvents = function (type, props) {\n var newProps = {};\n\n // Loop over props\n for (var key in props) {\n // Copy props to newProps\n newProps[key] = props[key];\n }\n\n // Apply our wrapped mouse and touch handlers\n newProps.onClick = onMouseEvent.bind(null, props.onClick);\n newProps.onMouseDown = onMouseEvent.bind(null, props.onMouseDown);\n newProps.onMouseMove = onMouseEvent.bind(null, props.onMouseMove);\n newProps.onMouseUp = onMouseEvent.bind(null, props.onMouseUp);\n newProps.onTouchStart = onTouchStart.bind(null, props.onTouchStart);\n newProps.onTouchMove = onTouchMove.bind(null, props.onTouchMove);\n newProps.onTouchEnd = onTouchEnd.bind(null, props.onTouchEnd, props.onClick, type);\n if (typeof Object.freeze === 'function') {\n Object.freeze(newProps);\n }\n return newProps;\n };\n React.createElement = function () {\n // Convert arguments to array\n var args = Array.prototype.slice.call(arguments);\n var type = args[0];\n var props = args[1];\n\n // Check if basic element & has onClick prop\n if (type && typeof type === 'string' && (props && typeof props.onClick === 'function' || handleType[type])) {\n // Add our own events to props\n args[1] = propsWithFastclickEvents(type, props || {});\n }\n\n // Apply args to original createElement function\n return originalCreateElement.apply(null, args);\n };\n if (typeof React.DOM === 'object') {\n for (var key in React.DOM) {\n React.DOM[key] = React.createElement.bind(null, key);\n }\n }\n };\n };\n\n /* istanbul ignore next */\n // Export for commonjs / browserify\n if (typeof exports === 'object' && typeof module !== 'undefined') {\n var React = require('react');\n module.exports = getReactFCInitializer(React);\n // Export for amd / require\n } else if (typeof define === 'function' && define.amd) {\n // eslint-disable-line no-undef\n define(['react'], function (ReactAMD) {\n // eslint-disable-line no-undef\n return getReactFCInitializer(ReactAMD);\n });\n // Export globally\n } else {\n var root;\n if (typeof window !== 'undefined') {\n root = window;\n } else if (typeof global !== 'undefined') {\n root = global;\n } else if (typeof self !== 'undefined') {\n root = self;\n } else {\n root = this;\n }\n root.Reorder = getReactFCInitializer(root.React);\n }\n})();","import { observable } from \"mobx\";\nimport { isBuildTime } from \"../env\";\nimport { ObservableRef } from \"../hooks/useObservableRef.hook\";\nimport { isIE } from \"./browsers.utils\";\nimport { getScrollY } from \"./dom.utils\";\nimport { NoOp } from \"./functions.utils\";\nimport { highPerf } from \"./performance.utils\";\nimport { observeVisibility } from \"./visibilityObserver.util\";\n\ntype ParallaxConfig = {\n el: HTMLElement | SVGElement,\n depth: number,\n direction: 'x' | 'y'\n customFunction?: () => void,\n disabled?: boolean,\n}\n\nconst elementConfigSet = new Set();\n\nexport const initParallax = () => {\n if (isBuildTime) return;\n if (isIE) return;\n if (!highPerf) return;\n const handler = () => {\n elementConfigSet.forEach(c => {\n if (c.disabled) return;\n if (c.customFunction) {\n c.customFunction();\n return;\n }\n if (\n !c.el\n // || c.el.classList.contains('invisible')\n ) return;\n const offset = getScrollY() * c.depth / window.innerHeight * 100;\n if (c.direction === 'y') {\n c.el.style.transform = `translateY(${offset}%)`;\n } else if (c.direction === 'x') {\n c.el.style.transform = `translateX(${offset}%)`;\n }\n })\n }\n window.addEventListener('scroll', handler);\n handler();\n return () => {\n window.removeEventListener('scroll', handler);\n }\n}\n\nexport const registerParallaxEffect = (ref: ObservableRef | HTMLElement | SVGElement, options: {\n id: string,\n depth?: number,\n direction?: 'x' | 'y',\n customFunction?: () => void\n shouldDisable?: () => boolean,\n}) => {\n if (isBuildTime) return NoOp;\n if (!highPerf || isIE) return NoOp;\n if (ref instanceof Element || ref.current) {\n const el = ref instanceof Element ? ref : ref.current;\n if (!el) return NoOp;\n const c = observable({\n el,\n get depth() { return options?.depth ?? .5 },\n get direction() { return options?.direction ?? 'y' },\n get customFunction() { return options?.customFunction },\n get disabled() { return options?.shouldDisable?.() ?? false },\n });\n elementConfigSet.add(c);\n observeVisibility(ref, options);\n return () => {\n elementConfigSet.delete(c);\n }\n }\n return NoOp;\n}","\"use strict\";\n\nmodule.exports = Object.assign;","'use strict';\n\nmodule.exports = function (obj, predicate) {\n var ret = {};\n var keys = Object.keys(obj);\n var isArr = Array.isArray(predicate);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var val = obj[key];\n if (isArr ? predicate.indexOf(key) !== -1 : predicate(key, val, obj)) {\n ret[key] = val;\n }\n }\n return ret;\n};","!function () {\n function t() {\n var e = Array.prototype.slice.call(arguments),\n n = document.createDocumentFragment();\n e.forEach(function (e) {\n var t = e instanceof Node;\n n.appendChild(t ? e : document.createTextNode(String(e)));\n }), this.appendChild(n);\n }\n [Element.prototype, Document.prototype, DocumentFragment.prototype].forEach(function (e) {\n e.hasOwnProperty(\"append\") || Object.defineProperty(e, \"append\", {\n configurable: !0,\n enumerable: !0,\n writable: !0,\n value: t\n });\n });\n}();","var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: require('./_library') ? 'pure' : 'global',\n copyright: '© 2020 Denis Pushkarev (zloirock.ru)'\n});\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.withPrefix = withPrefix;\nexports.withAssetPrefix = withAssetPrefix;\nexports.navigate = exports.default = void 0;\n\nvar _objectWithoutPropertiesLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutPropertiesLoose\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _inheritsLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inheritsLoose\"));\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reachRouter = require(\"@gatsbyjs/reach-router\");\n\nvar _utils = require(\"@gatsbyjs/reach-router/lib/utils\");\n\nvar _parsePath = require(\"./parse-path\");\n\nexports.parsePath = _parsePath.parsePath;\nvar _excluded = [\"to\", \"getProps\", \"onClick\", \"onMouseEnter\", \"activeClassName\", \"activeStyle\", \"innerRef\", \"partiallyActive\", \"state\", \"replace\", \"_location\"];\n\nvar isAbsolutePath = function isAbsolutePath(path) {\n return path === null || path === void 0 ? void 0 : path.startsWith(\"/\");\n};\n\nfunction withPrefix(path, prefix) {\n var _ref, _prefix;\n\n if (prefix === void 0) {\n prefix = getGlobalBasePrefix();\n }\n\n if (!isLocalLink(path)) {\n return path;\n }\n\n if (path.startsWith(\"./\") || path.startsWith(\"../\")) {\n return path;\n }\n\n var base = (_ref = (_prefix = prefix) !== null && _prefix !== void 0 ? _prefix : getGlobalPathPrefix()) !== null && _ref !== void 0 ? _ref : \"/\";\n return \"\" + (base !== null && base !== void 0 && base.endsWith(\"/\") ? base.slice(0, -1) : base) + (path.startsWith(\"/\") ? path : \"/\" + path);\n} // These global values are wrapped in typeof clauses to ensure the values exist.\n// This is especially problematic in unit testing of this component.\n\n\nvar getGlobalPathPrefix = function getGlobalPathPrefix() {\n return process.env.NODE_ENV !== \"production\" ? typeof __PATH_PREFIX__ !== \"undefined\" ? __PATH_PREFIX__ : undefined : __PATH_PREFIX__;\n};\n\nvar getGlobalBasePrefix = function getGlobalBasePrefix() {\n return process.env.NODE_ENV !== \"production\" ? typeof __BASE_PATH__ !== \"undefined\" ? __BASE_PATH__ : undefined : __BASE_PATH__;\n};\n\nvar isLocalLink = function isLocalLink(path) {\n return path && !path.startsWith(\"http://\") && !path.startsWith(\"https://\") && !path.startsWith(\"//\");\n};\n\nfunction withAssetPrefix(path) {\n return withPrefix(path, getGlobalPathPrefix());\n}\n\nfunction absolutify(path, current) {\n // If it's already absolute, return as-is\n if (isAbsolutePath(path)) {\n return path;\n }\n\n return (0, _utils.resolve)(path, current);\n}\n\nvar rewriteLinkPath = function rewriteLinkPath(path, relativeTo) {\n if (typeof path === \"number\") {\n return path;\n }\n\n if (!isLocalLink(path)) {\n return path;\n }\n\n return isAbsolutePath(path) ? withPrefix(path) : absolutify(path, relativeTo);\n};\n\nvar NavLinkPropTypes = {\n activeClassName: _propTypes.default.string,\n activeStyle: _propTypes.default.object,\n partiallyActive: _propTypes.default.bool\n}; // Set up IntersectionObserver\n\nvar createIntersectionObserver = function createIntersectionObserver(el, cb) {\n var io = new window.IntersectionObserver(function (entries) {\n entries.forEach(function (entry) {\n if (el === entry.target) {\n // Check if element is within viewport, remove listener, destroy observer, and run link callback.\n // MSEdge doesn't currently support isIntersecting, so also test for an intersectionRatio > 0\n if (entry.isIntersecting || entry.intersectionRatio > 0) {\n io.unobserve(el);\n io.disconnect();\n cb();\n }\n }\n });\n }); // Add element to the observer\n\n io.observe(el);\n return {\n instance: io,\n el: el\n };\n};\n\nfunction GatsbyLinkLocationWrapper(props) {\n return /*#__PURE__*/_react.default.createElement(_reachRouter.Location, null, function (_ref2) {\n var location = _ref2.location;\n return /*#__PURE__*/_react.default.createElement(GatsbyLink, (0, _extends2.default)({}, props, {\n _location: location\n }));\n });\n}\n\nvar GatsbyLink = /*#__PURE__*/function (_React$Component) {\n (0, _inheritsLoose2.default)(GatsbyLink, _React$Component);\n\n function GatsbyLink(props) {\n var _this;\n\n _this = _React$Component.call(this, props) || this; // Default to no support for IntersectionObserver\n\n _this.defaultGetProps = function (_ref3) {\n var isPartiallyCurrent = _ref3.isPartiallyCurrent,\n isCurrent = _ref3.isCurrent;\n\n if (_this.props.partiallyActive ? isPartiallyCurrent : isCurrent) {\n return {\n className: [_this.props.className, _this.props.activeClassName].filter(Boolean).join(\" \"),\n style: (0, _extends2.default)({}, _this.props.style, _this.props.activeStyle)\n };\n }\n\n return null;\n };\n\n var IOSupported = false;\n\n if (typeof window !== \"undefined\" && window.IntersectionObserver) {\n IOSupported = true;\n }\n\n _this.state = {\n IOSupported: IOSupported\n };\n _this.handleRef = _this.handleRef.bind((0, _assertThisInitialized2.default)(_this));\n return _this;\n }\n\n var _proto = GatsbyLink.prototype;\n\n _proto._prefetch = function _prefetch() {\n var currentPath = window.location.pathname; // reach router should have the correct state\n\n if (this.props._location && this.props._location.pathname) {\n currentPath = this.props._location.pathname;\n }\n\n var rewrittenPath = rewriteLinkPath(this.props.to, currentPath);\n var newPathName = (0, _parsePath.parsePath)(rewrittenPath).pathname; // Prefech is used to speed up next navigations. When you use it on the current navigation,\n // there could be a race-condition where Chrome uses the stale data instead of waiting for the network to complete\n\n if (currentPath !== newPathName) {\n ___loader.enqueue(newPathName);\n }\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n // Preserve non IO functionality if no support\n if (this.props.to !== prevProps.to && !this.state.IOSupported) {\n this._prefetch();\n }\n };\n\n _proto.componentDidMount = function componentDidMount() {\n // Preserve non IO functionality if no support\n if (!this.state.IOSupported) {\n this._prefetch();\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n if (!this.io) {\n return;\n }\n\n var _this$io = this.io,\n instance = _this$io.instance,\n el = _this$io.el;\n instance.unobserve(el);\n instance.disconnect();\n };\n\n _proto.handleRef = function handleRef(ref) {\n var _this2 = this;\n\n if (this.props.innerRef && this.props.innerRef.hasOwnProperty(\"current\")) {\n this.props.innerRef.current = ref;\n } else if (this.props.innerRef) {\n this.props.innerRef(ref);\n }\n\n if (this.state.IOSupported && ref) {\n // If IO supported and element reference found, setup Observer functionality\n this.io = createIntersectionObserver(ref, function () {\n _this2._prefetch();\n });\n }\n };\n\n _proto.render = function render() {\n var _this3 = this;\n\n var _this$props = this.props,\n to = _this$props.to,\n _this$props$getProps = _this$props.getProps,\n getProps = _this$props$getProps === void 0 ? this.defaultGetProps : _this$props$getProps,\n _onClick = _this$props.onClick,\n _onMouseEnter = _this$props.onMouseEnter,\n $activeClassName = _this$props.activeClassName,\n $activeStyle = _this$props.activeStyle,\n $innerRef = _this$props.innerRef,\n partiallyActive = _this$props.partiallyActive,\n state = _this$props.state,\n replace = _this$props.replace,\n _location = _this$props._location,\n rest = (0, _objectWithoutPropertiesLoose2.default)(_this$props, _excluded);\n\n if (process.env.NODE_ENV !== \"production\" && !isLocalLink(to)) {\n console.warn(\"External link \" + to + \" was detected in a Link component. Use the Link component only for internal links. See: https://gatsby.dev/internal-links\");\n }\n\n var prefixedTo = rewriteLinkPath(to, _location.pathname);\n\n if (!isLocalLink(prefixedTo)) {\n return /*#__PURE__*/_react.default.createElement(\"a\", (0, _extends2.default)({\n href: prefixedTo\n }, rest));\n }\n\n return /*#__PURE__*/_react.default.createElement(_reachRouter.Link, (0, _extends2.default)({\n to: prefixedTo,\n state: state,\n getProps: getProps,\n innerRef: this.handleRef,\n onMouseEnter: function onMouseEnter(e) {\n if (_onMouseEnter) {\n _onMouseEnter(e);\n }\n\n ___loader.hovering((0, _parsePath.parsePath)(prefixedTo).pathname);\n },\n onClick: function onClick(e) {\n if (_onClick) {\n _onClick(e);\n }\n\n if (e.button === 0 && // ignore right clicks\n !_this3.props.target && // let browser handle \"target=_blank\"\n !e.defaultPrevented && // onClick prevented default\n !e.metaKey && // ignore clicks with modifier keys...\n !e.altKey && !e.ctrlKey && !e.shiftKey) {\n e.preventDefault();\n var shouldReplace = replace;\n\n var isCurrent = encodeURI(prefixedTo) === _location.pathname;\n\n if (typeof replace !== \"boolean\" && isCurrent) {\n shouldReplace = true;\n } // Make sure the necessary scripts and data are\n // loaded before continuing.\n\n\n window.___navigate(prefixedTo, {\n state: state,\n replace: shouldReplace\n });\n }\n\n return true;\n }\n }, rest));\n };\n\n return GatsbyLink;\n}(_react.default.Component);\n\nGatsbyLink.propTypes = (0, _extends2.default)({}, NavLinkPropTypes, {\n onClick: _propTypes.default.func,\n to: _propTypes.default.string.isRequired,\n replace: _propTypes.default.bool,\n state: _propTypes.default.object\n});\n\nvar _default = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {\n return /*#__PURE__*/_react.default.createElement(GatsbyLinkLocationWrapper, (0, _extends2.default)({\n innerRef: ref\n }, props));\n});\n\nexports.default = _default;\n\nvar navigate = function navigate(to, options) {\n window.___navigate(rewriteLinkPath(to, window.location.pathname), options);\n};\n\nexports.navigate = navigate;","/**\n * Copyright 2016 Google Inc. All Rights Reserved.\n *\n * Licensed under the W3C SOFTWARE AND DOCUMENT NOTICE AND LICENSE.\n *\n * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n *\n */\n(function () {\n 'use strict';\n\n // Exit early if we're not running in a browser.\n if (typeof window !== 'object') {\n return;\n }\n\n // Exit early if all IntersectionObserver and IntersectionObserverEntry\n // features are natively supported.\n if ('IntersectionObserver' in window && 'IntersectionObserverEntry' in window && 'intersectionRatio' in window.IntersectionObserverEntry.prototype) {\n // Minimal polyfill for Edge 15's lack of `isIntersecting`\n // See: https://github.com/w3c/IntersectionObserver/issues/211\n if (!('isIntersecting' in window.IntersectionObserverEntry.prototype)) {\n Object.defineProperty(window.IntersectionObserverEntry.prototype, 'isIntersecting', {\n get: function () {\n return this.intersectionRatio > 0;\n }\n });\n }\n return;\n }\n\n /**\n * Returns the embedding frame element, if any.\n * @param {!Document} doc\n * @return {!Element}\n */\n function getFrameElement(doc) {\n try {\n return doc.defaultView && doc.defaultView.frameElement || null;\n } catch (e) {\n // Ignore the error.\n return null;\n }\n }\n\n /**\n * A local reference to the root document.\n */\n var document = function (startDoc) {\n var doc = startDoc;\n var frame = getFrameElement(doc);\n while (frame) {\n doc = frame.ownerDocument;\n frame = getFrameElement(doc);\n }\n return doc;\n }(window.document);\n\n /**\n * An IntersectionObserver registry. This registry exists to hold a strong\n * reference to IntersectionObserver instances currently observing a target\n * element. Without this registry, instances without another reference may be\n * garbage collected.\n */\n var registry = [];\n\n /**\n * The signal updater for cross-origin intersection. When not null, it means\n * that the polyfill is configured to work in a cross-origin mode.\n * @type {function(DOMRect|ClientRect, DOMRect|ClientRect)}\n */\n var crossOriginUpdater = null;\n\n /**\n * The current cross-origin intersection. Only used in the cross-origin mode.\n * @type {DOMRect|ClientRect}\n */\n var crossOriginRect = null;\n\n /**\n * Creates the global IntersectionObserverEntry constructor.\n * https://w3c.github.io/IntersectionObserver/#intersection-observer-entry\n * @param {Object} entry A dictionary of instance properties.\n * @constructor\n */\n function IntersectionObserverEntry(entry) {\n this.time = entry.time;\n this.target = entry.target;\n this.rootBounds = ensureDOMRect(entry.rootBounds);\n this.boundingClientRect = ensureDOMRect(entry.boundingClientRect);\n this.intersectionRect = ensureDOMRect(entry.intersectionRect || getEmptyRect());\n this.isIntersecting = !!entry.intersectionRect;\n\n // Calculates the intersection ratio.\n var targetRect = this.boundingClientRect;\n var targetArea = targetRect.width * targetRect.height;\n var intersectionRect = this.intersectionRect;\n var intersectionArea = intersectionRect.width * intersectionRect.height;\n\n // Sets intersection ratio.\n if (targetArea) {\n // Round the intersection ratio to avoid floating point math issues:\n // https://github.com/w3c/IntersectionObserver/issues/324\n this.intersectionRatio = Number((intersectionArea / targetArea).toFixed(4));\n } else {\n // If area is zero and is intersecting, sets to 1, otherwise to 0\n this.intersectionRatio = this.isIntersecting ? 1 : 0;\n }\n }\n\n /**\n * Creates the global IntersectionObserver constructor.\n * https://w3c.github.io/IntersectionObserver/#intersection-observer-interface\n * @param {Function} callback The function to be invoked after intersection\n * changes have queued. The function is not invoked if the queue has\n * been emptied by calling the `takeRecords` method.\n * @param {Object=} opt_options Optional configuration options.\n * @constructor\n */\n function IntersectionObserver(callback, opt_options) {\n var options = opt_options || {};\n if (typeof callback != 'function') {\n throw new Error('callback must be a function');\n }\n if (options.root && options.root.nodeType != 1 && options.root.nodeType != 9) {\n throw new Error('root must be a Document or Element');\n }\n\n // Binds and throttles `this._checkForIntersections`.\n this._checkForIntersections = throttle(this._checkForIntersections.bind(this), this.THROTTLE_TIMEOUT);\n\n // Private properties.\n this._callback = callback;\n this._observationTargets = [];\n this._queuedEntries = [];\n this._rootMarginValues = this._parseRootMargin(options.rootMargin);\n\n // Public properties.\n this.thresholds = this._initThresholds(options.threshold);\n this.root = options.root || null;\n this.rootMargin = this._rootMarginValues.map(function (margin) {\n return margin.value + margin.unit;\n }).join(' ');\n\n /** @private @const {!Array} */\n this._monitoringDocuments = [];\n /** @private @const {!Array} */\n this._monitoringUnsubscribes = [];\n }\n\n /**\n * The minimum interval within which the document will be checked for\n * intersection changes.\n */\n IntersectionObserver.prototype.THROTTLE_TIMEOUT = 100;\n\n /**\n * The frequency in which the polyfill polls for intersection changes.\n * this can be updated on a per instance basis and must be set prior to\n * calling `observe` on the first target.\n */\n IntersectionObserver.prototype.POLL_INTERVAL = null;\n\n /**\n * Use a mutation observer on the root element\n * to detect intersection changes.\n */\n IntersectionObserver.prototype.USE_MUTATION_OBSERVER = true;\n\n /**\n * Sets up the polyfill in the cross-origin mode. The result is the\n * updater function that accepts two arguments: `boundingClientRect` and\n * `intersectionRect` - just as these fields would be available to the\n * parent via `IntersectionObserverEntry`. This function should be called\n * each time the iframe receives intersection information from the parent\n * window, e.g. via messaging.\n * @return {function(DOMRect|ClientRect, DOMRect|ClientRect)}\n */\n IntersectionObserver._setupCrossOriginUpdater = function () {\n if (!crossOriginUpdater) {\n /**\n * @param {DOMRect|ClientRect} boundingClientRect\n * @param {DOMRect|ClientRect} intersectionRect\n */\n crossOriginUpdater = function (boundingClientRect, intersectionRect) {\n if (!boundingClientRect || !intersectionRect) {\n crossOriginRect = getEmptyRect();\n } else {\n crossOriginRect = convertFromParentRect(boundingClientRect, intersectionRect);\n }\n registry.forEach(function (observer) {\n observer._checkForIntersections();\n });\n };\n }\n return crossOriginUpdater;\n };\n\n /**\n * Resets the cross-origin mode.\n */\n IntersectionObserver._resetCrossOriginUpdater = function () {\n crossOriginUpdater = null;\n crossOriginRect = null;\n };\n\n /**\n * Starts observing a target element for intersection changes based on\n * the thresholds values.\n * @param {Element} target The DOM element to observe.\n */\n IntersectionObserver.prototype.observe = function (target) {\n var isTargetAlreadyObserved = this._observationTargets.some(function (item) {\n return item.element == target;\n });\n if (isTargetAlreadyObserved) {\n return;\n }\n if (!(target && target.nodeType == 1)) {\n throw new Error('target must be an Element');\n }\n this._registerInstance();\n this._observationTargets.push({\n element: target,\n entry: null\n });\n this._monitorIntersections(target.ownerDocument);\n this._checkForIntersections();\n };\n\n /**\n * Stops observing a target element for intersection changes.\n * @param {Element} target The DOM element to observe.\n */\n IntersectionObserver.prototype.unobserve = function (target) {\n this._observationTargets = this._observationTargets.filter(function (item) {\n return item.element != target;\n });\n this._unmonitorIntersections(target.ownerDocument);\n if (this._observationTargets.length == 0) {\n this._unregisterInstance();\n }\n };\n\n /**\n * Stops observing all target elements for intersection changes.\n */\n IntersectionObserver.prototype.disconnect = function () {\n this._observationTargets = [];\n this._unmonitorAllIntersections();\n this._unregisterInstance();\n };\n\n /**\n * Returns any queue entries that have not yet been reported to the\n * callback and clears the queue. This can be used in conjunction with the\n * callback to obtain the absolute most up-to-date intersection information.\n * @return {Array} The currently queued entries.\n */\n IntersectionObserver.prototype.takeRecords = function () {\n var records = this._queuedEntries.slice();\n this._queuedEntries = [];\n return records;\n };\n\n /**\n * Accepts the threshold value from the user configuration object and\n * returns a sorted array of unique threshold values. If a value is not\n * between 0 and 1 and error is thrown.\n * @private\n * @param {Array|number=} opt_threshold An optional threshold value or\n * a list of threshold values, defaulting to [0].\n * @return {Array} A sorted list of unique and valid threshold values.\n */\n IntersectionObserver.prototype._initThresholds = function (opt_threshold) {\n var threshold = opt_threshold || [0];\n if (!Array.isArray(threshold)) threshold = [threshold];\n return threshold.sort().filter(function (t, i, a) {\n if (typeof t != 'number' || isNaN(t) || t < 0 || t > 1) {\n throw new Error('threshold must be a number between 0 and 1 inclusively');\n }\n return t !== a[i - 1];\n });\n };\n\n /**\n * Accepts the rootMargin value from the user configuration object\n * and returns an array of the four margin values as an object containing\n * the value and unit properties. If any of the values are not properly\n * formatted or use a unit other than px or %, and error is thrown.\n * @private\n * @param {string=} opt_rootMargin An optional rootMargin value,\n * defaulting to '0px'.\n * @return {Array} An array of margin objects with the keys\n * value and unit.\n */\n IntersectionObserver.prototype._parseRootMargin = function (opt_rootMargin) {\n var marginString = opt_rootMargin || '0px';\n var margins = marginString.split(/\\s+/).map(function (margin) {\n var parts = /^(-?\\d*\\.?\\d+)(px|%)$/.exec(margin);\n if (!parts) {\n throw new Error('rootMargin must be specified in pixels or percent');\n }\n return {\n value: parseFloat(parts[1]),\n unit: parts[2]\n };\n });\n\n // Handles shorthand.\n margins[1] = margins[1] || margins[0];\n margins[2] = margins[2] || margins[0];\n margins[3] = margins[3] || margins[1];\n return margins;\n };\n\n /**\n * Starts polling for intersection changes if the polling is not already\n * happening, and if the page's visibility state is visible.\n * @param {!Document} doc\n * @private\n */\n IntersectionObserver.prototype._monitorIntersections = function (doc) {\n var win = doc.defaultView;\n if (!win) {\n // Already destroyed.\n return;\n }\n if (this._monitoringDocuments.indexOf(doc) != -1) {\n // Already monitoring.\n return;\n }\n\n // Private state for monitoring.\n var callback = this._checkForIntersections;\n var monitoringInterval = null;\n var domObserver = null;\n\n // If a poll interval is set, use polling instead of listening to\n // resize and scroll events or DOM mutations.\n if (this.POLL_INTERVAL) {\n monitoringInterval = win.setInterval(callback, this.POLL_INTERVAL);\n } else {\n addEvent(win, 'resize', callback, true);\n addEvent(doc, 'scroll', callback, true);\n if (this.USE_MUTATION_OBSERVER && 'MutationObserver' in win) {\n domObserver = new win.MutationObserver(callback);\n domObserver.observe(doc, {\n attributes: true,\n childList: true,\n characterData: true,\n subtree: true\n });\n }\n }\n this._monitoringDocuments.push(doc);\n this._monitoringUnsubscribes.push(function () {\n // Get the window object again. When a friendly iframe is destroyed, it\n // will be null.\n var win = doc.defaultView;\n if (win) {\n if (monitoringInterval) {\n win.clearInterval(monitoringInterval);\n }\n removeEvent(win, 'resize', callback, true);\n }\n removeEvent(doc, 'scroll', callback, true);\n if (domObserver) {\n domObserver.disconnect();\n }\n });\n\n // Also monitor the parent.\n var rootDoc = this.root && (this.root.ownerDocument || this.root) || document;\n if (doc != rootDoc) {\n var frame = getFrameElement(doc);\n if (frame) {\n this._monitorIntersections(frame.ownerDocument);\n }\n }\n };\n\n /**\n * Stops polling for intersection changes.\n * @param {!Document} doc\n * @private\n */\n IntersectionObserver.prototype._unmonitorIntersections = function (doc) {\n var index = this._monitoringDocuments.indexOf(doc);\n if (index == -1) {\n return;\n }\n var rootDoc = this.root && (this.root.ownerDocument || this.root) || document;\n\n // Check if any dependent targets are still remaining.\n var hasDependentTargets = this._observationTargets.some(function (item) {\n var itemDoc = item.element.ownerDocument;\n // Target is in this context.\n if (itemDoc == doc) {\n return true;\n }\n // Target is nested in this context.\n while (itemDoc && itemDoc != rootDoc) {\n var frame = getFrameElement(itemDoc);\n itemDoc = frame && frame.ownerDocument;\n if (itemDoc == doc) {\n return true;\n }\n }\n return false;\n });\n if (hasDependentTargets) {\n return;\n }\n\n // Unsubscribe.\n var unsubscribe = this._monitoringUnsubscribes[index];\n this._monitoringDocuments.splice(index, 1);\n this._monitoringUnsubscribes.splice(index, 1);\n unsubscribe();\n\n // Also unmonitor the parent.\n if (doc != rootDoc) {\n var frame = getFrameElement(doc);\n if (frame) {\n this._unmonitorIntersections(frame.ownerDocument);\n }\n }\n };\n\n /**\n * Stops polling for intersection changes.\n * @param {!Document} doc\n * @private\n */\n IntersectionObserver.prototype._unmonitorAllIntersections = function () {\n var unsubscribes = this._monitoringUnsubscribes.slice(0);\n this._monitoringDocuments.length = 0;\n this._monitoringUnsubscribes.length = 0;\n for (var i = 0; i < unsubscribes.length; i++) {\n unsubscribes[i]();\n }\n };\n\n /**\n * Scans each observation target for intersection changes and adds them\n * to the internal entries queue. If new entries are found, it\n * schedules the callback to be invoked.\n * @private\n */\n IntersectionObserver.prototype._checkForIntersections = function () {\n if (!this.root && crossOriginUpdater && !crossOriginRect) {\n // Cross origin monitoring, but no initial data available yet.\n return;\n }\n var rootIsInDom = this._rootIsInDom();\n var rootRect = rootIsInDom ? this._getRootRect() : getEmptyRect();\n this._observationTargets.forEach(function (item) {\n var target = item.element;\n var targetRect = getBoundingClientRect(target);\n var rootContainsTarget = this._rootContainsTarget(target);\n var oldEntry = item.entry;\n var intersectionRect = rootIsInDom && rootContainsTarget && this._computeTargetAndRootIntersection(target, targetRect, rootRect);\n var rootBounds = null;\n if (!this._rootContainsTarget(target)) {\n rootBounds = getEmptyRect();\n } else if (!crossOriginUpdater || this.root) {\n rootBounds = rootRect;\n }\n var newEntry = item.entry = new IntersectionObserverEntry({\n time: now(),\n target: target,\n boundingClientRect: targetRect,\n rootBounds: rootBounds,\n intersectionRect: intersectionRect\n });\n if (!oldEntry) {\n this._queuedEntries.push(newEntry);\n } else if (rootIsInDom && rootContainsTarget) {\n // If the new entry intersection ratio has crossed any of the\n // thresholds, add a new entry.\n if (this._hasCrossedThreshold(oldEntry, newEntry)) {\n this._queuedEntries.push(newEntry);\n }\n } else {\n // If the root is not in the DOM or target is not contained within\n // root but the previous entry for this target had an intersection,\n // add a new record indicating removal.\n if (oldEntry && oldEntry.isIntersecting) {\n this._queuedEntries.push(newEntry);\n }\n }\n }, this);\n if (this._queuedEntries.length) {\n this._callback(this.takeRecords(), this);\n }\n };\n\n /**\n * Accepts a target and root rect computes the intersection between then\n * following the algorithm in the spec.\n * TODO(philipwalton): at this time clip-path is not considered.\n * https://w3c.github.io/IntersectionObserver/#calculate-intersection-rect-algo\n * @param {Element} target The target DOM element\n * @param {Object} targetRect The bounding rect of the target.\n * @param {Object} rootRect The bounding rect of the root after being\n * expanded by the rootMargin value.\n * @return {?Object} The final intersection rect object or undefined if no\n * intersection is found.\n * @private\n */\n IntersectionObserver.prototype._computeTargetAndRootIntersection = function (target, targetRect, rootRect) {\n // If the element isn't displayed, an intersection can't happen.\n if (window.getComputedStyle(target).display == 'none') return;\n var intersectionRect = targetRect;\n var parent = getParentNode(target);\n var atRoot = false;\n while (!atRoot && parent) {\n var parentRect = null;\n var parentComputedStyle = parent.nodeType == 1 ? window.getComputedStyle(parent) : {};\n\n // If the parent isn't displayed, an intersection can't happen.\n if (parentComputedStyle.display == 'none') return null;\n if (parent == this.root || parent.nodeType == /* DOCUMENT */9) {\n atRoot = true;\n if (parent == this.root || parent == document) {\n if (crossOriginUpdater && !this.root) {\n if (!crossOriginRect || crossOriginRect.width == 0 && crossOriginRect.height == 0) {\n // A 0-size cross-origin intersection means no-intersection.\n parent = null;\n parentRect = null;\n intersectionRect = null;\n } else {\n parentRect = crossOriginRect;\n }\n } else {\n parentRect = rootRect;\n }\n } else {\n // Check if there's a frame that can be navigated to.\n var frame = getParentNode(parent);\n var frameRect = frame && getBoundingClientRect(frame);\n var frameIntersect = frame && this._computeTargetAndRootIntersection(frame, frameRect, rootRect);\n if (frameRect && frameIntersect) {\n parent = frame;\n parentRect = convertFromParentRect(frameRect, frameIntersect);\n } else {\n parent = null;\n intersectionRect = null;\n }\n }\n } else {\n // If the element has a non-visible overflow, and it's not the \n // or element, update the intersection rect.\n // Note: and cannot be clipped to a rect that's not also\n // the document rect, so no need to compute a new intersection.\n var doc = parent.ownerDocument;\n if (parent != doc.body && parent != doc.documentElement && parentComputedStyle.overflow != 'visible') {\n parentRect = getBoundingClientRect(parent);\n }\n }\n\n // If either of the above conditionals set a new parentRect,\n // calculate new intersection data.\n if (parentRect) {\n intersectionRect = computeRectIntersection(parentRect, intersectionRect);\n }\n if (!intersectionRect) break;\n parent = parent && getParentNode(parent);\n }\n return intersectionRect;\n };\n\n /**\n * Returns the root rect after being expanded by the rootMargin value.\n * @return {ClientRect} The expanded root rect.\n * @private\n */\n IntersectionObserver.prototype._getRootRect = function () {\n var rootRect;\n if (this.root && !isDoc(this.root)) {\n rootRect = getBoundingClientRect(this.root);\n } else {\n // Use / instead of window since scroll bars affect size.\n var doc = isDoc(this.root) ? this.root : document;\n var html = doc.documentElement;\n var body = doc.body;\n rootRect = {\n top: 0,\n left: 0,\n right: html.clientWidth || body.clientWidth,\n width: html.clientWidth || body.clientWidth,\n bottom: html.clientHeight || body.clientHeight,\n height: html.clientHeight || body.clientHeight\n };\n }\n return this._expandRectByRootMargin(rootRect);\n };\n\n /**\n * Accepts a rect and expands it by the rootMargin value.\n * @param {DOMRect|ClientRect} rect The rect object to expand.\n * @return {ClientRect} The expanded rect.\n * @private\n */\n IntersectionObserver.prototype._expandRectByRootMargin = function (rect) {\n var margins = this._rootMarginValues.map(function (margin, i) {\n return margin.unit == 'px' ? margin.value : margin.value * (i % 2 ? rect.width : rect.height) / 100;\n });\n var newRect = {\n top: rect.top - margins[0],\n right: rect.right + margins[1],\n bottom: rect.bottom + margins[2],\n left: rect.left - margins[3]\n };\n newRect.width = newRect.right - newRect.left;\n newRect.height = newRect.bottom - newRect.top;\n return newRect;\n };\n\n /**\n * Accepts an old and new entry and returns true if at least one of the\n * threshold values has been crossed.\n * @param {?IntersectionObserverEntry} oldEntry The previous entry for a\n * particular target element or null if no previous entry exists.\n * @param {IntersectionObserverEntry} newEntry The current entry for a\n * particular target element.\n * @return {boolean} Returns true if a any threshold has been crossed.\n * @private\n */\n IntersectionObserver.prototype._hasCrossedThreshold = function (oldEntry, newEntry) {\n // To make comparing easier, an entry that has a ratio of 0\n // but does not actually intersect is given a value of -1\n var oldRatio = oldEntry && oldEntry.isIntersecting ? oldEntry.intersectionRatio || 0 : -1;\n var newRatio = newEntry.isIntersecting ? newEntry.intersectionRatio || 0 : -1;\n\n // Ignore unchanged ratios\n if (oldRatio === newRatio) return;\n for (var i = 0; i < this.thresholds.length; i++) {\n var threshold = this.thresholds[i];\n\n // Return true if an entry matches a threshold or if the new ratio\n // and the old ratio are on the opposite sides of a threshold.\n if (threshold == oldRatio || threshold == newRatio || threshold < oldRatio !== threshold < newRatio) {\n return true;\n }\n }\n };\n\n /**\n * Returns whether or not the root element is an element and is in the DOM.\n * @return {boolean} True if the root element is an element and is in the DOM.\n * @private\n */\n IntersectionObserver.prototype._rootIsInDom = function () {\n return !this.root || containsDeep(document, this.root);\n };\n\n /**\n * Returns whether or not the target element is a child of root.\n * @param {Element} target The target element to check.\n * @return {boolean} True if the target element is a child of root.\n * @private\n */\n IntersectionObserver.prototype._rootContainsTarget = function (target) {\n var rootDoc = this.root && (this.root.ownerDocument || this.root) || document;\n return containsDeep(rootDoc, target) && (!this.root || rootDoc == target.ownerDocument);\n };\n\n /**\n * Adds the instance to the global IntersectionObserver registry if it isn't\n * already present.\n * @private\n */\n IntersectionObserver.prototype._registerInstance = function () {\n if (registry.indexOf(this) < 0) {\n registry.push(this);\n }\n };\n\n /**\n * Removes the instance from the global IntersectionObserver registry.\n * @private\n */\n IntersectionObserver.prototype._unregisterInstance = function () {\n var index = registry.indexOf(this);\n if (index != -1) registry.splice(index, 1);\n };\n\n /**\n * Returns the result of the performance.now() method or null in browsers\n * that don't support the API.\n * @return {number} The elapsed time since the page was requested.\n */\n function now() {\n return window.performance && performance.now && performance.now();\n }\n\n /**\n * Throttles a function and delays its execution, so it's only called at most\n * once within a given time period.\n * @param {Function} fn The function to throttle.\n * @param {number} timeout The amount of time that must pass before the\n * function can be called again.\n * @return {Function} The throttled function.\n */\n function throttle(fn, timeout) {\n var timer = null;\n return function () {\n if (!timer) {\n timer = setTimeout(function () {\n fn();\n timer = null;\n }, timeout);\n }\n };\n }\n\n /**\n * Adds an event handler to a DOM node ensuring cross-browser compatibility.\n * @param {Node} node The DOM node to add the event handler to.\n * @param {string} event The event name.\n * @param {Function} fn The event handler to add.\n * @param {boolean} opt_useCapture Optionally adds the even to the capture\n * phase. Note: this only works in modern browsers.\n */\n function addEvent(node, event, fn, opt_useCapture) {\n if (typeof node.addEventListener == 'function') {\n node.addEventListener(event, fn, opt_useCapture || false);\n } else if (typeof node.attachEvent == 'function') {\n node.attachEvent('on' + event, fn);\n }\n }\n\n /**\n * Removes a previously added event handler from a DOM node.\n * @param {Node} node The DOM node to remove the event handler from.\n * @param {string} event The event name.\n * @param {Function} fn The event handler to remove.\n * @param {boolean} opt_useCapture If the event handler was added with this\n * flag set to true, it should be set to true here in order to remove it.\n */\n function removeEvent(node, event, fn, opt_useCapture) {\n if (typeof node.removeEventListener == 'function') {\n node.removeEventListener(event, fn, opt_useCapture || false);\n } else if (typeof node.detachEvent == 'function') {\n node.detachEvent('on' + event, fn);\n }\n }\n\n /**\n * Returns the intersection between two rect objects.\n * @param {Object} rect1 The first rect.\n * @param {Object} rect2 The second rect.\n * @return {?Object|?ClientRect} The intersection rect or undefined if no\n * intersection is found.\n */\n function computeRectIntersection(rect1, rect2) {\n var top = Math.max(rect1.top, rect2.top);\n var bottom = Math.min(rect1.bottom, rect2.bottom);\n var left = Math.max(rect1.left, rect2.left);\n var right = Math.min(rect1.right, rect2.right);\n var width = right - left;\n var height = bottom - top;\n return width >= 0 && height >= 0 && {\n top: top,\n bottom: bottom,\n left: left,\n right: right,\n width: width,\n height: height\n } || null;\n }\n\n /**\n * Shims the native getBoundingClientRect for compatibility with older IE.\n * @param {Element} el The element whose bounding rect to get.\n * @return {DOMRect|ClientRect} The (possibly shimmed) rect of the element.\n */\n function getBoundingClientRect(el) {\n var rect;\n try {\n rect = el.getBoundingClientRect();\n } catch (err) {\n // Ignore Windows 7 IE11 \"Unspecified error\"\n // https://github.com/w3c/IntersectionObserver/pull/205\n }\n if (!rect) return getEmptyRect();\n\n // Older IE\n if (!(rect.width && rect.height)) {\n rect = {\n top: rect.top,\n right: rect.right,\n bottom: rect.bottom,\n left: rect.left,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n };\n }\n return rect;\n }\n\n /**\n * Returns an empty rect object. An empty rect is returned when an element\n * is not in the DOM.\n * @return {ClientRect} The empty rect.\n */\n function getEmptyRect() {\n return {\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n width: 0,\n height: 0\n };\n }\n\n /**\n * Ensure that the result has all of the necessary fields of the DOMRect.\n * Specifically this ensures that `x` and `y` fields are set.\n *\n * @param {?DOMRect|?ClientRect} rect\n * @return {?DOMRect}\n */\n function ensureDOMRect(rect) {\n // A `DOMRect` object has `x` and `y` fields.\n if (!rect || 'x' in rect) {\n return rect;\n }\n // A IE's `ClientRect` type does not have `x` and `y`. The same is the case\n // for internally calculated Rect objects. For the purposes of\n // `IntersectionObserver`, it's sufficient to simply mirror `left` and `top`\n // for these fields.\n return {\n top: rect.top,\n y: rect.top,\n bottom: rect.bottom,\n left: rect.left,\n x: rect.left,\n right: rect.right,\n width: rect.width,\n height: rect.height\n };\n }\n\n /**\n * Inverts the intersection and bounding rect from the parent (frame) BCR to\n * the local BCR space.\n * @param {DOMRect|ClientRect} parentBoundingRect The parent's bound client rect.\n * @param {DOMRect|ClientRect} parentIntersectionRect The parent's own intersection rect.\n * @return {ClientRect} The local root bounding rect for the parent's children.\n */\n function convertFromParentRect(parentBoundingRect, parentIntersectionRect) {\n var top = parentIntersectionRect.top - parentBoundingRect.top;\n var left = parentIntersectionRect.left - parentBoundingRect.left;\n return {\n top: top,\n left: left,\n height: parentIntersectionRect.height,\n width: parentIntersectionRect.width,\n bottom: top + parentIntersectionRect.height,\n right: left + parentIntersectionRect.width\n };\n }\n\n /**\n * Checks to see if a parent element contains a child element (including inside\n * shadow DOM).\n * @param {Node} parent The parent element.\n * @param {Node} child The child element.\n * @return {boolean} True if the parent node contains the child node.\n */\n function containsDeep(parent, child) {\n var node = child;\n while (node) {\n if (node == parent) return true;\n node = getParentNode(node);\n }\n return false;\n }\n\n /**\n * Gets the parent node of an element or its host element if the parent node\n * is a shadow root.\n * @param {Node} node The node whose parent to get.\n * @return {Node|null} The parent node or null if no parent exists.\n */\n function getParentNode(node) {\n var parent = node.parentNode;\n if (node.nodeType == /* DOCUMENT */9 && node != document) {\n // If this node is a document node, look for the embedding frame.\n return getFrameElement(node);\n }\n\n // If the parent has element that is assigned through shadow root slot\n if (parent && parent.assignedSlot) {\n parent = parent.assignedSlot.parentNode;\n }\n if (parent && parent.nodeType == 11 && parent.host) {\n // If the parent is a shadow root, return the host element.\n return parent.host;\n }\n return parent;\n }\n\n /**\n * Returns true if `node` is a Document.\n * @param {!Node} node\n * @returns {boolean}\n */\n function isDoc(node) {\n return node && node.nodeType === 9;\n }\n\n // Exposes the constructors globally.\n window.IntersectionObserver = IntersectionObserver;\n window.IntersectionObserverEntry = IntersectionObserverEntry;\n})();","import { browserVersion, isAndroid, isIOS, osVersion } from 'react-device-detect';\nimport { isBuildTime } from '../env';\nimport { isFirefox, isIE } from './browsers.utils';\n\nconst shouldEnableHighPerformanceAnimations = () => {\n // return false;\n if (isIE) return false;\n if (isFirefox && !isIOS) return false;\n if (isBuildTime) return false;\n const majorVersion = +(osVersion || '').split('.')[0];\n const browserMajorVersion = +(browserVersion || '').split('.')[0];\n // window.alert(`isIOS: ${isIOS}, osVersion: ${osVersion}, browserVersion: ${browserVersion}`)\n if (isIOS && (majorVersion >= 13 /** iPhone */ || browserMajorVersion >= 13 /** iPad */)) return true;\n if (isAndroid && majorVersion < 9) return false;\n return true;\n}\n\nexport const highPerf = shouldEnableHighPerformanceAnimations();","import { action, reaction } from \"mobx\";\nimport { isBuildTime } from \"../env\";\nimport { makeDisposerController } from \"../utils/disposer.utils\";\nimport { useOnMount } from \"./lifecycle.hooks\";\n\nexport const getStorageObject = (\n use?: 'localStorage' | 'sessionStorage',\n) => {\n return use === 'sessionStorage' ? sessionStorage : localStorage;\n}\n\nexport const saveToStorage = (\n key: string,\n value: any,\n use?: 'localStorage' | 'sessionStorage',\n) => {\n if (isBuildTime) return;\n const storage = getStorageObject(use);\n if (!storage) return;\n storage.setItem(key, JSON.stringify(value));\n}\n\nexport const readFromStorage = (\n key: string,\n use?: 'localStorage' | 'sessionStorage',\n) => {\n if (isBuildTime) return;\n const storage = getStorageObject(use);\n if (!storage) return;\n const value = storage.getItem(key);\n if (value) return JSON.parse(value);\n return;\n}\n\nexport const useSyncObservableStateToStorage = (\n key: string,\n getter: () => T,\n setter: (v: T) => void,\n) => {\n useOnMount(() => {\n if (isBuildTime) return;\n const d = makeDisposerController();\n action(setter)(readFromStorage(key));\n d.add(\n reaction(\n getter,\n value => saveToStorage(key, value),\n { fireImmediately: true }\n )\n )\n return d.disposer;\n })\n}","var _typeof = require(\"./typeof.js\")[\"default\"];\nvar toPrimitive = require(\"./toPrimitive.js\");\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nmodule.exports = toPropertyKey, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","module.exports = require(\"/Users/henrique/Valet/axon/gatsby/gatsby-browser.tsx\");","\"use strict\";\n\nexports.registerServiceWorker = function () {\n return process.env.GATSBY_IS_PREVIEW !== \"true\";\n}; // only cache relevant resources for this page\n\n\nvar whiteListLinkRels = /^(stylesheet|preload)$/;\nvar prefetchedPathnames = [];\n\nexports.onServiceWorkerActive = function (_ref) {\n var getResourceURLsForPathname = _ref.getResourceURLsForPathname,\n serviceWorker = _ref.serviceWorker;\n\n if (process.env.GATSBY_IS_PREVIEW === \"true\") {\n return;\n } // if the SW has just updated then clear the path dependencies and don't cache\n // stuff, since we're on the old revision until we navigate to another page\n\n\n if (window.___swUpdated) {\n serviceWorker.active.postMessage({\n gatsbyApi: \"clearPathResources\"\n });\n return;\n } // grab nodes from head of document\n\n\n var nodes = document.querySelectorAll(\"\\n head > script[src],\\n head > link[href],\\n head > style[data-href]\\n \"); // get all resource URLs\n\n var headerResources = [].slice.call(nodes) // don't include preconnect/prefetch/prerender resources\n .filter(function (node) {\n return node.tagName !== \"LINK\" || whiteListLinkRels.test(node.getAttribute(\"rel\"));\n }).map(function (node) {\n return node.src || node.href || node.getAttribute(\"data-href\");\n }); // Loop over prefetched pages and add their resources to an array,\n // plus specify which resources are required for those paths.\n\n var prefetchedResources = [];\n prefetchedPathnames.forEach(function (path) {\n var resources = getResourceURLsForPathname(path);\n prefetchedResources.push.apply(prefetchedResources, resources);\n serviceWorker.active.postMessage({\n gatsbyApi: \"setPathResources\",\n path: path,\n resources: resources\n });\n }); // Loop over all resources and fetch the page component + JSON data\n // to add it to the SW cache.\n\n var resources = [].concat(headerResources, prefetchedResources);\n resources.forEach(function (resource) {\n // Create a prefetch link for each resource, so Workbox runtime-caches them\n var link = document.createElement(\"link\");\n link.rel = \"prefetch\";\n link.href = resource;\n link.onload = link.remove;\n link.onerror = link.remove;\n document.head.appendChild(link);\n });\n};\n\nfunction setPathResources(path, getResourceURLsForPathname) {\n // do nothing if the SW has just updated, since we still have old pages in\n // memory which we don't want to be whitelisted\n if (window.___swUpdated) return;\n\n if (\"serviceWorker\" in navigator) {\n var _navigator = navigator,\n serviceWorker = _navigator.serviceWorker;\n\n if (serviceWorker.controller === null) {\n // if SW is not installed, we need to record any prefetches\n // that happen so we can then add them to SW cache once installed\n prefetchedPathnames.push(path);\n } else {\n var resources = getResourceURLsForPathname(path);\n serviceWorker.controller.postMessage({\n gatsbyApi: \"setPathResources\",\n path: path,\n resources: resources\n });\n }\n }\n}\n\nexports.onRouteUpdate = function (_ref2) {\n var location = _ref2.location,\n getResourceURLsForPathname = _ref2.getResourceURLsForPathname;\n var pathname = location.pathname.replace(__BASE_PATH__, \"\");\n setPathResources(pathname, getResourceURLsForPathname);\n\n if (\"serviceWorker\" in navigator && navigator.serviceWorker.controller !== null) {\n navigator.serviceWorker.controller.postMessage({\n gatsbyApi: \"enableOfflineShell\"\n });\n }\n};\n\nexports.onPostPrefetchPathname = function (_ref3) {\n var pathname = _ref3.pathname,\n getResourceURLsForPathname = _ref3.getResourceURLsForPathname;\n setPathResources(pathname, getResourceURLsForPathname);\n};","import React, { forwardRef } from 'react'\nimport PropTypes from 'prop-types'\nimport { Link } from 'gatsby'\n\nimport { shouldNavigate } from '../utils/shouldNavigate'\nimport { triggerTransition } from '../utils/triggerTransition'\nimport { Consumer } from '../context/createTransitionContext'\n\nif (typeof forwardRef === 'undefined') {\n\tforwardRef = C => C\n}\n\nconst TransitionLink = forwardRef(\n\t(\n\t\t{\n\t\t\tto,\n\t\t\tchildren,\n\t\t\texit,\n\t\t\tentry,\n\t\t\tactiveStyle,\n\t\t\tpartiallyActive,\n\t\t\tstyle,\n\t\t\tclassName,\n\t\t\tactiveClassName,\n\t\t\tstate,\n\t\t\tonClick,\n\t\t\ttrigger,\n\t\t\treplace,\n\t\t\tinnerRef,\n\t\t\tpreventScrollJump,\n\t\t\t...rest\n\t\t},\n\t\tref\n\t) => {\n\t\treturn (\n\t\t\t\n\t\t\t\t{({ disableAnimation, ...context }) => (\n\t\t\t\t\t {\n\t\t\t\t\t\t\t// If the user has set their browser or OS to prefers-reduced-motion\n\t\t\t\t\t\t\t// we should respect that.\n\t\t\t\t\t\t\tif (disableAnimation) {\n\t\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst weShouldNavigate = shouldNavigate(event)\n\n\t\t\t\t\t\t\tif (weShouldNavigate) {\n\t\t\t\t\t\t\t\ttriggerTransition({\n\t\t\t\t\t\t\t\t\tevent,\n\t\t\t\t\t\t\t\t\tto,\n\t\t\t\t\t\t\t\t\texit,\n\t\t\t\t\t\t\t\t\tentry,\n\t\t\t\t\t\t\t\t\ttrigger,\n\t\t\t\t\t\t\t\t\treplace,\n\t\t\t\t\t\t\t\t\tpreventScrollJump,\n\t\t\t\t\t\t\t\t\tlinkState: state,\n\t\t\t\t\t\t\t\t\t...context,\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (typeof onClick === 'function') {\n\t\t\t\t\t\t\t\tonClick(event, weShouldNavigate)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tto={to} // use gatsby link so prefetching still happens. this is prevent defaulted in triggertransition\n\t\t\t\t\t\tref={ref || innerRef}\n\t\t\t\t\t\t{...rest}>\n\t\t\t\t\t\t{children}\n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t\n\t\t)\n\t}\n)\n\nTransitionLink.propTypes = {\n\tto: PropTypes.string.isRequired,\n\texitLength: PropTypes.number,\n\tentryDelay: PropTypes.number,\n\texitFn: PropTypes.func,\n\tentryState: PropTypes.object,\n}\n\nexport { TransitionLink }\n","/*!\n * CSSPlugin 3.6.1\n * https://greensock.com\n *\n * Copyright 2008-2021, GreenSock. All rights reserved.\n * Subject to the terms at https://greensock.com/standard-license or for\n * Club GreenSock members, the agreement issued with that membership.\n * @author: Jack Doyle, jack@greensock.com\n*/\n\n/* eslint-disable */\nimport { gsap, _getProperty, _numExp, _numWithUnitExp, getUnit, _isString, _isUndefined, _renderComplexString, _relExp, _forEachName, _sortPropTweensByPriority, _colorStringFilter, _checkPlugin, _replaceRandom, _plugins, GSCache, PropTween, _config, _ticker, _round, _missingPlugin, _getSetter, _getCache, _colorExp, _setDefaults, _removeLinkedListItem //for the commented-out className feature.\n} from \"./gsap-core.js\";\nvar _win,\n _doc,\n _docElement,\n _pluginInitted,\n _tempDiv,\n _tempDivStyler,\n _recentSetterPlugin,\n _windowExists = function _windowExists() {\n return typeof window !== \"undefined\";\n },\n _transformProps = {},\n _RAD2DEG = 180 / Math.PI,\n _DEG2RAD = Math.PI / 180,\n _atan2 = Math.atan2,\n _bigNum = 1e8,\n _capsExp = /([A-Z])/g,\n _horizontalExp = /(?:left|right|width|margin|padding|x)/i,\n _complexExp = /[\\s,\\(]\\S/,\n _propertyAliases = {\n autoAlpha: \"opacity,visibility\",\n scale: \"scaleX,scaleY\",\n alpha: \"opacity\"\n },\n _renderCSSProp = function _renderCSSProp(ratio, data) {\n return data.set(data.t, data.p, Math.round((data.s + data.c * ratio) * 10000) / 10000 + data.u, data);\n },\n _renderPropWithEnd = function _renderPropWithEnd(ratio, data) {\n return data.set(data.t, data.p, ratio === 1 ? data.e : Math.round((data.s + data.c * ratio) * 10000) / 10000 + data.u, data);\n },\n _renderCSSPropWithBeginning = function _renderCSSPropWithBeginning(ratio, data) {\n return data.set(data.t, data.p, ratio ? Math.round((data.s + data.c * ratio) * 10000) / 10000 + data.u : data.b, data);\n },\n //if units change, we need a way to render the original unit/value when the tween goes all the way back to the beginning (ratio:0)\n _renderRoundedCSSProp = function _renderRoundedCSSProp(ratio, data) {\n var value = data.s + data.c * ratio;\n data.set(data.t, data.p, ~~(value + (value < 0 ? -.5 : .5)) + data.u, data);\n },\n _renderNonTweeningValue = function _renderNonTweeningValue(ratio, data) {\n return data.set(data.t, data.p, ratio ? data.e : data.b, data);\n },\n _renderNonTweeningValueOnlyAtEnd = function _renderNonTweeningValueOnlyAtEnd(ratio, data) {\n return data.set(data.t, data.p, ratio !== 1 ? data.b : data.e, data);\n },\n _setterCSSStyle = function _setterCSSStyle(target, property, value) {\n return target.style[property] = value;\n },\n _setterCSSProp = function _setterCSSProp(target, property, value) {\n return target.style.setProperty(property, value);\n },\n _setterTransform = function _setterTransform(target, property, value) {\n return target._gsap[property] = value;\n },\n _setterScale = function _setterScale(target, property, value) {\n return target._gsap.scaleX = target._gsap.scaleY = value;\n },\n _setterScaleWithRender = function _setterScaleWithRender(target, property, value, data, ratio) {\n var cache = target._gsap;\n cache.scaleX = cache.scaleY = value;\n cache.renderTransform(ratio, cache);\n },\n _setterTransformWithRender = function _setterTransformWithRender(target, property, value, data, ratio) {\n var cache = target._gsap;\n cache[property] = value;\n cache.renderTransform(ratio, cache);\n },\n _transformProp = \"transform\",\n _transformOriginProp = _transformProp + \"Origin\",\n _supports3D,\n _createElement = function _createElement(type, ns) {\n var e = _doc.createElementNS ? _doc.createElementNS((ns || \"http://www.w3.org/1999/xhtml\").replace(/^https/, \"http\"), type) : _doc.createElement(type); //some servers swap in https for http in the namespace which can break things, making \"style\" inaccessible.\n\n return e.style ? e : _doc.createElement(type); //some environments won't allow access to the element's style when created with a namespace in which case we default to the standard createElement() to work around the issue. Also note that when GSAP is embedded directly inside an SVG file, createElement() won't allow access to the style object in Firefox (see https://greensock.com/forums/topic/20215-problem-using-tweenmax-in-standalone-self-containing-svg-file-err-cannot-set-property-csstext-of-undefined/).\n },\n _getComputedProperty = function _getComputedProperty(target, property, skipPrefixFallback) {\n var cs = getComputedStyle(target);\n return cs[property] || cs.getPropertyValue(property.replace(_capsExp, \"-$1\").toLowerCase()) || cs.getPropertyValue(property) || !skipPrefixFallback && _getComputedProperty(target, _checkPropPrefix(property) || property, 1) || \"\"; //css variables may not need caps swapped out for dashes and lowercase.\n },\n _prefixes = \"O,Moz,ms,Ms,Webkit\".split(\",\"),\n _checkPropPrefix = function _checkPropPrefix(property, element, preferPrefix) {\n var e = element || _tempDiv,\n s = e.style,\n i = 5;\n if (property in s && !preferPrefix) {\n return property;\n }\n property = property.charAt(0).toUpperCase() + property.substr(1);\n while (i-- && !(_prefixes[i] + property in s)) {}\n return i < 0 ? null : (i === 3 ? \"ms\" : i >= 0 ? _prefixes[i] : \"\") + property;\n },\n _initCore = function _initCore() {\n if (_windowExists() && window.document) {\n _win = window;\n _doc = _win.document;\n _docElement = _doc.documentElement;\n _tempDiv = _createElement(\"div\") || {\n style: {}\n };\n _tempDivStyler = _createElement(\"div\");\n _transformProp = _checkPropPrefix(_transformProp);\n _transformOriginProp = _transformProp + \"Origin\";\n _tempDiv.style.cssText = \"border-width:0;line-height:0;position:absolute;padding:0\"; //make sure to override certain properties that may contaminate measurements, in case the user has overreaching style sheets.\n\n _supports3D = !!_checkPropPrefix(\"perspective\");\n _pluginInitted = 1;\n }\n },\n _getBBoxHack = function _getBBoxHack(swapIfPossible) {\n //works around issues in some browsers (like Firefox) that don't correctly report getBBox() on SVG elements inside a element and/or . We try creating an SVG, adding it to the documentElement and toss the element in there so that it's definitely part of the rendering tree, then grab the bbox and if it works, we actually swap out the original getBBox() method for our own that does these extra steps whenever getBBox is needed. This helps ensure that performance is optimal (only do all these extra steps when absolutely necessary...most elements don't need it).\n var svg = _createElement(\"svg\", this.ownerSVGElement && this.ownerSVGElement.getAttribute(\"xmlns\") || \"http://www.w3.org/2000/svg\"),\n oldParent = this.parentNode,\n oldSibling = this.nextSibling,\n oldCSS = this.style.cssText,\n bbox;\n _docElement.appendChild(svg);\n svg.appendChild(this);\n this.style.display = \"block\";\n if (swapIfPossible) {\n try {\n bbox = this.getBBox();\n this._gsapBBox = this.getBBox; //store the original\n\n this.getBBox = _getBBoxHack;\n } catch (e) {}\n } else if (this._gsapBBox) {\n bbox = this._gsapBBox();\n }\n if (oldParent) {\n if (oldSibling) {\n oldParent.insertBefore(this, oldSibling);\n } else {\n oldParent.appendChild(this);\n }\n }\n _docElement.removeChild(svg);\n this.style.cssText = oldCSS;\n return bbox;\n },\n _getAttributeFallbacks = function _getAttributeFallbacks(target, attributesArray) {\n var i = attributesArray.length;\n while (i--) {\n if (target.hasAttribute(attributesArray[i])) {\n return target.getAttribute(attributesArray[i]);\n }\n }\n },\n _getBBox = function _getBBox(target) {\n var bounds;\n try {\n bounds = target.getBBox(); //Firefox throws errors if you try calling getBBox() on an SVG element that's not rendered (like in a or ). https://bugzilla.mozilla.org/show_bug.cgi?id=612118\n } catch (error) {\n bounds = _getBBoxHack.call(target, true);\n }\n bounds && (bounds.width || bounds.height) || target.getBBox === _getBBoxHack || (bounds = _getBBoxHack.call(target, true)); //some browsers (like Firefox) misreport the bounds if the element has zero width and height (it just assumes it's at x:0, y:0), thus we need to manually grab the position in that case.\n\n return bounds && !bounds.width && !bounds.x && !bounds.y ? {\n x: +_getAttributeFallbacks(target, [\"x\", \"cx\", \"x1\"]) || 0,\n y: +_getAttributeFallbacks(target, [\"y\", \"cy\", \"y1\"]) || 0,\n width: 0,\n height: 0\n } : bounds;\n },\n _isSVG = function _isSVG(e) {\n return !!(e.getCTM && (!e.parentNode || e.ownerSVGElement) && _getBBox(e));\n },\n //reports if the element is an SVG on which getBBox() actually works\n _removeProperty = function _removeProperty(target, property) {\n if (property) {\n var style = target.style;\n if (property in _transformProps && property !== _transformOriginProp) {\n property = _transformProp;\n }\n if (style.removeProperty) {\n if (property.substr(0, 2) === \"ms\" || property.substr(0, 6) === \"webkit\") {\n //Microsoft and some Webkit browsers don't conform to the standard of capitalizing the first prefix character, so we adjust so that when we prefix the caps with a dash, it's correct (otherwise it'd be \"ms-transform\" instead of \"-ms-transform\" for IE9, for example)\n property = \"-\" + property;\n }\n style.removeProperty(property.replace(_capsExp, \"-$1\").toLowerCase());\n } else {\n //note: old versions of IE use \"removeAttribute()\" instead of \"removeProperty()\"\n style.removeAttribute(property);\n }\n }\n },\n _addNonTweeningPT = function _addNonTweeningPT(plugin, target, property, beginning, end, onlySetAtEnd) {\n var pt = new PropTween(plugin._pt, target, property, 0, 1, onlySetAtEnd ? _renderNonTweeningValueOnlyAtEnd : _renderNonTweeningValue);\n plugin._pt = pt;\n pt.b = beginning;\n pt.e = end;\n plugin._props.push(property);\n return pt;\n },\n _nonConvertibleUnits = {\n deg: 1,\n rad: 1,\n turn: 1\n },\n //takes a single value like 20px and converts it to the unit specified, like \"%\", returning only the numeric amount.\n _convertToUnit = function _convertToUnit(target, property, value, unit) {\n var curValue = parseFloat(value) || 0,\n curUnit = (value + \"\").trim().substr((curValue + \"\").length) || \"px\",\n // some browsers leave extra whitespace at the beginning of CSS variables, hence the need to trim()\n style = _tempDiv.style,\n horizontal = _horizontalExp.test(property),\n isRootSVG = target.tagName.toLowerCase() === \"svg\",\n measureProperty = (isRootSVG ? \"client\" : \"offset\") + (horizontal ? \"Width\" : \"Height\"),\n amount = 100,\n toPixels = unit === \"px\",\n toPercent = unit === \"%\",\n px,\n parent,\n cache,\n isSVG;\n if (unit === curUnit || !curValue || _nonConvertibleUnits[unit] || _nonConvertibleUnits[curUnit]) {\n return curValue;\n }\n curUnit !== \"px\" && !toPixels && (curValue = _convertToUnit(target, property, value, \"px\"));\n isSVG = target.getCTM && _isSVG(target);\n if ((toPercent || curUnit === \"%\") && (_transformProps[property] || ~property.indexOf(\"adius\"))) {\n px = isSVG ? target.getBBox()[horizontal ? \"width\" : \"height\"] : target[measureProperty];\n return _round(toPercent ? curValue / px * amount : curValue / 100 * px);\n }\n style[horizontal ? \"width\" : \"height\"] = amount + (toPixels ? curUnit : unit);\n parent = ~property.indexOf(\"adius\") || unit === \"em\" && target.appendChild && !isRootSVG ? target : target.parentNode;\n if (isSVG) {\n parent = (target.ownerSVGElement || {}).parentNode;\n }\n if (!parent || parent === _doc || !parent.appendChild) {\n parent = _doc.body;\n }\n cache = parent._gsap;\n if (cache && toPercent && cache.width && horizontal && cache.time === _ticker.time) {\n return _round(curValue / cache.width * amount);\n } else {\n (toPercent || curUnit === \"%\") && (style.position = _getComputedProperty(target, \"position\"));\n parent === target && (style.position = \"static\"); // like for borderRadius, if it's a % we must have it relative to the target itself but that may not have position: relative or position: absolute in which case it'd go up the chain until it finds its offsetParent (bad). position: static protects against that.\n\n parent.appendChild(_tempDiv);\n px = _tempDiv[measureProperty];\n parent.removeChild(_tempDiv);\n style.position = \"absolute\";\n if (horizontal && toPercent) {\n cache = _getCache(parent);\n cache.time = _ticker.time;\n cache.width = parent[measureProperty];\n }\n }\n return _round(toPixels ? px * curValue / amount : px && curValue ? amount / px * curValue : 0);\n },\n _get = function _get(target, property, unit, uncache) {\n var value;\n _pluginInitted || _initCore();\n if (property in _propertyAliases && property !== \"transform\") {\n property = _propertyAliases[property];\n if (~property.indexOf(\",\")) {\n property = property.split(\",\")[0];\n }\n }\n if (_transformProps[property] && property !== \"transform\") {\n value = _parseTransform(target, uncache);\n value = property !== \"transformOrigin\" ? value[property] : _firstTwoOnly(_getComputedProperty(target, _transformOriginProp)) + \" \" + value.zOrigin + \"px\";\n } else {\n value = target.style[property];\n if (!value || value === \"auto\" || uncache || ~(value + \"\").indexOf(\"calc(\")) {\n value = _specialProps[property] && _specialProps[property](target, property, unit) || _getComputedProperty(target, property) || _getProperty(target, property) || (property === \"opacity\" ? 1 : 0); // note: some browsers, like Firefox, don't report borderRadius correctly! Instead, it only reports every corner like borderTopLeftRadius\n }\n }\n return unit && !~(value + \"\").trim().indexOf(\" \") ? _convertToUnit(target, property, value, unit) + unit : value;\n },\n _tweenComplexCSSString = function _tweenComplexCSSString(target, prop, start, end) {\n //note: we call _tweenComplexCSSString.call(pluginInstance...) to ensure that it's scoped properly. We may call it from within a plugin too, thus \"this\" would refer to the plugin.\n if (!start || start === \"none\") {\n // some browsers like Safari actually PREFER the prefixed property and mis-report the unprefixed value like clipPath (BUG). In other words, even though clipPath exists in the style (\"clipPath\" in target.style) and it's set in the CSS properly (along with -webkit-clip-path), Safari reports clipPath as \"none\" whereas WebkitClipPath reports accurately like \"ellipse(100% 0% at 50% 0%)\", so in this case we must SWITCH to using the prefixed property instead. See https://greensock.com/forums/topic/18310-clippath-doesnt-work-on-ios/\n var p = _checkPropPrefix(prop, target, 1),\n s = p && _getComputedProperty(target, p, 1);\n if (s && s !== start) {\n prop = p;\n start = s;\n } else if (prop === \"borderColor\") {\n start = _getComputedProperty(target, \"borderTopColor\"); // Firefox bug: always reports \"borderColor\" as \"\", so we must fall back to borderTopColor. See https://greensock.com/forums/topic/24583-how-to-return-colors-that-i-had-after-reverse/\n }\n }\n var pt = new PropTween(this._pt, target.style, prop, 0, 1, _renderComplexString),\n index = 0,\n matchIndex = 0,\n a,\n result,\n startValues,\n startNum,\n color,\n startValue,\n endValue,\n endNum,\n chunk,\n endUnit,\n startUnit,\n relative,\n endValues;\n pt.b = start;\n pt.e = end;\n start += \"\"; //ensure values are strings\n\n end += \"\";\n if (end === \"auto\") {\n target.style[prop] = end;\n end = _getComputedProperty(target, prop) || end;\n target.style[prop] = start;\n }\n a = [start, end];\n _colorStringFilter(a); //pass an array with the starting and ending values and let the filter do whatever it needs to the values. If colors are found, it returns true and then we must match where the color shows up order-wise because for things like boxShadow, sometimes the browser provides the computed values with the color FIRST, but the user provides it with the color LAST, so flip them if necessary. Same for drop-shadow().\n\n start = a[0];\n end = a[1];\n startValues = start.match(_numWithUnitExp) || [];\n endValues = end.match(_numWithUnitExp) || [];\n if (endValues.length) {\n while (result = _numWithUnitExp.exec(end)) {\n endValue = result[0];\n chunk = end.substring(index, result.index);\n if (color) {\n color = (color + 1) % 5;\n } else if (chunk.substr(-5) === \"rgba(\" || chunk.substr(-5) === \"hsla(\") {\n color = 1;\n }\n if (endValue !== (startValue = startValues[matchIndex++] || \"\")) {\n startNum = parseFloat(startValue) || 0;\n startUnit = startValue.substr((startNum + \"\").length);\n relative = endValue.charAt(1) === \"=\" ? +(endValue.charAt(0) + \"1\") : 0;\n if (relative) {\n endValue = endValue.substr(2);\n }\n endNum = parseFloat(endValue);\n endUnit = endValue.substr((endNum + \"\").length);\n index = _numWithUnitExp.lastIndex - endUnit.length;\n if (!endUnit) {\n //if something like \"perspective:300\" is passed in and we must add a unit to the end\n endUnit = endUnit || _config.units[prop] || startUnit;\n if (index === end.length) {\n end += endUnit;\n pt.e += endUnit;\n }\n }\n if (startUnit !== endUnit) {\n startNum = _convertToUnit(target, prop, startValue, endUnit) || 0;\n } //these nested PropTweens are handled in a special way - we'll never actually call a render or setter method on them. We'll just loop through them in the parent complex string PropTween's render method.\n\n pt._pt = {\n _next: pt._pt,\n p: chunk || matchIndex === 1 ? chunk : \",\",\n //note: SVG spec allows omission of comma/space when a negative sign is wedged between two numbers, like 2.5-5.3 instead of 2.5,-5.3 but when tweening, the negative value may switch to positive, so we insert the comma just in case.\n s: startNum,\n c: relative ? relative * endNum : endNum - startNum,\n m: color && color < 4 || prop === \"zIndex\" ? Math.round : 0\n };\n }\n }\n pt.c = index < end.length ? end.substring(index, end.length) : \"\"; //we use the \"c\" of the PropTween to store the final part of the string (after the last number)\n } else {\n pt.r = prop === \"display\" && end === \"none\" ? _renderNonTweeningValueOnlyAtEnd : _renderNonTweeningValue;\n }\n _relExp.test(end) && (pt.e = 0); //if the end string contains relative values or dynamic random(...) values, delete the end it so that on the final render we don't actually set it to the string with += or -= characters (forces it to use the calculated value).\n\n this._pt = pt; //start the linked list with this new PropTween. Remember, we call _tweenComplexCSSString.call(pluginInstance...) to ensure that it's scoped properly. We may call it from within another plugin too, thus \"this\" would refer to the plugin.\n\n return pt;\n },\n _keywordToPercent = {\n top: \"0%\",\n bottom: \"100%\",\n left: \"0%\",\n right: \"100%\",\n center: \"50%\"\n },\n _convertKeywordsToPercentages = function _convertKeywordsToPercentages(value) {\n var split = value.split(\" \"),\n x = split[0],\n y = split[1] || \"50%\";\n if (x === \"top\" || x === \"bottom\" || y === \"left\" || y === \"right\") {\n //the user provided them in the wrong order, so flip them\n value = x;\n x = y;\n y = value;\n }\n split[0] = _keywordToPercent[x] || x;\n split[1] = _keywordToPercent[y] || y;\n return split.join(\" \");\n },\n _renderClearProps = function _renderClearProps(ratio, data) {\n if (data.tween && data.tween._time === data.tween._dur) {\n var target = data.t,\n style = target.style,\n props = data.u,\n cache = target._gsap,\n prop,\n clearTransforms,\n i;\n if (props === \"all\" || props === true) {\n style.cssText = \"\";\n clearTransforms = 1;\n } else {\n props = props.split(\",\");\n i = props.length;\n while (--i > -1) {\n prop = props[i];\n if (_transformProps[prop]) {\n clearTransforms = 1;\n prop = prop === \"transformOrigin\" ? _transformOriginProp : _transformProp;\n }\n _removeProperty(target, prop);\n }\n }\n if (clearTransforms) {\n _removeProperty(target, _transformProp);\n if (cache) {\n cache.svg && target.removeAttribute(\"transform\");\n _parseTransform(target, 1); // force all the cached values back to \"normal\"/identity, otherwise if there's another tween that's already set to render transforms on this element, it could display the wrong values.\n\n cache.uncache = 1;\n }\n }\n }\n },\n // note: specialProps should return 1 if (and only if) they have a non-zero priority. It indicates we need to sort the linked list.\n _specialProps = {\n clearProps: function clearProps(plugin, target, property, endValue, tween) {\n if (tween.data !== \"isFromStart\") {\n var pt = plugin._pt = new PropTween(plugin._pt, target, property, 0, 0, _renderClearProps);\n pt.u = endValue;\n pt.pr = -10;\n pt.tween = tween;\n plugin._props.push(property);\n return 1;\n }\n }\n /* className feature (about 0.4kb gzipped).\n , className(plugin, target, property, endValue, tween) {\n \tlet _renderClassName = (ratio, data) => {\n \t\t\tdata.css.render(ratio, data.css);\n \t\t\tif (!ratio || ratio === 1) {\n \t\t\t\tlet inline = data.rmv,\n \t\t\t\t\ttarget = data.t,\n \t\t\t\t\tp;\n \t\t\t\ttarget.setAttribute(\"class\", ratio ? data.e : data.b);\n \t\t\t\tfor (p in inline) {\n \t\t\t\t\t_removeProperty(target, p);\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\t_getAllStyles = (target) => {\n \t\t\tlet styles = {},\n \t\t\t\tcomputed = getComputedStyle(target),\n \t\t\t\tp;\n \t\t\tfor (p in computed) {\n \t\t\t\tif (isNaN(p) && p !== \"cssText\" && p !== \"length\") {\n \t\t\t\t\tstyles[p] = computed[p];\n \t\t\t\t}\n \t\t\t}\n \t\t\t_setDefaults(styles, _parseTransform(target, 1));\n \t\t\treturn styles;\n \t\t},\n \t\tstartClassList = target.getAttribute(\"class\"),\n \t\tstyle = target.style,\n \t\tcssText = style.cssText,\n \t\tcache = target._gsap,\n \t\tclassPT = cache.classPT,\n \t\tinlineToRemoveAtEnd = {},\n \t\tdata = {t:target, plugin:plugin, rmv:inlineToRemoveAtEnd, b:startClassList, e:(endValue.charAt(1) !== \"=\") ? endValue : startClassList.replace(new RegExp(\"(?:\\\\s|^)\" + endValue.substr(2) + \"(?![\\\\w-])\"), \"\") + ((endValue.charAt(0) === \"+\") ? \" \" + endValue.substr(2) : \"\")},\n \t\tchangingVars = {},\n \t\tstartVars = _getAllStyles(target),\n \t\ttransformRelated = /(transform|perspective)/i,\n \t\tendVars, p;\n \tif (classPT) {\n \t\tclassPT.r(1, classPT.d);\n \t\t_removeLinkedListItem(classPT.d.plugin, classPT, \"_pt\");\n \t}\n \ttarget.setAttribute(\"class\", data.e);\n \tendVars = _getAllStyles(target, true);\n \ttarget.setAttribute(\"class\", startClassList);\n \tfor (p in endVars) {\n \t\tif (endVars[p] !== startVars[p] && !transformRelated.test(p)) {\n \t\t\tchangingVars[p] = endVars[p];\n \t\t\tif (!style[p] && style[p] !== \"0\") {\n \t\t\t\tinlineToRemoveAtEnd[p] = 1;\n \t\t\t}\n \t\t}\n \t}\n \tcache.classPT = plugin._pt = new PropTween(plugin._pt, target, \"className\", 0, 0, _renderClassName, data, 0, -11);\n \tif (style.cssText !== cssText) { //only apply if things change. Otherwise, in cases like a background-image that's pulled dynamically, it could cause a refresh. See https://greensock.com/forums/topic/20368-possible-gsap-bug-switching-classnames-in-chrome/.\n \t\tstyle.cssText = cssText; //we recorded cssText before we swapped classes and ran _getAllStyles() because in cases when a className tween is overwritten, we remove all the related tweening properties from that class change (otherwise class-specific stuff can't override properties we've directly set on the target's style object due to specificity).\n \t}\n \t_parseTransform(target, true); //to clear the caching of transforms\n \tdata.css = new gsap.plugins.css();\n \tdata.css.init(target, changingVars, tween);\n \tplugin._props.push(...data.css._props);\n \treturn 1;\n }\n */\n },\n /*\n * --------------------------------------------------------------------------------------\n * TRANSFORMS\n * --------------------------------------------------------------------------------------\n */\n _identity2DMatrix = [1, 0, 0, 1, 0, 0],\n _rotationalProperties = {},\n _isNullTransform = function _isNullTransform(value) {\n return value === \"matrix(1, 0, 0, 1, 0, 0)\" || value === \"none\" || !value;\n },\n _getComputedTransformMatrixAsArray = function _getComputedTransformMatrixAsArray(target) {\n var matrixString = _getComputedProperty(target, _transformProp);\n return _isNullTransform(matrixString) ? _identity2DMatrix : matrixString.substr(7).match(_numExp).map(_round);\n },\n _getMatrix = function _getMatrix(target, force2D) {\n var cache = target._gsap || _getCache(target),\n style = target.style,\n matrix = _getComputedTransformMatrixAsArray(target),\n parent,\n nextSibling,\n temp,\n addedToDOM;\n if (cache.svg && target.getAttribute(\"transform\")) {\n temp = target.transform.baseVal.consolidate().matrix; //ensures that even complex values like \"translate(50,60) rotate(135,0,0)\" are parsed because it mashes it into a matrix.\n\n matrix = [temp.a, temp.b, temp.c, temp.d, temp.e, temp.f];\n return matrix.join(\",\") === \"1,0,0,1,0,0\" ? _identity2DMatrix : matrix;\n } else if (matrix === _identity2DMatrix && !target.offsetParent && target !== _docElement && !cache.svg) {\n //note: if offsetParent is null, that means the element isn't in the normal document flow, like if it has display:none or one of its ancestors has display:none). Firefox returns null for getComputedStyle() if the element is in an iframe that has display:none. https://bugzilla.mozilla.org/show_bug.cgi?id=548397\n //browsers don't report transforms accurately unless the element is in the DOM and has a display value that's not \"none\". Firefox and Microsoft browsers have a partial bug where they'll report transforms even if display:none BUT not any percentage-based values like translate(-50%, 8px) will be reported as if it's translate(0, 8px).\n temp = style.display;\n style.display = \"block\";\n parent = target.parentNode;\n if (!parent || !target.offsetParent) {\n // note: in 3.3.0 we switched target.offsetParent to _doc.body.contains(target) to avoid [sometimes unnecessary] MutationObserver calls but that wasn't adequate because there are edge cases where nested position: fixed elements need to get reparented to accurately sense transforms. See https://github.com/greensock/GSAP/issues/388 and https://github.com/greensock/GSAP/issues/375\n addedToDOM = 1; //flag\n\n nextSibling = target.nextSibling;\n _docElement.appendChild(target); //we must add it to the DOM in order to get values properly\n }\n matrix = _getComputedTransformMatrixAsArray(target);\n temp ? style.display = temp : _removeProperty(target, \"display\");\n if (addedToDOM) {\n nextSibling ? parent.insertBefore(target, nextSibling) : parent ? parent.appendChild(target) : _docElement.removeChild(target);\n }\n }\n return force2D && matrix.length > 6 ? [matrix[0], matrix[1], matrix[4], matrix[5], matrix[12], matrix[13]] : matrix;\n },\n _applySVGOrigin = function _applySVGOrigin(target, origin, originIsAbsolute, smooth, matrixArray, pluginToAddPropTweensTo) {\n var cache = target._gsap,\n matrix = matrixArray || _getMatrix(target, true),\n xOriginOld = cache.xOrigin || 0,\n yOriginOld = cache.yOrigin || 0,\n xOffsetOld = cache.xOffset || 0,\n yOffsetOld = cache.yOffset || 0,\n a = matrix[0],\n b = matrix[1],\n c = matrix[2],\n d = matrix[3],\n tx = matrix[4],\n ty = matrix[5],\n originSplit = origin.split(\" \"),\n xOrigin = parseFloat(originSplit[0]) || 0,\n yOrigin = parseFloat(originSplit[1]) || 0,\n bounds,\n determinant,\n x,\n y;\n if (!originIsAbsolute) {\n bounds = _getBBox(target);\n xOrigin = bounds.x + (~originSplit[0].indexOf(\"%\") ? xOrigin / 100 * bounds.width : xOrigin);\n yOrigin = bounds.y + (~(originSplit[1] || originSplit[0]).indexOf(\"%\") ? yOrigin / 100 * bounds.height : yOrigin);\n } else if (matrix !== _identity2DMatrix && (determinant = a * d - b * c)) {\n //if it's zero (like if scaleX and scaleY are zero), skip it to avoid errors with dividing by zero.\n x = xOrigin * (d / determinant) + yOrigin * (-c / determinant) + (c * ty - d * tx) / determinant;\n y = xOrigin * (-b / determinant) + yOrigin * (a / determinant) - (a * ty - b * tx) / determinant;\n xOrigin = x;\n yOrigin = y;\n }\n if (smooth || smooth !== false && cache.smooth) {\n tx = xOrigin - xOriginOld;\n ty = yOrigin - yOriginOld;\n cache.xOffset = xOffsetOld + (tx * a + ty * c) - tx;\n cache.yOffset = yOffsetOld + (tx * b + ty * d) - ty;\n } else {\n cache.xOffset = cache.yOffset = 0;\n }\n cache.xOrigin = xOrigin;\n cache.yOrigin = yOrigin;\n cache.smooth = !!smooth;\n cache.origin = origin;\n cache.originIsAbsolute = !!originIsAbsolute;\n target.style[_transformOriginProp] = \"0px 0px\"; //otherwise, if someone sets an origin via CSS, it will likely interfere with the SVG transform attribute ones (because remember, we're baking the origin into the matrix() value).\n\n if (pluginToAddPropTweensTo) {\n _addNonTweeningPT(pluginToAddPropTweensTo, cache, \"xOrigin\", xOriginOld, xOrigin);\n _addNonTweeningPT(pluginToAddPropTweensTo, cache, \"yOrigin\", yOriginOld, yOrigin);\n _addNonTweeningPT(pluginToAddPropTweensTo, cache, \"xOffset\", xOffsetOld, cache.xOffset);\n _addNonTweeningPT(pluginToAddPropTweensTo, cache, \"yOffset\", yOffsetOld, cache.yOffset);\n }\n target.setAttribute(\"data-svg-origin\", xOrigin + \" \" + yOrigin);\n },\n _parseTransform = function _parseTransform(target, uncache) {\n var cache = target._gsap || new GSCache(target);\n if (\"x\" in cache && !uncache && !cache.uncache) {\n return cache;\n }\n var style = target.style,\n invertedScaleX = cache.scaleX < 0,\n px = \"px\",\n deg = \"deg\",\n origin = _getComputedProperty(target, _transformOriginProp) || \"0\",\n x,\n y,\n z,\n scaleX,\n scaleY,\n rotation,\n rotationX,\n rotationY,\n skewX,\n skewY,\n perspective,\n xOrigin,\n yOrigin,\n matrix,\n angle,\n cos,\n sin,\n a,\n b,\n c,\n d,\n a12,\n a22,\n t1,\n t2,\n t3,\n a13,\n a23,\n a33,\n a42,\n a43,\n a32;\n x = y = z = rotation = rotationX = rotationY = skewX = skewY = perspective = 0;\n scaleX = scaleY = 1;\n cache.svg = !!(target.getCTM && _isSVG(target));\n matrix = _getMatrix(target, cache.svg);\n if (cache.svg) {\n t1 = !cache.uncache && !uncache && target.getAttribute(\"data-svg-origin\");\n _applySVGOrigin(target, t1 || origin, !!t1 || cache.originIsAbsolute, cache.smooth !== false, matrix);\n }\n xOrigin = cache.xOrigin || 0;\n yOrigin = cache.yOrigin || 0;\n if (matrix !== _identity2DMatrix) {\n a = matrix[0]; //a11\n\n b = matrix[1]; //a21\n\n c = matrix[2]; //a31\n\n d = matrix[3]; //a41\n\n x = a12 = matrix[4];\n y = a22 = matrix[5]; //2D matrix\n\n if (matrix.length === 6) {\n scaleX = Math.sqrt(a * a + b * b);\n scaleY = Math.sqrt(d * d + c * c);\n rotation = a || b ? _atan2(b, a) * _RAD2DEG : 0; //note: if scaleX is 0, we cannot accurately measure rotation. Same for skewX with a scaleY of 0. Therefore, we default to the previously recorded value (or zero if that doesn't exist).\n\n skewX = c || d ? _atan2(c, d) * _RAD2DEG + rotation : 0;\n skewX && (scaleY *= Math.abs(Math.cos(skewX * _DEG2RAD)));\n if (cache.svg) {\n x -= xOrigin - (xOrigin * a + yOrigin * c);\n y -= yOrigin - (xOrigin * b + yOrigin * d);\n } //3D matrix\n } else {\n a32 = matrix[6];\n a42 = matrix[7];\n a13 = matrix[8];\n a23 = matrix[9];\n a33 = matrix[10];\n a43 = matrix[11];\n x = matrix[12];\n y = matrix[13];\n z = matrix[14];\n angle = _atan2(a32, a33);\n rotationX = angle * _RAD2DEG; //rotationX\n\n if (angle) {\n cos = Math.cos(-angle);\n sin = Math.sin(-angle);\n t1 = a12 * cos + a13 * sin;\n t2 = a22 * cos + a23 * sin;\n t3 = a32 * cos + a33 * sin;\n a13 = a12 * -sin + a13 * cos;\n a23 = a22 * -sin + a23 * cos;\n a33 = a32 * -sin + a33 * cos;\n a43 = a42 * -sin + a43 * cos;\n a12 = t1;\n a22 = t2;\n a32 = t3;\n } //rotationY\n\n angle = _atan2(-c, a33);\n rotationY = angle * _RAD2DEG;\n if (angle) {\n cos = Math.cos(-angle);\n sin = Math.sin(-angle);\n t1 = a * cos - a13 * sin;\n t2 = b * cos - a23 * sin;\n t3 = c * cos - a33 * sin;\n a43 = d * sin + a43 * cos;\n a = t1;\n b = t2;\n c = t3;\n } //rotationZ\n\n angle = _atan2(b, a);\n rotation = angle * _RAD2DEG;\n if (angle) {\n cos = Math.cos(angle);\n sin = Math.sin(angle);\n t1 = a * cos + b * sin;\n t2 = a12 * cos + a22 * sin;\n b = b * cos - a * sin;\n a22 = a22 * cos - a12 * sin;\n a = t1;\n a12 = t2;\n }\n if (rotationX && Math.abs(rotationX) + Math.abs(rotation) > 359.9) {\n //when rotationY is set, it will often be parsed as 180 degrees different than it should be, and rotationX and rotation both being 180 (it looks the same), so we adjust for that here.\n rotationX = rotation = 0;\n rotationY = 180 - rotationY;\n }\n scaleX = _round(Math.sqrt(a * a + b * b + c * c));\n scaleY = _round(Math.sqrt(a22 * a22 + a32 * a32));\n angle = _atan2(a12, a22);\n skewX = Math.abs(angle) > 0.0002 ? angle * _RAD2DEG : 0;\n perspective = a43 ? 1 / (a43 < 0 ? -a43 : a43) : 0;\n }\n if (cache.svg) {\n //sense if there are CSS transforms applied on an SVG element in which case we must overwrite them when rendering. The transform attribute is more reliable cross-browser, but we can't just remove the CSS ones because they may be applied in a CSS rule somewhere (not just inline).\n t1 = target.getAttribute(\"transform\");\n cache.forceCSS = target.setAttribute(\"transform\", \"\") || !_isNullTransform(_getComputedProperty(target, _transformProp));\n t1 && target.setAttribute(\"transform\", t1);\n }\n }\n if (Math.abs(skewX) > 90 && Math.abs(skewX) < 270) {\n if (invertedScaleX) {\n scaleX *= -1;\n skewX += rotation <= 0 ? 180 : -180;\n rotation += rotation <= 0 ? 180 : -180;\n } else {\n scaleY *= -1;\n skewX += skewX <= 0 ? 180 : -180;\n }\n }\n cache.x = x - ((cache.xPercent = x && (cache.xPercent || (Math.round(target.offsetWidth / 2) === Math.round(-x) ? -50 : 0))) ? target.offsetWidth * cache.xPercent / 100 : 0) + px;\n cache.y = y - ((cache.yPercent = y && (cache.yPercent || (Math.round(target.offsetHeight / 2) === Math.round(-y) ? -50 : 0))) ? target.offsetHeight * cache.yPercent / 100 : 0) + px;\n cache.z = z + px;\n cache.scaleX = _round(scaleX);\n cache.scaleY = _round(scaleY);\n cache.rotation = _round(rotation) + deg;\n cache.rotationX = _round(rotationX) + deg;\n cache.rotationY = _round(rotationY) + deg;\n cache.skewX = skewX + deg;\n cache.skewY = skewY + deg;\n cache.transformPerspective = perspective + px;\n if (cache.zOrigin = parseFloat(origin.split(\" \")[2]) || 0) {\n style[_transformOriginProp] = _firstTwoOnly(origin);\n }\n cache.xOffset = cache.yOffset = 0;\n cache.force3D = _config.force3D;\n cache.renderTransform = cache.svg ? _renderSVGTransforms : _supports3D ? _renderCSSTransforms : _renderNon3DTransforms;\n cache.uncache = 0;\n return cache;\n },\n _firstTwoOnly = function _firstTwoOnly(value) {\n return (value = value.split(\" \"))[0] + \" \" + value[1];\n },\n //for handling transformOrigin values, stripping out the 3rd dimension\n _addPxTranslate = function _addPxTranslate(target, start, value) {\n var unit = getUnit(start);\n return _round(parseFloat(start) + parseFloat(_convertToUnit(target, \"x\", value + \"px\", unit))) + unit;\n },\n _renderNon3DTransforms = function _renderNon3DTransforms(ratio, cache) {\n cache.z = \"0px\";\n cache.rotationY = cache.rotationX = \"0deg\";\n cache.force3D = 0;\n _renderCSSTransforms(ratio, cache);\n },\n _zeroDeg = \"0deg\",\n _zeroPx = \"0px\",\n _endParenthesis = \") \",\n _renderCSSTransforms = function _renderCSSTransforms(ratio, cache) {\n var _ref = cache || this,\n xPercent = _ref.xPercent,\n yPercent = _ref.yPercent,\n x = _ref.x,\n y = _ref.y,\n z = _ref.z,\n rotation = _ref.rotation,\n rotationY = _ref.rotationY,\n rotationX = _ref.rotationX,\n skewX = _ref.skewX,\n skewY = _ref.skewY,\n scaleX = _ref.scaleX,\n scaleY = _ref.scaleY,\n transformPerspective = _ref.transformPerspective,\n force3D = _ref.force3D,\n target = _ref.target,\n zOrigin = _ref.zOrigin,\n transforms = \"\",\n use3D = force3D === \"auto\" && ratio && ratio !== 1 || force3D === true; // Safari has a bug that causes it not to render 3D transform-origin values properly, so we force the z origin to 0, record it in the cache, and then do the math here to offset the translate values accordingly (basically do the 3D transform-origin part manually)\n\n if (zOrigin && (rotationX !== _zeroDeg || rotationY !== _zeroDeg)) {\n var angle = parseFloat(rotationY) * _DEG2RAD,\n a13 = Math.sin(angle),\n a33 = Math.cos(angle),\n cos;\n angle = parseFloat(rotationX) * _DEG2RAD;\n cos = Math.cos(angle);\n x = _addPxTranslate(target, x, a13 * cos * -zOrigin);\n y = _addPxTranslate(target, y, -Math.sin(angle) * -zOrigin);\n z = _addPxTranslate(target, z, a33 * cos * -zOrigin + zOrigin);\n }\n if (transformPerspective !== _zeroPx) {\n transforms += \"perspective(\" + transformPerspective + _endParenthesis;\n }\n if (xPercent || yPercent) {\n transforms += \"translate(\" + xPercent + \"%, \" + yPercent + \"%) \";\n }\n if (use3D || x !== _zeroPx || y !== _zeroPx || z !== _zeroPx) {\n transforms += z !== _zeroPx || use3D ? \"translate3d(\" + x + \", \" + y + \", \" + z + \") \" : \"translate(\" + x + \", \" + y + _endParenthesis;\n }\n if (rotation !== _zeroDeg) {\n transforms += \"rotate(\" + rotation + _endParenthesis;\n }\n if (rotationY !== _zeroDeg) {\n transforms += \"rotateY(\" + rotationY + _endParenthesis;\n }\n if (rotationX !== _zeroDeg) {\n transforms += \"rotateX(\" + rotationX + _endParenthesis;\n }\n if (skewX !== _zeroDeg || skewY !== _zeroDeg) {\n transforms += \"skew(\" + skewX + \", \" + skewY + _endParenthesis;\n }\n if (scaleX !== 1 || scaleY !== 1) {\n transforms += \"scale(\" + scaleX + \", \" + scaleY + _endParenthesis;\n }\n target.style[_transformProp] = transforms || \"translate(0, 0)\";\n },\n _renderSVGTransforms = function _renderSVGTransforms(ratio, cache) {\n var _ref2 = cache || this,\n xPercent = _ref2.xPercent,\n yPercent = _ref2.yPercent,\n x = _ref2.x,\n y = _ref2.y,\n rotation = _ref2.rotation,\n skewX = _ref2.skewX,\n skewY = _ref2.skewY,\n scaleX = _ref2.scaleX,\n scaleY = _ref2.scaleY,\n target = _ref2.target,\n xOrigin = _ref2.xOrigin,\n yOrigin = _ref2.yOrigin,\n xOffset = _ref2.xOffset,\n yOffset = _ref2.yOffset,\n forceCSS = _ref2.forceCSS,\n tx = parseFloat(x),\n ty = parseFloat(y),\n a11,\n a21,\n a12,\n a22,\n temp;\n rotation = parseFloat(rotation);\n skewX = parseFloat(skewX);\n skewY = parseFloat(skewY);\n if (skewY) {\n //for performance reasons, we combine all skewing into the skewX and rotation values. Remember, a skewY of 10 degrees looks the same as a rotation of 10 degrees plus a skewX of 10 degrees.\n skewY = parseFloat(skewY);\n skewX += skewY;\n rotation += skewY;\n }\n if (rotation || skewX) {\n rotation *= _DEG2RAD;\n skewX *= _DEG2RAD;\n a11 = Math.cos(rotation) * scaleX;\n a21 = Math.sin(rotation) * scaleX;\n a12 = Math.sin(rotation - skewX) * -scaleY;\n a22 = Math.cos(rotation - skewX) * scaleY;\n if (skewX) {\n skewY *= _DEG2RAD;\n temp = Math.tan(skewX - skewY);\n temp = Math.sqrt(1 + temp * temp);\n a12 *= temp;\n a22 *= temp;\n if (skewY) {\n temp = Math.tan(skewY);\n temp = Math.sqrt(1 + temp * temp);\n a11 *= temp;\n a21 *= temp;\n }\n }\n a11 = _round(a11);\n a21 = _round(a21);\n a12 = _round(a12);\n a22 = _round(a22);\n } else {\n a11 = scaleX;\n a22 = scaleY;\n a21 = a12 = 0;\n }\n if (tx && !~(x + \"\").indexOf(\"px\") || ty && !~(y + \"\").indexOf(\"px\")) {\n tx = _convertToUnit(target, \"x\", x, \"px\");\n ty = _convertToUnit(target, \"y\", y, \"px\");\n }\n if (xOrigin || yOrigin || xOffset || yOffset) {\n tx = _round(tx + xOrigin - (xOrigin * a11 + yOrigin * a12) + xOffset);\n ty = _round(ty + yOrigin - (xOrigin * a21 + yOrigin * a22) + yOffset);\n }\n if (xPercent || yPercent) {\n //The SVG spec doesn't support percentage-based translation in the \"transform\" attribute, so we merge it into the translation to simulate it.\n temp = target.getBBox();\n tx = _round(tx + xPercent / 100 * temp.width);\n ty = _round(ty + yPercent / 100 * temp.height);\n }\n temp = \"matrix(\" + a11 + \",\" + a21 + \",\" + a12 + \",\" + a22 + \",\" + tx + \",\" + ty + \")\";\n target.setAttribute(\"transform\", temp);\n forceCSS && (target.style[_transformProp] = temp); //some browsers prioritize CSS transforms over the transform attribute. When we sense that the user has CSS transforms applied, we must overwrite them this way (otherwise some browser simply won't render the transform attribute changes!)\n },\n _addRotationalPropTween = function _addRotationalPropTween(plugin, target, property, startNum, endValue, relative) {\n var cap = 360,\n isString = _isString(endValue),\n endNum = parseFloat(endValue) * (isString && ~endValue.indexOf(\"rad\") ? _RAD2DEG : 1),\n change = relative ? endNum * relative : endNum - startNum,\n finalValue = startNum + change + \"deg\",\n direction,\n pt;\n if (isString) {\n direction = endValue.split(\"_\")[1];\n if (direction === \"short\") {\n change %= cap;\n if (change !== change % (cap / 2)) {\n change += change < 0 ? cap : -cap;\n }\n }\n if (direction === \"cw\" && change < 0) {\n change = (change + cap * _bigNum) % cap - ~~(change / cap) * cap;\n } else if (direction === \"ccw\" && change > 0) {\n change = (change - cap * _bigNum) % cap - ~~(change / cap) * cap;\n }\n }\n plugin._pt = pt = new PropTween(plugin._pt, target, property, startNum, change, _renderPropWithEnd);\n pt.e = finalValue;\n pt.u = \"deg\";\n plugin._props.push(property);\n return pt;\n },\n _assign = function _assign(target, source) {\n // Internet Explorer doesn't have Object.assign(), so we recreate it here.\n for (var p in source) {\n target[p] = source[p];\n }\n return target;\n },\n _addRawTransformPTs = function _addRawTransformPTs(plugin, transforms, target) {\n //for handling cases where someone passes in a whole transform string, like transform: \"scale(2, 3) rotate(20deg) translateY(30em)\"\n var startCache = _assign({}, target._gsap),\n exclude = \"perspective,force3D,transformOrigin,svgOrigin\",\n style = target.style,\n endCache,\n p,\n startValue,\n endValue,\n startNum,\n endNum,\n startUnit,\n endUnit;\n if (startCache.svg) {\n startValue = target.getAttribute(\"transform\");\n target.setAttribute(\"transform\", \"\");\n style[_transformProp] = transforms;\n endCache = _parseTransform(target, 1);\n _removeProperty(target, _transformProp);\n target.setAttribute(\"transform\", startValue);\n } else {\n startValue = getComputedStyle(target)[_transformProp];\n style[_transformProp] = transforms;\n endCache = _parseTransform(target, 1);\n style[_transformProp] = startValue;\n }\n for (p in _transformProps) {\n startValue = startCache[p];\n endValue = endCache[p];\n if (startValue !== endValue && exclude.indexOf(p) < 0) {\n //tweening to no perspective gives very unintuitive results - just keep the same perspective in that case.\n startUnit = getUnit(startValue);\n endUnit = getUnit(endValue);\n startNum = startUnit !== endUnit ? _convertToUnit(target, p, startValue, endUnit) : parseFloat(startValue);\n endNum = parseFloat(endValue);\n plugin._pt = new PropTween(plugin._pt, endCache, p, startNum, endNum - startNum, _renderCSSProp);\n plugin._pt.u = endUnit || 0;\n plugin._props.push(p);\n }\n }\n _assign(endCache, startCache);\n }; // handle splitting apart padding, margin, borderWidth, and borderRadius into their 4 components. Firefox, for example, won't report borderRadius correctly - it will only do borderTopLeftRadius and the other corners. We also want to handle paddingTop, marginLeft, borderRightWidth, etc.\n\n_forEachName(\"padding,margin,Width,Radius\", function (name, index) {\n var t = \"Top\",\n r = \"Right\",\n b = \"Bottom\",\n l = \"Left\",\n props = (index < 3 ? [t, r, b, l] : [t + l, t + r, b + r, b + l]).map(function (side) {\n return index < 2 ? name + side : \"border\" + side + name;\n });\n _specialProps[index > 1 ? \"border\" + name : name] = function (plugin, target, property, endValue, tween) {\n var a, vars;\n if (arguments.length < 4) {\n // getter, passed target, property, and unit (from _get())\n a = props.map(function (prop) {\n return _get(plugin, prop, property);\n });\n vars = a.join(\" \");\n return vars.split(a[0]).length === 5 ? a[0] : vars;\n }\n a = (endValue + \"\").split(\" \");\n vars = {};\n props.forEach(function (prop, i) {\n return vars[prop] = a[i] = a[i] || a[(i - 1) / 2 | 0];\n });\n plugin.init(target, vars, tween);\n };\n});\nexport var CSSPlugin = {\n name: \"css\",\n register: _initCore,\n targetTest: function targetTest(target) {\n return target.style && target.nodeType;\n },\n init: function init(target, vars, tween, index, targets) {\n var props = this._props,\n style = target.style,\n startAt = tween.vars.startAt,\n startValue,\n endValue,\n endNum,\n startNum,\n type,\n specialProp,\n p,\n startUnit,\n endUnit,\n relative,\n isTransformRelated,\n transformPropTween,\n cache,\n smooth,\n hasPriority;\n _pluginInitted || _initCore();\n for (p in vars) {\n if (p === \"autoRound\") {\n continue;\n }\n endValue = vars[p];\n if (_plugins[p] && _checkPlugin(p, vars, tween, index, target, targets)) {\n // plugins\n continue;\n }\n type = typeof endValue;\n specialProp = _specialProps[p];\n if (type === \"function\") {\n endValue = endValue.call(tween, index, target, targets);\n type = typeof endValue;\n }\n if (type === \"string\" && ~endValue.indexOf(\"random(\")) {\n endValue = _replaceRandom(endValue);\n }\n if (specialProp) {\n specialProp(this, target, p, endValue, tween) && (hasPriority = 1);\n } else if (p.substr(0, 2) === \"--\") {\n //CSS variable\n startValue = (getComputedStyle(target).getPropertyValue(p) + \"\").trim();\n endValue += \"\";\n _colorExp.lastIndex = 0;\n if (!_colorExp.test(startValue)) {\n // colors don't have units\n startUnit = getUnit(startValue);\n endUnit = getUnit(endValue);\n }\n endUnit ? startUnit !== endUnit && (startValue = _convertToUnit(target, p, startValue, endUnit) + endUnit) : startUnit && (endValue += startUnit);\n this.add(style, \"setProperty\", startValue, endValue, index, targets, 0, 0, p);\n } else if (type !== \"undefined\") {\n if (startAt && p in startAt) {\n // in case someone hard-codes a complex value as the start, like top: \"calc(2vh / 2)\". Without this, it'd use the computed value (always in px)\n startValue = typeof startAt[p] === \"function\" ? startAt[p].call(tween, index, target, targets) : startAt[p];\n p in _config.units && !getUnit(startValue) && (startValue += _config.units[p]); // for cases when someone passes in a unitless value like {x: 100}; if we try setting translate(100, 0px) it won't work.\n\n (startValue + \"\").charAt(1) === \"=\" && (startValue = _get(target, p)); // can't work with relative values\n } else {\n startValue = _get(target, p);\n }\n startNum = parseFloat(startValue);\n relative = type === \"string\" && endValue.charAt(1) === \"=\" ? +(endValue.charAt(0) + \"1\") : 0;\n relative && (endValue = endValue.substr(2));\n endNum = parseFloat(endValue);\n if (p in _propertyAliases) {\n if (p === \"autoAlpha\") {\n //special case where we control the visibility along with opacity. We still allow the opacity value to pass through and get tweened.\n if (startNum === 1 && _get(target, \"visibility\") === \"hidden\" && endNum) {\n //if visibility is initially set to \"hidden\", we should interpret that as intent to make opacity 0 (a convenience)\n startNum = 0;\n }\n _addNonTweeningPT(this, style, \"visibility\", startNum ? \"inherit\" : \"hidden\", endNum ? \"inherit\" : \"hidden\", !endNum);\n }\n if (p !== \"scale\" && p !== \"transform\") {\n p = _propertyAliases[p];\n ~p.indexOf(\",\") && (p = p.split(\",\")[0]);\n }\n }\n isTransformRelated = p in _transformProps; //--- TRANSFORM-RELATED ---\n\n if (isTransformRelated) {\n if (!transformPropTween) {\n cache = target._gsap;\n cache.renderTransform && !vars.parseTransform || _parseTransform(target, vars.parseTransform); // if, for example, gsap.set(... {transform:\"translateX(50vw)\"}), the _get() call doesn't parse the transform, thus cache.renderTransform won't be set yet so force the parsing of the transform here.\n\n smooth = vars.smoothOrigin !== false && cache.smooth;\n transformPropTween = this._pt = new PropTween(this._pt, style, _transformProp, 0, 1, cache.renderTransform, cache, 0, -1); //the first time through, create the rendering PropTween so that it runs LAST (in the linked list, we keep adding to the beginning)\n\n transformPropTween.dep = 1; //flag it as dependent so that if things get killed/overwritten and this is the only PropTween left, we can safely kill the whole tween.\n }\n if (p === \"scale\") {\n this._pt = new PropTween(this._pt, cache, \"scaleY\", cache.scaleY, relative ? relative * endNum : endNum - cache.scaleY);\n props.push(\"scaleY\", p);\n p += \"X\";\n } else if (p === \"transformOrigin\") {\n endValue = _convertKeywordsToPercentages(endValue); //in case something like \"left top\" or \"bottom right\" is passed in. Convert to percentages.\n\n if (cache.svg) {\n _applySVGOrigin(target, endValue, 0, smooth, 0, this);\n } else {\n endUnit = parseFloat(endValue.split(\" \")[2]) || 0; //handle the zOrigin separately!\n\n endUnit !== cache.zOrigin && _addNonTweeningPT(this, cache, \"zOrigin\", cache.zOrigin, endUnit);\n _addNonTweeningPT(this, style, p, _firstTwoOnly(startValue), _firstTwoOnly(endValue));\n }\n continue;\n } else if (p === \"svgOrigin\") {\n _applySVGOrigin(target, endValue, 1, smooth, 0, this);\n continue;\n } else if (p in _rotationalProperties) {\n _addRotationalPropTween(this, cache, p, startNum, endValue, relative);\n continue;\n } else if (p === \"smoothOrigin\") {\n _addNonTweeningPT(this, cache, \"smooth\", cache.smooth, endValue);\n continue;\n } else if (p === \"force3D\") {\n cache[p] = endValue;\n continue;\n } else if (p === \"transform\") {\n _addRawTransformPTs(this, endValue, target);\n continue;\n }\n } else if (!(p in style)) {\n p = _checkPropPrefix(p) || p;\n }\n if (isTransformRelated || (endNum || endNum === 0) && (startNum || startNum === 0) && !_complexExp.test(endValue) && p in style) {\n startUnit = (startValue + \"\").substr((startNum + \"\").length);\n endNum || (endNum = 0); // protect against NaN\n\n endUnit = getUnit(endValue) || (p in _config.units ? _config.units[p] : startUnit);\n startUnit !== endUnit && (startNum = _convertToUnit(target, p, startValue, endUnit));\n this._pt = new PropTween(this._pt, isTransformRelated ? cache : style, p, startNum, relative ? relative * endNum : endNum - startNum, !isTransformRelated && (endUnit === \"px\" || p === \"zIndex\") && vars.autoRound !== false ? _renderRoundedCSSProp : _renderCSSProp);\n this._pt.u = endUnit || 0;\n if (startUnit !== endUnit) {\n //when the tween goes all the way back to the beginning, we need to revert it to the OLD/ORIGINAL value (with those units). We record that as a \"b\" (beginning) property and point to a render method that handles that. (performance optimization)\n this._pt.b = startValue;\n this._pt.r = _renderCSSPropWithBeginning;\n }\n } else if (!(p in style)) {\n if (p in target) {\n //maybe it's not a style - it could be a property added directly to an element in which case we'll try to animate that.\n this.add(target, p, target[p], endValue, index, targets);\n } else {\n _missingPlugin(p, endValue);\n continue;\n }\n } else {\n _tweenComplexCSSString.call(this, target, p, startValue, endValue);\n }\n props.push(p);\n }\n }\n hasPriority && _sortPropTweensByPriority(this);\n },\n get: _get,\n aliases: _propertyAliases,\n getSetter: function getSetter(target, property, plugin) {\n //returns a setter function that accepts target, property, value and applies it accordingly. Remember, properties like \"x\" aren't as simple as target.style.property = value because they've got to be applied to a proxy object and then merged into a transform string in a renderer.\n var p = _propertyAliases[property];\n p && p.indexOf(\",\") < 0 && (property = p);\n return property in _transformProps && property !== _transformOriginProp && (target._gsap.x || _get(target, \"x\")) ? plugin && _recentSetterPlugin === plugin ? property === \"scale\" ? _setterScale : _setterTransform : (_recentSetterPlugin = plugin || {}) && (property === \"scale\" ? _setterScaleWithRender : _setterTransformWithRender) : target.style && !_isUndefined(target.style[property]) ? _setterCSSStyle : ~property.indexOf(\"-\") ? _setterCSSProp : _getSetter(target, property);\n },\n core: {\n _removeProperty: _removeProperty,\n _getMatrix: _getMatrix\n }\n};\ngsap.utils.checkPrefix = _checkPropPrefix;\n(function (positionAndScale, rotation, others, aliases) {\n var all = _forEachName(positionAndScale + \",\" + rotation + \",\" + others, function (name) {\n _transformProps[name] = 1;\n });\n _forEachName(rotation, function (name) {\n _config.units[name] = \"deg\";\n _rotationalProperties[name] = 1;\n });\n _propertyAliases[all[13]] = positionAndScale + \",\" + rotation;\n _forEachName(aliases, function (name) {\n var split = name.split(\":\");\n _propertyAliases[split[1]] = all[split[0]];\n });\n})(\"x,y,z,scale,scaleX,scaleY,xPercent,yPercent\", \"rotation,rotationX,rotationY,skewX,skewY\", \"transform,transformOrigin,svgOrigin,force3D,smoothOrigin,transformPerspective\", \"0:translateX,1:translateY,2:translateZ,8:rotate,8:rotationZ,8:rotateZ,9:rotateX,10:rotateY\");\n_forEachName(\"x,y,z,top,right,bottom,left,width,height,fontSize,padding,margin,perspective\", function (name) {\n _config.units[name] = \"px\";\n});\ngsap.registerPlugin(CSSPlugin);\nexport { CSSPlugin as default, _getBBox, _createElement, _checkPropPrefix as checkPrefix };","'use strict';\n\nvar token = '%[a-f0-9]{2}';\nvar singleMatcher = new RegExp('(' + token + ')|([^%]+?)', 'gi');\nvar multiMatcher = new RegExp('(' + token + ')+', 'gi');\nfunction decodeComponents(components, split) {\n try {\n // Try to decode the entire string first\n return [decodeURIComponent(components.join(''))];\n } catch (err) {\n // Do nothing\n }\n if (components.length === 1) {\n return components;\n }\n split = split || 1;\n\n // Split the array in 2 parts\n var left = components.slice(0, split);\n var right = components.slice(split);\n return Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\nfunction decode(input) {\n try {\n return decodeURIComponent(input);\n } catch (err) {\n var tokens = input.match(singleMatcher) || [];\n for (var i = 1; i < tokens.length; i++) {\n input = decodeComponents(tokens, i).join('');\n tokens = input.match(singleMatcher) || [];\n }\n return input;\n }\n}\nfunction customDecodeURIComponent(input) {\n // Keep track of all the replacements and prefill the map with the `BOM`\n var replaceMap = {\n '%FE%FF': '\\uFFFD\\uFFFD',\n '%FF%FE': '\\uFFFD\\uFFFD'\n };\n var match = multiMatcher.exec(input);\n while (match) {\n try {\n // Decode as big chunks as possible\n replaceMap[match[0]] = decodeURIComponent(match[0]);\n } catch (err) {\n var result = decode(match[0]);\n if (result !== match[0]) {\n replaceMap[match[0]] = result;\n }\n }\n match = multiMatcher.exec(input);\n }\n\n // Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n replaceMap['%C2'] = '\\uFFFD';\n var entries = Object.keys(replaceMap);\n for (var i = 0; i < entries.length; i++) {\n // Replace all decoded components\n var key = entries[i];\n input = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n }\n return input;\n}\nmodule.exports = function (encodedURI) {\n if (typeof encodedURI !== 'string') {\n throw new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');\n }\n try {\n encodedURI = encodedURI.replace(/\\+/g, ' ');\n\n // Try the built in decoder first\n return decodeURIComponent(encodedURI);\n } catch (err) {\n // Fallback to a more advanced decoder\n return customDecodeURIComponent(encodedURI);\n }\n};","\"use strict\";\n\nexports.__esModule = true;\nexports.shallowCompare = exports.validateRedirect = exports.insertParams = exports.resolve = exports.match = exports.pick = exports.startsWith = undefined;\nvar _invariant = require(\"invariant\");\nvar _invariant2 = _interopRequireDefault(_invariant);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// startsWith(string, search) - Check if `string` starts with `search`\nvar startsWith = function startsWith(string, search) {\n return string.substr(0, search.length) === search;\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// pick(routes, uri)\n//\n// Ranks and picks the best route to match. Each segment gets the highest\n// amount of points, then the type of segment gets an additional amount of\n// points where\n//\n// static > dynamic > splat > root\n//\n// This way we don't have to worry about the order of our routes, let the\n// computers do it.\n//\n// A route looks like this\n//\n// { path, default, value }\n//\n// And a returned match looks like:\n//\n// { route, params, uri }\n//\n// I know, I should use TypeScript not comments for these types.\nvar pick = function pick(routes, uri) {\n var match = void 0;\n var default_ = void 0;\n var _uri$split = uri.split(\"?\"),\n uriPathname = _uri$split[0];\n var uriSegments = segmentize(uriPathname);\n var isRootUri = uriSegments[0] === \"\";\n var ranked = rankRoutes(routes);\n for (var i = 0, l = ranked.length; i < l; i++) {\n var missed = false;\n var route = ranked[i].route;\n if (route.default) {\n default_ = {\n route: route,\n params: {},\n uri: uri\n };\n continue;\n }\n var routeSegments = segmentize(route.path);\n var params = {};\n var max = Math.max(uriSegments.length, routeSegments.length);\n var index = 0;\n for (; index < max; index++) {\n var routeSegment = routeSegments[index];\n var uriSegment = uriSegments[index];\n if (isSplat(routeSegment)) {\n // Hit a splat, just grab the rest, and return a match\n // uri: /files/documents/work\n // route: /files/*\n var param = routeSegment.slice(1) || \"*\";\n params[param] = uriSegments.slice(index).map(decodeURIComponent).join(\"/\");\n break;\n }\n if (uriSegment === undefined) {\n // URI is shorter than the route, no match\n // uri: /users\n // route: /users/:userId\n missed = true;\n break;\n }\n var dynamicMatch = paramRe.exec(routeSegment);\n if (dynamicMatch && !isRootUri) {\n var matchIsNotReserved = reservedNames.indexOf(dynamicMatch[1]) === -1;\n !matchIsNotReserved ? process.env.NODE_ENV !== \"production\" ? (0, _invariant2.default)(false, \" dynamic segment \\\"\" + dynamicMatch[1] + \"\\\" is a reserved name. Please use a different name in path \\\"\" + route.path + \"\\\".\") : (0, _invariant2.default)(false) : void 0;\n var value = decodeURIComponent(uriSegment);\n params[dynamicMatch[1]] = value;\n } else if (routeSegment !== uriSegment) {\n // Current segments don't match, not dynamic, not splat, so no match\n // uri: /users/123/settings\n // route: /users/:id/profile\n missed = true;\n break;\n }\n }\n if (!missed) {\n match = {\n route: route,\n params: params,\n uri: \"/\" + uriSegments.slice(0, index).join(\"/\")\n };\n break;\n }\n }\n return match || default_ || null;\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// match(path, uri) - Matches just one path to a uri, also lol\nvar match = function match(path, uri) {\n return pick([{\n path: path\n }], uri);\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// resolve(to, basepath)\n//\n// Resolves URIs as though every path is a directory, no files. Relative URIs\n// in the browser can feel awkward because not only can you be \"in a directory\"\n// you can be \"at a file\", too. For example\n//\n// browserSpecResolve('foo', '/bar/') => /bar/foo\n// browserSpecResolve('foo', '/bar') => /foo\n//\n// But on the command line of a file system, it's not as complicated, you can't\n// `cd` from a file, only directories. This way, links have to know less about\n// their current path. To go deeper you can do this:\n//\n// \n// // instead of\n// \n//\n// Just like `cd`, if you want to go deeper from the command line, you do this:\n//\n// cd deeper\n// # not\n// cd $(pwd)/deeper\n//\n// By treating every path as a directory, linking to relative paths should\n// require less contextual information and (fingers crossed) be more intuitive.\nvar resolve = function resolve(to, base) {\n // /foo/bar, /baz/qux => /foo/bar\n if (startsWith(to, \"/\")) {\n return to;\n }\n var _to$split = to.split(\"?\"),\n toPathname = _to$split[0],\n toQuery = _to$split[1];\n var _base$split = base.split(\"?\"),\n basePathname = _base$split[0];\n var toSegments = segmentize(toPathname);\n var baseSegments = segmentize(basePathname);\n\n // ?a=b, /users?b=c => /users?a=b\n if (toSegments[0] === \"\") {\n return addQuery(basePathname, toQuery);\n }\n\n // profile, /users/789 => /users/789/profile\n if (!startsWith(toSegments[0], \".\")) {\n var pathname = baseSegments.concat(toSegments).join(\"/\");\n return addQuery((basePathname === \"/\" ? \"\" : \"/\") + pathname, toQuery);\n }\n\n // ./ /users/123 => /users/123\n // ../ /users/123 => /users\n // ../.. /users/123 => /\n // ../../one /a/b/c/d => /a/b/one\n // .././one /a/b/c/d => /a/b/c/one\n var allSegments = baseSegments.concat(toSegments);\n var segments = [];\n for (var i = 0, l = allSegments.length; i < l; i++) {\n var segment = allSegments[i];\n if (segment === \"..\") segments.pop();else if (segment !== \".\") segments.push(segment);\n }\n return addQuery(\"/\" + segments.join(\"/\"), toQuery);\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// insertParams(path, params)\n\nvar insertParams = function insertParams(path, params) {\n var _path$split = path.split(\"?\"),\n pathBase = _path$split[0],\n _path$split$ = _path$split[1],\n query = _path$split$ === undefined ? \"\" : _path$split$;\n var segments = segmentize(pathBase);\n var constructedPath = \"/\" + segments.map(function (segment) {\n var match = paramRe.exec(segment);\n return match ? params[match[1]] : segment;\n }).join(\"/\");\n var _params$location = params.location;\n _params$location = _params$location === undefined ? {} : _params$location;\n var _params$location$sear = _params$location.search,\n search = _params$location$sear === undefined ? \"\" : _params$location$sear;\n var searchSplit = search.split(\"?\")[1] || \"\";\n constructedPath = addQuery(constructedPath, query, searchSplit);\n return constructedPath;\n};\nvar validateRedirect = function validateRedirect(from, to) {\n var filter = function filter(segment) {\n return isDynamic(segment);\n };\n var fromString = segmentize(from).filter(filter).sort().join(\"/\");\n var toString = segmentize(to).filter(filter).sort().join(\"/\");\n return fromString === toString;\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// Junk\nvar paramRe = /^:(.+)/;\nvar SEGMENT_POINTS = 4;\nvar STATIC_POINTS = 3;\nvar DYNAMIC_POINTS = 2;\nvar SPLAT_PENALTY = 1;\nvar ROOT_POINTS = 1;\nvar isRootSegment = function isRootSegment(segment) {\n return segment === \"\";\n};\nvar isDynamic = function isDynamic(segment) {\n return paramRe.test(segment);\n};\nvar isSplat = function isSplat(segment) {\n return segment && segment[0] === \"*\";\n};\nvar rankRoute = function rankRoute(route, index) {\n var score = route.default ? 0 : segmentize(route.path).reduce(function (score, segment) {\n score += SEGMENT_POINTS;\n if (isRootSegment(segment)) score += ROOT_POINTS;else if (isDynamic(segment)) score += DYNAMIC_POINTS;else if (isSplat(segment)) score -= SEGMENT_POINTS + SPLAT_PENALTY;else score += STATIC_POINTS;\n return score;\n }, 0);\n return {\n route: route,\n score: score,\n index: index\n };\n};\nvar rankRoutes = function rankRoutes(routes) {\n return routes.map(rankRoute).sort(function (a, b) {\n return a.score < b.score ? 1 : a.score > b.score ? -1 : a.index - b.index;\n });\n};\nvar segmentize = function segmentize(uri) {\n return uri\n // strip starting/ending slashes\n .replace(/(^\\/+|\\/+$)/g, \"\").split(\"/\");\n};\nvar addQuery = function addQuery(pathname) {\n for (var _len = arguments.length, query = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n query[_key - 1] = arguments[_key];\n }\n query = query.filter(function (q) {\n return q && q.length > 0;\n });\n return pathname + (query && query.length > 0 ? \"?\" + query.join(\"&\") : \"\");\n};\nvar reservedNames = [\"uri\", \"path\"];\n\n/**\n * Shallow compares two objects.\n * @param {Object} obj1 The first object to compare.\n * @param {Object} obj2 The second object to compare.\n */\nvar shallowCompare = function shallowCompare(obj1, obj2) {\n var obj1Keys = Object.keys(obj1);\n return obj1Keys.length === Object.keys(obj2).length && obj1Keys.every(function (key) {\n return obj2.hasOwnProperty(key) && obj1[key] === obj2[key];\n });\n};\n\n////////////////////////////////////////////////////////////////////////////////\nexports.startsWith = startsWith;\nexports.pick = pick;\nexports.match = match;\nexports.resolve = resolve;\nexports.insertParams = insertParams;\nexports.validateRedirect = validateRedirect;\nexports.shallowCompare = shallowCompare;","import { isBrowser } from \"../env\";\nimport { addRootClass } from \"./dom.utils\";\n\nconst ua = isBrowser ? navigator.userAgent : '';\nconst platform = isBrowser ? navigator.platform ?? '' : '';\n\nexport const isIE = ua.indexOf(\"MSIE \") >= 0 || !!ua.match(/Trident.*rv:11\\./);\nexport const isFirefox = (ua.indexOf('Firefox') >= 0);\nexport const isWebKit = (ua.indexOf('AppleWebKit') >= 0);\nexport const isChrome = (ua.indexOf('Chrome') >= 0);\nexport const isSafari = (!isChrome && (ua.indexOf('Safari') >= 0));\nexport const isWebkitWebView = (!isChrome && !isSafari && isWebKit);\nexport const isIPad = (ua.indexOf('iPad') >= 0 || (isSafari && navigator.maxTouchPoints > 0));\nexport const isIPhone = (ua.indexOf('iPhone') >= 0 || (isSafari && navigator.maxTouchPoints > 0));\nexport const isIOS = ['iPad Simulator', 'iPhone Simulator', 'iPod Simulator', 'iPad', 'iPhone', 'iPod'].includes(platform);\nexport const isAppleBrowser = isIOS || isSafari;\nexport const isEdgeLegacyWebView = (ua.indexOf('Edge/') >= 0) && (ua.indexOf('WebView/') >= 0);\nexport const isElectron = (ua.indexOf('Electron/') >= 0);\nexport const isAndroid = (ua.indexOf('Android') >= 0);\nexport const isStandalone = isBrowser ? (window.matchMedia && window.matchMedia('(display-mode: standalone)').matches) : false;\nexport const isChromiumEdge = isChrome && /\\sEdg\\//.test(ua);\nexport const isEdgeLegacy = !isChromiumEdge && ua.includes(\"Edge\");\n\nexport function detectBrowsers () {\n if (isBrowser) {\n if (isIE) addRootClass('ie');\n if (isFirefox) addRootClass('firefox');\n if (isWebKit) addRootClass('webkit');\n if (isChrome) addRootClass('chrome');\n if (isSafari) addRootClass('safari');\n if (isIPad) addRootClass('iPad');\n if (isIPhone) addRootClass('iPhone');\n if (isIOS) addRootClass('iOS');\n if (isAppleBrowser) addRootClass('apple');\n if (isElectron) addRootClass('electron');\n if (isAndroid) addRootClass('android');\n if (isChromiumEdge) addRootClass('edge');\n if (isEdgeLegacy) addRootClass('edge-legacy');\n }\n}","require('intersection-observer');\nimport { action, extendObservable, observable } from \"mobx\";\nimport { isBrowser, isBuildTime } from \"../env\";\nimport { ObservableRef } from \"../hooks/useObservableRef.hook\";\nimport { isIE } from \"./browsers.utils\";\nimport { NoOp } from \"./functions.utils\";\nimport { hasKey } from \"./object.utils\";\nimport { highPerf } from \"./performance.utils\";\n\ntype VisibilityObserverRegistryItem = {\n /** the ID on the element, must be supplied in order for observer to find the callbacks */\n id: string,\n visibleClass?: string,\n invisibleClass?: string,\n onBecomeVisible?: () => void,\n onBecomeInvisible?: () => void,\n once?: boolean,\n}\nconst callbackRegistry = observable({}) as Record;\nconst animationObserver = (isBrowser && !isIE) ? new IntersectionObserver((entries, observer) => {\n for (const entry of entries) {\n const id = entry.target.getAttribute('id');\n if (id) {\n const def = callbackRegistry[id];\n if (!def) return;\n if (entry.isIntersecting) {\n def.onBecomeVisible?.();\n if (def.once) {\n animationObserver!.unobserve(entry.target);\n callbackRegistry[id] = { id };\n }\n }\n else def.onBecomeInvisible?.();\n }\n entry.target.classList.toggle('visible', entry.isIntersecting)\n entry.target.classList.toggle('invisible', !entry.isIntersecting)\n }\n}, { rootMargin: '-100px' }) : null;\n\nexport const observeVisibility = action((\n ref: ObservableRef | HTMLElement | SVGElement,\n options: VisibilityObserverRegistryItem,\n) => {\n if (isBuildTime || !animationObserver) return NoOp;\n if (!highPerf || isIE) {\n options.onBecomeVisible?.();\n return NoOp;\n }\n const element = ref instanceof Element ? ref : ref.current!;\n animationObserver.observe(element);\n if (hasKey(callbackRegistry, options.id)) {\n callbackRegistry[options.id] = options;\n } else {\n extendObservable(callbackRegistry, {\n [options.id]: options,\n });\n }\n return action(() => {\n callbackRegistry[options.id] = { id: options.id };\n animationObserver.unobserve(element);\n })\n})","export const hasKey = (obj: AnyObject, key: string) => key in obj;","const support = function (feature) {\n if (typeof document === `undefined`) {\n return false\n }\n const fakeLink = document.createElement(`link`)\n try {\n if (fakeLink.relList && typeof fakeLink.relList.supports === `function`) {\n return fakeLink.relList.supports(feature)\n }\n } catch (err) {\n return false\n }\n return false\n}\n\nconst linkPrefetchStrategy = function (url, options) {\n return new Promise((resolve, reject) => {\n if (typeof document === `undefined`) {\n reject()\n return\n }\n\n const link = document.createElement(`link`)\n link.setAttribute(`rel`, `prefetch`)\n link.setAttribute(`href`, url)\n\n Object.keys(options).forEach(key => {\n link.setAttribute(key, options[key])\n })\n\n link.onload = resolve\n link.onerror = reject\n\n const parentElement =\n document.getElementsByTagName(`head`)[0] ||\n document.getElementsByName(`script`)[0].parentNode\n parentElement.appendChild(link)\n })\n}\n\nconst xhrPrefetchStrategy = function (url) {\n return new Promise((resolve, reject) => {\n const req = new XMLHttpRequest()\n req.open(`GET`, url, true)\n\n req.onload = () => {\n if (req.status === 200) {\n resolve()\n } else {\n reject()\n }\n }\n\n req.send(null)\n })\n}\n\nconst supportedPrefetchStrategy = support(`prefetch`)\n ? linkPrefetchStrategy\n : xhrPrefetchStrategy\n\nconst preFetched = {}\n\nconst prefetch = function (url, options) {\n return new Promise(resolve => {\n if (preFetched[url]) {\n resolve()\n return\n }\n\n supportedPrefetchStrategy(url, options)\n .then(() => {\n resolve()\n preFetched[url] = true\n })\n .catch(() => {}) // 404s are logged to the console anyway\n })\n}\n\nexport default prefetch\n","import prefetchHelper from \"./prefetch\"\nimport emitter from \"./emitter\"\nimport { setMatchPaths, findPath, findMatchPath } from \"./find-path\"\n\n/**\n * Available resource loading statuses\n */\nexport const PageResourceStatus = {\n /**\n * At least one of critical resources failed to load\n */\n Error: `error`,\n /**\n * Resources loaded successfully\n */\n Success: `success`,\n}\n\nconst preferDefault = m => (m && m.default) || m\n\nconst stripSurroundingSlashes = s => {\n s = s[0] === `/` ? s.slice(1) : s\n s = s.endsWith(`/`) ? s.slice(0, -1) : s\n return s\n}\n\nconst createPageDataUrl = path => {\n const fixedPath = path === `/` ? `index` : stripSurroundingSlashes(path)\n return `${__PATH_PREFIX__}/page-data/${fixedPath}/page-data.json`\n}\n\nfunction doFetch(url, method = `GET`) {\n return new Promise((resolve, reject) => {\n const req = new XMLHttpRequest()\n req.open(method, url, true)\n req.onreadystatechange = () => {\n if (req.readyState == 4) {\n resolve(req)\n }\n }\n req.send(null)\n })\n}\n\nconst doesConnectionSupportPrefetch = () => {\n if (\n `connection` in navigator &&\n typeof navigator.connection !== `undefined`\n ) {\n if ((navigator.connection.effectiveType || ``).includes(`2g`)) {\n return false\n }\n if (navigator.connection.saveData) {\n return false\n }\n }\n return true\n}\n\nconst toPageResources = (pageData, component = null) => {\n const page = {\n componentChunkName: pageData.componentChunkName,\n path: pageData.path,\n webpackCompilationHash: pageData.webpackCompilationHash,\n matchPath: pageData.matchPath,\n staticQueryHashes: pageData.staticQueryHashes,\n }\n\n return {\n component,\n json: pageData.result,\n page,\n }\n}\n\nexport class BaseLoader {\n constructor(loadComponent, matchPaths) {\n // Map of pagePath -> Page. Where Page is an object with: {\n // status: PageResourceStatus.Success || PageResourceStatus.Error,\n // payload: PageResources, // undefined if PageResourceStatus.Error\n // }\n // PageResources is {\n // component,\n // json: pageData.result,\n // page: {\n // componentChunkName,\n // path,\n // webpackCompilationHash,\n // staticQueryHashes\n // },\n // staticQueryResults\n // }\n this.pageDb = new Map()\n this.inFlightDb = new Map()\n this.staticQueryDb = {}\n this.pageDataDb = new Map()\n this.prefetchTriggered = new Set()\n this.prefetchCompleted = new Set()\n this.loadComponent = loadComponent\n setMatchPaths(matchPaths)\n }\n\n inFlightNetworkRequests = new Map()\n\n memoizedGet(url) {\n let inFlightPromise = this.inFlightNetworkRequests.get(url)\n\n if (!inFlightPromise) {\n inFlightPromise = doFetch(url, `GET`)\n this.inFlightNetworkRequests.set(url, inFlightPromise)\n }\n\n // Prefer duplication with then + catch over .finally to prevent problems in ie11 + firefox\n return inFlightPromise\n .then(response => {\n this.inFlightNetworkRequests.delete(url)\n return response\n })\n .catch(err => {\n this.inFlightNetworkRequests.delete(url)\n throw err\n })\n }\n\n setApiRunner(apiRunner) {\n this.apiRunner = apiRunner\n this.prefetchDisabled = apiRunner(`disableCorePrefetching`).some(a => a)\n }\n\n fetchPageDataJson(loadObj) {\n const { pagePath, retries = 0 } = loadObj\n const url = createPageDataUrl(pagePath)\n return this.memoizedGet(url).then(req => {\n const { status, responseText } = req\n\n // Handle 200\n if (status === 200) {\n try {\n const jsonPayload = JSON.parse(responseText)\n if (jsonPayload.path === undefined) {\n throw new Error(`not a valid pageData response`)\n }\n\n return Object.assign(loadObj, {\n status: PageResourceStatus.Success,\n payload: jsonPayload,\n })\n } catch (err) {\n // continue regardless of error\n }\n }\n\n // Handle 404\n if (status === 404 || status === 200) {\n // If the request was for a 404 page and it doesn't exist, we're done\n if (pagePath === `/404.html`) {\n return Object.assign(loadObj, {\n status: PageResourceStatus.Error,\n })\n }\n\n // Need some code here to cache the 404 request. In case\n // multiple loadPageDataJsons result in 404s\n return this.fetchPageDataJson(\n Object.assign(loadObj, { pagePath: `/404.html`, notFound: true })\n )\n }\n\n // handle 500 response (Unrecoverable)\n if (status === 500) {\n return Object.assign(loadObj, {\n status: PageResourceStatus.Error,\n })\n }\n\n // Handle everything else, including status === 0, and 503s. Should retry\n if (retries < 3) {\n return this.fetchPageDataJson(\n Object.assign(loadObj, { retries: retries + 1 })\n )\n }\n\n // Retried 3 times already, result is an error.\n return Object.assign(loadObj, {\n status: PageResourceStatus.Error,\n })\n })\n }\n\n loadPageDataJson(rawPath) {\n const pagePath = findPath(rawPath)\n if (this.pageDataDb.has(pagePath)) {\n const pageData = this.pageDataDb.get(pagePath)\n if (process.env.BUILD_STAGE !== `develop` || !pageData.stale) {\n return Promise.resolve(pageData)\n }\n }\n\n return this.fetchPageDataJson({ pagePath }).then(pageData => {\n this.pageDataDb.set(pagePath, pageData)\n\n return pageData\n })\n }\n\n findMatchPath(rawPath) {\n return findMatchPath(rawPath)\n }\n\n // TODO check all uses of this and whether they use undefined for page resources not exist\n loadPage(rawPath) {\n const pagePath = findPath(rawPath)\n if (this.pageDb.has(pagePath)) {\n const page = this.pageDb.get(pagePath)\n if (process.env.BUILD_STAGE !== `develop` || !page.payload.stale) {\n if (page.error) {\n return {\n error: page.error,\n status: page.status,\n }\n }\n\n return Promise.resolve(page.payload)\n }\n }\n\n if (this.inFlightDb.has(pagePath)) {\n return this.inFlightDb.get(pagePath)\n }\n\n const inFlightPromise = Promise.all([\n this.loadAppData(),\n this.loadPageDataJson(pagePath),\n ]).then(allData => {\n const result = allData[1]\n if (result.status === PageResourceStatus.Error) {\n return {\n status: PageResourceStatus.Error,\n }\n }\n\n let pageData = result.payload\n const { componentChunkName, staticQueryHashes = [] } = pageData\n\n const finalResult = {}\n\n const componentChunkPromise = this.loadComponent(componentChunkName).then(\n component => {\n finalResult.createdAt = new Date()\n let pageResources\n if (!component || component instanceof Error) {\n finalResult.status = PageResourceStatus.Error\n finalResult.error = component\n } else {\n finalResult.status = PageResourceStatus.Success\n if (result.notFound === true) {\n finalResult.notFound = true\n }\n pageData = Object.assign(pageData, {\n webpackCompilationHash: allData[0]\n ? allData[0].webpackCompilationHash\n : ``,\n })\n pageResources = toPageResources(pageData, component)\n }\n // undefined if final result is an error\n return pageResources\n }\n )\n\n const staticQueryBatchPromise = Promise.all(\n staticQueryHashes.map(staticQueryHash => {\n // Check for cache in case this static query result has already been loaded\n if (this.staticQueryDb[staticQueryHash]) {\n const jsonPayload = this.staticQueryDb[staticQueryHash]\n return { staticQueryHash, jsonPayload }\n }\n\n return this.memoizedGet(\n `${__PATH_PREFIX__}/page-data/sq/d/${staticQueryHash}.json`\n )\n .then(req => {\n const jsonPayload = JSON.parse(req.responseText)\n return { staticQueryHash, jsonPayload }\n })\n .catch(() => {\n throw new Error(\n `We couldn't load \"${__PATH_PREFIX__}/page-data/sq/d/${staticQueryHash}.json\"`\n )\n })\n })\n ).then(staticQueryResults => {\n const staticQueryResultsMap = {}\n\n staticQueryResults.forEach(({ staticQueryHash, jsonPayload }) => {\n staticQueryResultsMap[staticQueryHash] = jsonPayload\n this.staticQueryDb[staticQueryHash] = jsonPayload\n })\n\n return staticQueryResultsMap\n })\n\n return (\n Promise.all([componentChunkPromise, staticQueryBatchPromise])\n .then(([pageResources, staticQueryResults]) => {\n let payload\n if (pageResources) {\n payload = { ...pageResources, staticQueryResults }\n finalResult.payload = payload\n emitter.emit(`onPostLoadPageResources`, {\n page: payload,\n pageResources: payload,\n })\n }\n\n this.pageDb.set(pagePath, finalResult)\n\n if (finalResult.error) {\n return {\n error: finalResult.error,\n status: finalResult.status,\n }\n }\n\n return payload\n })\n // when static-query fail to load we throw a better error\n .catch(err => {\n return {\n error: err,\n status: PageResourceStatus.Error,\n }\n })\n )\n })\n\n inFlightPromise\n .then(() => {\n this.inFlightDb.delete(pagePath)\n })\n .catch(error => {\n this.inFlightDb.delete(pagePath)\n throw error\n })\n\n this.inFlightDb.set(pagePath, inFlightPromise)\n\n return inFlightPromise\n }\n\n // returns undefined if the page does not exists in cache\n loadPageSync(rawPath, options = {}) {\n const pagePath = findPath(rawPath)\n if (this.pageDb.has(pagePath)) {\n const pageData = this.pageDb.get(pagePath)\n\n if (pageData.payload) {\n return pageData.payload\n }\n\n if (options?.withErrorDetails) {\n return {\n error: pageData.error,\n status: pageData.status,\n }\n }\n }\n return undefined\n }\n\n shouldPrefetch(pagePath) {\n // Skip prefetching if we know user is on slow or constrained connection\n if (!doesConnectionSupportPrefetch()) {\n return false\n }\n\n // Check if the page exists.\n if (this.pageDb.has(pagePath)) {\n return false\n }\n\n return true\n }\n\n prefetch(pagePath) {\n if (!this.shouldPrefetch(pagePath)) {\n return false\n }\n\n // Tell plugins with custom prefetching logic that they should start\n // prefetching this path.\n if (!this.prefetchTriggered.has(pagePath)) {\n this.apiRunner(`onPrefetchPathname`, { pathname: pagePath })\n this.prefetchTriggered.add(pagePath)\n }\n\n // If a plugin has disabled core prefetching, stop now.\n if (this.prefetchDisabled) {\n return false\n }\n\n const realPath = findPath(pagePath)\n // Todo make doPrefetch logic cacheable\n // eslint-disable-next-line consistent-return\n this.doPrefetch(realPath).then(() => {\n if (!this.prefetchCompleted.has(pagePath)) {\n this.apiRunner(`onPostPrefetchPathname`, { pathname: pagePath })\n this.prefetchCompleted.add(pagePath)\n }\n })\n\n return true\n }\n\n doPrefetch(pagePath) {\n const pageDataUrl = createPageDataUrl(pagePath)\n return prefetchHelper(pageDataUrl, {\n crossOrigin: `anonymous`,\n as: `fetch`,\n }).then(() =>\n // This was just prefetched, so will return a response from\n // the cache instead of making another request to the server\n this.loadPageDataJson(pagePath)\n )\n }\n\n hovering(rawPath) {\n this.loadPage(rawPath)\n }\n\n getResourceURLsForPathname(rawPath) {\n const pagePath = findPath(rawPath)\n const page = this.pageDataDb.get(pagePath)\n if (page) {\n const pageResources = toPageResources(page.payload)\n\n return [\n ...createComponentUrls(pageResources.page.componentChunkName),\n createPageDataUrl(pagePath),\n ]\n } else {\n return null\n }\n }\n\n isPageNotFound(rawPath) {\n const pagePath = findPath(rawPath)\n const page = this.pageDb.get(pagePath)\n return !page || page.notFound\n }\n\n loadAppData(retries = 0) {\n return this.memoizedGet(`${__PATH_PREFIX__}/page-data/app-data.json`).then(\n req => {\n const { status, responseText } = req\n\n let appData\n\n if (status !== 200 && retries < 3) {\n // Retry 3 times incase of non-200 responses\n return this.loadAppData(retries + 1)\n }\n\n // Handle 200\n if (status === 200) {\n try {\n const jsonPayload = JSON.parse(responseText)\n if (jsonPayload.webpackCompilationHash === undefined) {\n throw new Error(`not a valid app-data response`)\n }\n\n appData = jsonPayload\n } catch (err) {\n // continue regardless of error\n }\n }\n\n return appData\n }\n )\n }\n}\n\nconst createComponentUrls = componentChunkName =>\n (window.___chunkMapping[componentChunkName] || []).map(\n chunk => __PATH_PREFIX__ + chunk\n )\n\nexport class ProdLoader extends BaseLoader {\n constructor(asyncRequires, matchPaths, pageData) {\n const loadComponent = chunkName => {\n if (!asyncRequires.components[chunkName]) {\n throw new Error(\n `We couldn't find the correct component chunk with the name ${chunkName}`\n )\n }\n\n return (\n asyncRequires.components[chunkName]()\n .then(preferDefault)\n // loader will handle the case when component is error\n .catch(err => err)\n )\n }\n\n super(loadComponent, matchPaths)\n\n if (pageData) {\n this.pageDataDb.set(pageData.path, {\n pagePath: pageData.path,\n payload: pageData,\n status: `success`,\n })\n }\n }\n\n doPrefetch(pagePath) {\n return super.doPrefetch(pagePath).then(result => {\n if (result.status !== PageResourceStatus.Success) {\n return Promise.resolve()\n }\n const pageData = result.payload\n const chunkName = pageData.componentChunkName\n const componentUrls = createComponentUrls(chunkName)\n return Promise.all(componentUrls.map(prefetchHelper)).then(() => pageData)\n })\n }\n\n loadPageDataJson(rawPath) {\n return super.loadPageDataJson(rawPath).then(data => {\n if (data.notFound) {\n // check if html file exist using HEAD request:\n // if it does we should navigate to it instead of showing 404\n return doFetch(rawPath, `HEAD`).then(req => {\n if (req.status === 200) {\n // page (.html file) actually exist (or we asked for 404 )\n // returning page resources status as errored to trigger\n // regular browser navigation to given page\n return {\n status: PageResourceStatus.Error,\n }\n }\n\n // if HEAD request wasn't 200, return notFound result\n // and show 404 page\n return data\n })\n }\n return data\n })\n }\n}\n\nlet instance\n\nexport const setLoader = _loader => {\n instance = _loader\n}\n\nexport const publicLoader = {\n enqueue: rawPath => instance.prefetch(rawPath),\n\n // Real methods\n getResourceURLsForPathname: rawPath =>\n instance.getResourceURLsForPathname(rawPath),\n loadPage: rawPath => instance.loadPage(rawPath),\n // TODO add deprecation to v4 so people use withErrorDetails and then we can remove in v5 and change default behaviour\n loadPageSync: (rawPath, options = {}) =>\n instance.loadPageSync(rawPath, options),\n prefetch: rawPath => instance.prefetch(rawPath),\n isPageNotFound: rawPath => instance.isPageNotFound(rawPath),\n hovering: rawPath => instance.hovering(rawPath),\n loadAppData: () => instance.loadAppData(),\n}\n\nexport default publicLoader\n\nexport function getStaticQueryResults() {\n if (instance) {\n return instance.staticQueryDb\n } else {\n return {}\n }\n}\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","import { Expo, TweenMax } from 'gsap';\nimport { isBrowser, isBuildTime } from '../env';\nimport { registerParallaxEffect } from '../utils/parallax.utils';\nimport { highPerf } from '../utils/performance.utils';\nimport tick from '../utils/waiters.utils';\nimport './decoTricolor.scss';\n\ntype TricolorMorphOptions = {\n red: string,\n green: string,\n blue: string,\n duration?: number,\n}\n\nconst createLayer = () => {\n const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svg.setAttribute('width', '1194');\n svg.setAttribute('height', '834');\n svg.setAttribute('viewBox', `0 0 1194 834`);\n svg.setAttribute('xmlns', 'http://www.w3.org/2000/svg');\n if (isBrowser) {\n const handleResize = () => {\n if (window.innerWidth < 640) {\n svg.setAttribute('width', '375');\n svg.setAttribute('height', '812');\n svg.setAttribute('viewBox', `0 0 375 812`);\n } else {\n svg.setAttribute('width', '1194');\n svg.setAttribute('height', '834');\n svg.setAttribute('viewBox', `0 0 1194 834`);\n }\n };\n window.addEventListener('resize', handleResize);\n handleResize();\n }\n return svg;\n}\n\nexport const defaultTricolorPaths = {\n R: 'M948.1 189.05C948.1 189.078 948.078 189.1 948.05 189.1C948.022 189.1 948 189.078 948 189.05C948 189.022 948.022 189 948.05 189C948.078 189 948.1 189.022 948.1 189.05Z',\n G: 'M48.1 640.05C48.1 640.078 48.0776 640.1 48.05 640.1C48.0224 640.1 48 640.078 48 640.05C48 640.022 48.0224 640 48.05 640C48.0776 640 48.1 640.022 48.1 640.05Z',\n B: 'M1092.1 618.05C1092.1 618.078 1092.08 618.1 1092.05 618.1C1092.02 618.1 1092 618.078 1092 618.05C1092 618.022 1092.02 618 1092.05 618C1092.08 618 1092.1 618.022 1092.1 618.05Z',\n}\n\nexport const makeDecoTricolorController = () => {\n if (isBuildTime) return;\n const existingSvgContainer = document.getElementById('__DecoTricolorContainer');\n if (!existingSvgContainer) {\n const container = document.createElement('div');\n container.setAttribute('id', '__DecoTricolorContainer');\n container.classList.add('DecoTricolorContainer');\n container.classList.add('hidden');\n\n const layerRed = createLayer();\n const pathRed = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n pathRed.setAttribute('id', 'TRICOLOR_R');\n pathRed.setAttribute('d', defaultTricolorPaths.R);\n layerRed.append(pathRed);\n\n const layerGreen = createLayer();\n const pathGreen = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n pathGreen.setAttribute('id', 'TRICOLOR_G');\n pathGreen.setAttribute('d', defaultTricolorPaths.G);\n layerGreen.append(pathGreen);\n\n const layerBlue = createLayer();\n const pathBlue = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n pathBlue.setAttribute('id', 'TRICOLOR_B');\n pathBlue.setAttribute('d', defaultTricolorPaths.B);\n layerBlue.append(pathBlue);\n\n container.append(layerRed);\n container.append(layerGreen);\n container.append(layerBlue);\n\n document.body.prepend(container);\n\n registerParallaxEffect(layerRed, { id: 'TricolorLayerRed', depth: -.15 });\n registerParallaxEffect(layerGreen, { id: 'TricolorLayerGreen', depth: -.19 });\n registerParallaxEffect(layerBlue, { id: 'TricolorLayerBlue', depth: -.23 });\n\n }\n let isFirstTime = true;\n return {\n morph: (options: TricolorMorphOptions) => new Promise(async resolve => {\n if (isFirstTime) {\n if (highPerf) await tick(1000);\n isFirstTime = false;\n document.getElementById('__DecoTricolorContainer')?.classList.remove('hidden');\n }\n if (highPerf) {\n TweenMax.to('#TRICOLOR_R', options.duration ?? 1, { morphSVG: options.red, ease: Expo.easeOut });\n TweenMax.to('#TRICOLOR_G', options.duration ?? 1, { morphSVG: options.green, ease: Expo.easeOut, delay: .05 });\n TweenMax.to('#TRICOLOR_B', options.duration ?? 1, { morphSVG: options.blue, ease: Expo.easeOut, delay: .1, onComplete: resolve});\n } else {\n document.getElementById('TRICOLOR_R')?.setAttribute('d', document.querySelector(options.red)?.getAttribute('d') ?? defaultTricolorPaths.R);\n document.getElementById('TRICOLOR_G')?.setAttribute('d', document.querySelector(options.green)?.getAttribute('d') ?? defaultTricolorPaths.G);\n document.getElementById('TRICOLOR_B')?.setAttribute('d', document.querySelector(options.blue)?.getAttribute('d') ?? defaultTricolorPaths.B);\n }\n })\n }\n}\n","require('../../modules/es6.object.assign');\nmodule.exports = require('../../modules/_core').Object.assign;\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\nvar _react = _interopRequireDefault(require(\"react\"));\nvar _reactLifecyclesCompat = require(\"react-lifecycles-compat\");\nvar _ChildMapping = require(\"./utils/ChildMapping\");\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nvar values = Object.values || function (obj) {\n return Object.keys(obj).map(function (k) {\n return obj[k];\n });\n};\nvar defaultProps = {\n component: 'div',\n childFactory: function childFactory(child) {\n return child;\n }\n /**\n * The `` component manages a set of transition components\n * (`` and ``) in a list. Like with the transition\n * components, `` is a state machine for managing the mounting\n * and unmounting of components over time.\n *\n * Consider the example below. As items are removed or added to the TodoList the\n * `in` prop is toggled automatically by the ``.\n *\n * Note that `` does not define any animation behavior!\n * Exactly _how_ a list item animates is up to the individual transition\n * component. This means you can mix and match animations across different list\n * items.\n */\n};\nvar TransitionGroup = /*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(TransitionGroup, _React$Component);\n function TransitionGroup(props, context) {\n var _this;\n _this = _React$Component.call(this, props, context) || this;\n var handleExited = _this.handleExited.bind(_assertThisInitialized(_assertThisInitialized(_this))); // Initial children should all be entering, dependent on appear\n\n _this.state = {\n handleExited: handleExited,\n firstRender: true\n };\n return _this;\n }\n var _proto = TransitionGroup.prototype;\n _proto.getChildContext = function getChildContext() {\n return {\n transitionGroup: {\n isMounting: !this.appeared\n }\n };\n };\n _proto.componentDidMount = function componentDidMount() {\n this.appeared = true;\n this.mounted = true;\n };\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.mounted = false;\n };\n TransitionGroup.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, _ref) {\n var prevChildMapping = _ref.children,\n handleExited = _ref.handleExited,\n firstRender = _ref.firstRender;\n return {\n children: firstRender ? (0, _ChildMapping.getInitialChildMapping)(nextProps, handleExited) : (0, _ChildMapping.getNextChildMapping)(nextProps, prevChildMapping, handleExited),\n firstRender: false\n };\n };\n _proto.handleExited = function handleExited(child, node) {\n var currentChildMapping = (0, _ChildMapping.getChildMapping)(this.props.children);\n if (child.key in currentChildMapping) return;\n if (child.props.onExited) {\n child.props.onExited(node);\n }\n if (this.mounted) {\n this.setState(function (state) {\n var children = _extends({}, state.children);\n delete children[child.key];\n return {\n children: children\n };\n });\n }\n };\n _proto.render = function render() {\n var _this$props = this.props,\n Component = _this$props.component,\n childFactory = _this$props.childFactory,\n props = _objectWithoutPropertiesLoose(_this$props, [\"component\", \"childFactory\"]);\n var children = values(this.state.children).map(childFactory);\n delete props.appear;\n delete props.enter;\n delete props.exit;\n if (Component === null) {\n return children;\n }\n return _react.default.createElement(Component, props, children);\n };\n return TransitionGroup;\n}(_react.default.Component);\nTransitionGroup.childContextTypes = {\n transitionGroup: _propTypes.default.object.isRequired\n};\nTransitionGroup.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * `` renders a `
` by default. You can change this\n * behavior by providing a `component` prop.\n * If you use React v16+ and would like to avoid a wrapping `
` element\n * you can pass in `component={null}`. This is useful if the wrapping div\n * borks your css styles.\n */\n component: _propTypes.default.any,\n /**\n * A set of `` components, that are toggled `in` and out as they\n * leave. the `` will inject specific transition props, so\n * remember to spread them through if you are wrapping the `` as\n * with our `` example.\n *\n * While this component is meant for multiple `Transition` or `CSSTransition`\n * children, sometimes you may want to have a single transition child with\n * content that you want to be transitioned out and in when you change it\n * (e.g. routes, images etc.) In that case you can change the `key` prop of\n * the transition child as you change its content, this will cause\n * `TransitionGroup` to transition the child out and back in.\n */\n children: _propTypes.default.node,\n /**\n * A convenience prop that enables or disables appear animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n appear: _propTypes.default.bool,\n /**\n * A convenience prop that enables or disables enter animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n enter: _propTypes.default.bool,\n /**\n * A convenience prop that enables or disables exit animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n exit: _propTypes.default.bool,\n /**\n * You may need to apply reactive updates to a child as it is exiting.\n * This is generally done by using `cloneElement` however in the case of an exiting\n * child the element has already been removed and not accessible to the consumer.\n *\n * If you do need to update a child as it leaves you can provide a `childFactory`\n * to wrap every child, even the ones that are leaving.\n *\n * @type Function(child: ReactElement) -> ReactElement\n */\n childFactory: _propTypes.default.func\n} : {};\nTransitionGroup.defaultProps = defaultProps;\nvar _default = (0, _reactLifecyclesCompat.polyfill)(TransitionGroup);\nexports.default = _default;\nmodule.exports = exports[\"default\"];","import React from 'react';\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n return target;\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nvar isFunction = function isFunction(obj) {\n return typeof obj === 'function';\n};\nvar MDXContext = /*#__PURE__*/React.createContext({});\nvar withMDXComponents = function withMDXComponents(Component) {\n return function (props) {\n var allComponents = useMDXComponents(props.components);\n return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n components: allComponents\n }));\n };\n};\nvar useMDXComponents = function useMDXComponents(components) {\n var contextComponents = React.useContext(MDXContext);\n var allComponents = contextComponents;\n if (components) {\n allComponents = isFunction(components) ? components(contextComponents) : _objectSpread2(_objectSpread2({}, contextComponents), components);\n }\n return allComponents;\n};\nvar MDXProvider = function MDXProvider(props) {\n var allComponents = useMDXComponents(props.components);\n return /*#__PURE__*/React.createElement(MDXContext.Provider, {\n value: allComponents\n }, props.children);\n};\nvar TYPE_PROP_NAME = 'mdxType';\nvar DEFAULTS = {\n inlineCode: 'code',\n wrapper: function wrapper(_ref) {\n var children = _ref.children;\n return /*#__PURE__*/React.createElement(React.Fragment, {}, children);\n }\n};\nvar MDXCreateElement = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var propComponents = props.components,\n mdxType = props.mdxType,\n originalType = props.originalType,\n parentName = props.parentName,\n etc = _objectWithoutProperties(props, [\"components\", \"mdxType\", \"originalType\", \"parentName\"]);\n var components = useMDXComponents(propComponents);\n var type = mdxType;\n var Component = components[\"\".concat(parentName, \".\").concat(type)] || components[type] || DEFAULTS[type] || originalType;\n if (propComponents) {\n return /*#__PURE__*/React.createElement(Component, _objectSpread2(_objectSpread2({\n ref: ref\n }, etc), {}, {\n components: propComponents\n }));\n }\n return /*#__PURE__*/React.createElement(Component, _objectSpread2({\n ref: ref\n }, etc));\n});\nMDXCreateElement.displayName = 'MDXCreateElement';\nfunction createElement(type, props) {\n var args = arguments;\n var mdxType = props && props.mdxType;\n if (typeof type === 'string' || mdxType) {\n var argsLength = args.length;\n var createElementArgArray = new Array(argsLength);\n createElementArgArray[0] = MDXCreateElement;\n var newProps = {};\n for (var key in props) {\n if (hasOwnProperty.call(props, key)) {\n newProps[key] = props[key];\n }\n }\n newProps.originalType = type;\n newProps[TYPE_PROP_NAME] = typeof type === 'string' ? type : mdxType;\n createElementArgArray[1] = newProps;\n for (var i = 2; i < argsLength; i++) {\n createElementArgArray[i] = args[i];\n }\n return React.createElement.apply(null, createElementArgArray);\n }\n return React.createElement.apply(null, args);\n}\nexport { MDXContext, MDXProvider, createElement as mdx, useMDXComponents, withMDXComponents };","import React, { createContext, useContext } from \"react\"\n\nconst GatsbyMDXScopeContext = createContext({})\n\nexport const useMDXScope = scope => {\n const contextScope = useContext(GatsbyMDXScopeContext)\n return scope || contextScope\n}\n\nexport const MDXScopeProvider = ({ __mdxScope, children }) =>\n React.createElement(\n GatsbyMDXScopeContext.Provider,\n { value: __mdxScope },\n children\n )\n","export default\n Object.assign({}, )\n ","import React from \"react\"\nimport { MDXProvider, withMDXComponents } from \"@mdx-js/react\"\nimport { MDXScopeProvider } from \"./context\"\n\n/**\n * so, this import is weird right?\n *\n * # What it looks like:\n * we're importing a webpack loader directly into our runtime bundle\n *\n * # What it's actually doing:\n * We configure the `mdx-components` loader in gatsby-node's\n * `onCreateWebpackConfig`. The configuration sets the loader to handle its\n * own file, so if we import `./loaders/mdx-components`, the `mdx-components`\n * loader handles loading itself.\n *\n * # Why does this work?\n * The loader doesn't use the file argument to itself and instead returns\n * a generated file that includes the `gatsby-config` mdxPlugins wrapped in\n * require() statements. This results in the `mdxPlugins` being required\n * and available to the code after this import.\n *\n * # Have a better solution to this?\n * Submit a PR\n */\nimport { plugins as mdxPlugins } from \"./loaders/mdx-components\"\nimport scopeContexts from \"./loaders/mdx-scopes\"\n\nconst componentsAndGuards = {}\n\nconst componentFromGuards = arr =>\n function GatsbyMDXComponentFinder(props) {\n const { Component } = arr.find(({ guard }) => (guard ? guard(props) : true))\n return \n }\n\nmdxPlugins.forEach(({ guards = {}, components }) => {\n Object.entries(components).forEach(([componentName, Component]) => {\n if (componentsAndGuards[componentName]) {\n componentsAndGuards.push({ guard: guards[componentName], Component })\n } else {\n componentsAndGuards[componentName] = [\n { guard: guards[componentName], Component },\n ]\n }\n })\n})\n\nconst components = Object.entries(componentsAndGuards)\n .map(([name, arr]) => {\n return {\n [name]: componentFromGuards(\n arr.concat({ guard: undefined, Component: name })\n ),\n }\n })\n .reduce((acc, obj) => {\n return { ...acc, ...obj }\n }, {})\n\n// merge any components in wrapRootElement above this wrapRoot\nconst MDXConsumer = withMDXComponents(\n ({ components: componentsFromContext, children }) => (\n \n \n {children}\n \n \n )\n)\n\nconst WrapRootElement = ({ element }) => {element}\n\nexport default WrapRootElement\n","import wrap from \"./wrap-root-element\"\nexport const wrapRootElement = wrap\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nfunction _interopDefault(ex) {\n return ex && typeof ex === 'object' && 'default' in ex ? ex['default'] : ex;\n}\nvar React = require('react');\nvar React__default = _interopDefault(React);\nvar UAParser = require('ua-parser-js/dist/ua-parser.min');\nvar UA = new UAParser();\nvar browser = UA.getBrowser();\nvar cpu = UA.getCPU();\nvar device = UA.getDevice();\nvar engine = UA.getEngine();\nvar os = UA.getOS();\nvar ua = UA.getUA();\nvar setDefaults = function setDefaults(p) {\n var d = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'none';\n return p ? p : d;\n};\nvar getNavigatorInstance = function getNavigatorInstance() {\n if (typeof window !== 'undefined') {\n if (window.navigator || navigator) {\n return window.navigator || navigator;\n }\n }\n return false;\n};\nvar isIOS13Check = function isIOS13Check(type) {\n var nav = getNavigatorInstance();\n return nav && nav.platform && (nav.platform.indexOf(type) !== -1 || nav.platform === 'MacIntel' && nav.maxTouchPoints > 1 && !window.MSStream);\n};\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n return _typeof(obj);\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n if (i % 2) {\n ownKeys(source, true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(source).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n return target;\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nfunction _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n }\n return _assertThisInitialized(self);\n}\nvar DeviceTypes = {\n Mobile: 'mobile',\n Tablet: 'tablet',\n SmartTv: 'smarttv',\n Console: 'console',\n Wearable: 'wearable',\n Browser: undefined\n};\nvar BrowserTypes = {\n Chrome: 'Chrome',\n Firefox: \"Firefox\",\n Opera: \"Opera\",\n Yandex: \"Yandex\",\n Safari: \"Safari\",\n InternetExplorer: \"Internet Explorer\",\n Edge: \"Edge\",\n Chromium: \"Chromium\",\n Ie: 'IE',\n MobileSafari: \"Mobile Safari\",\n EdgeChromium: \"Edge Chromium\",\n MIUI: \"MIUI Browser\",\n SamsungBrowser: 'Samsung Browser'\n};\nvar OsTypes = {\n IOS: 'iOS',\n Android: \"Android\",\n WindowsPhone: \"Windows Phone\",\n Windows: 'Windows',\n MAC_OS: 'Mac OS'\n};\nvar initialData = {\n isMobile: false,\n isTablet: false,\n isBrowser: false,\n isSmartTV: false,\n isConsole: false,\n isWearable: false\n};\nvar checkType = function checkType(type) {\n switch (type) {\n case DeviceTypes.Mobile:\n return {\n isMobile: true\n };\n case DeviceTypes.Tablet:\n return {\n isTablet: true\n };\n case DeviceTypes.SmartTv:\n return {\n isSmartTV: true\n };\n case DeviceTypes.Console:\n return {\n isConsole: true\n };\n case DeviceTypes.Wearable:\n return {\n isWearable: true\n };\n case DeviceTypes.Browser:\n return {\n isBrowser: true\n };\n default:\n return initialData;\n }\n};\nvar broPayload = function broPayload(isBrowser, browser, engine, os, ua) {\n return {\n isBrowser: isBrowser,\n browserMajorVersion: setDefaults(browser.major),\n browserFullVersion: setDefaults(browser.version),\n browserName: setDefaults(browser.name),\n engineName: setDefaults(engine.name),\n engineVersion: setDefaults(engine.version),\n osName: setDefaults(os.name),\n osVersion: setDefaults(os.version),\n userAgent: setDefaults(ua)\n };\n};\nvar mobilePayload = function mobilePayload(type, device, os, ua) {\n return _objectSpread2({}, type, {\n vendor: setDefaults(device.vendor),\n model: setDefaults(device.model),\n os: setDefaults(os.name),\n osVersion: setDefaults(os.version),\n ua: setDefaults(ua)\n });\n};\nvar stvPayload = function stvPayload(isSmartTV, engine, os, ua) {\n return {\n isSmartTV: isSmartTV,\n engineName: setDefaults(engine.name),\n engineVersion: setDefaults(engine.version),\n osName: setDefaults(os.name),\n osVersion: setDefaults(os.version),\n userAgent: setDefaults(ua)\n };\n};\nvar consolePayload = function consolePayload(isConsole, engine, os, ua) {\n return {\n isConsole: isConsole,\n engineName: setDefaults(engine.name),\n engineVersion: setDefaults(engine.version),\n osName: setDefaults(os.name),\n osVersion: setDefaults(os.version),\n userAgent: setDefaults(ua)\n };\n};\nvar wearPayload = function wearPayload(isWearable, engine, os, ua) {\n return {\n isWearable: isWearable,\n engineName: setDefaults(engine.name),\n engineVersion: setDefaults(engine.version),\n osName: setDefaults(os.name),\n osVersion: setDefaults(os.version),\n userAgent: setDefaults(ua)\n };\n};\nvar type = checkType(device.type);\nfunction deviceDetect() {\n var isBrowser = type.isBrowser,\n isMobile = type.isMobile,\n isTablet = type.isTablet,\n isSmartTV = type.isSmartTV,\n isConsole = type.isConsole,\n isWearable = type.isWearable;\n if (isBrowser) {\n return broPayload(isBrowser, browser, engine, os, ua);\n }\n if (isSmartTV) {\n return stvPayload(isSmartTV, engine, os, ua);\n }\n if (isConsole) {\n return consolePayload(isConsole, engine, os, ua);\n }\n if (isMobile) {\n return mobilePayload(type, device, os, ua);\n }\n if (isTablet) {\n return mobilePayload(type, device, os, ua);\n }\n if (isWearable) {\n return wearPayload(isWearable, engine, os, ua);\n }\n}\nvar isMobileType = function isMobileType() {\n return device.type === DeviceTypes.Mobile;\n};\nvar isTabletType = function isTabletType() {\n return device.type === DeviceTypes.Tablet;\n};\nvar isMobileAndTabletType = function isMobileAndTabletType() {\n switch (device.type) {\n case DeviceTypes.Mobile:\n case DeviceTypes.Tablet:\n return true;\n default:\n return false;\n }\n};\nvar isEdgeChromiumType = function isEdgeChromiumType() {\n return typeof ua === 'string' && ua.indexOf('Edg/') !== -1;\n};\nvar isSmartTVType = function isSmartTVType() {\n return device.type === DeviceTypes.SmartTv;\n};\nvar isBrowserType = function isBrowserType() {\n return device.type === DeviceTypes.Browser;\n};\nvar isWearableType = function isWearableType() {\n return device.type === DeviceTypes.Wearable;\n};\nvar isConsoleType = function isConsoleType() {\n return device.type === DeviceTypes.Console;\n};\nvar isAndroidType = function isAndroidType() {\n return os.name === OsTypes.Android;\n};\nvar isWindowsType = function isWindowsType() {\n return os.name === OsTypes.Windows;\n};\nvar isMacOsType = function isMacOsType() {\n return os.name === OsTypes.MAC_OS;\n};\nvar isWinPhoneType = function isWinPhoneType() {\n return os.name === OsTypes.WindowsPhone;\n};\nvar isIOSType = function isIOSType() {\n return os.name === OsTypes.IOS;\n};\nvar isChromeType = function isChromeType() {\n return browser.name === BrowserTypes.Chrome;\n};\nvar isFirefoxType = function isFirefoxType() {\n return browser.name === BrowserTypes.Firefox;\n};\nvar isChromiumType = function isChromiumType() {\n return browser.name === BrowserTypes.Chromium;\n};\nvar isEdgeType = function isEdgeType() {\n return browser.name === BrowserTypes.Edge;\n};\nvar isYandexType = function isYandexType() {\n return browser.name === BrowserTypes.Yandex;\n};\nvar isSafariType = function isSafariType() {\n return browser.name === BrowserTypes.Safari || browser.name === BrowserTypes.MobileSafari;\n};\nvar isMobileSafariType = function isMobileSafariType() {\n return browser.name === BrowserTypes.MobileSafari;\n};\nvar isOperaType = function isOperaType() {\n return browser.name === BrowserTypes.Opera;\n};\nvar isIEType = function isIEType() {\n return browser.name === BrowserTypes.InternetExplorer || browser.name === BrowserTypes.Ie;\n};\nvar isMIUIType = function isMIUIType() {\n return browser.name === BrowserTypes.MIUI;\n};\nvar isSamsungBrowserType = function isSamsungBrowserType() {\n return browser.name === BrowserTypes.SamsungBrowser;\n};\nvar isElectronType = function isElectronType() {\n var nav = getNavigatorInstance();\n var ua = nav && nav.userAgent && nav.userAgent.toLowerCase();\n return typeof ua === 'string' ? /electron/.test(ua) : false;\n};\nvar getIOS13 = function getIOS13() {\n var nav = getNavigatorInstance();\n return nav && (/iPad|iPhone|iPod/.test(nav.platform) || nav.platform === 'MacIntel' && nav.maxTouchPoints > 1) && !window.MSStream;\n};\nvar getIPad13 = function getIPad13() {\n return isIOS13Check('iPad');\n};\nvar getIphone13 = function getIphone13() {\n return isIOS13Check('iPhone');\n};\nvar getIPod13 = function getIPod13() {\n return isIOS13Check('iPod');\n};\nvar getBrowserFullVersion = function getBrowserFullVersion() {\n return setDefaults(browser.version);\n};\nvar getBrowserVersion = function getBrowserVersion() {\n return setDefaults(browser.major);\n};\nvar getOsVersion = function getOsVersion() {\n return setDefaults(os.version);\n};\nvar getOsName = function getOsName() {\n return setDefaults(os.name);\n};\nvar getBrowserName = function getBrowserName() {\n return setDefaults(browser.name);\n};\nvar getMobileVendor = function getMobileVendor() {\n return setDefaults(device.vendor);\n};\nvar getMobileModel = function getMobileModel() {\n return setDefaults(device.model);\n};\nvar getEngineName = function getEngineName() {\n return setDefaults(engine.name);\n};\nvar getEngineVersion = function getEngineVersion() {\n return setDefaults(engine.version);\n};\nvar getUseragent = function getUseragent() {\n return setDefaults(ua);\n};\nvar getDeviceType = function getDeviceType() {\n return setDefaults(device.type, 'browser');\n};\nvar isSmartTV = isSmartTVType();\nvar isConsole = isConsoleType();\nvar isWearable = isWearableType();\nvar isMobileSafari = isMobileSafariType() || getIPad13();\nvar isChromium = isChromiumType();\nvar isMobile = isMobileAndTabletType() || getIPad13();\nvar isMobileOnly = isMobileType();\nvar isTablet = isTabletType() || getIPad13();\nvar isBrowser = isBrowserType();\nvar isDesktop = isBrowserType();\nvar isAndroid = isAndroidType();\nvar isWinPhone = isWinPhoneType();\nvar isIOS = isIOSType() || getIPad13();\nvar isChrome = isChromeType();\nvar isFirefox = isFirefoxType();\nvar isSafari = isSafariType();\nvar isOpera = isOperaType();\nvar isIE = isIEType();\nvar osVersion = getOsVersion();\nvar osName = getOsName();\nvar fullBrowserVersion = getBrowserFullVersion();\nvar browserVersion = getBrowserVersion();\nvar browserName = getBrowserName();\nvar mobileVendor = getMobileVendor();\nvar mobileModel = getMobileModel();\nvar engineName = getEngineName();\nvar engineVersion = getEngineVersion();\nvar getUA = getUseragent();\nvar isEdge = isEdgeType() || isEdgeChromiumType();\nvar isYandex = isYandexType();\nvar deviceType = getDeviceType();\nvar isIOS13 = getIOS13();\nvar isIPad13 = getIPad13();\nvar isIPhone13 = getIphone13();\nvar isIPod13 = getIPod13();\nvar isElectron = isElectronType();\nvar isEdgeChromium = isEdgeChromiumType();\nvar isLegacyEdge = isEdgeType() && !isEdgeChromiumType();\nvar isWindows = isWindowsType();\nvar isMacOs = isMacOsType();\nvar isMIUI = isMIUIType();\nvar isSamsungBrowser = isSamsungBrowserType();\nvar AndroidView = function AndroidView(_ref) {\n var renderWithFragment = _ref.renderWithFragment,\n children = _ref.children,\n viewClassName = _ref.viewClassName,\n style = _ref.style,\n props = _objectWithoutProperties(_ref, [\"renderWithFragment\", \"children\", \"viewClassName\", \"style\"]);\n return isAndroid ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", _extends({\n className: viewClassName,\n style: style\n }, props), children) : null;\n};\nvar BrowserView = function BrowserView(_ref2) {\n var renderWithFragment = _ref2.renderWithFragment,\n children = _ref2.children,\n viewClassName = _ref2.viewClassName,\n style = _ref2.style,\n props = _objectWithoutProperties(_ref2, [\"renderWithFragment\", \"children\", \"viewClassName\", \"style\"]);\n return isBrowser ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", _extends({\n className: viewClassName,\n style: style\n }, props), children) : null;\n};\nvar IEView = function IEView(_ref3) {\n var renderWithFragment = _ref3.renderWithFragment,\n children = _ref3.children,\n viewClassName = _ref3.viewClassName,\n style = _ref3.style,\n props = _objectWithoutProperties(_ref3, [\"renderWithFragment\", \"children\", \"viewClassName\", \"style\"]);\n return isIE ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", _extends({\n className: viewClassName,\n style: style\n }, props), children) : null;\n};\nvar IOSView = function IOSView(_ref4) {\n var renderWithFragment = _ref4.renderWithFragment,\n children = _ref4.children,\n viewClassName = _ref4.viewClassName,\n style = _ref4.style,\n props = _objectWithoutProperties(_ref4, [\"renderWithFragment\", \"children\", \"viewClassName\", \"style\"]);\n return isIOS ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", _extends({\n className: viewClassName,\n style: style\n }, props), children) : null;\n};\nvar MobileView = function MobileView(_ref5) {\n var renderWithFragment = _ref5.renderWithFragment,\n children = _ref5.children,\n viewClassName = _ref5.viewClassName,\n style = _ref5.style,\n props = _objectWithoutProperties(_ref5, [\"renderWithFragment\", \"children\", \"viewClassName\", \"style\"]);\n return isMobile ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", _extends({\n className: viewClassName,\n style: style\n }, props), children) : null;\n};\nvar TabletView = function TabletView(_ref6) {\n var renderWithFragment = _ref6.renderWithFragment,\n children = _ref6.children,\n viewClassName = _ref6.viewClassName,\n style = _ref6.style,\n props = _objectWithoutProperties(_ref6, [\"renderWithFragment\", \"children\", \"viewClassName\", \"style\"]);\n return isTablet ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", _extends({\n className: viewClassName,\n style: style\n }, props), children) : null;\n};\nvar WinPhoneView = function WinPhoneView(_ref7) {\n var renderWithFragment = _ref7.renderWithFragment,\n children = _ref7.children,\n viewClassName = _ref7.viewClassName,\n style = _ref7.style,\n props = _objectWithoutProperties(_ref7, [\"renderWithFragment\", \"children\", \"viewClassName\", \"style\"]);\n return isWinPhone ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", _extends({\n className: viewClassName,\n style: style\n }, props), children) : null;\n};\nvar MobileOnlyView = function MobileOnlyView(_ref8) {\n var renderWithFragment = _ref8.renderWithFragment,\n children = _ref8.children,\n viewClassName = _ref8.viewClassName,\n style = _ref8.style,\n props = _objectWithoutProperties(_ref8, [\"renderWithFragment\", \"children\", \"viewClassName\", \"style\"]);\n return isMobileOnly ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", _extends({\n className: viewClassName,\n style: style\n }, props), children) : null;\n};\nvar SmartTVView = function SmartTVView(_ref9) {\n var renderWithFragment = _ref9.renderWithFragment,\n children = _ref9.children,\n viewClassName = _ref9.viewClassName,\n style = _ref9.style,\n props = _objectWithoutProperties(_ref9, [\"renderWithFragment\", \"children\", \"viewClassName\", \"style\"]);\n return isSmartTV ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", _extends({\n className: viewClassName,\n style: style\n }, props), children) : null;\n};\nvar ConsoleView = function ConsoleView(_ref10) {\n var renderWithFragment = _ref10.renderWithFragment,\n children = _ref10.children,\n viewClassName = _ref10.viewClassName,\n style = _ref10.style,\n props = _objectWithoutProperties(_ref10, [\"renderWithFragment\", \"children\", \"viewClassName\", \"style\"]);\n return isConsole ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", _extends({\n className: viewClassName,\n style: style\n }, props), children) : null;\n};\nvar WearableView = function WearableView(_ref11) {\n var renderWithFragment = _ref11.renderWithFragment,\n children = _ref11.children,\n viewClassName = _ref11.viewClassName,\n style = _ref11.style,\n props = _objectWithoutProperties(_ref11, [\"renderWithFragment\", \"children\", \"viewClassName\", \"style\"]);\n return isWearable ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", _extends({\n className: viewClassName,\n style: style\n }, props), children) : null;\n};\nvar CustomView = function CustomView(_ref12) {\n var renderWithFragment = _ref12.renderWithFragment,\n children = _ref12.children,\n viewClassName = _ref12.viewClassName,\n style = _ref12.style,\n condition = _ref12.condition,\n props = _objectWithoutProperties(_ref12, [\"renderWithFragment\", \"children\", \"viewClassName\", \"style\", \"condition\"]);\n return condition ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", _extends({\n className: viewClassName,\n style: style\n }, props), children) : null;\n};\nfunction withOrientationChange(WrappedComponent) {\n return /*#__PURE__*/function (_React$Component) {\n _inherits(_class, _React$Component);\n function _class(props) {\n var _this;\n _classCallCheck(this, _class);\n _this = _possibleConstructorReturn(this, _getPrototypeOf(_class).call(this, props));\n _this.isEventListenerAdded = false;\n _this.handleOrientationChange = _this.handleOrientationChange.bind(_assertThisInitialized(_this));\n _this.onOrientationChange = _this.onOrientationChange.bind(_assertThisInitialized(_this));\n _this.onPageLoad = _this.onPageLoad.bind(_assertThisInitialized(_this));\n _this.state = {\n isLandscape: false,\n isPortrait: false\n };\n return _this;\n }\n _createClass(_class, [{\n key: \"handleOrientationChange\",\n value: function handleOrientationChange() {\n if (!this.isEventListenerAdded) {\n this.isEventListenerAdded = true;\n }\n var orientation = window.innerWidth > window.innerHeight ? 90 : 0;\n this.setState({\n isPortrait: orientation === 0,\n isLandscape: orientation === 90\n });\n }\n }, {\n key: \"onOrientationChange\",\n value: function onOrientationChange() {\n this.handleOrientationChange();\n }\n }, {\n key: \"onPageLoad\",\n value: function onPageLoad() {\n this.handleOrientationChange();\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n if ((typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) !== undefined && isMobile) {\n if (!this.isEventListenerAdded) {\n this.handleOrientationChange();\n window.addEventListener(\"load\", this.onPageLoad, false);\n } else {\n window.removeEventListener(\"load\", this.onPageLoad, false);\n }\n window.addEventListener(\"resize\", this.onOrientationChange, false);\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n window.removeEventListener(\"resize\", this.onOrientationChange, false);\n }\n }, {\n key: \"render\",\n value: function render() {\n return React__default.createElement(WrappedComponent, _extends({}, this.props, {\n isLandscape: this.state.isLandscape,\n isPortrait: this.state.isPortrait\n }));\n }\n }]);\n return _class;\n }(React__default.Component);\n}\nexports.AndroidView = AndroidView;\nexports.BrowserTypes = BrowserTypes;\nexports.BrowserView = BrowserView;\nexports.ConsoleView = ConsoleView;\nexports.CustomView = CustomView;\nexports.IEView = IEView;\nexports.IOSView = IOSView;\nexports.MobileOnlyView = MobileOnlyView;\nexports.MobileView = MobileView;\nexports.OsTypes = OsTypes;\nexports.SmartTVView = SmartTVView;\nexports.TabletView = TabletView;\nexports.WearableView = WearableView;\nexports.WinPhoneView = WinPhoneView;\nexports.browserName = browserName;\nexports.browserVersion = browserVersion;\nexports.deviceDetect = deviceDetect;\nexports.deviceType = deviceType;\nexports.engineName = engineName;\nexports.engineVersion = engineVersion;\nexports.fullBrowserVersion = fullBrowserVersion;\nexports.getUA = getUA;\nexports.isAndroid = isAndroid;\nexports.isBrowser = isBrowser;\nexports.isChrome = isChrome;\nexports.isChromium = isChromium;\nexports.isConsole = isConsole;\nexports.isDesktop = isDesktop;\nexports.isEdge = isEdge;\nexports.isEdgeChromium = isEdgeChromium;\nexports.isElectron = isElectron;\nexports.isFirefox = isFirefox;\nexports.isIE = isIE;\nexports.isIOS = isIOS;\nexports.isIOS13 = isIOS13;\nexports.isIPad13 = isIPad13;\nexports.isIPhone13 = isIPhone13;\nexports.isIPod13 = isIPod13;\nexports.isLegacyEdge = isLegacyEdge;\nexports.isMIUI = isMIUI;\nexports.isMacOs = isMacOs;\nexports.isMobile = isMobile;\nexports.isMobileOnly = isMobileOnly;\nexports.isMobileSafari = isMobileSafari;\nexports.isOpera = isOpera;\nexports.isSafari = isSafari;\nexports.isSamsungBrowser = isSamsungBrowser;\nexports.isSmartTV = isSmartTV;\nexports.isTablet = isTablet;\nexports.isWearable = isWearable;\nexports.isWinPhone = isWinPhone;\nexports.isWindows = isWindows;\nexports.isYandex = isYandex;\nexports.mobileModel = mobileModel;\nexports.mobileVendor = mobileVendor;\nexports.osName = osName;\nexports.osVersion = osVersion;\nexports.withOrientationChange = withOrientationChange;","export const NoOp = () => {};\n\nexport function isAsyncFunction(fn?: Function) {\n return fn?.constructor?.name === 'AsyncFunction'\n}\n\nexport const runAll = async (fns: AnyFunction[]) => {\n for (let fn of fns) {\n await fn();\n }\n}\nexport const runAllFn = async (fns: AnyFunction[]) => await runAll(fns);","\"use strict\";\n\nexports.__esModule = true;\nvar _assign = require(\"../core-js/object/assign\");\nvar _assign2 = _interopRequireDefault(_assign);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nexports.default = _assign2.default || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n};","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n","module.exports = true;\n","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\n/*!\n * GSAP 3.6.1\n * https://greensock.com\n *\n * @license Copyright 2008-2021, GreenSock. All rights reserved.\n * Subject to the terms at https://greensock.com/standard-license or for\n * Club GreenSock members, the agreement issued with that membership.\n * @author: Jack Doyle, jack@greensock.com\n*/\n\n/* eslint-disable */\nvar _config = {\n autoSleep: 120,\n force3D: \"auto\",\n nullTargetWarn: 1,\n units: {\n lineHeight: \"\"\n }\n },\n _defaults = {\n duration: .5,\n overwrite: false,\n delay: 0\n },\n _suppressOverwrites,\n _bigNum = 1e8,\n _tinyNum = 1 / _bigNum,\n _2PI = Math.PI * 2,\n _HALF_PI = _2PI / 4,\n _gsID = 0,\n _sqrt = Math.sqrt,\n _cos = Math.cos,\n _sin = Math.sin,\n _isString = function _isString(value) {\n return typeof value === \"string\";\n },\n _isFunction = function _isFunction(value) {\n return typeof value === \"function\";\n },\n _isNumber = function _isNumber(value) {\n return typeof value === \"number\";\n },\n _isUndefined = function _isUndefined(value) {\n return typeof value === \"undefined\";\n },\n _isObject = function _isObject(value) {\n return typeof value === \"object\";\n },\n _isNotFalse = function _isNotFalse(value) {\n return value !== false;\n },\n _windowExists = function _windowExists() {\n return typeof window !== \"undefined\";\n },\n _isFuncOrString = function _isFuncOrString(value) {\n return _isFunction(value) || _isString(value);\n },\n _isTypedArray = typeof ArrayBuffer === \"function\" && ArrayBuffer.isView || function () {},\n // note: IE10 has ArrayBuffer, but NOT ArrayBuffer.isView().\n _isArray = Array.isArray,\n _strictNumExp = /(?:-?\\.?\\d|\\.)+/gi,\n //only numbers (including negatives and decimals) but NOT relative values.\n _numExp = /[-+=.]*\\d+[.e\\-+]*\\d*[e\\-+]*\\d*/g,\n //finds any numbers, including ones that start with += or -=, negative numbers, and ones in scientific notation like 1e-8.\n _numWithUnitExp = /[-+=.]*\\d+[.e-]*\\d*[a-z%]*/g,\n _complexStringNumExp = /[-+=.]*\\d+\\.?\\d*(?:e-|e\\+)?\\d*/gi,\n //duplicate so that while we're looping through matches from exec(), it doesn't contaminate the lastIndex of _numExp which we use to search for colors too.\n _relExp = /[+-]=-?[.\\d]+/,\n _delimitedValueExp = /[#\\-+.]*\\b[a-z\\d-=+%.]+/gi,\n _unitExp = /[\\d.+\\-=]+(?:e[-+]\\d*)*/i,\n _globalTimeline,\n _win,\n _coreInitted,\n _doc,\n _globals = {},\n _installScope = {},\n _coreReady,\n _install = function _install(scope) {\n return (_installScope = _merge(scope, _globals)) && gsap;\n },\n _missingPlugin = function _missingPlugin(property, value) {\n return console.warn(\"Invalid property\", property, \"set to\", value, \"Missing plugin? gsap.registerPlugin()\");\n },\n _warn = function _warn(message, suppress) {\n return !suppress && console.warn(message);\n },\n _addGlobal = function _addGlobal(name, obj) {\n return name && (_globals[name] = obj) && _installScope && (_installScope[name] = obj) || _globals;\n },\n _emptyFunc = function _emptyFunc() {\n return 0;\n },\n _reservedProps = {},\n _lazyTweens = [],\n _lazyLookup = {},\n _lastRenderedFrame,\n _plugins = {},\n _effects = {},\n _nextGCFrame = 30,\n _harnessPlugins = [],\n _callbackNames = \"\",\n _harness = function _harness(targets) {\n var target = targets[0],\n harnessPlugin,\n i;\n _isObject(target) || _isFunction(target) || (targets = [targets]);\n if (!(harnessPlugin = (target._gsap || {}).harness)) {\n // find the first target with a harness. We assume targets passed into an animation will be of similar type, meaning the same kind of harness can be used for them all (performance optimization)\n i = _harnessPlugins.length;\n while (i-- && !_harnessPlugins[i].targetTest(target)) {}\n harnessPlugin = _harnessPlugins[i];\n }\n i = targets.length;\n while (i--) {\n targets[i] && (targets[i]._gsap || (targets[i]._gsap = new GSCache(targets[i], harnessPlugin))) || targets.splice(i, 1);\n }\n return targets;\n },\n _getCache = function _getCache(target) {\n return target._gsap || _harness(toArray(target))[0]._gsap;\n },\n _getProperty = function _getProperty(target, property, v) {\n return (v = target[property]) && _isFunction(v) ? target[property]() : _isUndefined(v) && target.getAttribute && target.getAttribute(property) || v;\n },\n _forEachName = function _forEachName(names, func) {\n return (names = names.split(\",\")).forEach(func) || names;\n },\n //split a comma-delimited list of names into an array, then run a forEach() function and return the split array (this is just a way to consolidate/shorten some code).\n _round = function _round(value) {\n return Math.round(value * 100000) / 100000 || 0;\n },\n _arrayContainsAny = function _arrayContainsAny(toSearch, toFind) {\n //searches one array to find matches for any of the items in the toFind array. As soon as one is found, it returns true. It does NOT return all the matches; it's simply a boolean search.\n var l = toFind.length,\n i = 0;\n for (; toSearch.indexOf(toFind[i]) < 0 && ++i < l;) {}\n return i < l;\n },\n _parseVars = function _parseVars(params, type, parent) {\n //reads the arguments passed to one of the key methods and figures out if the user is defining things with the OLD/legacy syntax where the duration is the 2nd parameter, and then it adjusts things accordingly and spits back the corrected vars object (with the duration added if necessary, as well as runBackwards or startAt or immediateRender). type 0 = to()/staggerTo(), 1 = from()/staggerFrom(), 2 = fromTo()/staggerFromTo()\n var isLegacy = _isNumber(params[1]),\n varsIndex = (isLegacy ? 2 : 1) + (type < 2 ? 0 : 1),\n vars = params[varsIndex],\n irVars;\n isLegacy && (vars.duration = params[1]);\n vars.parent = parent;\n if (type) {\n irVars = vars;\n while (parent && !(\"immediateRender\" in irVars)) {\n // inheritance hasn't happened yet, but someone may have set a default in an ancestor timeline. We could do vars.immediateRender = _isNotFalse(_inheritDefaults(vars).immediateRender) but that'd exact a slight performance penalty because _inheritDefaults() also runs in the Tween constructor. We're paying a small kb price here to gain speed.\n irVars = parent.vars.defaults || {};\n parent = _isNotFalse(parent.vars.inherit) && parent.parent;\n }\n vars.immediateRender = _isNotFalse(irVars.immediateRender);\n type < 2 ? vars.runBackwards = 1 : vars.startAt = params[varsIndex - 1]; // \"from\" vars\n }\n return vars;\n },\n _lazyRender = function _lazyRender() {\n var l = _lazyTweens.length,\n a = _lazyTweens.slice(0),\n i,\n tween;\n _lazyLookup = {};\n _lazyTweens.length = 0;\n for (i = 0; i < l; i++) {\n tween = a[i];\n tween && tween._lazy && (tween.render(tween._lazy[0], tween._lazy[1], true)._lazy = 0);\n }\n },\n _lazySafeRender = function _lazySafeRender(animation, time, suppressEvents, force) {\n _lazyTweens.length && _lazyRender();\n animation.render(time, suppressEvents, force);\n _lazyTweens.length && _lazyRender(); //in case rendering caused any tweens to lazy-init, we should render them because typically when someone calls seek() or time() or progress(), they expect an immediate render.\n },\n _numericIfPossible = function _numericIfPossible(value) {\n var n = parseFloat(value);\n return (n || n === 0) && (value + \"\").match(_delimitedValueExp).length < 2 ? n : _isString(value) ? value.trim() : value;\n },\n _passThrough = function _passThrough(p) {\n return p;\n },\n _setDefaults = function _setDefaults(obj, defaults) {\n for (var p in defaults) {\n p in obj || (obj[p] = defaults[p]);\n }\n return obj;\n },\n _setKeyframeDefaults = function _setKeyframeDefaults(obj, defaults) {\n for (var p in defaults) {\n p in obj || p === \"duration\" || p === \"ease\" || (obj[p] = defaults[p]);\n }\n },\n _merge = function _merge(base, toMerge) {\n for (var p in toMerge) {\n base[p] = toMerge[p];\n }\n return base;\n },\n _mergeDeep = function _mergeDeep(base, toMerge) {\n for (var p in toMerge) {\n p !== \"__proto__\" && p !== \"constructor\" && p !== \"prototype\" && (base[p] = _isObject(toMerge[p]) ? _mergeDeep(base[p] || (base[p] = {}), toMerge[p]) : toMerge[p]);\n }\n return base;\n },\n _copyExcluding = function _copyExcluding(obj, excluding) {\n var copy = {},\n p;\n for (p in obj) {\n p in excluding || (copy[p] = obj[p]);\n }\n return copy;\n },\n _inheritDefaults = function _inheritDefaults(vars) {\n var parent = vars.parent || _globalTimeline,\n func = vars.keyframes ? _setKeyframeDefaults : _setDefaults;\n if (_isNotFalse(vars.inherit)) {\n while (parent) {\n func(vars, parent.vars.defaults);\n parent = parent.parent || parent._dp;\n }\n }\n return vars;\n },\n _arraysMatch = function _arraysMatch(a1, a2) {\n var i = a1.length,\n match = i === a2.length;\n while (match && i-- && a1[i] === a2[i]) {}\n return i < 0;\n },\n _addLinkedListItem = function _addLinkedListItem(parent, child, firstProp, lastProp, sortBy) {\n if (firstProp === void 0) {\n firstProp = \"_first\";\n }\n if (lastProp === void 0) {\n lastProp = \"_last\";\n }\n var prev = parent[lastProp],\n t;\n if (sortBy) {\n t = child[sortBy];\n while (prev && prev[sortBy] > t) {\n prev = prev._prev;\n }\n }\n if (prev) {\n child._next = prev._next;\n prev._next = child;\n } else {\n child._next = parent[firstProp];\n parent[firstProp] = child;\n }\n if (child._next) {\n child._next._prev = child;\n } else {\n parent[lastProp] = child;\n }\n child._prev = prev;\n child.parent = child._dp = parent;\n return child;\n },\n _removeLinkedListItem = function _removeLinkedListItem(parent, child, firstProp, lastProp) {\n if (firstProp === void 0) {\n firstProp = \"_first\";\n }\n if (lastProp === void 0) {\n lastProp = \"_last\";\n }\n var prev = child._prev,\n next = child._next;\n if (prev) {\n prev._next = next;\n } else if (parent[firstProp] === child) {\n parent[firstProp] = next;\n }\n if (next) {\n next._prev = prev;\n } else if (parent[lastProp] === child) {\n parent[lastProp] = prev;\n }\n child._next = child._prev = child.parent = null; // don't delete the _dp just so we can revert if necessary. But parent should be null to indicate the item isn't in a linked list.\n },\n _removeFromParent = function _removeFromParent(child, onlyIfParentHasAutoRemove) {\n child.parent && (!onlyIfParentHasAutoRemove || child.parent.autoRemoveChildren) && child.parent.remove(child);\n child._act = 0;\n },\n _uncache = function _uncache(animation, child) {\n if (animation && (!child || child._end > animation._dur || child._start < 0)) {\n // performance optimization: if a child animation is passed in we should only uncache if that child EXTENDS the animation (its end time is beyond the end)\n var a = animation;\n while (a) {\n a._dirty = 1;\n a = a.parent;\n }\n }\n return animation;\n },\n _recacheAncestors = function _recacheAncestors(animation) {\n var parent = animation.parent;\n while (parent && parent.parent) {\n //sometimes we must force a re-sort of all children and update the duration/totalDuration of all ancestor timelines immediately in case, for example, in the middle of a render loop, one tween alters another tween's timeScale which shoves its startTime before 0, forcing the parent timeline to shift around and shiftChildren() which could affect that next tween's render (startTime). Doesn't matter for the root timeline though.\n parent._dirty = 1;\n parent.totalDuration();\n parent = parent.parent;\n }\n return animation;\n },\n _hasNoPausedAncestors = function _hasNoPausedAncestors(animation) {\n return !animation || animation._ts && _hasNoPausedAncestors(animation.parent);\n },\n _elapsedCycleDuration = function _elapsedCycleDuration(animation) {\n return animation._repeat ? _animationCycle(animation._tTime, animation = animation.duration() + animation._rDelay) * animation : 0;\n },\n // feed in the totalTime and cycleDuration and it'll return the cycle (iteration minus 1) and if the playhead is exactly at the very END, it will NOT bump up to the next cycle.\n _animationCycle = function _animationCycle(tTime, cycleDuration) {\n var whole = Math.floor(tTime /= cycleDuration);\n return tTime && whole === tTime ? whole - 1 : whole;\n },\n _parentToChildTotalTime = function _parentToChildTotalTime(parentTime, child) {\n return (parentTime - child._start) * child._ts + (child._ts >= 0 ? 0 : child._dirty ? child.totalDuration() : child._tDur);\n },\n _setEnd = function _setEnd(animation) {\n return animation._end = _round(animation._start + (animation._tDur / Math.abs(animation._ts || animation._rts || _tinyNum) || 0));\n },\n _alignPlayhead = function _alignPlayhead(animation, totalTime) {\n // adjusts the animation's _start and _end according to the provided totalTime (only if the parent's smoothChildTiming is true and the animation isn't paused). It doesn't do any rendering or forcing things back into parent timelines, etc. - that's what totalTime() is for.\n var parent = animation._dp;\n if (parent && parent.smoothChildTiming && animation._ts) {\n animation._start = _round(parent._time - (animation._ts > 0 ? totalTime / animation._ts : ((animation._dirty ? animation.totalDuration() : animation._tDur) - totalTime) / -animation._ts));\n _setEnd(animation);\n parent._dirty || _uncache(parent, animation); //for performance improvement. If the parent's cache is already dirty, it already took care of marking the ancestors as dirty too, so skip the function call here.\n }\n return animation;\n },\n /*\n _totalTimeToTime = (clampedTotalTime, duration, repeat, repeatDelay, yoyo) => {\n \tlet cycleDuration = duration + repeatDelay,\n \t\ttime = _round(clampedTotalTime % cycleDuration);\n \tif (time > duration) {\n \t\ttime = duration;\n \t}\n \treturn (yoyo && (~~(clampedTotalTime / cycleDuration) & 1)) ? duration - time : time;\n },\n */\n _postAddChecks = function _postAddChecks(timeline, child) {\n var t;\n if (child._time || child._initted && !child._dur) {\n //in case, for example, the _start is moved on a tween that has already rendered. Imagine it's at its end state, then the startTime is moved WAY later (after the end of this timeline), it should render at its beginning.\n t = _parentToChildTotalTime(timeline.rawTime(), child);\n if (!child._dur || _clamp(0, child.totalDuration(), t) - child._tTime > _tinyNum) {\n child.render(t, true);\n }\n } //if the timeline has already ended but the inserted tween/timeline extends the duration, we should enable this timeline again so that it renders properly. We should also align the playhead with the parent timeline's when appropriate.\n\n if (_uncache(timeline, child)._dp && timeline._initted && timeline._time >= timeline._dur && timeline._ts) {\n //in case any of the ancestors had completed but should now be enabled...\n if (timeline._dur < timeline.duration()) {\n t = timeline;\n while (t._dp) {\n t.rawTime() >= 0 && t.totalTime(t._tTime); //moves the timeline (shifts its startTime) if necessary, and also enables it. If it's currently zero, though, it may not be scheduled to render until later so there's no need to force it to align with the current playhead position. Only move to catch up with the playhead.\n\n t = t._dp;\n }\n }\n timeline._zTime = -_tinyNum; // helps ensure that the next render() will be forced (crossingStart = true in render()), even if the duration hasn't changed (we're adding a child which would need to get rendered). Definitely an edge case. Note: we MUST do this AFTER the loop above where the totalTime() might trigger a render() because this _addToTimeline() method gets called from the Animation constructor, BEFORE tweens even record their targets, etc. so we wouldn't want things to get triggered in the wrong order.\n }\n },\n _addToTimeline = function _addToTimeline(timeline, child, position, skipChecks) {\n child.parent && _removeFromParent(child);\n child._start = _round(position + child._delay);\n child._end = _round(child._start + (child.totalDuration() / Math.abs(child.timeScale()) || 0));\n _addLinkedListItem(timeline, child, \"_first\", \"_last\", timeline._sort ? \"_start\" : 0);\n timeline._recent = child;\n skipChecks || _postAddChecks(timeline, child);\n return timeline;\n },\n _scrollTrigger = function _scrollTrigger(animation, trigger) {\n return (_globals.ScrollTrigger || _missingPlugin(\"scrollTrigger\", trigger)) && _globals.ScrollTrigger.create(trigger, animation);\n },\n _attemptInitTween = function _attemptInitTween(tween, totalTime, force, suppressEvents) {\n _initTween(tween, totalTime);\n if (!tween._initted) {\n return 1;\n }\n if (!force && tween._pt && (tween._dur && tween.vars.lazy !== false || !tween._dur && tween.vars.lazy) && _lastRenderedFrame !== _ticker.frame) {\n _lazyTweens.push(tween);\n tween._lazy = [totalTime, suppressEvents];\n return 1;\n }\n },\n _parentPlayheadIsBeforeStart = function _parentPlayheadIsBeforeStart(_ref) {\n var parent = _ref.parent;\n return parent && parent._ts && parent._initted && !parent._lock && (parent.rawTime() < 0 || _parentPlayheadIsBeforeStart(parent));\n },\n // check parent's _lock because when a timeline repeats/yoyos and does its artificial wrapping, we shouldn't force the ratio back to 0\n _renderZeroDurationTween = function _renderZeroDurationTween(tween, totalTime, suppressEvents, force) {\n var prevRatio = tween.ratio,\n ratio = totalTime < 0 || !totalTime && (!tween._start && _parentPlayheadIsBeforeStart(tween) || (tween._ts < 0 || tween._dp._ts < 0) && tween.data !== \"isFromStart\" && tween.data !== \"isStart\") ? 0 : 1,\n // if the tween or its parent is reversed and the totalTime is 0, we should go to a ratio of 0.\n repeatDelay = tween._rDelay,\n tTime = 0,\n pt,\n iteration,\n prevIteration;\n if (repeatDelay && tween._repeat) {\n // in case there's a zero-duration tween that has a repeat with a repeatDelay\n tTime = _clamp(0, tween._tDur, totalTime);\n iteration = _animationCycle(tTime, repeatDelay);\n prevIteration = _animationCycle(tween._tTime, repeatDelay);\n tween._yoyo && iteration & 1 && (ratio = 1 - ratio);\n if (iteration !== prevIteration) {\n prevRatio = 1 - ratio;\n tween.vars.repeatRefresh && tween._initted && tween.invalidate();\n }\n }\n if (ratio !== prevRatio || force || tween._zTime === _tinyNum || !totalTime && tween._zTime) {\n if (!tween._initted && _attemptInitTween(tween, totalTime, force, suppressEvents)) {\n // if we render the very beginning (time == 0) of a fromTo(), we must force the render (normal tweens wouldn't need to render at a time of 0 when the prevTime was also 0). This is also mandatory to make sure overwriting kicks in immediately.\n return;\n }\n prevIteration = tween._zTime;\n tween._zTime = totalTime || (suppressEvents ? _tinyNum : 0); // when the playhead arrives at EXACTLY time 0 (right on top) of a zero-duration tween, we need to discern if events are suppressed so that when the playhead moves again (next time), it'll trigger the callback. If events are NOT suppressed, obviously the callback would be triggered in this render. Basically, the callback should fire either when the playhead ARRIVES or LEAVES this exact spot, not both. Imagine doing a timeline.seek(0) and there's a callback that sits at 0. Since events are suppressed on that seek() by default, nothing will fire, but when the playhead moves off of that position, the callback should fire. This behavior is what people intuitively expect.\n\n suppressEvents || (suppressEvents = totalTime && !prevIteration); // if it was rendered previously at exactly 0 (_zTime) and now the playhead is moving away, DON'T fire callbacks otherwise they'll seem like duplicates.\n\n tween.ratio = ratio;\n tween._from && (ratio = 1 - ratio);\n tween._time = 0;\n tween._tTime = tTime;\n pt = tween._pt;\n while (pt) {\n pt.r(ratio, pt.d);\n pt = pt._next;\n }\n tween._startAt && totalTime < 0 && tween._startAt.render(totalTime, true, true);\n tween._onUpdate && !suppressEvents && _callback(tween, \"onUpdate\");\n tTime && tween._repeat && !suppressEvents && tween.parent && _callback(tween, \"onRepeat\");\n if ((totalTime >= tween._tDur || totalTime < 0) && tween.ratio === ratio) {\n ratio && _removeFromParent(tween, 1);\n if (!suppressEvents) {\n _callback(tween, ratio ? \"onComplete\" : \"onReverseComplete\", true);\n tween._prom && tween._prom();\n }\n }\n } else if (!tween._zTime) {\n tween._zTime = totalTime;\n }\n },\n _findNextPauseTween = function _findNextPauseTween(animation, prevTime, time) {\n var child;\n if (time > prevTime) {\n child = animation._first;\n while (child && child._start <= time) {\n if (!child._dur && child.data === \"isPause\" && child._start > prevTime) {\n return child;\n }\n child = child._next;\n }\n } else {\n child = animation._last;\n while (child && child._start >= time) {\n if (!child._dur && child.data === \"isPause\" && child._start < prevTime) {\n return child;\n }\n child = child._prev;\n }\n }\n },\n _setDuration = function _setDuration(animation, duration, skipUncache, leavePlayhead) {\n var repeat = animation._repeat,\n dur = _round(duration) || 0,\n totalProgress = animation._tTime / animation._tDur;\n totalProgress && !leavePlayhead && (animation._time *= dur / animation._dur);\n animation._dur = dur;\n animation._tDur = !repeat ? dur : repeat < 0 ? 1e10 : _round(dur * (repeat + 1) + animation._rDelay * repeat);\n totalProgress && !leavePlayhead ? _alignPlayhead(animation, animation._tTime = animation._tDur * totalProgress) : animation.parent && _setEnd(animation);\n skipUncache || _uncache(animation.parent, animation);\n return animation;\n },\n _onUpdateTotalDuration = function _onUpdateTotalDuration(animation) {\n return animation instanceof Timeline ? _uncache(animation) : _setDuration(animation, animation._dur);\n },\n _zeroPosition = {\n _start: 0,\n endTime: _emptyFunc\n },\n _parsePosition = function _parsePosition(animation, position) {\n var labels = animation.labels,\n recent = animation._recent || _zeroPosition,\n clippedDuration = animation.duration() >= _bigNum ? recent.endTime(false) : animation._dur,\n //in case there's a child that infinitely repeats, users almost never intend for the insertion point of a new child to be based on a SUPER long value like that so we clip it and assume the most recently-added child's endTime should be used instead.\n i,\n offset;\n if (_isString(position) && (isNaN(position) || position in labels)) {\n //if the string is a number like \"1\", check to see if there's a label with that name, otherwise interpret it as a number (absolute value).\n i = position.charAt(0);\n if (i === \"<\" || i === \">\") {\n return (i === \"<\" ? recent._start : recent.endTime(recent._repeat >= 0)) + (parseFloat(position.substr(1)) || 0);\n }\n i = position.indexOf(\"=\");\n if (i < 0) {\n position in labels || (labels[position] = clippedDuration);\n return labels[position];\n }\n offset = +(position.charAt(i - 1) + position.substr(i + 1));\n return i > 1 ? _parsePosition(animation, position.substr(0, i - 1)) + offset : clippedDuration + offset;\n }\n return position == null ? clippedDuration : +position;\n },\n _conditionalReturn = function _conditionalReturn(value, func) {\n return value || value === 0 ? func(value) : func;\n },\n _clamp = function _clamp(min, max, value) {\n return value < min ? min : value > max ? max : value;\n },\n getUnit = function getUnit(value) {\n if (typeof value !== \"string\") {\n return \"\";\n }\n var v = _unitExp.exec(value);\n return v ? value.substr(v.index + v[0].length) : \"\";\n },\n // note: protect against padded numbers as strings, like \"100.100\". That shouldn't return \"00\" as the unit. If it's numeric, return no unit.\n clamp = function clamp(min, max, value) {\n return _conditionalReturn(value, function (v) {\n return _clamp(min, max, v);\n });\n },\n _slice = [].slice,\n _isArrayLike = function _isArrayLike(value, nonEmpty) {\n return value && _isObject(value) && \"length\" in value && (!nonEmpty && !value.length || value.length - 1 in value && _isObject(value[0])) && !value.nodeType && value !== _win;\n },\n _flatten = function _flatten(ar, leaveStrings, accumulator) {\n if (accumulator === void 0) {\n accumulator = [];\n }\n return ar.forEach(function (value) {\n var _accumulator;\n return _isString(value) && !leaveStrings || _isArrayLike(value, 1) ? (_accumulator = accumulator).push.apply(_accumulator, toArray(value)) : accumulator.push(value);\n }) || accumulator;\n },\n //takes any value and returns an array. If it's a string (and leaveStrings isn't true), it'll use document.querySelectorAll() and convert that to an array. It'll also accept iterables like jQuery objects.\n toArray = function toArray(value, leaveStrings) {\n return _isString(value) && !leaveStrings && (_coreInitted || !_wake()) ? _slice.call(_doc.querySelectorAll(value), 0) : _isArray(value) ? _flatten(value, leaveStrings) : _isArrayLike(value) ? _slice.call(value, 0) : value ? [value] : [];\n },\n shuffle = function shuffle(a) {\n return a.sort(function () {\n return .5 - Math.random();\n });\n },\n // alternative that's a bit faster and more reliably diverse but bigger: for (let j, v, i = a.length; i; j = Math.floor(Math.random() * i), v = a[--i], a[i] = a[j], a[j] = v); return a;\n //for distributing values across an array. Can accept a number, a function or (most commonly) a function which can contain the following properties: {base, amount, from, ease, grid, axis, length, each}. Returns a function that expects the following parameters: index, target, array. Recognizes the following\n distribute = function distribute(v) {\n if (_isFunction(v)) {\n return v;\n }\n var vars = _isObject(v) ? v : {\n each: v\n },\n //n:1 is just to indicate v was a number; we leverage that later to set v according to the length we get. If a number is passed in, we treat it like the old stagger value where 0.1, for example, would mean that things would be distributed with 0.1 between each element in the array rather than a total \"amount\" that's chunked out among them all.\n ease = _parseEase(vars.ease),\n from = vars.from || 0,\n base = parseFloat(vars.base) || 0,\n cache = {},\n isDecimal = from > 0 && from < 1,\n ratios = isNaN(from) || isDecimal,\n axis = vars.axis,\n ratioX = from,\n ratioY = from;\n if (_isString(from)) {\n ratioX = ratioY = {\n center: .5,\n edges: .5,\n end: 1\n }[from] || 0;\n } else if (!isDecimal && ratios) {\n ratioX = from[0];\n ratioY = from[1];\n }\n return function (i, target, a) {\n var l = (a || vars).length,\n distances = cache[l],\n originX,\n originY,\n x,\n y,\n d,\n j,\n max,\n min,\n wrapAt;\n if (!distances) {\n wrapAt = vars.grid === \"auto\" ? 0 : (vars.grid || [1, _bigNum])[1];\n if (!wrapAt) {\n max = -_bigNum;\n while (max < (max = a[wrapAt++].getBoundingClientRect().left) && wrapAt < l) {}\n wrapAt--;\n }\n distances = cache[l] = [];\n originX = ratios ? Math.min(wrapAt, l) * ratioX - .5 : from % wrapAt;\n originY = ratios ? l * ratioY / wrapAt - .5 : from / wrapAt | 0;\n max = 0;\n min = _bigNum;\n for (j = 0; j < l; j++) {\n x = j % wrapAt - originX;\n y = originY - (j / wrapAt | 0);\n distances[j] = d = !axis ? _sqrt(x * x + y * y) : Math.abs(axis === \"y\" ? y : x);\n d > max && (max = d);\n d < min && (min = d);\n }\n from === \"random\" && shuffle(distances);\n distances.max = max - min;\n distances.min = min;\n distances.v = l = (parseFloat(vars.amount) || parseFloat(vars.each) * (wrapAt > l ? l - 1 : !axis ? Math.max(wrapAt, l / wrapAt) : axis === \"y\" ? l / wrapAt : wrapAt) || 0) * (from === \"edges\" ? -1 : 1);\n distances.b = l < 0 ? base - l : base;\n distances.u = getUnit(vars.amount || vars.each) || 0; //unit\n\n ease = ease && l < 0 ? _invertEase(ease) : ease;\n }\n l = (distances[i] - distances.min) / distances.max || 0;\n return _round(distances.b + (ease ? ease(l) : l) * distances.v) + distances.u; //round in order to work around floating point errors\n };\n },\n _roundModifier = function _roundModifier(v) {\n //pass in 0.1 get a function that'll round to the nearest tenth, or 5 to round to the closest 5, or 0.001 to the closest 1000th, etc.\n var p = v < 1 ? Math.pow(10, (v + \"\").length - 2) : 1; //to avoid floating point math errors (like 24 * 0.1 == 2.4000000000000004), we chop off at a specific number of decimal places (much faster than toFixed()\n\n return function (raw) {\n var n = Math.round(parseFloat(raw) / v) * v * p;\n return (n - n % 1) / p + (_isNumber(raw) ? 0 : getUnit(raw)); // n - n % 1 replaces Math.floor() in order to handle negative values properly. For example, Math.floor(-150.00000000000003) is 151!\n };\n },\n snap = function snap(snapTo, value) {\n var isArray = _isArray(snapTo),\n radius,\n is2D;\n if (!isArray && _isObject(snapTo)) {\n radius = isArray = snapTo.radius || _bigNum;\n if (snapTo.values) {\n snapTo = toArray(snapTo.values);\n if (is2D = !_isNumber(snapTo[0])) {\n radius *= radius; //performance optimization so we don't have to Math.sqrt() in the loop.\n }\n } else {\n snapTo = _roundModifier(snapTo.increment);\n }\n }\n return _conditionalReturn(value, !isArray ? _roundModifier(snapTo) : _isFunction(snapTo) ? function (raw) {\n is2D = snapTo(raw);\n return Math.abs(is2D - raw) <= radius ? is2D : raw;\n } : function (raw) {\n var x = parseFloat(is2D ? raw.x : raw),\n y = parseFloat(is2D ? raw.y : 0),\n min = _bigNum,\n closest = 0,\n i = snapTo.length,\n dx,\n dy;\n while (i--) {\n if (is2D) {\n dx = snapTo[i].x - x;\n dy = snapTo[i].y - y;\n dx = dx * dx + dy * dy;\n } else {\n dx = Math.abs(snapTo[i] - x);\n }\n if (dx < min) {\n min = dx;\n closest = i;\n }\n }\n closest = !radius || min <= radius ? snapTo[closest] : raw;\n return is2D || closest === raw || _isNumber(raw) ? closest : closest + getUnit(raw);\n });\n },\n random = function random(min, max, roundingIncrement, returnFunction) {\n return _conditionalReturn(_isArray(min) ? !max : roundingIncrement === true ? !!(roundingIncrement = 0) : !returnFunction, function () {\n return _isArray(min) ? min[~~(Math.random() * min.length)] : (roundingIncrement = roundingIncrement || 1e-5) && (returnFunction = roundingIncrement < 1 ? Math.pow(10, (roundingIncrement + \"\").length - 2) : 1) && Math.floor(Math.round((min - roundingIncrement / 2 + Math.random() * (max - min + roundingIncrement * .99)) / roundingIncrement) * roundingIncrement * returnFunction) / returnFunction;\n });\n },\n pipe = function pipe() {\n for (var _len = arguments.length, functions = new Array(_len), _key = 0; _key < _len; _key++) {\n functions[_key] = arguments[_key];\n }\n return function (value) {\n return functions.reduce(function (v, f) {\n return f(v);\n }, value);\n };\n },\n unitize = function unitize(func, unit) {\n return function (value) {\n return func(parseFloat(value)) + (unit || getUnit(value));\n };\n },\n normalize = function normalize(min, max, value) {\n return mapRange(min, max, 0, 1, value);\n },\n _wrapArray = function _wrapArray(a, wrapper, value) {\n return _conditionalReturn(value, function (index) {\n return a[~~wrapper(index)];\n });\n },\n wrap = function wrap(min, max, value) {\n // NOTE: wrap() CANNOT be an arrow function! A very odd compiling bug causes problems (unrelated to GSAP).\n var range = max - min;\n return _isArray(min) ? _wrapArray(min, wrap(0, min.length), max) : _conditionalReturn(value, function (value) {\n return (range + (value - min) % range) % range + min;\n });\n },\n wrapYoyo = function wrapYoyo(min, max, value) {\n var range = max - min,\n total = range * 2;\n return _isArray(min) ? _wrapArray(min, wrapYoyo(0, min.length - 1), max) : _conditionalReturn(value, function (value) {\n value = (total + (value - min) % total) % total || 0;\n return min + (value > range ? total - value : value);\n });\n },\n _replaceRandom = function _replaceRandom(value) {\n //replaces all occurrences of random(...) in a string with the calculated random value. can be a range like random(-100, 100, 5) or an array like random([0, 100, 500])\n var prev = 0,\n s = \"\",\n i,\n nums,\n end,\n isArray;\n while (~(i = value.indexOf(\"random(\", prev))) {\n end = value.indexOf(\")\", i);\n isArray = value.charAt(i + 7) === \"[\";\n nums = value.substr(i + 7, end - i - 7).match(isArray ? _delimitedValueExp : _strictNumExp);\n s += value.substr(prev, i - prev) + random(isArray ? nums : +nums[0], isArray ? 0 : +nums[1], +nums[2] || 1e-5);\n prev = end + 1;\n }\n return s + value.substr(prev, value.length - prev);\n },\n mapRange = function mapRange(inMin, inMax, outMin, outMax, value) {\n var inRange = inMax - inMin,\n outRange = outMax - outMin;\n return _conditionalReturn(value, function (value) {\n return outMin + ((value - inMin) / inRange * outRange || 0);\n });\n },\n interpolate = function interpolate(start, end, progress, mutate) {\n var func = isNaN(start + end) ? 0 : function (p) {\n return (1 - p) * start + p * end;\n };\n if (!func) {\n var isString = _isString(start),\n master = {},\n p,\n i,\n interpolators,\n l,\n il;\n progress === true && (mutate = 1) && (progress = null);\n if (isString) {\n start = {\n p: start\n };\n end = {\n p: end\n };\n } else if (_isArray(start) && !_isArray(end)) {\n interpolators = [];\n l = start.length;\n il = l - 2;\n for (i = 1; i < l; i++) {\n interpolators.push(interpolate(start[i - 1], start[i])); //build the interpolators up front as a performance optimization so that when the function is called many times, it can just reuse them.\n }\n l--;\n func = function func(p) {\n p *= l;\n var i = Math.min(il, ~~p);\n return interpolators[i](p - i);\n };\n progress = end;\n } else if (!mutate) {\n start = _merge(_isArray(start) ? [] : {}, start);\n }\n if (!interpolators) {\n for (p in end) {\n _addPropTween.call(master, start, p, \"get\", end[p]);\n }\n func = function func(p) {\n return _renderPropTweens(p, master) || (isString ? start.p : start);\n };\n }\n }\n return _conditionalReturn(progress, func);\n },\n _getLabelInDirection = function _getLabelInDirection(timeline, fromTime, backward) {\n //used for nextLabel() and previousLabel()\n var labels = timeline.labels,\n min = _bigNum,\n p,\n distance,\n label;\n for (p in labels) {\n distance = labels[p] - fromTime;\n if (distance < 0 === !!backward && distance && min > (distance = Math.abs(distance))) {\n label = p;\n min = distance;\n }\n }\n return label;\n },\n _callback = function _callback(animation, type, executeLazyFirst) {\n var v = animation.vars,\n callback = v[type],\n params,\n scope;\n if (!callback) {\n return;\n }\n params = v[type + \"Params\"];\n scope = v.callbackScope || animation;\n executeLazyFirst && _lazyTweens.length && _lazyRender(); //in case rendering caused any tweens to lazy-init, we should render them because typically when a timeline finishes, users expect things to have rendered fully. Imagine an onUpdate on a timeline that reports/checks tweened values.\n\n return params ? callback.apply(scope, params) : callback.call(scope);\n },\n _interrupt = function _interrupt(animation) {\n _removeFromParent(animation);\n animation.scrollTrigger && animation.scrollTrigger.kill(false);\n animation.progress() < 1 && _callback(animation, \"onInterrupt\");\n return animation;\n },\n _quickTween,\n _createPlugin = function _createPlugin(config) {\n config = !config.name && config[\"default\"] || config; //UMD packaging wraps things oddly, so for example MotionPathHelper becomes {MotionPathHelper:MotionPathHelper, default:MotionPathHelper}.\n\n var name = config.name,\n isFunc = _isFunction(config),\n Plugin = name && !isFunc && config.init ? function () {\n this._props = [];\n } : config,\n //in case someone passes in an object that's not a plugin, like CustomEase\n instanceDefaults = {\n init: _emptyFunc,\n render: _renderPropTweens,\n add: _addPropTween,\n kill: _killPropTweensOf,\n modifier: _addPluginModifier,\n rawVars: 0\n },\n statics = {\n targetTest: 0,\n get: 0,\n getSetter: _getSetter,\n aliases: {},\n register: 0\n };\n _wake();\n if (config !== Plugin) {\n if (_plugins[name]) {\n return;\n }\n _setDefaults(Plugin, _setDefaults(_copyExcluding(config, instanceDefaults), statics)); //static methods\n\n _merge(Plugin.prototype, _merge(instanceDefaults, _copyExcluding(config, statics))); //instance methods\n\n _plugins[Plugin.prop = name] = Plugin;\n if (config.targetTest) {\n _harnessPlugins.push(Plugin);\n _reservedProps[name] = 1;\n }\n name = (name === \"css\" ? \"CSS\" : name.charAt(0).toUpperCase() + name.substr(1)) + \"Plugin\"; //for the global name. \"motionPath\" should become MotionPathPlugin\n }\n _addGlobal(name, Plugin);\n config.register && config.register(gsap, Plugin, PropTween);\n },\n /*\n * --------------------------------------------------------------------------------------\n * COLORS\n * --------------------------------------------------------------------------------------\n */\n _255 = 255,\n _colorLookup = {\n aqua: [0, _255, _255],\n lime: [0, _255, 0],\n silver: [192, 192, 192],\n black: [0, 0, 0],\n maroon: [128, 0, 0],\n teal: [0, 128, 128],\n blue: [0, 0, _255],\n navy: [0, 0, 128],\n white: [_255, _255, _255],\n olive: [128, 128, 0],\n yellow: [_255, _255, 0],\n orange: [_255, 165, 0],\n gray: [128, 128, 128],\n purple: [128, 0, 128],\n green: [0, 128, 0],\n red: [_255, 0, 0],\n pink: [_255, 192, 203],\n cyan: [0, _255, _255],\n transparent: [_255, _255, _255, 0]\n },\n _hue = function _hue(h, m1, m2) {\n h = h < 0 ? h + 1 : h > 1 ? h - 1 : h;\n return (h * 6 < 1 ? m1 + (m2 - m1) * h * 6 : h < .5 ? m2 : h * 3 < 2 ? m1 + (m2 - m1) * (2 / 3 - h) * 6 : m1) * _255 + .5 | 0;\n },\n splitColor = function splitColor(v, toHSL, forceAlpha) {\n var a = !v ? _colorLookup.black : _isNumber(v) ? [v >> 16, v >> 8 & _255, v & _255] : 0,\n r,\n g,\n b,\n h,\n s,\n l,\n max,\n min,\n d,\n wasHSL;\n if (!a) {\n if (v.substr(-1) === \",\") {\n //sometimes a trailing comma is included and we should chop it off (typically from a comma-delimited list of values like a textShadow:\"2px 2px 2px blue, 5px 5px 5px rgb(255,0,0)\" - in this example \"blue,\" has a trailing comma. We could strip it out inside parseComplex() but we'd need to do it to the beginning and ending values plus it wouldn't provide protection from other potential scenarios like if the user passes in a similar value.\n v = v.substr(0, v.length - 1);\n }\n if (_colorLookup[v]) {\n a = _colorLookup[v];\n } else if (v.charAt(0) === \"#\") {\n if (v.length < 6) {\n //for shorthand like #9F0 or #9F0F (could have alpha)\n r = v.charAt(1);\n g = v.charAt(2);\n b = v.charAt(3);\n v = \"#\" + r + r + g + g + b + b + (v.length === 5 ? v.charAt(4) + v.charAt(4) : \"\");\n }\n if (v.length === 9) {\n // hex with alpha, like #fd5e53ff\n a = parseInt(v.substr(1, 6), 16);\n return [a >> 16, a >> 8 & _255, a & _255, parseInt(v.substr(7), 16) / 255];\n }\n v = parseInt(v.substr(1), 16);\n a = [v >> 16, v >> 8 & _255, v & _255];\n } else if (v.substr(0, 3) === \"hsl\") {\n a = wasHSL = v.match(_strictNumExp);\n if (!toHSL) {\n h = +a[0] % 360 / 360;\n s = +a[1] / 100;\n l = +a[2] / 100;\n g = l <= .5 ? l * (s + 1) : l + s - l * s;\n r = l * 2 - g;\n a.length > 3 && (a[3] *= 1); //cast as number\n\n a[0] = _hue(h + 1 / 3, r, g);\n a[1] = _hue(h, r, g);\n a[2] = _hue(h - 1 / 3, r, g);\n } else if (~v.indexOf(\"=\")) {\n //if relative values are found, just return the raw strings with the relative prefixes in place.\n a = v.match(_numExp);\n forceAlpha && a.length < 4 && (a[3] = 1);\n return a;\n }\n } else {\n a = v.match(_strictNumExp) || _colorLookup.transparent;\n }\n a = a.map(Number);\n }\n if (toHSL && !wasHSL) {\n r = a[0] / _255;\n g = a[1] / _255;\n b = a[2] / _255;\n max = Math.max(r, g, b);\n min = Math.min(r, g, b);\n l = (max + min) / 2;\n if (max === min) {\n h = s = 0;\n } else {\n d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n h = max === r ? (g - b) / d + (g < b ? 6 : 0) : max === g ? (b - r) / d + 2 : (r - g) / d + 4;\n h *= 60;\n }\n a[0] = ~~(h + .5);\n a[1] = ~~(s * 100 + .5);\n a[2] = ~~(l * 100 + .5);\n }\n forceAlpha && a.length < 4 && (a[3] = 1);\n return a;\n },\n _colorOrderData = function _colorOrderData(v) {\n // strips out the colors from the string, finds all the numeric slots (with units) and returns an array of those. The Array also has a \"c\" property which is an Array of the index values where the colors belong. This is to help work around issues where there's a mis-matched order of color/numeric data like drop-shadow(#f00 0px 1px 2px) and drop-shadow(0x 1px 2px #f00). This is basically a helper function used in _formatColors()\n var values = [],\n c = [],\n i = -1;\n v.split(_colorExp).forEach(function (v) {\n var a = v.match(_numWithUnitExp) || [];\n values.push.apply(values, a);\n c.push(i += a.length + 1);\n });\n values.c = c;\n return values;\n },\n _formatColors = function _formatColors(s, toHSL, orderMatchData) {\n var result = \"\",\n colors = (s + result).match(_colorExp),\n type = toHSL ? \"hsla(\" : \"rgba(\",\n i = 0,\n c,\n shell,\n d,\n l;\n if (!colors) {\n return s;\n }\n colors = colors.map(function (color) {\n return (color = splitColor(color, toHSL, 1)) && type + (toHSL ? color[0] + \",\" + color[1] + \"%,\" + color[2] + \"%,\" + color[3] : color.join(\",\")) + \")\";\n });\n if (orderMatchData) {\n d = _colorOrderData(s);\n c = orderMatchData.c;\n if (c.join(result) !== d.c.join(result)) {\n shell = s.replace(_colorExp, \"1\").split(_numWithUnitExp);\n l = shell.length - 1;\n for (; i < l; i++) {\n result += shell[i] + (~c.indexOf(i) ? colors.shift() || type + \"0,0,0,0)\" : (d.length ? d : colors.length ? colors : orderMatchData).shift());\n }\n }\n }\n if (!shell) {\n shell = s.split(_colorExp);\n l = shell.length - 1;\n for (; i < l; i++) {\n result += shell[i] + colors[i];\n }\n }\n return result + shell[l];\n },\n _colorExp = function () {\n var s = \"(?:\\\\b(?:(?:rgb|rgba|hsl|hsla)\\\\(.+?\\\\))|\\\\B#(?:[0-9a-f]{3,4}){1,2}\\\\b\",\n //we'll dynamically build this Regular Expression to conserve file size. After building it, it will be able to find rgb(), rgba(), # (hexadecimal), and named color values like red, blue, purple, etc.,\n p;\n for (p in _colorLookup) {\n s += \"|\" + p + \"\\\\b\";\n }\n return new RegExp(s + \")\", \"gi\");\n }(),\n _hslExp = /hsl[a]?\\(/,\n _colorStringFilter = function _colorStringFilter(a) {\n var combined = a.join(\" \"),\n toHSL;\n _colorExp.lastIndex = 0;\n if (_colorExp.test(combined)) {\n toHSL = _hslExp.test(combined);\n a[1] = _formatColors(a[1], toHSL);\n a[0] = _formatColors(a[0], toHSL, _colorOrderData(a[1])); // make sure the order of numbers/colors match with the END value.\n\n return true;\n }\n },\n /*\n * --------------------------------------------------------------------------------------\n * TICKER\n * --------------------------------------------------------------------------------------\n */\n _tickerActive,\n _ticker = function () {\n var _getTime = Date.now,\n _lagThreshold = 500,\n _adjustedLag = 33,\n _startTime = _getTime(),\n _lastUpdate = _startTime,\n _gap = 1000 / 240,\n _nextTime = _gap,\n _listeners = [],\n _id,\n _req,\n _raf,\n _self,\n _delta,\n _i,\n _tick = function _tick(v) {\n var elapsed = _getTime() - _lastUpdate,\n manual = v === true,\n overlap,\n dispatch,\n time,\n frame;\n elapsed > _lagThreshold && (_startTime += elapsed - _adjustedLag);\n _lastUpdate += elapsed;\n time = _lastUpdate - _startTime;\n overlap = time - _nextTime;\n if (overlap > 0 || manual) {\n frame = ++_self.frame;\n _delta = time - _self.time * 1000;\n _self.time = time = time / 1000;\n _nextTime += overlap + (overlap >= _gap ? 4 : _gap - overlap);\n dispatch = 1;\n }\n manual || (_id = _req(_tick)); //make sure the request is made before we dispatch the \"tick\" event so that timing is maintained. Otherwise, if processing the \"tick\" requires a bunch of time (like 15ms) and we're using a setTimeout() that's based on 16.7ms, it'd technically take 31.7ms between frames otherwise.\n\n if (dispatch) {\n for (_i = 0; _i < _listeners.length; _i++) {\n // use _i and check _listeners.length instead of a variable because a listener could get removed during the loop, and if that happens to an element less than the current index, it'd throw things off in the loop.\n _listeners[_i](time, _delta, frame, v);\n }\n }\n };\n _self = {\n time: 0,\n frame: 0,\n tick: function tick() {\n _tick(true);\n },\n deltaRatio: function deltaRatio(fps) {\n return _delta / (1000 / (fps || 60));\n },\n wake: function wake() {\n if (_coreReady) {\n if (!_coreInitted && _windowExists()) {\n _win = _coreInitted = window;\n _doc = _win.document || {};\n _globals.gsap = gsap;\n (_win.gsapVersions || (_win.gsapVersions = [])).push(gsap.version);\n _install(_installScope || _win.GreenSockGlobals || !_win.gsap && _win || {});\n _raf = _win.requestAnimationFrame;\n }\n _id && _self.sleep();\n _req = _raf || function (f) {\n return setTimeout(f, _nextTime - _self.time * 1000 + 1 | 0);\n };\n _tickerActive = 1;\n _tick(2);\n }\n },\n sleep: function sleep() {\n (_raf ? _win.cancelAnimationFrame : clearTimeout)(_id);\n _tickerActive = 0;\n _req = _emptyFunc;\n },\n lagSmoothing: function lagSmoothing(threshold, adjustedLag) {\n _lagThreshold = threshold || 1 / _tinyNum; //zero should be interpreted as basically unlimited\n\n _adjustedLag = Math.min(adjustedLag, _lagThreshold, 0);\n },\n fps: function fps(_fps) {\n _gap = 1000 / (_fps || 240);\n _nextTime = _self.time * 1000 + _gap;\n },\n add: function add(callback) {\n _listeners.indexOf(callback) < 0 && _listeners.push(callback);\n _wake();\n },\n remove: function remove(callback) {\n var i;\n ~(i = _listeners.indexOf(callback)) && _listeners.splice(i, 1) && _i >= i && _i--;\n },\n _listeners: _listeners\n };\n return _self;\n }(),\n _wake = function _wake() {\n return !_tickerActive && _ticker.wake();\n },\n //also ensures the core classes are initialized.\n\n /*\n * -------------------------------------------------\n * EASING\n * -------------------------------------------------\n */\n _easeMap = {},\n _customEaseExp = /^[\\d.\\-M][\\d.\\-,\\s]/,\n _quotesExp = /[\"']/g,\n _parseObjectInString = function _parseObjectInString(value) {\n //takes a string like \"{wiggles:10, type:anticipate})\" and turns it into a real object. Notice it ends in \")\" and includes the {} wrappers. This is because we only use this function for parsing ease configs and prioritized optimization rather than reusability.\n var obj = {},\n split = value.substr(1, value.length - 3).split(\":\"),\n key = split[0],\n i = 1,\n l = split.length,\n index,\n val,\n parsedVal;\n for (; i < l; i++) {\n val = split[i];\n index = i !== l - 1 ? val.lastIndexOf(\",\") : val.length;\n parsedVal = val.substr(0, index);\n obj[key] = isNaN(parsedVal) ? parsedVal.replace(_quotesExp, \"\").trim() : +parsedVal;\n key = val.substr(index + 1).trim();\n }\n return obj;\n },\n _valueInParentheses = function _valueInParentheses(value) {\n var open = value.indexOf(\"(\") + 1,\n close = value.indexOf(\")\"),\n nested = value.indexOf(\"(\", open);\n return value.substring(open, ~nested && nested < close ? value.indexOf(\")\", close + 1) : close);\n },\n _configEaseFromString = function _configEaseFromString(name) {\n //name can be a string like \"elastic.out(1,0.5)\", and pass in _easeMap as obj and it'll parse it out and call the actual function like _easeMap.Elastic.easeOut.config(1,0.5). It will also parse custom ease strings as long as CustomEase is loaded and registered (internally as _easeMap._CE).\n var split = (name + \"\").split(\"(\"),\n ease = _easeMap[split[0]];\n return ease && split.length > 1 && ease.config ? ease.config.apply(null, ~name.indexOf(\"{\") ? [_parseObjectInString(split[1])] : _valueInParentheses(name).split(\",\").map(_numericIfPossible)) : _easeMap._CE && _customEaseExp.test(name) ? _easeMap._CE(\"\", name) : ease;\n },\n _invertEase = function _invertEase(ease) {\n return function (p) {\n return 1 - ease(1 - p);\n };\n },\n // allow yoyoEase to be set in children and have those affected when the parent/ancestor timeline yoyos.\n _propagateYoyoEase = function _propagateYoyoEase(timeline, isYoyo) {\n var child = timeline._first,\n ease;\n while (child) {\n if (child instanceof Timeline) {\n _propagateYoyoEase(child, isYoyo);\n } else if (child.vars.yoyoEase && (!child._yoyo || !child._repeat) && child._yoyo !== isYoyo) {\n if (child.timeline) {\n _propagateYoyoEase(child.timeline, isYoyo);\n } else {\n ease = child._ease;\n child._ease = child._yEase;\n child._yEase = ease;\n child._yoyo = isYoyo;\n }\n }\n child = child._next;\n }\n },\n _parseEase = function _parseEase(ease, defaultEase) {\n return !ease ? defaultEase : (_isFunction(ease) ? ease : _easeMap[ease] || _configEaseFromString(ease)) || defaultEase;\n },\n _insertEase = function _insertEase(names, easeIn, easeOut, easeInOut) {\n if (easeOut === void 0) {\n easeOut = function easeOut(p) {\n return 1 - easeIn(1 - p);\n };\n }\n if (easeInOut === void 0) {\n easeInOut = function easeInOut(p) {\n return p < .5 ? easeIn(p * 2) / 2 : 1 - easeIn((1 - p) * 2) / 2;\n };\n }\n var ease = {\n easeIn: easeIn,\n easeOut: easeOut,\n easeInOut: easeInOut\n },\n lowercaseName;\n _forEachName(names, function (name) {\n _easeMap[name] = _globals[name] = ease;\n _easeMap[lowercaseName = name.toLowerCase()] = easeOut;\n for (var p in ease) {\n _easeMap[lowercaseName + (p === \"easeIn\" ? \".in\" : p === \"easeOut\" ? \".out\" : \".inOut\")] = _easeMap[name + \".\" + p] = ease[p];\n }\n });\n return ease;\n },\n _easeInOutFromOut = function _easeInOutFromOut(easeOut) {\n return function (p) {\n return p < .5 ? (1 - easeOut(1 - p * 2)) / 2 : .5 + easeOut((p - .5) * 2) / 2;\n };\n },\n _configElastic = function _configElastic(type, amplitude, period) {\n var p1 = amplitude >= 1 ? amplitude : 1,\n //note: if amplitude is < 1, we simply adjust the period for a more natural feel. Otherwise the math doesn't work right and the curve starts at 1.\n p2 = (period || (type ? .3 : .45)) / (amplitude < 1 ? amplitude : 1),\n p3 = p2 / _2PI * (Math.asin(1 / p1) || 0),\n easeOut = function easeOut(p) {\n return p === 1 ? 1 : p1 * Math.pow(2, -10 * p) * _sin((p - p3) * p2) + 1;\n },\n ease = type === \"out\" ? easeOut : type === \"in\" ? function (p) {\n return 1 - easeOut(1 - p);\n } : _easeInOutFromOut(easeOut);\n p2 = _2PI / p2; //precalculate to optimize\n\n ease.config = function (amplitude, period) {\n return _configElastic(type, amplitude, period);\n };\n return ease;\n },\n _configBack = function _configBack(type, overshoot) {\n if (overshoot === void 0) {\n overshoot = 1.70158;\n }\n var easeOut = function easeOut(p) {\n return p ? --p * p * ((overshoot + 1) * p + overshoot) + 1 : 0;\n },\n ease = type === \"out\" ? easeOut : type === \"in\" ? function (p) {\n return 1 - easeOut(1 - p);\n } : _easeInOutFromOut(easeOut);\n ease.config = function (overshoot) {\n return _configBack(type, overshoot);\n };\n return ease;\n }; // a cheaper (kb and cpu) but more mild way to get a parameterized weighted ease by feeding in a value between -1 (easeIn) and 1 (easeOut) where 0 is linear.\n// _weightedEase = ratio => {\n// \tlet y = 0.5 + ratio / 2;\n// \treturn p => (2 * (1 - p) * p * y + p * p);\n// },\n// a stronger (but more expensive kb/cpu) parameterized weighted ease that lets you feed in a value between -1 (easeIn) and 1 (easeOut) where 0 is linear.\n// _weightedEaseStrong = ratio => {\n// \tratio = .5 + ratio / 2;\n// \tlet o = 1 / 3 * (ratio < .5 ? ratio : 1 - ratio),\n// \t\tb = ratio - o,\n// \t\tc = ratio + o;\n// \treturn p => p === 1 ? p : 3 * b * (1 - p) * (1 - p) * p + 3 * c * (1 - p) * p * p + p * p * p;\n// };\n\n_forEachName(\"Linear,Quad,Cubic,Quart,Quint,Strong\", function (name, i) {\n var power = i < 5 ? i + 1 : i;\n _insertEase(name + \",Power\" + (power - 1), i ? function (p) {\n return Math.pow(p, power);\n } : function (p) {\n return p;\n }, function (p) {\n return 1 - Math.pow(1 - p, power);\n }, function (p) {\n return p < .5 ? Math.pow(p * 2, power) / 2 : 1 - Math.pow((1 - p) * 2, power) / 2;\n });\n});\n_easeMap.Linear.easeNone = _easeMap.none = _easeMap.Linear.easeIn;\n_insertEase(\"Elastic\", _configElastic(\"in\"), _configElastic(\"out\"), _configElastic());\n(function (n, c) {\n var n1 = 1 / c,\n n2 = 2 * n1,\n n3 = 2.5 * n1,\n easeOut = function easeOut(p) {\n return p < n1 ? n * p * p : p < n2 ? n * Math.pow(p - 1.5 / c, 2) + .75 : p < n3 ? n * (p -= 2.25 / c) * p + .9375 : n * Math.pow(p - 2.625 / c, 2) + .984375;\n };\n _insertEase(\"Bounce\", function (p) {\n return 1 - easeOut(1 - p);\n }, easeOut);\n})(7.5625, 2.75);\n_insertEase(\"Expo\", function (p) {\n return p ? Math.pow(2, 10 * (p - 1)) : 0;\n});\n_insertEase(\"Circ\", function (p) {\n return -(_sqrt(1 - p * p) - 1);\n});\n_insertEase(\"Sine\", function (p) {\n return p === 1 ? 1 : -_cos(p * _HALF_PI) + 1;\n});\n_insertEase(\"Back\", _configBack(\"in\"), _configBack(\"out\"), _configBack());\n_easeMap.SteppedEase = _easeMap.steps = _globals.SteppedEase = {\n config: function config(steps, immediateStart) {\n if (steps === void 0) {\n steps = 1;\n }\n var p1 = 1 / steps,\n p2 = steps + (immediateStart ? 0 : 1),\n p3 = immediateStart ? 1 : 0,\n max = 1 - _tinyNum;\n return function (p) {\n return ((p2 * _clamp(0, max, p) | 0) + p3) * p1;\n };\n }\n};\n_defaults.ease = _easeMap[\"quad.out\"];\n_forEachName(\"onComplete,onUpdate,onStart,onRepeat,onReverseComplete,onInterrupt\", function (name) {\n return _callbackNames += name + \",\" + name + \"Params,\";\n});\n/*\n * --------------------------------------------------------------------------------------\n * CACHE\n * --------------------------------------------------------------------------------------\n */\n\nexport var GSCache = function GSCache(target, harness) {\n this.id = _gsID++;\n target._gsap = this;\n this.target = target;\n this.harness = harness;\n this.get = harness ? harness.get : _getProperty;\n this.set = harness ? harness.getSetter : _getSetter;\n};\n/*\n * --------------------------------------------------------------------------------------\n * ANIMATION\n * --------------------------------------------------------------------------------------\n */\n\nexport var Animation = /*#__PURE__*/function () {\n function Animation(vars, time) {\n var parent = vars.parent || _globalTimeline;\n this.vars = vars;\n this._delay = +vars.delay || 0;\n if (this._repeat = vars.repeat === Infinity ? -2 : vars.repeat || 0) {\n // TODO: repeat: Infinity on a timeline's children must flag that timeline internally and affect its totalDuration, otherwise it'll stop in the negative direction when reaching the start.\n this._rDelay = vars.repeatDelay || 0;\n this._yoyo = !!vars.yoyo || !!vars.yoyoEase;\n }\n this._ts = 1;\n _setDuration(this, +vars.duration, 1, 1);\n this.data = vars.data;\n _tickerActive || _ticker.wake();\n parent && _addToTimeline(parent, this, time || time === 0 ? time : parent._time, 1);\n vars.reversed && this.reverse();\n vars.paused && this.paused(true);\n }\n var _proto = Animation.prototype;\n _proto.delay = function delay(value) {\n if (value || value === 0) {\n this.parent && this.parent.smoothChildTiming && this.startTime(this._start + value - this._delay);\n this._delay = value;\n return this;\n }\n return this._delay;\n };\n _proto.duration = function duration(value) {\n return arguments.length ? this.totalDuration(this._repeat > 0 ? value + (value + this._rDelay) * this._repeat : value) : this.totalDuration() && this._dur;\n };\n _proto.totalDuration = function totalDuration(value) {\n if (!arguments.length) {\n return this._tDur;\n }\n this._dirty = 0;\n return _setDuration(this, this._repeat < 0 ? value : (value - this._repeat * this._rDelay) / (this._repeat + 1));\n };\n _proto.totalTime = function totalTime(_totalTime, suppressEvents) {\n _wake();\n if (!arguments.length) {\n return this._tTime;\n }\n var parent = this._dp;\n if (parent && parent.smoothChildTiming && this._ts) {\n _alignPlayhead(this, _totalTime);\n !parent._dp || parent.parent || _postAddChecks(parent, this); // edge case: if this is a child of a timeline that already completed, for example, we must re-activate the parent.\n //in case any of the ancestor timelines had completed but should now be enabled, we should reset their totalTime() which will also ensure that they're lined up properly and enabled. Skip for animations that are on the root (wasteful). Example: a TimelineLite.exportRoot() is performed when there's a paused tween on the root, the export will not complete until that tween is unpaused, but imagine a child gets restarted later, after all [unpaused] tweens have completed. The start of that child would get pushed out, but one of the ancestors may have completed.\n\n while (parent.parent) {\n if (parent.parent._time !== parent._start + (parent._ts >= 0 ? parent._tTime / parent._ts : (parent.totalDuration() - parent._tTime) / -parent._ts)) {\n parent.totalTime(parent._tTime, true);\n }\n parent = parent.parent;\n }\n if (!this.parent && this._dp.autoRemoveChildren && (this._ts > 0 && _totalTime < this._tDur || this._ts < 0 && _totalTime > 0 || !this._tDur && !_totalTime)) {\n //if the animation doesn't have a parent, put it back into its last parent (recorded as _dp for exactly cases like this). Limit to parents with autoRemoveChildren (like globalTimeline) so that if the user manually removes an animation from a timeline and then alters its playhead, it doesn't get added back in.\n _addToTimeline(this._dp, this, this._start - this._delay);\n }\n }\n if (this._tTime !== _totalTime || !this._dur && !suppressEvents || this._initted && Math.abs(this._zTime) === _tinyNum || !_totalTime && !this._initted && (this.add || this._ptLookup)) {\n // check for _ptLookup on a Tween instance to ensure it has actually finished being instantiated, otherwise if this.reverse() gets called in the Animation constructor, it could trigger a render() here even though the _targets weren't populated, thus when _init() is called there won't be any PropTweens (it'll act like the tween is non-functional)\n this._ts || (this._pTime = _totalTime); // otherwise, if an animation is paused, then the playhead is moved back to zero, then resumed, it'd revert back to the original time at the pause\n //if (!this._lock) { // avoid endless recursion (not sure we need this yet or if it's worth the performance hit)\n // this._lock = 1;\n\n _lazySafeRender(this, _totalTime, suppressEvents); // this._lock = 0;\n //}\n }\n return this;\n };\n _proto.time = function time(value, suppressEvents) {\n return arguments.length ? this.totalTime(Math.min(this.totalDuration(), value + _elapsedCycleDuration(this)) % this._dur || (value ? this._dur : 0), suppressEvents) : this._time; // note: if the modulus results in 0, the playhead could be exactly at the end or the beginning, and we always defer to the END with a non-zero value, otherwise if you set the time() to the very end (duration()), it would render at the START!\n };\n _proto.totalProgress = function totalProgress(value, suppressEvents) {\n return arguments.length ? this.totalTime(this.totalDuration() * value, suppressEvents) : this.totalDuration() ? Math.min(1, this._tTime / this._tDur) : this.ratio;\n };\n _proto.progress = function progress(value, suppressEvents) {\n return arguments.length ? this.totalTime(this.duration() * (this._yoyo && !(this.iteration() & 1) ? 1 - value : value) + _elapsedCycleDuration(this), suppressEvents) : this.duration() ? Math.min(1, this._time / this._dur) : this.ratio;\n };\n _proto.iteration = function iteration(value, suppressEvents) {\n var cycleDuration = this.duration() + this._rDelay;\n return arguments.length ? this.totalTime(this._time + (value - 1) * cycleDuration, suppressEvents) : this._repeat ? _animationCycle(this._tTime, cycleDuration) + 1 : 1;\n } // potential future addition:\n // isPlayingBackwards() {\n // \tlet animation = this,\n // \t\torientation = 1; // 1 = forward, -1 = backward\n // \twhile (animation) {\n // \t\torientation *= animation.reversed() || (animation.repeat() && !(animation.iteration() & 1)) ? -1 : 1;\n // \t\tanimation = animation.parent;\n // \t}\n // \treturn orientation < 0;\n // }\n ;\n _proto.timeScale = function timeScale(value) {\n if (!arguments.length) {\n return this._rts === -_tinyNum ? 0 : this._rts; // recorded timeScale. Special case: if someone calls reverse() on an animation with timeScale of 0, we assign it -_tinyNum to remember it's reversed.\n }\n if (this._rts === value) {\n return this;\n }\n var tTime = this.parent && this._ts ? _parentToChildTotalTime(this.parent._time, this) : this._tTime; // make sure to do the parentToChildTotalTime() BEFORE setting the new _ts because the old one must be used in that calculation.\n // prioritize rendering where the parent's playhead lines up instead of this._tTime because there could be a tween that's animating another tween's timeScale in the same rendering loop (same parent), thus if the timeScale tween renders first, it would alter _start BEFORE _tTime was set on that tick (in the rendering loop), effectively freezing it until the timeScale tween finishes.\n\n this._rts = +value || 0;\n this._ts = this._ps || value === -_tinyNum ? 0 : this._rts; // _ts is the functional timeScale which would be 0 if the animation is paused.\n\n return _recacheAncestors(this.totalTime(_clamp(-this._delay, this._tDur, tTime), true));\n };\n _proto.paused = function paused(value) {\n if (!arguments.length) {\n return this._ps;\n }\n if (this._ps !== value) {\n this._ps = value;\n if (value) {\n this._pTime = this._tTime || Math.max(-this._delay, this.rawTime()); // if the pause occurs during the delay phase, make sure that's factored in when resuming.\n\n this._ts = this._act = 0; // _ts is the functional timeScale, so a paused tween would effectively have a timeScale of 0. We record the \"real\" timeScale as _rts (recorded time scale)\n } else {\n _wake();\n this._ts = this._rts; //only defer to _pTime (pauseTime) if tTime is zero. Remember, someone could pause() an animation, then scrub the playhead and resume(). If the parent doesn't have smoothChildTiming, we render at the rawTime() because the startTime won't get updated.\n\n this.totalTime(this.parent && !this.parent.smoothChildTiming ? this.rawTime() : this._tTime || this._pTime, this.progress() === 1 && (this._tTime -= _tinyNum) && Math.abs(this._zTime) !== _tinyNum); // edge case: animation.progress(1).pause().play() wouldn't render again because the playhead is already at the end, but the call to totalTime() below will add it back to its parent...and not remove it again (since removing only happens upon rendering at a new time). Offsetting the _tTime slightly is done simply to cause the final render in totalTime() that'll pop it off its timeline (if autoRemoveChildren is true, of course). Check to make sure _zTime isn't -_tinyNum to avoid an edge case where the playhead is pushed to the end but INSIDE a tween/callback, the timeline itself is paused thus halting rendering and leaving a few unrendered. When resuming, it wouldn't render those otherwise.\n }\n }\n return this;\n };\n _proto.startTime = function startTime(value) {\n if (arguments.length) {\n this._start = value;\n var parent = this.parent || this._dp;\n parent && (parent._sort || !this.parent) && _addToTimeline(parent, this, value - this._delay);\n return this;\n }\n return this._start;\n };\n _proto.endTime = function endTime(includeRepeats) {\n return this._start + (_isNotFalse(includeRepeats) ? this.totalDuration() : this.duration()) / Math.abs(this._ts);\n };\n _proto.rawTime = function rawTime(wrapRepeats) {\n var parent = this.parent || this._dp; // _dp = detatched parent\n\n return !parent ? this._tTime : wrapRepeats && (!this._ts || this._repeat && this._time && this.totalProgress() < 1) ? this._tTime % (this._dur + this._rDelay) : !this._ts ? this._tTime : _parentToChildTotalTime(parent.rawTime(wrapRepeats), this);\n };\n _proto.globalTime = function globalTime(rawTime) {\n var animation = this,\n time = arguments.length ? rawTime : animation.rawTime();\n while (animation) {\n time = animation._start + time / (animation._ts || 1);\n animation = animation._dp;\n }\n return time;\n };\n _proto.repeat = function repeat(value) {\n if (arguments.length) {\n this._repeat = value === Infinity ? -2 : value;\n return _onUpdateTotalDuration(this);\n }\n return this._repeat === -2 ? Infinity : this._repeat;\n };\n _proto.repeatDelay = function repeatDelay(value) {\n if (arguments.length) {\n this._rDelay = value;\n return _onUpdateTotalDuration(this);\n }\n return this._rDelay;\n };\n _proto.yoyo = function yoyo(value) {\n if (arguments.length) {\n this._yoyo = value;\n return this;\n }\n return this._yoyo;\n };\n _proto.seek = function seek(position, suppressEvents) {\n return this.totalTime(_parsePosition(this, position), _isNotFalse(suppressEvents));\n };\n _proto.restart = function restart(includeDelay, suppressEvents) {\n return this.play().totalTime(includeDelay ? -this._delay : 0, _isNotFalse(suppressEvents));\n };\n _proto.play = function play(from, suppressEvents) {\n from != null && this.seek(from, suppressEvents);\n return this.reversed(false).paused(false);\n };\n _proto.reverse = function reverse(from, suppressEvents) {\n from != null && this.seek(from || this.totalDuration(), suppressEvents);\n return this.reversed(true).paused(false);\n };\n _proto.pause = function pause(atTime, suppressEvents) {\n atTime != null && this.seek(atTime, suppressEvents);\n return this.paused(true);\n };\n _proto.resume = function resume() {\n return this.paused(false);\n };\n _proto.reversed = function reversed(value) {\n if (arguments.length) {\n !!value !== this.reversed() && this.timeScale(-this._rts || (value ? -_tinyNum : 0)); // in case timeScale is zero, reversing would have no effect so we use _tinyNum.\n\n return this;\n }\n return this._rts < 0;\n };\n _proto.invalidate = function invalidate() {\n this._initted = this._act = 0;\n this._zTime = -_tinyNum;\n return this;\n };\n _proto.isActive = function isActive() {\n var parent = this.parent || this._dp,\n start = this._start,\n rawTime;\n return !!(!parent || this._ts && this._initted && parent.isActive() && (rawTime = parent.rawTime(true)) >= start && rawTime < this.endTime(true) - _tinyNum);\n };\n _proto.eventCallback = function eventCallback(type, callback, params) {\n var vars = this.vars;\n if (arguments.length > 1) {\n if (!callback) {\n delete vars[type];\n } else {\n vars[type] = callback;\n params && (vars[type + \"Params\"] = params);\n type === \"onUpdate\" && (this._onUpdate = callback);\n }\n return this;\n }\n return vars[type];\n };\n _proto.then = function then(onFulfilled) {\n var self = this;\n return new Promise(function (resolve) {\n var f = _isFunction(onFulfilled) ? onFulfilled : _passThrough,\n _resolve = function _resolve() {\n var _then = self.then;\n self.then = null; // temporarily null the then() method to avoid an infinite loop (see https://github.com/greensock/GSAP/issues/322)\n\n _isFunction(f) && (f = f(self)) && (f.then || f === self) && (self.then = _then);\n resolve(f);\n self.then = _then;\n };\n if (self._initted && self.totalProgress() === 1 && self._ts >= 0 || !self._tTime && self._ts < 0) {\n _resolve();\n } else {\n self._prom = _resolve;\n }\n });\n };\n _proto.kill = function kill() {\n _interrupt(this);\n };\n return Animation;\n}();\n_setDefaults(Animation.prototype, {\n _time: 0,\n _start: 0,\n _end: 0,\n _tTime: 0,\n _tDur: 0,\n _dirty: 0,\n _repeat: 0,\n _yoyo: false,\n parent: null,\n _initted: false,\n _rDelay: 0,\n _ts: 1,\n _dp: 0,\n ratio: 0,\n _zTime: -_tinyNum,\n _prom: 0,\n _ps: false,\n _rts: 1\n});\n/*\n * -------------------------------------------------\n * TIMELINE\n * -------------------------------------------------\n */\n\nexport var Timeline = /*#__PURE__*/function (_Animation) {\n _inheritsLoose(Timeline, _Animation);\n function Timeline(vars, time) {\n var _this;\n if (vars === void 0) {\n vars = {};\n }\n _this = _Animation.call(this, vars, time) || this;\n _this.labels = {};\n _this.smoothChildTiming = !!vars.smoothChildTiming;\n _this.autoRemoveChildren = !!vars.autoRemoveChildren;\n _this._sort = _isNotFalse(vars.sortChildren);\n _this.parent && _postAddChecks(_this.parent, _assertThisInitialized(_this));\n vars.scrollTrigger && _scrollTrigger(_assertThisInitialized(_this), vars.scrollTrigger);\n return _this;\n }\n var _proto2 = Timeline.prototype;\n _proto2.to = function to(targets, vars, position) {\n new Tween(targets, _parseVars(arguments, 0, this), _parsePosition(this, _isNumber(vars) ? arguments[3] : position));\n return this;\n };\n _proto2.from = function from(targets, vars, position) {\n new Tween(targets, _parseVars(arguments, 1, this), _parsePosition(this, _isNumber(vars) ? arguments[3] : position));\n return this;\n };\n _proto2.fromTo = function fromTo(targets, fromVars, toVars, position) {\n new Tween(targets, _parseVars(arguments, 2, this), _parsePosition(this, _isNumber(fromVars) ? arguments[4] : position));\n return this;\n };\n _proto2.set = function set(targets, vars, position) {\n vars.duration = 0;\n vars.parent = this;\n _inheritDefaults(vars).repeatDelay || (vars.repeat = 0);\n vars.immediateRender = !!vars.immediateRender;\n new Tween(targets, vars, _parsePosition(this, position), 1);\n return this;\n };\n _proto2.call = function call(callback, params, position) {\n return _addToTimeline(this, Tween.delayedCall(0, callback, params), _parsePosition(this, position));\n } //ONLY for backward compatibility! Maybe delete?\n ;\n _proto2.staggerTo = function staggerTo(targets, duration, vars, stagger, position, onCompleteAll, onCompleteAllParams) {\n vars.duration = duration;\n vars.stagger = vars.stagger || stagger;\n vars.onComplete = onCompleteAll;\n vars.onCompleteParams = onCompleteAllParams;\n vars.parent = this;\n new Tween(targets, vars, _parsePosition(this, position));\n return this;\n };\n _proto2.staggerFrom = function staggerFrom(targets, duration, vars, stagger, position, onCompleteAll, onCompleteAllParams) {\n vars.runBackwards = 1;\n _inheritDefaults(vars).immediateRender = _isNotFalse(vars.immediateRender);\n return this.staggerTo(targets, duration, vars, stagger, position, onCompleteAll, onCompleteAllParams);\n };\n _proto2.staggerFromTo = function staggerFromTo(targets, duration, fromVars, toVars, stagger, position, onCompleteAll, onCompleteAllParams) {\n toVars.startAt = fromVars;\n _inheritDefaults(toVars).immediateRender = _isNotFalse(toVars.immediateRender);\n return this.staggerTo(targets, duration, toVars, stagger, position, onCompleteAll, onCompleteAllParams);\n };\n _proto2.render = function render(totalTime, suppressEvents, force) {\n var prevTime = this._time,\n tDur = this._dirty ? this.totalDuration() : this._tDur,\n dur = this._dur,\n tTime = this !== _globalTimeline && totalTime > tDur - _tinyNum && totalTime >= 0 ? tDur : totalTime < _tinyNum ? 0 : totalTime,\n crossingStart = this._zTime < 0 !== totalTime < 0 && (this._initted || !dur),\n time,\n child,\n next,\n iteration,\n cycleDuration,\n prevPaused,\n pauseTween,\n timeScale,\n prevStart,\n prevIteration,\n yoyo,\n isYoyo;\n if (tTime !== this._tTime || force || crossingStart) {\n if (prevTime !== this._time && dur) {\n //if totalDuration() finds a child with a negative startTime and smoothChildTiming is true, things get shifted around internally so we need to adjust the time accordingly. For example, if a tween starts at -30 we must shift EVERYTHING forward 30 seconds and move this timeline's startTime backward by 30 seconds so that things align with the playhead (no jump).\n tTime += this._time - prevTime;\n totalTime += this._time - prevTime;\n }\n time = tTime;\n prevStart = this._start;\n timeScale = this._ts;\n prevPaused = !timeScale;\n if (crossingStart) {\n dur || (prevTime = this._zTime); //when the playhead arrives at EXACTLY time 0 (right on top) of a zero-duration timeline, we need to discern if events are suppressed so that when the playhead moves again (next time), it'll trigger the callback. If events are NOT suppressed, obviously the callback would be triggered in this render. Basically, the callback should fire either when the playhead ARRIVES or LEAVES this exact spot, not both. Imagine doing a timeline.seek(0) and there's a callback that sits at 0. Since events are suppressed on that seek() by default, nothing will fire, but when the playhead moves off of that position, the callback should fire. This behavior is what people intuitively expect.\n\n (totalTime || !suppressEvents) && (this._zTime = totalTime);\n }\n if (this._repeat) {\n //adjust the time for repeats and yoyos\n yoyo = this._yoyo;\n cycleDuration = dur + this._rDelay;\n if (this._repeat < -1 && totalTime < 0) {\n return this.totalTime(cycleDuration * 100 + totalTime, suppressEvents, force);\n }\n time = _round(tTime % cycleDuration); //round to avoid floating point errors. (4 % 0.8 should be 0 but some browsers report it as 0.79999999!)\n\n if (tTime === tDur) {\n // the tDur === tTime is for edge cases where there's a lengthy decimal on the duration and it may reach the very end but the time is rendered as not-quite-there (remember, tDur is rounded to 4 decimals whereas dur isn't)\n iteration = this._repeat;\n time = dur;\n } else {\n iteration = ~~(tTime / cycleDuration);\n if (iteration && iteration === tTime / cycleDuration) {\n time = dur;\n iteration--;\n }\n time > dur && (time = dur);\n }\n prevIteration = _animationCycle(this._tTime, cycleDuration);\n !prevTime && this._tTime && prevIteration !== iteration && (prevIteration = iteration); // edge case - if someone does addPause() at the very beginning of a repeating timeline, that pause is technically at the same spot as the end which causes this._time to get set to 0 when the totalTime would normally place the playhead at the end. See https://greensock.com/forums/topic/23823-closing-nav-animation-not-working-on-ie-and-iphone-6-maybe-other-older-browser/?tab=comments#comment-113005\n\n if (yoyo && iteration & 1) {\n time = dur - time;\n isYoyo = 1;\n }\n /*\n make sure children at the end/beginning of the timeline are rendered properly. If, for example,\n a 3-second long timeline rendered at 2.9 seconds previously, and now renders at 3.2 seconds (which\n would get translated to 2.8 seconds if the timeline yoyos or 0.2 seconds if it just repeats), there\n could be a callback or a short tween that's at 2.95 or 3 seconds in which wouldn't render. So\n we need to push the timeline to the end (and/or beginning depending on its yoyo value). Also we must\n ensure that zero-duration tweens at the very beginning or end of the Timeline work.\n */\n\n if (iteration !== prevIteration && !this._lock) {\n var rewinding = yoyo && prevIteration & 1,\n doesWrap = rewinding === (yoyo && iteration & 1);\n iteration < prevIteration && (rewinding = !rewinding);\n prevTime = rewinding ? 0 : dur;\n this._lock = 1;\n this.render(prevTime || (isYoyo ? 0 : _round(iteration * cycleDuration)), suppressEvents, !dur)._lock = 0;\n !suppressEvents && this.parent && _callback(this, \"onRepeat\");\n this.vars.repeatRefresh && !isYoyo && (this.invalidate()._lock = 1);\n if (prevTime && prevTime !== this._time || prevPaused !== !this._ts || this.vars.onRepeat && !this.parent && !this._act) {\n // if prevTime is 0 and we render at the very end, _time will be the end, thus won't match. So in this edge case, prevTime won't match _time but that's okay. If it gets killed in the onRepeat, eject as well.\n return this;\n }\n dur = this._dur; // in case the duration changed in the onRepeat\n\n tDur = this._tDur;\n if (doesWrap) {\n this._lock = 2;\n prevTime = rewinding ? dur : -0.0001;\n this.render(prevTime, true);\n }\n this._lock = 0;\n if (!this._ts && !prevPaused) {\n return this;\n } //in order for yoyoEase to work properly when there's a stagger, we must swap out the ease in each sub-tween.\n\n _propagateYoyoEase(this, isYoyo);\n }\n }\n if (this._hasPause && !this._forcing && this._lock < 2) {\n pauseTween = _findNextPauseTween(this, _round(prevTime), _round(time));\n if (pauseTween) {\n tTime -= time - (time = pauseTween._start);\n }\n }\n this._tTime = tTime;\n this._time = time;\n this._act = !timeScale; //as long as it's not paused, force it to be active so that if the user renders independent of the parent timeline, it'll be forced to re-render on the next tick.\n\n if (!this._initted) {\n this._onUpdate = this.vars.onUpdate;\n this._initted = 1;\n this._zTime = totalTime;\n prevTime = 0; // upon init, the playhead should always go forward; someone could invalidate() a completed timeline and then if they restart(), that would make child tweens render in reverse order which could lock in the wrong starting values if they build on each other, like tl.to(obj, {x: 100}).to(obj, {x: 0}).\n }\n !prevTime && time && !suppressEvents && _callback(this, \"onStart\");\n if (time >= prevTime && totalTime >= 0) {\n child = this._first;\n while (child) {\n next = child._next;\n if ((child._act || time >= child._start) && child._ts && pauseTween !== child) {\n if (child.parent !== this) {\n // an extreme edge case - the child's render could do something like kill() the \"next\" one in the linked list, or reparent it. In that case we must re-initiate the whole render to be safe.\n return this.render(totalTime, suppressEvents, force);\n }\n child.render(child._ts > 0 ? (time - child._start) * child._ts : (child._dirty ? child.totalDuration() : child._tDur) + (time - child._start) * child._ts, suppressEvents, force);\n if (time !== this._time || !this._ts && !prevPaused) {\n //in case a tween pauses or seeks the timeline when rendering, like inside of an onUpdate/onComplete\n pauseTween = 0;\n next && (tTime += this._zTime = -_tinyNum); // it didn't finish rendering, so flag zTime as negative so that so that the next time render() is called it'll be forced (to render any remaining children)\n\n break;\n }\n }\n child = next;\n }\n } else {\n child = this._last;\n var adjustedTime = totalTime < 0 ? totalTime : time; //when the playhead goes backward beyond the start of this timeline, we must pass that information down to the child animations so that zero-duration tweens know whether to render their starting or ending values.\n\n while (child) {\n next = child._prev;\n if ((child._act || adjustedTime <= child._end) && child._ts && pauseTween !== child) {\n if (child.parent !== this) {\n // an extreme edge case - the child's render could do something like kill() the \"next\" one in the linked list, or reparent it. In that case we must re-initiate the whole render to be safe.\n return this.render(totalTime, suppressEvents, force);\n }\n child.render(child._ts > 0 ? (adjustedTime - child._start) * child._ts : (child._dirty ? child.totalDuration() : child._tDur) + (adjustedTime - child._start) * child._ts, suppressEvents, force);\n if (time !== this._time || !this._ts && !prevPaused) {\n //in case a tween pauses or seeks the timeline when rendering, like inside of an onUpdate/onComplete\n pauseTween = 0;\n next && (tTime += this._zTime = adjustedTime ? -_tinyNum : _tinyNum); // it didn't finish rendering, so adjust zTime so that so that the next time render() is called it'll be forced (to render any remaining children)\n\n break;\n }\n }\n child = next;\n }\n }\n if (pauseTween && !suppressEvents) {\n this.pause();\n pauseTween.render(time >= prevTime ? 0 : -_tinyNum)._zTime = time >= prevTime ? 1 : -1;\n if (this._ts) {\n //the callback resumed playback! So since we may have held back the playhead due to where the pause is positioned, go ahead and jump to where it's SUPPOSED to be (if no pause happened).\n this._start = prevStart; //if the pause was at an earlier time and the user resumed in the callback, it could reposition the timeline (changing its startTime), throwing things off slightly, so we make sure the _start doesn't shift.\n\n _setEnd(this);\n return this.render(totalTime, suppressEvents, force);\n }\n }\n this._onUpdate && !suppressEvents && _callback(this, \"onUpdate\", true);\n if (tTime === tDur && tDur >= this.totalDuration() || !tTime && prevTime) if (prevStart === this._start || Math.abs(timeScale) !== Math.abs(this._ts)) if (!this._lock) {\n (totalTime || !dur) && (tTime === tDur && this._ts > 0 || !tTime && this._ts < 0) && _removeFromParent(this, 1); // don't remove if the timeline is reversed and the playhead isn't at 0, otherwise tl.progress(1).reverse() won't work. Only remove if the playhead is at the end and timeScale is positive, or if the playhead is at 0 and the timeScale is negative.\n\n if (!suppressEvents && !(totalTime < 0 && !prevTime) && (tTime || prevTime)) {\n _callback(this, tTime === tDur ? \"onComplete\" : \"onReverseComplete\", true);\n this._prom && !(tTime < tDur && this.timeScale() > 0) && this._prom();\n }\n }\n }\n return this;\n };\n _proto2.add = function add(child, position) {\n var _this2 = this;\n _isNumber(position) || (position = _parsePosition(this, position));\n if (!(child instanceof Animation)) {\n if (_isArray(child)) {\n child.forEach(function (obj) {\n return _this2.add(obj, position);\n });\n return this;\n }\n if (_isString(child)) {\n return this.addLabel(child, position);\n }\n if (_isFunction(child)) {\n child = Tween.delayedCall(0, child);\n } else {\n return this;\n }\n }\n return this !== child ? _addToTimeline(this, child, position) : this; //don't allow a timeline to be added to itself as a child!\n };\n _proto2.getChildren = function getChildren(nested, tweens, timelines, ignoreBeforeTime) {\n if (nested === void 0) {\n nested = true;\n }\n if (tweens === void 0) {\n tweens = true;\n }\n if (timelines === void 0) {\n timelines = true;\n }\n if (ignoreBeforeTime === void 0) {\n ignoreBeforeTime = -_bigNum;\n }\n var a = [],\n child = this._first;\n while (child) {\n if (child._start >= ignoreBeforeTime) {\n if (child instanceof Tween) {\n tweens && a.push(child);\n } else {\n timelines && a.push(child);\n nested && a.push.apply(a, child.getChildren(true, tweens, timelines));\n }\n }\n child = child._next;\n }\n return a;\n };\n _proto2.getById = function getById(id) {\n var animations = this.getChildren(1, 1, 1),\n i = animations.length;\n while (i--) {\n if (animations[i].vars.id === id) {\n return animations[i];\n }\n }\n };\n _proto2.remove = function remove(child) {\n if (_isString(child)) {\n return this.removeLabel(child);\n }\n if (_isFunction(child)) {\n return this.killTweensOf(child);\n }\n _removeLinkedListItem(this, child);\n if (child === this._recent) {\n this._recent = this._last;\n }\n return _uncache(this);\n };\n _proto2.totalTime = function totalTime(_totalTime2, suppressEvents) {\n if (!arguments.length) {\n return this._tTime;\n }\n this._forcing = 1;\n if (!this._dp && this._ts) {\n //special case for the global timeline (or any other that has no parent or detached parent).\n this._start = _round(_ticker.time - (this._ts > 0 ? _totalTime2 / this._ts : (this.totalDuration() - _totalTime2) / -this._ts));\n }\n _Animation.prototype.totalTime.call(this, _totalTime2, suppressEvents);\n this._forcing = 0;\n return this;\n };\n _proto2.addLabel = function addLabel(label, position) {\n this.labels[label] = _parsePosition(this, position);\n return this;\n };\n _proto2.removeLabel = function removeLabel(label) {\n delete this.labels[label];\n return this;\n };\n _proto2.addPause = function addPause(position, callback, params) {\n var t = Tween.delayedCall(0, callback || _emptyFunc, params);\n t.data = \"isPause\";\n this._hasPause = 1;\n return _addToTimeline(this, t, _parsePosition(this, position));\n };\n _proto2.removePause = function removePause(position) {\n var child = this._first;\n position = _parsePosition(this, position);\n while (child) {\n if (child._start === position && child.data === \"isPause\") {\n _removeFromParent(child);\n }\n child = child._next;\n }\n };\n _proto2.killTweensOf = function killTweensOf(targets, props, onlyActive) {\n var tweens = this.getTweensOf(targets, onlyActive),\n i = tweens.length;\n while (i--) {\n _overwritingTween !== tweens[i] && tweens[i].kill(targets, props);\n }\n return this;\n };\n _proto2.getTweensOf = function getTweensOf(targets, onlyActive) {\n var a = [],\n parsedTargets = toArray(targets),\n child = this._first,\n isGlobalTime = _isNumber(onlyActive),\n // a number is interpreted as a global time. If the animation spans\n children;\n while (child) {\n if (child instanceof Tween) {\n if (_arrayContainsAny(child._targets, parsedTargets) && (isGlobalTime ? (!_overwritingTween || child._initted && child._ts) && child.globalTime(0) <= onlyActive && child.globalTime(child.totalDuration()) > onlyActive : !onlyActive || child.isActive())) {\n // note: if this is for overwriting, it should only be for tweens that aren't paused and are initted.\n a.push(child);\n }\n } else if ((children = child.getTweensOf(parsedTargets, onlyActive)).length) {\n a.push.apply(a, children);\n }\n child = child._next;\n }\n return a;\n } // potential future feature - targets() on timelines\n // targets() {\n // \tlet result = [];\n // \tthis.getChildren(true, true, false).forEach(t => result.push(...t.targets()));\n // \treturn result;\n // }\n ;\n _proto2.tweenTo = function tweenTo(position, vars) {\n vars = vars || {};\n var tl = this,\n endTime = _parsePosition(tl, position),\n _vars = vars,\n startAt = _vars.startAt,\n _onStart = _vars.onStart,\n onStartParams = _vars.onStartParams,\n immediateRender = _vars.immediateRender,\n tween = Tween.to(tl, _setDefaults({\n ease: vars.ease || \"none\",\n lazy: false,\n immediateRender: false,\n time: endTime,\n overwrite: \"auto\",\n duration: vars.duration || Math.abs((endTime - (startAt && \"time\" in startAt ? startAt.time : tl._time)) / tl.timeScale()) || _tinyNum,\n onStart: function onStart() {\n tl.pause();\n var duration = vars.duration || Math.abs((endTime - tl._time) / tl.timeScale());\n tween._dur !== duration && _setDuration(tween, duration, 0, 1).render(tween._time, true, true);\n _onStart && _onStart.apply(tween, onStartParams || []); //in case the user had an onStart in the vars - we don't want to overwrite it.\n }\n }, vars));\n return immediateRender ? tween.render(0) : tween;\n };\n _proto2.tweenFromTo = function tweenFromTo(fromPosition, toPosition, vars) {\n return this.tweenTo(toPosition, _setDefaults({\n startAt: {\n time: _parsePosition(this, fromPosition)\n }\n }, vars));\n };\n _proto2.recent = function recent() {\n return this._recent;\n };\n _proto2.nextLabel = function nextLabel(afterTime) {\n if (afterTime === void 0) {\n afterTime = this._time;\n }\n return _getLabelInDirection(this, _parsePosition(this, afterTime));\n };\n _proto2.previousLabel = function previousLabel(beforeTime) {\n if (beforeTime === void 0) {\n beforeTime = this._time;\n }\n return _getLabelInDirection(this, _parsePosition(this, beforeTime), 1);\n };\n _proto2.currentLabel = function currentLabel(value) {\n return arguments.length ? this.seek(value, true) : this.previousLabel(this._time + _tinyNum);\n };\n _proto2.shiftChildren = function shiftChildren(amount, adjustLabels, ignoreBeforeTime) {\n if (ignoreBeforeTime === void 0) {\n ignoreBeforeTime = 0;\n }\n var child = this._first,\n labels = this.labels,\n p;\n while (child) {\n if (child._start >= ignoreBeforeTime) {\n child._start += amount;\n child._end += amount;\n }\n child = child._next;\n }\n if (adjustLabels) {\n for (p in labels) {\n if (labels[p] >= ignoreBeforeTime) {\n labels[p] += amount;\n }\n }\n }\n return _uncache(this);\n };\n _proto2.invalidate = function invalidate() {\n var child = this._first;\n this._lock = 0;\n while (child) {\n child.invalidate();\n child = child._next;\n }\n return _Animation.prototype.invalidate.call(this);\n };\n _proto2.clear = function clear(includeLabels) {\n if (includeLabels === void 0) {\n includeLabels = true;\n }\n var child = this._first,\n next;\n while (child) {\n next = child._next;\n this.remove(child);\n child = next;\n }\n this._dp && (this._time = this._tTime = this._pTime = 0);\n includeLabels && (this.labels = {});\n return _uncache(this);\n };\n _proto2.totalDuration = function totalDuration(value) {\n var max = 0,\n self = this,\n child = self._last,\n prevStart = _bigNum,\n prev,\n start,\n parent;\n if (arguments.length) {\n return self.timeScale((self._repeat < 0 ? self.duration() : self.totalDuration()) / (self.reversed() ? -value : value));\n }\n if (self._dirty) {\n parent = self.parent;\n while (child) {\n prev = child._prev; //record it here in case the tween changes position in the sequence...\n\n child._dirty && child.totalDuration(); //could change the tween._startTime, so make sure the animation's cache is clean before analyzing it.\n\n start = child._start;\n if (start > prevStart && self._sort && child._ts && !self._lock) {\n //in case one of the tweens shifted out of order, it needs to be re-inserted into the correct position in the sequence\n self._lock = 1; //prevent endless recursive calls - there are methods that get triggered that check duration/totalDuration when we add().\n\n _addToTimeline(self, child, start - child._delay, 1)._lock = 0;\n } else {\n prevStart = start;\n }\n if (start < 0 && child._ts) {\n //children aren't allowed to have negative startTimes unless smoothChildTiming is true, so adjust here if one is found.\n max -= start;\n if (!parent && !self._dp || parent && parent.smoothChildTiming) {\n self._start += start / self._ts;\n self._time -= start;\n self._tTime -= start;\n }\n self.shiftChildren(-start, false, -1e999);\n prevStart = 0;\n }\n child._end > max && child._ts && (max = child._end);\n child = prev;\n }\n _setDuration(self, self === _globalTimeline && self._time > max ? self._time : max, 1, 1);\n self._dirty = 0;\n }\n return self._tDur;\n };\n Timeline.updateRoot = function updateRoot(time) {\n if (_globalTimeline._ts) {\n _lazySafeRender(_globalTimeline, _parentToChildTotalTime(time, _globalTimeline));\n _lastRenderedFrame = _ticker.frame;\n }\n if (_ticker.frame >= _nextGCFrame) {\n _nextGCFrame += _config.autoSleep || 120;\n var child = _globalTimeline._first;\n if (!child || !child._ts) if (_config.autoSleep && _ticker._listeners.length < 2) {\n while (child && !child._ts) {\n child = child._next;\n }\n child || _ticker.sleep();\n }\n }\n };\n return Timeline;\n}(Animation);\n_setDefaults(Timeline.prototype, {\n _lock: 0,\n _hasPause: 0,\n _forcing: 0\n});\nvar _addComplexStringPropTween = function _addComplexStringPropTween(target, prop, start, end, setter, stringFilter, funcParam) {\n //note: we call _addComplexStringPropTween.call(tweenInstance...) to ensure that it's scoped properly. We may call it from within a plugin too, thus \"this\" would refer to the plugin.\n var pt = new PropTween(this._pt, target, prop, 0, 1, _renderComplexString, null, setter),\n index = 0,\n matchIndex = 0,\n result,\n startNums,\n color,\n endNum,\n chunk,\n startNum,\n hasRandom,\n a;\n pt.b = start;\n pt.e = end;\n start += \"\"; //ensure values are strings\n\n end += \"\";\n if (hasRandom = ~end.indexOf(\"random(\")) {\n end = _replaceRandom(end);\n }\n if (stringFilter) {\n a = [start, end];\n stringFilter(a, target, prop); //pass an array with the starting and ending values and let the filter do whatever it needs to the values.\n\n start = a[0];\n end = a[1];\n }\n startNums = start.match(_complexStringNumExp) || [];\n while (result = _complexStringNumExp.exec(end)) {\n endNum = result[0];\n chunk = end.substring(index, result.index);\n if (color) {\n color = (color + 1) % 5;\n } else if (chunk.substr(-5) === \"rgba(\") {\n color = 1;\n }\n if (endNum !== startNums[matchIndex++]) {\n startNum = parseFloat(startNums[matchIndex - 1]) || 0; //these nested PropTweens are handled in a special way - we'll never actually call a render or setter method on them. We'll just loop through them in the parent complex string PropTween's render method.\n\n pt._pt = {\n _next: pt._pt,\n p: chunk || matchIndex === 1 ? chunk : \",\",\n //note: SVG spec allows omission of comma/space when a negative sign is wedged between two numbers, like 2.5-5.3 instead of 2.5,-5.3 but when tweening, the negative value may switch to positive, so we insert the comma just in case.\n s: startNum,\n c: endNum.charAt(1) === \"=\" ? parseFloat(endNum.substr(2)) * (endNum.charAt(0) === \"-\" ? -1 : 1) : parseFloat(endNum) - startNum,\n m: color && color < 4 ? Math.round : 0\n };\n index = _complexStringNumExp.lastIndex;\n }\n }\n pt.c = index < end.length ? end.substring(index, end.length) : \"\"; //we use the \"c\" of the PropTween to store the final part of the string (after the last number)\n\n pt.fp = funcParam;\n if (_relExp.test(end) || hasRandom) {\n pt.e = 0; //if the end string contains relative values or dynamic random(...) values, delete the end it so that on the final render we don't actually set it to the string with += or -= characters (forces it to use the calculated value).\n }\n this._pt = pt; //start the linked list with this new PropTween. Remember, we call _addComplexStringPropTween.call(tweenInstance...) to ensure that it's scoped properly. We may call it from within a plugin too, thus \"this\" would refer to the plugin.\n\n return pt;\n },\n _addPropTween = function _addPropTween(target, prop, start, end, index, targets, modifier, stringFilter, funcParam) {\n _isFunction(end) && (end = end(index || 0, target, targets));\n var currentValue = target[prop],\n parsedStart = start !== \"get\" ? start : !_isFunction(currentValue) ? currentValue : funcParam ? target[prop.indexOf(\"set\") || !_isFunction(target[\"get\" + prop.substr(3)]) ? prop : \"get\" + prop.substr(3)](funcParam) : target[prop](),\n setter = !_isFunction(currentValue) ? _setterPlain : funcParam ? _setterFuncWithParam : _setterFunc,\n pt;\n if (_isString(end)) {\n if (~end.indexOf(\"random(\")) {\n end = _replaceRandom(end);\n }\n if (end.charAt(1) === \"=\") {\n end = parseFloat(parsedStart) + parseFloat(end.substr(2)) * (end.charAt(0) === \"-\" ? -1 : 1) + (getUnit(parsedStart) || 0);\n }\n }\n if (parsedStart !== end) {\n if (!isNaN(parsedStart * end)) {\n pt = new PropTween(this._pt, target, prop, +parsedStart || 0, end - (parsedStart || 0), typeof currentValue === \"boolean\" ? _renderBoolean : _renderPlain, 0, setter);\n funcParam && (pt.fp = funcParam);\n modifier && pt.modifier(modifier, this, target);\n return this._pt = pt;\n }\n !currentValue && !(prop in target) && _missingPlugin(prop, end);\n return _addComplexStringPropTween.call(this, target, prop, parsedStart, end, setter, stringFilter || _config.stringFilter, funcParam);\n }\n },\n //creates a copy of the vars object and processes any function-based values (putting the resulting values directly into the copy) as well as strings with \"random()\" in them. It does NOT process relative values.\n _processVars = function _processVars(vars, index, target, targets, tween) {\n _isFunction(vars) && (vars = _parseFuncOrString(vars, tween, index, target, targets));\n if (!_isObject(vars) || vars.style && vars.nodeType || _isArray(vars) || _isTypedArray(vars)) {\n return _isString(vars) ? _parseFuncOrString(vars, tween, index, target, targets) : vars;\n }\n var copy = {},\n p;\n for (p in vars) {\n copy[p] = _parseFuncOrString(vars[p], tween, index, target, targets);\n }\n return copy;\n },\n _checkPlugin = function _checkPlugin(property, vars, tween, index, target, targets) {\n var plugin, pt, ptLookup, i;\n if (_plugins[property] && (plugin = new _plugins[property]()).init(target, plugin.rawVars ? vars[property] : _processVars(vars[property], index, target, targets, tween), tween, index, targets) !== false) {\n tween._pt = pt = new PropTween(tween._pt, target, property, 0, 1, plugin.render, plugin, 0, plugin.priority);\n if (tween !== _quickTween) {\n ptLookup = tween._ptLookup[tween._targets.indexOf(target)]; //note: we can't use tween._ptLookup[index] because for staggered tweens, the index from the fullTargets array won't match what it is in each individual tween that spawns from the stagger.\n\n i = plugin._props.length;\n while (i--) {\n ptLookup[plugin._props[i]] = pt;\n }\n }\n }\n return plugin;\n },\n _overwritingTween,\n //store a reference temporarily so we can avoid overwriting itself.\n _initTween = function _initTween(tween, time) {\n var vars = tween.vars,\n ease = vars.ease,\n startAt = vars.startAt,\n immediateRender = vars.immediateRender,\n lazy = vars.lazy,\n onUpdate = vars.onUpdate,\n onUpdateParams = vars.onUpdateParams,\n callbackScope = vars.callbackScope,\n runBackwards = vars.runBackwards,\n yoyoEase = vars.yoyoEase,\n keyframes = vars.keyframes,\n autoRevert = vars.autoRevert,\n dur = tween._dur,\n prevStartAt = tween._startAt,\n targets = tween._targets,\n parent = tween.parent,\n fullTargets = parent && parent.data === \"nested\" ? parent.parent._targets : targets,\n autoOverwrite = tween._overwrite === \"auto\" && !_suppressOverwrites,\n tl = tween.timeline,\n cleanVars,\n i,\n p,\n pt,\n target,\n hasPriority,\n gsData,\n harness,\n plugin,\n ptLookup,\n index,\n harnessVars,\n overwritten;\n tl && (!keyframes || !ease) && (ease = \"none\");\n tween._ease = _parseEase(ease, _defaults.ease);\n tween._yEase = yoyoEase ? _invertEase(_parseEase(yoyoEase === true ? ease : yoyoEase, _defaults.ease)) : 0;\n if (yoyoEase && tween._yoyo && !tween._repeat) {\n //there must have been a parent timeline with yoyo:true that is currently in its yoyo phase, so flip the eases.\n yoyoEase = tween._yEase;\n tween._yEase = tween._ease;\n tween._ease = yoyoEase;\n }\n if (!tl) {\n //if there's an internal timeline, skip all the parsing because we passed that task down the chain.\n harness = targets[0] ? _getCache(targets[0]).harness : 0;\n harnessVars = harness && vars[harness.prop]; //someone may need to specify CSS-specific values AND non-CSS values, like if the element has an \"x\" property plus it's a standard DOM element. We allow people to distinguish by wrapping plugin-specific stuff in a css:{} object for example.\n\n cleanVars = _copyExcluding(vars, _reservedProps);\n prevStartAt && prevStartAt.render(-1, true).kill();\n if (startAt) {\n _removeFromParent(tween._startAt = Tween.set(targets, _setDefaults({\n data: \"isStart\",\n overwrite: false,\n parent: parent,\n immediateRender: true,\n lazy: _isNotFalse(lazy),\n startAt: null,\n delay: 0,\n onUpdate: onUpdate,\n onUpdateParams: onUpdateParams,\n callbackScope: callbackScope,\n stagger: 0\n }, startAt))); //copy the properties/values into a new object to avoid collisions, like var to = {x:0}, from = {x:500}; timeline.fromTo(e, from, to).fromTo(e, to, from);\n\n if (immediateRender) {\n if (time > 0) {\n autoRevert || (tween._startAt = 0); //tweens that render immediately (like most from() and fromTo() tweens) shouldn't revert when their parent timeline's playhead goes backward past the startTime because the initial render could have happened anytime and it shouldn't be directly correlated to this tween's startTime. Imagine setting up a complex animation where the beginning states of various objects are rendered immediately but the tween doesn't happen for quite some time - if we revert to the starting values as soon as the playhead goes backward past the tween's startTime, it will throw things off visually. Reversion should only happen in Timeline instances where immediateRender was false or when autoRevert is explicitly set to true.\n } else if (dur && !(time < 0 && prevStartAt)) {\n time && (tween._zTime = time);\n return; //we skip initialization here so that overwriting doesn't occur until the tween actually begins. Otherwise, if you create several immediateRender:true tweens of the same target/properties to drop into a Timeline, the last one created would overwrite the first ones because they didn't get placed into the timeline yet before the first render occurs and kicks in overwriting.\n }\n } else if (autoRevert === false) {\n tween._startAt = 0;\n }\n } else if (runBackwards && dur) {\n //from() tweens must be handled uniquely: their beginning values must be rendered but we don't want overwriting to occur yet (when time is still 0). Wait until the tween actually begins before doing all the routines like overwriting. At that time, we should render at the END of the tween to ensure that things initialize correctly (remember, from() tweens go backwards)\n if (prevStartAt) {\n !autoRevert && (tween._startAt = 0);\n } else {\n time && (immediateRender = false); //in rare cases (like if a from() tween runs and then is invalidate()-ed), immediateRender could be true but the initial forced-render gets skipped, so there's no need to force the render in this context when the _time is greater than 0\n\n p = _setDefaults({\n overwrite: false,\n data: \"isFromStart\",\n //we tag the tween with as \"isFromStart\" so that if [inside a plugin] we need to only do something at the very END of a tween, we have a way of identifying this tween as merely the one that's setting the beginning values for a \"from()\" tween. For example, clearProps in CSSPlugin should only get applied at the very END of a tween and without this tag, from(...{height:100, clearProps:\"height\", delay:1}) would wipe the height at the beginning of the tween and after 1 second, it'd kick back in.\n lazy: immediateRender && _isNotFalse(lazy),\n immediateRender: immediateRender,\n //zero-duration tweens render immediately by default, but if we're not specifically instructed to render this tween immediately, we should skip this and merely _init() to record the starting values (rendering them immediately would push them to completion which is wasteful in that case - we'd have to render(-1) immediately after)\n stagger: 0,\n parent: parent //ensures that nested tweens that had a stagger are handled properly, like gsap.from(\".class\", {y:gsap.utils.wrap([-100,100])})\n }, cleanVars);\n harnessVars && (p[harness.prop] = harnessVars); // in case someone does something like .from(..., {css:{}})\n\n _removeFromParent(tween._startAt = Tween.set(targets, p));\n if (!immediateRender) {\n _initTween(tween._startAt, _tinyNum); //ensures that the initial values are recorded\n } else if (!time) {\n return;\n }\n }\n }\n tween._pt = 0;\n lazy = dur && _isNotFalse(lazy) || lazy && !dur;\n for (i = 0; i < targets.length; i++) {\n target = targets[i];\n gsData = target._gsap || _harness(targets)[i]._gsap;\n tween._ptLookup[i] = ptLookup = {};\n _lazyLookup[gsData.id] && _lazyTweens.length && _lazyRender(); //if other tweens of the same target have recently initted but haven't rendered yet, we've got to force the render so that the starting values are correct (imagine populating a timeline with a bunch of sequential tweens and then jumping to the end)\n\n index = fullTargets === targets ? i : fullTargets.indexOf(target);\n if (harness && (plugin = new harness()).init(target, harnessVars || cleanVars, tween, index, fullTargets) !== false) {\n tween._pt = pt = new PropTween(tween._pt, target, plugin.name, 0, 1, plugin.render, plugin, 0, plugin.priority);\n plugin._props.forEach(function (name) {\n ptLookup[name] = pt;\n });\n plugin.priority && (hasPriority = 1);\n }\n if (!harness || harnessVars) {\n for (p in cleanVars) {\n if (_plugins[p] && (plugin = _checkPlugin(p, cleanVars, tween, index, target, fullTargets))) {\n plugin.priority && (hasPriority = 1);\n } else {\n ptLookup[p] = pt = _addPropTween.call(tween, target, p, \"get\", cleanVars[p], index, fullTargets, 0, vars.stringFilter);\n }\n }\n }\n tween._op && tween._op[i] && tween.kill(target, tween._op[i]);\n if (autoOverwrite && tween._pt) {\n _overwritingTween = tween;\n _globalTimeline.killTweensOf(target, ptLookup, tween.globalTime(0)); //Also make sure the overwriting doesn't overwrite THIS tween!!!\n\n overwritten = !tween.parent;\n _overwritingTween = 0;\n }\n tween._pt && lazy && (_lazyLookup[gsData.id] = 1);\n }\n hasPriority && _sortPropTweensByPriority(tween);\n tween._onInit && tween._onInit(tween); //plugins like RoundProps must wait until ALL of the PropTweens are instantiated. In the plugin's init() function, it sets the _onInit on the tween instance. May not be pretty/intuitive, but it's fast and keeps file size down.\n }\n tween._from = !tl && !!vars.runBackwards; //nested timelines should never run backwards - the backwards-ness is in the child tweens.\n\n tween._onUpdate = onUpdate;\n tween._initted = (!tween._op || tween._pt) && !overwritten; // if overwrittenProps resulted in the entire tween being killed, do NOT flag it as initted or else it may render for one tick.\n },\n _addAliasesToVars = function _addAliasesToVars(targets, vars) {\n var harness = targets[0] ? _getCache(targets[0]).harness : 0,\n propertyAliases = harness && harness.aliases,\n copy,\n p,\n i,\n aliases;\n if (!propertyAliases) {\n return vars;\n }\n copy = _merge({}, vars);\n for (p in propertyAliases) {\n if (p in copy) {\n aliases = propertyAliases[p].split(\",\");\n i = aliases.length;\n while (i--) {\n copy[aliases[i]] = copy[p];\n }\n }\n }\n return copy;\n },\n _parseFuncOrString = function _parseFuncOrString(value, tween, i, target, targets) {\n return _isFunction(value) ? value.call(tween, i, target, targets) : _isString(value) && ~value.indexOf(\"random(\") ? _replaceRandom(value) : value;\n },\n _staggerTweenProps = _callbackNames + \"repeat,repeatDelay,yoyo,repeatRefresh,yoyoEase\",\n _staggerPropsToSkip = (_staggerTweenProps + \",id,stagger,delay,duration,paused,scrollTrigger\").split(\",\");\n/*\n * --------------------------------------------------------------------------------------\n * TWEEN\n * --------------------------------------------------------------------------------------\n */\n\nexport var Tween = /*#__PURE__*/function (_Animation2) {\n _inheritsLoose(Tween, _Animation2);\n function Tween(targets, vars, time, skipInherit) {\n var _this3;\n if (typeof vars === \"number\") {\n time.duration = vars;\n vars = time;\n time = null;\n }\n _this3 = _Animation2.call(this, skipInherit ? vars : _inheritDefaults(vars), time) || this;\n var _this3$vars = _this3.vars,\n duration = _this3$vars.duration,\n delay = _this3$vars.delay,\n immediateRender = _this3$vars.immediateRender,\n stagger = _this3$vars.stagger,\n overwrite = _this3$vars.overwrite,\n keyframes = _this3$vars.keyframes,\n defaults = _this3$vars.defaults,\n scrollTrigger = _this3$vars.scrollTrigger,\n yoyoEase = _this3$vars.yoyoEase,\n parent = _this3.parent,\n parsedTargets = (_isArray(targets) || _isTypedArray(targets) ? _isNumber(targets[0]) : \"length\" in vars) ? [targets] : toArray(targets),\n tl,\n i,\n copy,\n l,\n p,\n curTarget,\n staggerFunc,\n staggerVarsToMerge;\n _this3._targets = parsedTargets.length ? _harness(parsedTargets) : _warn(\"GSAP target \" + targets + \" not found. https://greensock.com\", !_config.nullTargetWarn) || [];\n _this3._ptLookup = []; //PropTween lookup. An array containing an object for each target, having keys for each tweening property\n\n _this3._overwrite = overwrite;\n if (keyframes || stagger || _isFuncOrString(duration) || _isFuncOrString(delay)) {\n vars = _this3.vars;\n tl = _this3.timeline = new Timeline({\n data: \"nested\",\n defaults: defaults || {}\n });\n tl.kill();\n tl.parent = tl._dp = _assertThisInitialized(_this3);\n tl._start = 0;\n if (keyframes) {\n _setDefaults(tl.vars.defaults, {\n ease: \"none\"\n });\n keyframes.forEach(function (frame) {\n return tl.to(parsedTargets, frame, \">\");\n });\n } else {\n l = parsedTargets.length;\n staggerFunc = stagger ? distribute(stagger) : _emptyFunc;\n if (_isObject(stagger)) {\n //users can pass in callbacks like onStart/onComplete in the stagger object. These should fire with each individual tween.\n for (p in stagger) {\n if (~_staggerTweenProps.indexOf(p)) {\n staggerVarsToMerge || (staggerVarsToMerge = {});\n staggerVarsToMerge[p] = stagger[p];\n }\n }\n }\n for (i = 0; i < l; i++) {\n copy = {};\n for (p in vars) {\n if (_staggerPropsToSkip.indexOf(p) < 0) {\n copy[p] = vars[p];\n }\n }\n copy.stagger = 0;\n yoyoEase && (copy.yoyoEase = yoyoEase);\n staggerVarsToMerge && _merge(copy, staggerVarsToMerge);\n curTarget = parsedTargets[i]; //don't just copy duration or delay because if they're a string or function, we'd end up in an infinite loop because _isFuncOrString() would evaluate as true in the child tweens, entering this loop, etc. So we parse the value straight from vars and default to 0.\n\n copy.duration = +_parseFuncOrString(duration, _assertThisInitialized(_this3), i, curTarget, parsedTargets);\n copy.delay = (+_parseFuncOrString(delay, _assertThisInitialized(_this3), i, curTarget, parsedTargets) || 0) - _this3._delay;\n if (!stagger && l === 1 && copy.delay) {\n // if someone does delay:\"random(1, 5)\", repeat:-1, for example, the delay shouldn't be inside the repeat.\n _this3._delay = delay = copy.delay;\n _this3._start += delay;\n copy.delay = 0;\n }\n tl.to(curTarget, copy, staggerFunc(i, curTarget, parsedTargets));\n }\n tl.duration() ? duration = delay = 0 : _this3.timeline = 0; // if the timeline's duration is 0, we don't need a timeline internally!\n }\n duration || _this3.duration(duration = tl.duration());\n } else {\n _this3.timeline = 0; //speed optimization, faster lookups (no going up the prototype chain)\n }\n if (overwrite === true && !_suppressOverwrites) {\n _overwritingTween = _assertThisInitialized(_this3);\n _globalTimeline.killTweensOf(parsedTargets);\n _overwritingTween = 0;\n }\n parent && _postAddChecks(parent, _assertThisInitialized(_this3));\n if (immediateRender || !duration && !keyframes && _this3._start === _round(parent._time) && _isNotFalse(immediateRender) && _hasNoPausedAncestors(_assertThisInitialized(_this3)) && parent.data !== \"nested\") {\n _this3._tTime = -_tinyNum; //forces a render without having to set the render() \"force\" parameter to true because we want to allow lazying by default (using the \"force\" parameter always forces an immediate full render)\n\n _this3.render(Math.max(0, -delay)); //in case delay is negative\n }\n scrollTrigger && _scrollTrigger(_assertThisInitialized(_this3), scrollTrigger);\n return _this3;\n }\n var _proto3 = Tween.prototype;\n _proto3.render = function render(totalTime, suppressEvents, force) {\n var prevTime = this._time,\n tDur = this._tDur,\n dur = this._dur,\n tTime = totalTime > tDur - _tinyNum && totalTime >= 0 ? tDur : totalTime < _tinyNum ? 0 : totalTime,\n time,\n pt,\n iteration,\n cycleDuration,\n prevIteration,\n isYoyo,\n ratio,\n timeline,\n yoyoEase;\n if (!dur) {\n _renderZeroDurationTween(this, totalTime, suppressEvents, force);\n } else if (tTime !== this._tTime || !totalTime || force || !this._initted && this._tTime || this._startAt && this._zTime < 0 !== totalTime < 0) {\n //this senses if we're crossing over the start time, in which case we must record _zTime and force the render, but we do it in this lengthy conditional way for performance reasons (usually we can skip the calculations): this._initted && (this._zTime < 0) !== (totalTime < 0)\n time = tTime;\n timeline = this.timeline;\n if (this._repeat) {\n //adjust the time for repeats and yoyos\n cycleDuration = dur + this._rDelay;\n if (this._repeat < -1 && totalTime < 0) {\n return this.totalTime(cycleDuration * 100 + totalTime, suppressEvents, force);\n }\n time = _round(tTime % cycleDuration); //round to avoid floating point errors. (4 % 0.8 should be 0 but some browsers report it as 0.79999999!)\n\n if (tTime === tDur) {\n // the tDur === tTime is for edge cases where there's a lengthy decimal on the duration and it may reach the very end but the time is rendered as not-quite-there (remember, tDur is rounded to 4 decimals whereas dur isn't)\n iteration = this._repeat;\n time = dur;\n } else {\n iteration = ~~(tTime / cycleDuration);\n if (iteration && iteration === tTime / cycleDuration) {\n time = dur;\n iteration--;\n }\n time > dur && (time = dur);\n }\n isYoyo = this._yoyo && iteration & 1;\n if (isYoyo) {\n yoyoEase = this._yEase;\n time = dur - time;\n }\n prevIteration = _animationCycle(this._tTime, cycleDuration);\n if (time === prevTime && !force && this._initted) {\n //could be during the repeatDelay part. No need to render and fire callbacks.\n return this;\n }\n if (iteration !== prevIteration) {\n timeline && this._yEase && _propagateYoyoEase(timeline, isYoyo); //repeatRefresh functionality\n\n if (this.vars.repeatRefresh && !isYoyo && !this._lock) {\n this._lock = force = 1; //force, otherwise if lazy is true, the _attemptInitTween() will return and we'll jump out and get caught bouncing on each tick.\n\n this.render(_round(cycleDuration * iteration), true).invalidate()._lock = 0;\n }\n }\n }\n if (!this._initted) {\n if (_attemptInitTween(this, totalTime < 0 ? totalTime : time, force, suppressEvents)) {\n this._tTime = 0; // in constructor if immediateRender is true, we set _tTime to -_tinyNum to have the playhead cross the starting point but we can't leave _tTime as a negative number.\n\n return this;\n }\n if (dur !== this._dur) {\n // while initting, a plugin like InertiaPlugin might alter the duration, so rerun from the start to ensure everything renders as it should.\n return this.render(totalTime, suppressEvents, force);\n }\n }\n this._tTime = tTime;\n this._time = time;\n if (!this._act && this._ts) {\n this._act = 1; //as long as it's not paused, force it to be active so that if the user renders independent of the parent timeline, it'll be forced to re-render on the next tick.\n\n this._lazy = 0;\n }\n this.ratio = ratio = (yoyoEase || this._ease)(time / dur);\n if (this._from) {\n this.ratio = ratio = 1 - ratio;\n }\n time && !prevTime && !suppressEvents && _callback(this, \"onStart\");\n pt = this._pt;\n while (pt) {\n pt.r(ratio, pt.d);\n pt = pt._next;\n }\n timeline && timeline.render(totalTime < 0 ? totalTime : !time && isYoyo ? -_tinyNum : timeline._dur * ratio, suppressEvents, force) || this._startAt && (this._zTime = totalTime);\n if (this._onUpdate && !suppressEvents) {\n totalTime < 0 && this._startAt && this._startAt.render(totalTime, true, force); //note: for performance reasons, we tuck this conditional logic inside less traveled areas (most tweens don't have an onUpdate). We'd just have it at the end before the onComplete, but the values should be updated before any onUpdate is called, so we ALSO put it here and then if it's not called, we do so later near the onComplete.\n\n _callback(this, \"onUpdate\");\n }\n this._repeat && iteration !== prevIteration && this.vars.onRepeat && !suppressEvents && this.parent && _callback(this, \"onRepeat\");\n if ((tTime === this._tDur || !tTime) && this._tTime === tTime) {\n totalTime < 0 && this._startAt && !this._onUpdate && this._startAt.render(totalTime, true, true);\n (totalTime || !dur) && (tTime === this._tDur && this._ts > 0 || !tTime && this._ts < 0) && _removeFromParent(this, 1); // don't remove if we're rendering at exactly a time of 0, as there could be autoRevert values that should get set on the next tick (if the playhead goes backward beyond the startTime, negative totalTime). Don't remove if the timeline is reversed and the playhead isn't at 0, otherwise tl.progress(1).reverse() won't work. Only remove if the playhead is at the end and timeScale is positive, or if the playhead is at 0 and the timeScale is negative.\n\n if (!suppressEvents && !(totalTime < 0 && !prevTime) && (tTime || prevTime)) {\n // if prevTime and tTime are zero, we shouldn't fire the onReverseComplete. This could happen if you gsap.to(... {paused:true}).play();\n _callback(this, tTime === tDur ? \"onComplete\" : \"onReverseComplete\", true);\n this._prom && !(tTime < tDur && this.timeScale() > 0) && this._prom();\n }\n }\n }\n return this;\n };\n _proto3.targets = function targets() {\n return this._targets;\n };\n _proto3.invalidate = function invalidate() {\n this._pt = this._op = this._startAt = this._onUpdate = this._lazy = this.ratio = 0;\n this._ptLookup = [];\n this.timeline && this.timeline.invalidate();\n return _Animation2.prototype.invalidate.call(this);\n };\n _proto3.kill = function kill(targets, vars) {\n if (vars === void 0) {\n vars = \"all\";\n }\n if (!targets && (!vars || vars === \"all\")) {\n this._lazy = this._pt = 0;\n return this.parent ? _interrupt(this) : this;\n }\n if (this.timeline) {\n var tDur = this.timeline.totalDuration();\n this.timeline.killTweensOf(targets, vars, _overwritingTween && _overwritingTween.vars.overwrite !== true)._first || _interrupt(this); // if nothing is left tweening, interrupt.\n\n this.parent && tDur !== this.timeline.totalDuration() && _setDuration(this, this._dur * this.timeline._tDur / tDur, 0, 1); // if a nested tween is killed that changes the duration, it should affect this tween's duration. We must use the ratio, though, because sometimes the internal timeline is stretched like for keyframes where they don't all add up to whatever the parent tween's duration was set to.\n\n return this;\n }\n var parsedTargets = this._targets,\n killingTargets = targets ? toArray(targets) : parsedTargets,\n propTweenLookup = this._ptLookup,\n firstPT = this._pt,\n overwrittenProps,\n curLookup,\n curOverwriteProps,\n props,\n p,\n pt,\n i;\n if ((!vars || vars === \"all\") && _arraysMatch(parsedTargets, killingTargets)) {\n vars === \"all\" && (this._pt = 0);\n return _interrupt(this);\n }\n overwrittenProps = this._op = this._op || [];\n if (vars !== \"all\") {\n //so people can pass in a comma-delimited list of property names\n if (_isString(vars)) {\n p = {};\n _forEachName(vars, function (name) {\n return p[name] = 1;\n });\n vars = p;\n }\n vars = _addAliasesToVars(parsedTargets, vars);\n }\n i = parsedTargets.length;\n while (i--) {\n if (~killingTargets.indexOf(parsedTargets[i])) {\n curLookup = propTweenLookup[i];\n if (vars === \"all\") {\n overwrittenProps[i] = vars;\n props = curLookup;\n curOverwriteProps = {};\n } else {\n curOverwriteProps = overwrittenProps[i] = overwrittenProps[i] || {};\n props = vars;\n }\n for (p in props) {\n pt = curLookup && curLookup[p];\n if (pt) {\n if (!(\"kill\" in pt.d) || pt.d.kill(p) === true) {\n _removeLinkedListItem(this, pt, \"_pt\");\n }\n delete curLookup[p];\n }\n if (curOverwriteProps !== \"all\") {\n curOverwriteProps[p] = 1;\n }\n }\n }\n }\n this._initted && !this._pt && firstPT && _interrupt(this); //if all tweening properties are killed, kill the tween. Without this line, if there's a tween with multiple targets and then you killTweensOf() each target individually, the tween would technically still remain active and fire its onComplete even though there aren't any more properties tweening.\n\n return this;\n };\n Tween.to = function to(targets, vars) {\n return new Tween(targets, vars, arguments[2]);\n };\n Tween.from = function from(targets, vars) {\n return new Tween(targets, _parseVars(arguments, 1));\n };\n Tween.delayedCall = function delayedCall(delay, callback, params, scope) {\n return new Tween(callback, 0, {\n immediateRender: false,\n lazy: false,\n overwrite: false,\n delay: delay,\n onComplete: callback,\n onReverseComplete: callback,\n onCompleteParams: params,\n onReverseCompleteParams: params,\n callbackScope: scope\n });\n };\n Tween.fromTo = function fromTo(targets, fromVars, toVars) {\n return new Tween(targets, _parseVars(arguments, 2));\n };\n Tween.set = function set(targets, vars) {\n vars.duration = 0;\n vars.repeatDelay || (vars.repeat = 0);\n return new Tween(targets, vars);\n };\n Tween.killTweensOf = function killTweensOf(targets, props, onlyActive) {\n return _globalTimeline.killTweensOf(targets, props, onlyActive);\n };\n return Tween;\n}(Animation);\n_setDefaults(Tween.prototype, {\n _targets: [],\n _lazy: 0,\n _startAt: 0,\n _op: 0,\n _onInit: 0\n}); //add the pertinent timeline methods to Tween instances so that users can chain conveniently and create a timeline automatically. (removed due to concerns that it'd ultimately add to more confusion especially for beginners)\n// _forEachName(\"to,from,fromTo,set,call,add,addLabel,addPause\", name => {\n// \tTween.prototype[name] = function() {\n// \t\tlet tl = new Timeline();\n// \t\treturn _addToTimeline(tl, this)[name].apply(tl, toArray(arguments));\n// \t}\n// });\n//for backward compatibility. Leverage the timeline calls.\n\n_forEachName(\"staggerTo,staggerFrom,staggerFromTo\", function (name) {\n Tween[name] = function () {\n var tl = new Timeline(),\n params = _slice.call(arguments, 0);\n params.splice(name === \"staggerFromTo\" ? 5 : 4, 0, 0);\n return tl[name].apply(tl, params);\n };\n});\n/*\n * --------------------------------------------------------------------------------------\n * PROPTWEEN\n * --------------------------------------------------------------------------------------\n */\n\nvar _setterPlain = function _setterPlain(target, property, value) {\n return target[property] = value;\n },\n _setterFunc = function _setterFunc(target, property, value) {\n return target[property](value);\n },\n _setterFuncWithParam = function _setterFuncWithParam(target, property, value, data) {\n return target[property](data.fp, value);\n },\n _setterAttribute = function _setterAttribute(target, property, value) {\n return target.setAttribute(property, value);\n },\n _getSetter = function _getSetter(target, property) {\n return _isFunction(target[property]) ? _setterFunc : _isUndefined(target[property]) && target.setAttribute ? _setterAttribute : _setterPlain;\n },\n _renderPlain = function _renderPlain(ratio, data) {\n return data.set(data.t, data.p, Math.round((data.s + data.c * ratio) * 10000) / 10000, data);\n },\n _renderBoolean = function _renderBoolean(ratio, data) {\n return data.set(data.t, data.p, !!(data.s + data.c * ratio), data);\n },\n _renderComplexString = function _renderComplexString(ratio, data) {\n var pt = data._pt,\n s = \"\";\n if (!ratio && data.b) {\n //b = beginning string\n s = data.b;\n } else if (ratio === 1 && data.e) {\n //e = ending string\n s = data.e;\n } else {\n while (pt) {\n s = pt.p + (pt.m ? pt.m(pt.s + pt.c * ratio) : Math.round((pt.s + pt.c * ratio) * 10000) / 10000) + s; //we use the \"p\" property for the text inbetween (like a suffix). And in the context of a complex string, the modifier (m) is typically just Math.round(), like for RGB colors.\n\n pt = pt._next;\n }\n s += data.c; //we use the \"c\" of the PropTween to store the final chunk of non-numeric text.\n }\n data.set(data.t, data.p, s, data);\n },\n _renderPropTweens = function _renderPropTweens(ratio, data) {\n var pt = data._pt;\n while (pt) {\n pt.r(ratio, pt.d);\n pt = pt._next;\n }\n },\n _addPluginModifier = function _addPluginModifier(modifier, tween, target, property) {\n var pt = this._pt,\n next;\n while (pt) {\n next = pt._next;\n pt.p === property && pt.modifier(modifier, tween, target);\n pt = next;\n }\n },\n _killPropTweensOf = function _killPropTweensOf(property) {\n var pt = this._pt,\n hasNonDependentRemaining,\n next;\n while (pt) {\n next = pt._next;\n if (pt.p === property && !pt.op || pt.op === property) {\n _removeLinkedListItem(this, pt, \"_pt\");\n } else if (!pt.dep) {\n hasNonDependentRemaining = 1;\n }\n pt = next;\n }\n return !hasNonDependentRemaining;\n },\n _setterWithModifier = function _setterWithModifier(target, property, value, data) {\n data.mSet(target, property, data.m.call(data.tween, value, data.mt), data);\n },\n _sortPropTweensByPriority = function _sortPropTweensByPriority(parent) {\n var pt = parent._pt,\n next,\n pt2,\n first,\n last; //sorts the PropTween linked list in order of priority because some plugins need to do their work after ALL of the PropTweens were created (like RoundPropsPlugin and ModifiersPlugin)\n\n while (pt) {\n next = pt._next;\n pt2 = first;\n while (pt2 && pt2.pr > pt.pr) {\n pt2 = pt2._next;\n }\n if (pt._prev = pt2 ? pt2._prev : last) {\n pt._prev._next = pt;\n } else {\n first = pt;\n }\n if (pt._next = pt2) {\n pt2._prev = pt;\n } else {\n last = pt;\n }\n pt = next;\n }\n parent._pt = first;\n }; //PropTween key: t = target, p = prop, r = renderer, d = data, s = start, c = change, op = overwriteProperty (ONLY populated when it's different than p), pr = priority, _next/_prev for the linked list siblings, set = setter, m = modifier, mSet = modifierSetter (the original setter, before a modifier was added)\n\nexport var PropTween = /*#__PURE__*/function () {\n function PropTween(next, target, prop, start, change, renderer, data, setter, priority) {\n this.t = target;\n this.s = start;\n this.c = change;\n this.p = prop;\n this.r = renderer || _renderPlain;\n this.d = data || this;\n this.set = setter || _setterPlain;\n this.pr = priority || 0;\n this._next = next;\n if (next) {\n next._prev = this;\n }\n }\n var _proto4 = PropTween.prototype;\n _proto4.modifier = function modifier(func, tween, target) {\n this.mSet = this.mSet || this.set; //in case it was already set (a PropTween can only have one modifier)\n\n this.set = _setterWithModifier;\n this.m = func;\n this.mt = target; //modifier target\n\n this.tween = tween;\n };\n return PropTween;\n}(); //Initialization tasks\n\n_forEachName(_callbackNames + \"parent,duration,ease,delay,overwrite,runBackwards,startAt,yoyo,immediateRender,repeat,repeatDelay,data,paused,reversed,lazy,callbackScope,stringFilter,id,yoyoEase,stagger,inherit,repeatRefresh,keyframes,autoRevert,scrollTrigger\", function (name) {\n return _reservedProps[name] = 1;\n});\n_globals.TweenMax = _globals.TweenLite = Tween;\n_globals.TimelineLite = _globals.TimelineMax = Timeline;\n_globalTimeline = new Timeline({\n sortChildren: false,\n defaults: _defaults,\n autoRemoveChildren: true,\n id: \"root\",\n smoothChildTiming: true\n});\n_config.stringFilter = _colorStringFilter;\n/*\n * --------------------------------------------------------------------------------------\n * GSAP\n * --------------------------------------------------------------------------------------\n */\n\nvar _gsap = {\n registerPlugin: function registerPlugin() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n args.forEach(function (config) {\n return _createPlugin(config);\n });\n },\n timeline: function timeline(vars) {\n return new Timeline(vars);\n },\n getTweensOf: function getTweensOf(targets, onlyActive) {\n return _globalTimeline.getTweensOf(targets, onlyActive);\n },\n getProperty: function getProperty(target, property, unit, uncache) {\n _isString(target) && (target = toArray(target)[0]); //in case selector text or an array is passed in\n\n var getter = _getCache(target || {}).get,\n format = unit ? _passThrough : _numericIfPossible;\n unit === \"native\" && (unit = \"\");\n return !target ? target : !property ? function (property, unit, uncache) {\n return format((_plugins[property] && _plugins[property].get || getter)(target, property, unit, uncache));\n } : format((_plugins[property] && _plugins[property].get || getter)(target, property, unit, uncache));\n },\n quickSetter: function quickSetter(target, property, unit) {\n target = toArray(target);\n if (target.length > 1) {\n var setters = target.map(function (t) {\n return gsap.quickSetter(t, property, unit);\n }),\n l = setters.length;\n return function (value) {\n var i = l;\n while (i--) {\n setters[i](value);\n }\n };\n }\n target = target[0] || {};\n var Plugin = _plugins[property],\n cache = _getCache(target),\n p = cache.harness && (cache.harness.aliases || {})[property] || property,\n // in case it's an alias, like \"rotate\" for \"rotation\".\n setter = Plugin ? function (value) {\n var p = new Plugin();\n _quickTween._pt = 0;\n p.init(target, unit ? value + unit : value, _quickTween, 0, [target]);\n p.render(1, p);\n _quickTween._pt && _renderPropTweens(1, _quickTween);\n } : cache.set(target, p);\n return Plugin ? setter : function (value) {\n return setter(target, p, unit ? value + unit : value, cache, 1);\n };\n },\n isTweening: function isTweening(targets) {\n return _globalTimeline.getTweensOf(targets, true).length > 0;\n },\n defaults: function defaults(value) {\n value && value.ease && (value.ease = _parseEase(value.ease, _defaults.ease));\n return _mergeDeep(_defaults, value || {});\n },\n config: function config(value) {\n return _mergeDeep(_config, value || {});\n },\n registerEffect: function registerEffect(_ref2) {\n var name = _ref2.name,\n effect = _ref2.effect,\n plugins = _ref2.plugins,\n defaults = _ref2.defaults,\n extendTimeline = _ref2.extendTimeline;\n (plugins || \"\").split(\",\").forEach(function (pluginName) {\n return pluginName && !_plugins[pluginName] && !_globals[pluginName] && _warn(name + \" effect requires \" + pluginName + \" plugin.\");\n });\n _effects[name] = function (targets, vars, tl) {\n return effect(toArray(targets), _setDefaults(vars || {}, defaults), tl);\n };\n if (extendTimeline) {\n Timeline.prototype[name] = function (targets, vars, position) {\n return this.add(_effects[name](targets, _isObject(vars) ? vars : (position = vars) && {}, this), position);\n };\n }\n },\n registerEase: function registerEase(name, ease) {\n _easeMap[name] = _parseEase(ease);\n },\n parseEase: function parseEase(ease, defaultEase) {\n return arguments.length ? _parseEase(ease, defaultEase) : _easeMap;\n },\n getById: function getById(id) {\n return _globalTimeline.getById(id);\n },\n exportRoot: function exportRoot(vars, includeDelayedCalls) {\n if (vars === void 0) {\n vars = {};\n }\n var tl = new Timeline(vars),\n child,\n next;\n tl.smoothChildTiming = _isNotFalse(vars.smoothChildTiming);\n _globalTimeline.remove(tl);\n tl._dp = 0; //otherwise it'll get re-activated when adding children and be re-introduced into _globalTimeline's linked list (then added to itself).\n\n tl._time = tl._tTime = _globalTimeline._time;\n child = _globalTimeline._first;\n while (child) {\n next = child._next;\n if (includeDelayedCalls || !(!child._dur && child instanceof Tween && child.vars.onComplete === child._targets[0])) {\n _addToTimeline(tl, child, child._start - child._delay);\n }\n child = next;\n }\n _addToTimeline(_globalTimeline, tl, 0);\n return tl;\n },\n utils: {\n wrap: wrap,\n wrapYoyo: wrapYoyo,\n distribute: distribute,\n random: random,\n snap: snap,\n normalize: normalize,\n getUnit: getUnit,\n clamp: clamp,\n splitColor: splitColor,\n toArray: toArray,\n mapRange: mapRange,\n pipe: pipe,\n unitize: unitize,\n interpolate: interpolate,\n shuffle: shuffle\n },\n install: _install,\n effects: _effects,\n ticker: _ticker,\n updateRoot: Timeline.updateRoot,\n plugins: _plugins,\n globalTimeline: _globalTimeline,\n core: {\n PropTween: PropTween,\n globals: _addGlobal,\n Tween: Tween,\n Timeline: Timeline,\n Animation: Animation,\n getCache: _getCache,\n _removeLinkedListItem: _removeLinkedListItem,\n suppressOverwrites: function suppressOverwrites(value) {\n return _suppressOverwrites = value;\n }\n }\n};\n_forEachName(\"to,from,fromTo,delayedCall,set,killTweensOf\", function (name) {\n return _gsap[name] = Tween[name];\n});\n_ticker.add(Timeline.updateRoot);\n_quickTween = _gsap.to({}, {\n duration: 0\n}); // ---- EXTRA PLUGINS --------------------------------------------------------\n\nvar _getPluginPropTween = function _getPluginPropTween(plugin, prop) {\n var pt = plugin._pt;\n while (pt && pt.p !== prop && pt.op !== prop && pt.fp !== prop) {\n pt = pt._next;\n }\n return pt;\n },\n _addModifiers = function _addModifiers(tween, modifiers) {\n var targets = tween._targets,\n p,\n i,\n pt;\n for (p in modifiers) {\n i = targets.length;\n while (i--) {\n pt = tween._ptLookup[i][p];\n if (pt && (pt = pt.d)) {\n if (pt._pt) {\n // is a plugin\n pt = _getPluginPropTween(pt, p);\n }\n pt && pt.modifier && pt.modifier(modifiers[p], tween, targets[i], p);\n }\n }\n }\n },\n _buildModifierPlugin = function _buildModifierPlugin(name, modifier) {\n return {\n name: name,\n rawVars: 1,\n //don't pre-process function-based values or \"random()\" strings.\n init: function init(target, vars, tween) {\n tween._onInit = function (tween) {\n var temp, p;\n if (_isString(vars)) {\n temp = {};\n _forEachName(vars, function (name) {\n return temp[name] = 1;\n }); //if the user passes in a comma-delimited list of property names to roundProps, like \"x,y\", we round to whole numbers.\n\n vars = temp;\n }\n if (modifier) {\n temp = {};\n for (p in vars) {\n temp[p] = modifier(vars[p]);\n }\n vars = temp;\n }\n _addModifiers(tween, vars);\n };\n }\n };\n }; //register core plugins\n\nexport var gsap = _gsap.registerPlugin({\n name: \"attr\",\n init: function init(target, vars, tween, index, targets) {\n var p, pt;\n for (p in vars) {\n pt = this.add(target, \"setAttribute\", (target.getAttribute(p) || 0) + \"\", vars[p], index, targets, 0, 0, p);\n pt && (pt.op = p);\n this._props.push(p);\n }\n }\n}, {\n name: \"endArray\",\n init: function init(target, value) {\n var i = value.length;\n while (i--) {\n this.add(target, i, target[i] || 0, value[i]);\n }\n }\n}, _buildModifierPlugin(\"roundProps\", _roundModifier), _buildModifierPlugin(\"modifiers\"), _buildModifierPlugin(\"snap\", snap)) || _gsap; //to prevent the core plugins from being dropped via aggressive tree shaking, we must include them in the variable declaration in this way.\n\nTween.version = Timeline.version = gsap.version = \"3.6.1\";\n_coreReady = 1;\nif (_windowExists()) {\n _wake();\n}\nvar Power0 = _easeMap.Power0,\n Power1 = _easeMap.Power1,\n Power2 = _easeMap.Power2,\n Power3 = _easeMap.Power3,\n Power4 = _easeMap.Power4,\n Linear = _easeMap.Linear,\n Quad = _easeMap.Quad,\n Cubic = _easeMap.Cubic,\n Quart = _easeMap.Quart,\n Quint = _easeMap.Quint,\n Strong = _easeMap.Strong,\n Elastic = _easeMap.Elastic,\n Back = _easeMap.Back,\n SteppedEase = _easeMap.SteppedEase,\n Bounce = _easeMap.Bounce,\n Sine = _easeMap.Sine,\n Expo = _easeMap.Expo,\n Circ = _easeMap.Circ;\nexport { Power0, Power1, Power2, Power3, Power4, Linear, Quad, Cubic, Quart, Quint, Strong, Elastic, Back, SteppedEase, Bounce, Sine, Expo, Circ };\nexport { Tween as TweenMax, Tween as TweenLite, Timeline as TimelineMax, Timeline as TimelineLite, gsap as default, wrap, wrapYoyo, distribute, random, snap, normalize, getUnit, clamp, splitColor, toArray, mapRange, pipe, unitize, interpolate, shuffle }; //export some internal methods/orojects for use in CSSPlugin so that we can externalize that file and allow custom builds that exclude it.\n\nexport { _getProperty, _numExp, _numWithUnitExp, _isString, _isUndefined, _renderComplexString, _relExp, _setDefaults, _removeLinkedListItem, _forEachName, _sortPropTweensByPriority, _colorStringFilter, _replaceRandom, _checkPlugin, _plugins, _ticker, _config, _roundModifier, _round, _missingPlugin, _getSetter, _getCache, _colorExp };","exports.f = {}.propertyIsEnumerable;\n","import React, { Component } from 'react'\nimport { Transition, TransitionGroup } from 'react-transition-group'\nimport { Location } from '@reach/router'\n\nimport TransitionRenderer from './TransitionRenderer'\nimport delayTransitionRender from './delayTransitionRender'\nimport { Consumer } from '../context/createTransitionContext'\nimport { onEnter } from '../functions/onEnter'\nimport { onExit } from '../functions/onExit'\nimport { getMs } from '../utils/secondsMs'\n\nimport '../style.css'\n\nconst DelayedTransition = delayTransitionRender(Transition)\nexport default class TransitionHandler extends Component {\n\trender() {\n\t\tconst { props } = this\n\t\tconst { children, injectPageProps = true } = props\n\n\t\treturn (\n\t\t\t\n\t\t\t\t{({\n\t\t\t\t\texitDelay,\n\t\t\t\t\texitLength,\n\t\t\t\t\texitState,\n\t\t\t\t\tentryDelay,\n\t\t\t\t\tentryLength,\n\t\t\t\t\tentryState,\n\t\t\t\t\tentryTrigger,\n\t\t\t\t\tentryProps,\n\t\t\t\t\texitTrigger,\n\t\t\t\t\texitProps,\n\t\t\t\t\tinTransition,\n\t\t\t\t\tupdateContext,\n\t\t\t\t\ttriggerResolve,\n\t\t\t\t\tappearAfter,\n\t\t\t\t\tpreventScrollJump,\n\t\t\t\t\thash,\n\t\t\t\t\te,\n\t\t\t\t}) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{({ location }) => {\n\t\t\t\t\t\t\t\tconst {\n\t\t\t\t\t\t\t\t\taction,\n\t\t\t\t\t\t\t\t\tpathname,\n\t\t\t\t\t\t\t\t\tkey: locationKey,\n\t\t\t\t\t\t\t\t} = location\n\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t!!node &&\n\t\t\t\t\t\t\t\t\t\t\t\t\t!window.__tl_back_button_pressed &&\n\t\t\t\t\t\t\t\t\t\t\t\t\tonEnter({\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\taction,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tinTransition,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tentryTrigger,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tentryProps,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\texitProps,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tpathname,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tupdateContext,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttriggerResolve,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tpreventScrollJump,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\thash,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlocationKey,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tappearAfter: getMs(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tappearAfter\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\te,\n\t\t\t\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tonExit={node =>\n\t\t\t\t\t\t\t\t\t\t\t\t\t!!node &&\n\t\t\t\t\t\t\t\t\t\t\t\t\t!window.__tl_back_button_pressed &&\n\t\t\t\t\t\t\t\t\t\t\t\t\tonExit({\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tinTransition,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\texitTrigger,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tentryProps,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\texitProps,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttriggerResolve,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\te,\n\t\t\t\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t\t\t\t}>\n\t\t\t\t\t\t\t\t\t\t\t\t{transitionStatus => {\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst mount =\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttransitionStatus ===\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'entering' ||\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttransitionStatus ===\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'entered'\n\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst states = {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tentry: {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstate: entryState,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdelay: entryDelay,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tlength: entryLength,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\texit: {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstate: exitState,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdelay: exitDelay,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tlength: exitLength,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst current = mount\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? states.entry\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: states.exit\n\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst transitionState = {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttransitionStatus,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcurrent,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tmount,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t...states,\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst exitZindex =\n\t\t\t\t\t\t\t\t\t\t\t\t\t\texitProps.zIndex || 0\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst entryZindex =\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tentryProps.zIndex || 1\n\n\t\t\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t
\n\t\t\t\t\t)\n\t\t\t\t}}\n\t\t\t
\n\t\t)\n\t}\n}\n","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nmodule.exports = toPrimitive, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', { assign: require('./_object-assign') });\n","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n","export default function joinClassName(...arg: (string | boolean | number | null | undefined)[]) {\n if (arg.length === 1) return arg[0] ? '' + arg[0] : '';\n return arg.filter(i=>i).join(' ');\n}","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","function _iterableToArray(r) {\n if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r);\n}\nmodule.exports = _iterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","export default path => {\n if (path === undefined) {\n return path\n }\n if (path === `/`) {\n return `/`\n }\n if (path.charAt(path.length - 1) === `/`) {\n return path.slice(0, -1)\n }\n return path\n}\n","import { pick } from \"@gatsbyjs/reach-router/lib/utils\"\nimport stripPrefix from \"./strip-prefix\"\nimport normalizePagePath from \"./normalize-page-path\"\nimport { maybeGetBrowserRedirect } from \"./redirect-utils.js\"\n\nconst pathCache = new Map()\nlet matchPaths = []\n\nconst trimPathname = rawPathname => {\n const pathname = decodeURIComponent(rawPathname)\n // Remove the pathPrefix from the pathname.\n const trimmedPathname = stripPrefix(\n pathname,\n decodeURIComponent(__BASE_PATH__)\n )\n // Remove any hashfragment\n .split(`#`)[0]\n // Remove search query\n .split(`?`)[0]\n\n return trimmedPathname\n}\n\nfunction absolutify(path) {\n // If it's already absolute, return as-is\n if (\n path.startsWith(`/`) ||\n path.startsWith(`https://`) ||\n path.startsWith(`http://`)\n ) {\n return path\n }\n // Calculate path relative to current location, adding a trailing slash to\n // match behavior of @reach/router\n return new URL(\n path,\n window.location.href + (window.location.href.endsWith(`/`) ? `` : `/`)\n ).pathname\n}\n\n/**\n * Set list of matchPaths\n *\n * @param {Array<{path: string, matchPath: string}>} value collection of matchPaths\n */\nexport const setMatchPaths = value => {\n matchPaths = value\n}\n\n/**\n * Return a matchpath url\n * if `match-paths.json` contains `{ \"/foo*\": \"/page1\", ...}`, then\n * `/foo?bar=far` => `/page1`\n *\n * @param {string} rawPathname A raw pathname\n * @return {string|null}\n */\nexport const findMatchPath = rawPathname => {\n const trimmedPathname = cleanPath(rawPathname)\n\n const pickPaths = matchPaths.map(({ path, matchPath }) => {\n return {\n path: matchPath,\n originalPath: path,\n }\n })\n\n const path = pick(pickPaths, trimmedPathname)\n\n if (path) {\n return normalizePagePath(path.route.originalPath)\n }\n\n return null\n}\n\n/**\n * Return a matchpath params from reach/router rules\n * if `match-paths.json` contains `{ \":bar/*foo\" }`, and the path is /baz/zaz/zoo\n * then it returns\n * { bar: baz, foo: zaz/zoo }\n *\n * @param {string} rawPathname A raw pathname\n * @return {object}\n */\nexport const grabMatchParams = rawPathname => {\n const trimmedPathname = cleanPath(rawPathname)\n\n const pickPaths = matchPaths.map(({ path, matchPath }) => {\n return {\n path: matchPath,\n originalPath: path,\n }\n })\n\n const path = pick(pickPaths, trimmedPathname)\n\n if (path) {\n return path.params\n }\n\n return {}\n}\n\n// Given a raw URL path, returns the cleaned version of it (trim off\n// `#` and query params), or if it matches an entry in\n// `match-paths.json`, its matched path is returned\n//\n// E.g. `/foo?bar=far` => `/foo`\n//\n// Or if `match-paths.json` contains `{ \"/foo*\": \"/page1\", ...}`, then\n// `/foo?bar=far` => `/page1`\nexport const findPath = rawPathname => {\n const trimmedPathname = trimPathname(absolutify(rawPathname))\n if (pathCache.has(trimmedPathname)) {\n return pathCache.get(trimmedPathname)\n }\n\n const redirect = maybeGetBrowserRedirect(rawPathname)\n if (redirect) {\n return findPath(redirect.toPath)\n }\n\n let foundPath = findMatchPath(trimmedPathname)\n\n if (!foundPath) {\n foundPath = cleanPath(rawPathname)\n }\n\n pathCache.set(trimmedPathname, foundPath)\n\n return foundPath\n}\n\n/**\n * Clean a url and converts /index.html => /\n * E.g. `/foo?bar=far` => `/foo`\n *\n * @param {string} rawPathname A raw pathname\n * @return {string}\n */\nexport const cleanPath = rawPathname => {\n const trimmedPathname = trimPathname(absolutify(rawPathname))\n\n let foundPath = trimmedPathname\n if (foundPath === `/index.html`) {\n foundPath = `/`\n }\n\n foundPath = normalizePagePath(foundPath)\n\n return foundPath\n}\n","\"use strict\";\n\nexports.__esModule = true;\nexports.getChildMapping = getChildMapping;\nexports.mergeChildMappings = mergeChildMappings;\nexports.getInitialChildMapping = getInitialChildMapping;\nexports.getNextChildMapping = getNextChildMapping;\nvar _react = require(\"react\");\n\n/**\n * Given `this.props.children`, return an object mapping key to child.\n *\n * @param {*} children `this.props.children`\n * @return {object} Mapping of key to child\n */\nfunction getChildMapping(children, mapFn) {\n var mapper = function mapper(child) {\n return mapFn && (0, _react.isValidElement)(child) ? mapFn(child) : child;\n };\n var result = Object.create(null);\n if (children) _react.Children.map(children, function (c) {\n return c;\n }).forEach(function (child) {\n // run the map function here instead so that the key is the computed one\n result[child.key] = mapper(child);\n });\n return result;\n}\n/**\n * When you're adding or removing children some may be added or removed in the\n * same render pass. We want to show *both* since we want to simultaneously\n * animate elements in and out. This function takes a previous set of keys\n * and a new set of keys and merges them with its best guess of the correct\n * ordering. In the future we may expose some of the utilities in\n * ReactMultiChild to make this easy, but for now React itself does not\n * directly have this concept of the union of prevChildren and nextChildren\n * so we implement it here.\n *\n * @param {object} prev prev children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @param {object} next next children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @return {object} a key set that contains all keys in `prev` and all keys\n * in `next` in a reasonable order.\n */\n\nfunction mergeChildMappings(prev, next) {\n prev = prev || {};\n next = next || {};\n function getValueForKey(key) {\n return key in next ? next[key] : prev[key];\n } // For each key of `next`, the list of keys to insert before that key in\n // the combined list\n\n var nextKeysPending = Object.create(null);\n var pendingKeys = [];\n for (var prevKey in prev) {\n if (prevKey in next) {\n if (pendingKeys.length) {\n nextKeysPending[prevKey] = pendingKeys;\n pendingKeys = [];\n }\n } else {\n pendingKeys.push(prevKey);\n }\n }\n var i;\n var childMapping = {};\n for (var nextKey in next) {\n if (nextKeysPending[nextKey]) {\n for (i = 0; i < nextKeysPending[nextKey].length; i++) {\n var pendingNextKey = nextKeysPending[nextKey][i];\n childMapping[nextKeysPending[nextKey][i]] = getValueForKey(pendingNextKey);\n }\n }\n childMapping[nextKey] = getValueForKey(nextKey);\n } // Finally, add the keys which didn't appear before any key in `next`\n\n for (i = 0; i < pendingKeys.length; i++) {\n childMapping[pendingKeys[i]] = getValueForKey(pendingKeys[i]);\n }\n return childMapping;\n}\nfunction getProp(child, prop, props) {\n return props[prop] != null ? props[prop] : child.props[prop];\n}\nfunction getInitialChildMapping(props, onExited) {\n return getChildMapping(props.children, function (child) {\n return (0, _react.cloneElement)(child, {\n onExited: onExited.bind(null, child),\n in: true,\n appear: getProp(child, 'appear', props),\n enter: getProp(child, 'enter', props),\n exit: getProp(child, 'exit', props)\n });\n });\n}\nfunction getNextChildMapping(nextProps, prevChildMapping, onExited) {\n var nextChildMapping = getChildMapping(nextProps.children);\n var children = mergeChildMappings(prevChildMapping, nextChildMapping);\n Object.keys(children).forEach(function (key) {\n var child = children[key];\n if (!(0, _react.isValidElement)(child)) return;\n var hasPrev = key in prevChildMapping;\n var hasNext = key in nextChildMapping;\n var prevChild = prevChildMapping[key];\n var isLeaving = (0, _react.isValidElement)(prevChild) && !prevChild.props.in; // item is new (entering)\n\n if (hasNext && (!hasPrev || isLeaving)) {\n // console.log('entering', key)\n children[key] = (0, _react.cloneElement)(child, {\n onExited: onExited.bind(null, child),\n in: true,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n } else if (!hasNext && hasPrev && !isLeaving) {\n // item is old (exiting)\n // console.log('leaving', key)\n children[key] = (0, _react.cloneElement)(child, {\n in: false\n });\n } else if (hasNext && hasPrev && (0, _react.isValidElement)(prevChild)) {\n // item hasn't changed transition states\n // copy over the last transition props;\n // console.log('unchanged', key)\n children[key] = (0, _react.cloneElement)(child, {\n onExited: onExited.bind(null, child),\n in: prevChild.props.in,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n }\n });\n return children;\n}","'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar DESCRIPTORS = require('./_descriptors');\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || isEnum.call(S, key)) T[key] = S[key];\n }\n } return T;\n} : $assign;\n","import { useRef, useContext, useEffect, useState } from 'react'\n\nimport { publicContext } from '../context/createTransitionContext'\n\nfunction TransitionObserver(props) {\n\tconst innerRef = useRef(null)\n\tconst context = useContext(publicContext)\n\tconst [contextState, updateContextState] = useState(null)\n\tconst [observing, setObserving] = useState(false)\n\n\tconst observerSupport =\n\t\t'IntersectionObserver' in window &&\n\t\t'IntersectionObserverEntry' in window &&\n\t\t'intersectionRatio' in window.IntersectionObserverEntry.prototype\n\n\tuseEffect(() => {\n\t\tif (innerRef && innerRef.current) {\n\t\t\tlet observer\n\n\t\t\tconst options = {\n\t\t\t\tthreshold: 1,\n\t\t\t}\n\n\t\t\tobserver = new IntersectionObserver(observed => {\n\t\t\t\tconst [thisObserved] = observed\n\t\t\t\tsetObserving(!!thisObserved.intersectionRatio)\n\t\t\t}, options)\n\t\t\tobserver.observe(innerRef.current)\n\n\t\t\treturn () => observer.unobserve(innerRef.current)\n\t\t}\n\t}, [innerRef])\n\n\tuseEffect(() => {\n\t\tif (!observerSupport || props.forceRender) {\n\t\t\t// always update the context if there is no intersection\n\t\t\t// observer support or if the prop forceRender is set to true\n\t\t\tupdateContextState(context)\n\t\t} else if (observing) {\n\t\t\tupdateContextState(context)\n\t\t}\n\t}, [context.transitionStatus, innerRef, observing])\n\n\treturn props.children(contextState, innerRef)\n}\n\nexport default TransitionObserver\n","export default function getPagesPromises() {\n\tlet exitResolve\n\tconst exitPromise = new Promise(resolve => {\n\t\texitResolve = resolve\n\t})\n\n\tlet entryResolve\n\tconst entryPromise = new Promise(resolve => {\n\t\tentryResolve = resolve\n\t})\n\n\treturn {\n\t\ttriggerResolve: {\n\t\t\tentry: entryResolve,\n\t\t\texit: exitResolve,\n\t\t},\n\t\tpages: {\n\t\t\texit: exitPromise,\n\t\t\tentry: entryPromise,\n\t\t},\n\t}\n}\n","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n","import { setTimeout } from 'requestanimationframe-timer'\n\nconst onEnter = ({\n\tnode,\n\tinTransition,\n\tentryTrigger,\n\tentryProps,\n\texitProps,\n\ttriggerResolve,\n\tpathname,\n\tpreventScrollJump,\n\thash,\n\tlocationKey,\n\tentryProps: { delay = 0 },\n\tappearAfter = 0,\n\te,\n}) => {\n\tif (inTransition && !preventScrollJump) {\n\t\tsetTimeout(() => {\n\t\t\tlet scrollTo = [0, 0]\n\n\t\t\t// handle hashes that link to ID's\n\t\t\t// for ex /page-2#heading-section\n\t\t\tif (hash) {\n\t\t\t\tconst hashElement = document.getElementById(hash)\n\n\t\t\t\tif (hashElement) {\n\t\t\t\t\tconst clientOffsetTop = hashElement.offsetTop\n\t\t\t\t\tscrollTo = [0, clientOffsetTop]\n\t\t\t\t}\n\t\t\t}\n\n\t\t\twindow.scrollTo(...scrollTo)\n\t\t}, appearAfter)\n\t} else if (!inTransition) {\n\t\t// If session storage fails due to cookies being disabled,\n\t\t// scroll to the top after every navigation\n\t\tlet position = [0, 0]\n\t\ttry {\n\t\t\tconst storageKey = `@@scroll|${pathname}|${locationKey}`\n\t\t\tconst y = JSON.parse(sessionStorage.getItem(storageKey)) || 0\n\n\t\t\tposition = [0, y]\n\t\t} catch (e) {\n\t\t\tconsole.warn(\n\t\t\t\t`[gatsby-plugin-transition-link] Unable to save state in sessionStorage; sessionStorage is not available.`\n\t\t\t)\n\t\t} finally {\n\t\t\twindow.scrollTo(...position)\n\t\t}\n\t}\n\n\tif (!inTransition) return\n\n\tconst { trigger: removed, ...entryPropsTrimmed } = entryProps\n\n\tconst timeout = appearAfter + delay\n\n\tconst visiblePromise = new Promise(resolve => {\n\t\tsetTimeout(() => resolve(), timeout)\n\t})\n\n\ttriggerResolve.entry({\n\t\t...entryPropsTrimmed,\n\t\tvisible: visiblePromise,\n\t\tnode,\n\t})\n\n\tentryTrigger &&\n\t\ttypeof entryTrigger === 'function' &&\n\t\tentryTrigger({\n\t\t\tentry: entryProps,\n\t\t\texit: exitProps,\n\t\t\tnode,\n\t\t\te,\n\t\t})\n}\n\nexport { onEnter }\n","/* eslint-disable no-undef */\nconst React = require('react')\n\nconst preferDefault = m => (m && m.default) || m\nlet Layout = false\n\nif (\n\ttypeof TL__GATSBY_LAYOUT_COMPONENT_PATH !== `undefined` &&\n\t!!TL__GATSBY_LAYOUT_COMPONENT_PATH\n) {\n\ttry {\n\t\tLayout = preferDefault(require(TL__GATSBY_LAYOUT_COMPONENT_PATH))\n\t} catch (e) {\n\t\tif (e.toString().indexOf(`Error: Cannot find module`) !== -1) {\n\t\t\tthrow new Error(\n\t\t\t\t`Couldn't find layout component at \"${TL__GATSBY_LAYOUT_COMPONENT_PATH}.\\n\\n` +\n\t\t\t\t\t`Please create layout component in that location or specify path to layout component in gatsby-config.js`\n\t\t\t)\n\t\t} else {\n\t\t\t// Logging the error for debugging older browsers as there is no way\n\t\t\t// to wrap the thrown error in a try/catch.\n\t\t\tconsole.error(e)\n\t\t\tthrow e\n\t\t}\n\t}\n}\n\nconst LayoutComponent = ({ children, ...props }) => {\n\tif (Layout) {\n\t\treturn {children}\n\t} else {\n\t\treturn children\n\t}\n}\n\nexport { LayoutComponent }\n","// prefer default export if available\nconst preferDefault = m => (m && m.default) || m\n\nexports.components = {\n \"component---cache-caches-gatsby-plugin-offline-app-shell-js\": () => import(\"./../../caches/gatsby-plugin-offline/app-shell.js\" /* webpackChunkName: \"component---cache-caches-gatsby-plugin-offline-app-shell-js\" */),\n \"component---src-pages-404-tsx\": () => import(\"./../../../src/pages/404.tsx\" /* webpackChunkName: \"component---src-pages-404-tsx\" */),\n \"component---src-pages-about-tsx\": () => import(\"./../../../src/pages/about.tsx\" /* webpackChunkName: \"component---src-pages-about-tsx\" */),\n \"component---src-pages-apps-tsx\": () => import(\"./../../../src/pages/apps.tsx\" /* webpackChunkName: \"component---src-pages-apps-tsx\" */),\n \"component---src-pages-clients-fia-tsx\": () => import(\"./../../../src/pages/clients/fia.tsx\" /* webpackChunkName: \"component---src-pages-clients-fia-tsx\" */),\n \"component---src-pages-contact-tsx\": () => import(\"./../../../src/pages/contact.tsx\" /* webpackChunkName: \"component---src-pages-contact-tsx\" */),\n \"component---src-pages-data-protection-policy-tsx\": () => import(\"./../../../src/pages/data-protection-policy.tsx\" /* webpackChunkName: \"component---src-pages-data-protection-policy-tsx\" */),\n \"component---src-pages-design-tsx\": () => import(\"./../../../src/pages/design.tsx\" /* webpackChunkName: \"component---src-pages-design-tsx\" */),\n \"component---src-pages-index-tsx\": () => import(\"./../../../src/pages/index.tsx\" /* webpackChunkName: \"component---src-pages-index-tsx\" */),\n \"component---src-pages-insights-tsx\": () => import(\"./../../../src/pages/insights.tsx\" /* webpackChunkName: \"component---src-pages-insights-tsx\" */),\n \"component---src-pages-plans-tsx\": () => import(\"./../../../src/pages/plans.tsx\" /* webpackChunkName: \"component---src-pages-plans-tsx\" */),\n \"component---src-pages-projects-aaa-idp-animation-tsx\": () => import(\"./../../../src/pages/projects/aaa-idp-animation.tsx\" /* webpackChunkName: \"component---src-pages-projects-aaa-idp-animation-tsx\" */),\n \"component---src-pages-projects-alexander-boyd-displays-tsx\": () => import(\"./../../../src/pages/projects/alexander-boyd-displays.tsx\" /* webpackChunkName: \"component---src-pages-projects-alexander-boyd-displays-tsx\" */),\n \"component---src-pages-projects-celtic-woodland-yoga-festival-tsx\": () => import(\"./../../../src/pages/projects/celtic-woodland-yoga-festival.tsx\" /* webpackChunkName: \"component---src-pages-projects-celtic-woodland-yoga-festival-tsx\" */),\n \"component---src-pages-projects-cpd-animation-tsx\": () => import(\"./../../../src/pages/projects/cpd-animation.tsx\" /* webpackChunkName: \"component---src-pages-projects-cpd-animation-tsx\" */),\n \"component---src-pages-projects-gcn-tsx\": () => import(\"./../../../src/pages/projects/gcn.tsx\" /* webpackChunkName: \"component---src-pages-projects-gcn-tsx\" */),\n \"component---src-pages-projects-gymcoach-tsx\": () => import(\"./../../../src/pages/projects/gymcoach.tsx\" /* webpackChunkName: \"component---src-pages-projects-gymcoach-tsx\" */),\n \"component---src-pages-projects-hoponhopoff-tsx\": () => import(\"./../../../src/pages/projects/hoponhopoff.tsx\" /* webpackChunkName: \"component---src-pages-projects-hoponhopoff-tsx\" */),\n \"component---src-pages-projects-jim-ocallaghan-tsx\": () => import(\"./../../../src/pages/projects/jim-ocallaghan.tsx\" /* webpackChunkName: \"component---src-pages-projects-jim-ocallaghan-tsx\" */),\n \"component---src-pages-projects-klh-tsx\": () => import(\"./../../../src/pages/projects/klh.tsx\" /* webpackChunkName: \"component---src-pages-projects-klh-tsx\" */),\n \"component---src-pages-projects-majestic-ireland-tsx\": () => import(\"./../../../src/pages/projects/majestic-ireland.tsx\" /* webpackChunkName: \"component---src-pages-projects-majestic-ireland-tsx\" */),\n \"component---src-pages-projects-tbm-animation-tsx\": () => import(\"./../../../src/pages/projects/tbm-animation.tsx\" /* webpackChunkName: \"component---src-pages-projects-tbm-animation-tsx\" */),\n \"component---src-pages-projects-the-gables-tsx\": () => import(\"./../../../src/pages/projects/the-gables.tsx\" /* webpackChunkName: \"component---src-pages-projects-the-gables-tsx\" */),\n \"component---src-pages-projects-turn-2-me-tsx\": () => import(\"./../../../src/pages/projects/turn2me.tsx\" /* webpackChunkName: \"component---src-pages-projects-turn-2-me-tsx\" */),\n \"component---src-pages-projects-urgent-animation-tsx\": () => import(\"./../../../src/pages/projects/urgent-animation.tsx\" /* webpackChunkName: \"component---src-pages-projects-urgent-animation-tsx\" */),\n \"component---src-pages-services-animation-tsx\": () => import(\"./../../../src/pages/services/animation.tsx\" /* webpackChunkName: \"component---src-pages-services-animation-tsx\" */),\n \"component---src-pages-services-wordpress-tsx\": () => import(\"./../../../src/pages/services/wordpress.tsx\" /* webpackChunkName: \"component---src-pages-services-wordpress-tsx\" */),\n \"component---src-pages-thank-you-tsx\": () => import(\"./../../../src/pages/thank-you.tsx\" /* webpackChunkName: \"component---src-pages-thank-you-tsx\" */),\n \"component---src-pages-websites-tsx\": () => import(\"./../../../src/pages/websites.tsx\" /* webpackChunkName: \"component---src-pages-websites-tsx\" */)\n}\n\n","import { useContext } from 'react'\nimport { publicContext } from '../context/createTransitionContext'\n\nconst useTransitionState = () => useContext(publicContext)\n\nexport { useTransitionState }\n","var global = require('./_global');\nvar core = require('./_core');\nvar ctx = require('./_ctx');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var IS_WRAP = type & $export.W;\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE];\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n var key, own, out;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if (own && has(exports, key)) continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function (C) {\n var F = function (a, b, c) {\n if (this instanceof C) {\n switch (arguments.length) {\n case 0: return new C();\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if (IS_PROTO) {\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n","/**\n * Remove a prefix from a string. Return the input string if the given prefix\n * isn't found.\n */\n\nexport default function stripPrefix(str, prefix = ``) {\n if (!prefix) {\n return str\n }\n\n if (str === prefix) {\n return `/`\n }\n\n if (str.startsWith(`${prefix}/`)) {\n return str.slice(prefix.length)\n }\n\n return str\n}\n"],"names":["camelCase","input","options","Array","isArray","TypeError","Object","assign","pascalCase","map","x","trim","filter","length","join","toUpperCase","toLowerCase","string","isLastCharLower","isLastCharUpper","isLastLastCharUpper","i","character","test","slice","preserveCamelCase","replace","_","p1","m","charAt","module","exports","r","a","e","n","__esModule","_react","require","Context","createContext","Provider","Consumer","publicContext","PublicProvider","PublicConsumer","obj","newObj","key","prototype","hasOwnProperty","call","desc","defineProperty","getOwnPropertyDescriptor","get","set","default","_interopRequireWildcard","_addClass","_interopRequireDefault","_removeClass","_Transition","_extends","target","arguments","source","apply","this","addClass","node","classes","split","forEach","c","removeClass","CSSTransition","_React$Component","subClass","superClass","_this","_len","args","_key","concat","onEnter","appearing","className","getClassNames","removeClasses","props","onEntering","activeClassName","reflowAndAddClass","onEntered","appearClassName","doneClassName","enterClassName","onExit","onExiting","onExited","type","classNames","isStringClassNames","create","constructor","__proto__","_proto","_this$getClassNames6","scrollTop","render","createElement","Component","defaultProps","propTypes","_default","multiExpressionReaction","expressions","effect","disposers","reaction","d","useProps","current","annotations","name","s","useLocalObservable","createObservable","_objectSpread","includeWritableKeys","useEffect","runInAction","debug","console","log","__writableKeys","useStore","initializer","useState","makeObservableStore","object","descriptors","getOwnPropertyDescriptors","_annotations","entries","_ref","computed","_presumePropIsReactComponent","isFunction","value","observable","ref","keys","inPlace","makeObservable","writableKeys","extendObservable","push","_toConsumableArray","_e$","writable","_options$name2","isDevelopment","__inspect","_options$name","_writableKeys","group","k","isObservableProp","isComputedProp","isAction","isFlow","_Object$getOwnPropert","groupEnd","__name","p","fn","isMobXFlow","condition","format","b","f","error","undefined","Error","argIndex","framesToPop","it","WebFont","onInitialClientRender","_extends3","plugins","load","isObject","document","is","element","classList","contains","baseVal","indexOf","EXITING","ENTERED","ENTERING","EXITED","UNMOUNTED","PropTypes","_reactDom","_reactLifecyclesCompat","Transition","context","initialStatus","parentGroup","transitionGroup","appear","isMounting","enter","appearStatus","in","unmountOnExit","mountOnEnter","state","status","nextCallback","getChildContext","getDerivedStateFromProps","prevState","componentDidMount","updateStatus","componentDidUpdate","prevProps","nextStatus","componentWillUnmount","cancelNextCallback","getTimeouts","exit","timeout","mounting","findDOMNode","performEnter","performExit","setState","_this2","timeouts","enterTimeout","safeSetState","onTransitionEnd","_this3","cancel","nextState","callback","setNextCallback","_this4","active","event","handler","doesNotHaveTimeoutOrListener","addEndListener","setTimeout","_this$props","children","childProps","excluded","sourceKeys","_objectWithoutPropertiesLoose","child","Children","only","cloneElement","noop","contextTypes","childContextTypes","polyfill","PageRenderer","_inheritsLoose","params","grabMatchParams","location","pathname","pageResources","json","pageContext","__params","pageElement","component","path","page","apiRunner","result","pop","React","replaceClassName","origClass","classToRemove","RegExp","remove","setAttribute","wrapPageElement","wrapRootElement","shouldUpdateScroll","window","__tl_inTransition","resolveAfter","dur","Promise","resolve","tick","msMin","msMax","duration","Math","random","runAfter","async","wait","alive","getEncodedValue","allowEmptyString","str","decodeString","String","StringParam","encode","decode","t","encodeURIComponent","updateLocation","encodedQuery","stringifyOptions","encodedSearchString","stringify","transformSearchString","search","href","parseUrl","url","Date","now","query","y","objA","objB","equalMap","_a","_b","keysA","keysB","isEqual","equals","newValue","hasNew","extract","createLocationWithChanges","queryReplacements","updateType","encodedQueryReplacements","currQuery","parse","parseNumbers","updateInLocation","LocationContext","getLocation","setLocation","LocationProvider","history","locationRef","updateUrlQuery","initialSearchString","cachedSearchString","cachedParsedQuery","newSearchString","getLatestDecodedValue","paramConfig","paramConfigRef","encodedValueCacheRef","decodedValueCacheRef","hasNewParamConfig","isValueEqual","parsedQuery","hasNewEncodedValue","encodedValue","newDecodedValue","useQueryParam","decodedValue","setValueDeps","setValueDepsRef","setValue","newEncodedValue","deps","latestValue","cachedWindowHistory","cachedAdaptedWindowHistory","cachedReachHistory","cachedAdaptedReachHistory","adaptReachHistory","adaptedReachHistory","navigate","protocol","host","getLocationProps","adaptedWindowHistory","replaceState","pushState","adaptWindowHistory","QueryParamProvider","ReactRouterRoute","reachHistory","stringifyOptionsRef","stringifyOptionsCached","routeProps","makePortalController","root","el","isBrowser","getElementById","renderable","ReactDOM","init","defaultDialogActionsMap","true","Label","false","defaultDialogActionsArray","dismiss","onActionTrigger","_jsx","Observer","_jsxs","onClick","isString","config","Heading","width","height","viewBox","fill","stroke","Body","actions","action","_action$title","BaseButton","title","valueArray","onDetectingMouse","onDetectingTouch","onDetectingStylus","lastMouseMove","performance","mousemoveDetector","thisMouseMove","innerHTML","body","prepend","documentElement","add","removeEventListener","touchstartDetector","touches","touchType","includes","addEventListener","makeUIController","_window$CSS","_window$CSS2","ready","cssFeatures","grid","CSS","supports","isIE","customProperties","viewport","clientWidth","innerHeight","scrollY","getScrollY","scrollWidth","scrollHeight","ui","isDarkTheme","scrollbarWidth","innerWidth","pointerTypes","cursor","tricolor","makeDecoTricolorController","isFirstLoad","dialogs","array","deep","presentDialog","resolveValue","handleActionTrigger","flow","_action$beforeResolve","beforeResolve","dispose","dialog","DialogLayer","getRandomNumericString","addToArrayIfNew","removeFromArray","resolved","prompt","addRootClass","toggle","highPerf","lastScrollY","checkScrollY","checkScrollbarWidth","handleWindowScroll","handleWindowResize","style","setProperty","handleWindowFocus","isFirefox","initPointerDetector","PointerDetector","initParallax","isLegacyEdge","AppController","makeAppController","siteInfo","version","packageJson","PORTAL","UI","Reflect","AppContext","useAppContext","useContext","prefetchPathname","loader","enqueue","StaticQueryContext","StaticQueryDataRenderer","staticQueryData","data","finalData","StaticQuery","useStaticQuery","_context$query","isNaN","Number","graphql","arrayWithoutHoles","iterableToArray","unsupportedIterableToArray","nonIterableSpread","message","_console","isProduction","optionalParams","_console4","reportError","runAndIgnoreError","warn","portalRoot","PortalContainer","zIndex","level","position","top","left","__self","__source","fileName","_jsxFileName","lineNumber","columnNumber","TransitionPortal","_react$Component","appendChild","removeChild","createPortal","Fragment","styles","css","isBuildTime","process","isLocalhost","Boolean","Cypress","hostname","enableInsights","enableAxonFlow","defaultPrevented","button","metaKey","altKey","ctrlKey","shiftKey","all","on","off","splice","emit","evt","mitt","g","vendors","suffix","raf","caf","last","id","queue","frameDuration","_now","next","max","cp","cancelled","round","handle","requestAnimationFrame","cancelAnimationFrame","anObject","IE8_DOM_DEFINE","toPrimitive","dP","O","P","Attributes","separator","separatorIndex","getRandomInteger","floor","ceil","getTime","substr","_useTransitionState","_useTriggerTransition","objectWithoutPropertiesLoose","o","getOwnPropertySymbols","propertyIsEnumerable","_CSSTransition","_ReplaceTransition","_TransitionGroup","TransitionGroup","ReplaceTransition","classNamesShape","timeoutsShape","seconds","arr","itemsToAdd","item","_len2","itemsToRemove","_key2","toggleInArrayWithPredicate","predicate","_len3","itemsToToggle","_key3","hasIntersection","arrA","arrB","intersection","uniq","sortRandomly","from","sort","parsePath","hash","hashIndex","searchIndex","strictUriEncode","decodeComponent","splitOnFirst","filterObject","validateArrayFormatSeparator","strict","keysSorter","removeHash","hashStart","queryStart","parseValue","parseBooleans","arrayFormat","arrayFormatSeparator","formatter","accumulator","exec","isEncodedArray","parserForArrayFormat","ret","param","reduce","shouldFilter","skipNull","skipEmptyString","index","encoderForArrayFormat","objectCopy","url_","parseFragmentIdentifier","fragmentIdentifier","stringifyUrl","queryFromUrl","parsedQueryFromUrl","queryString","getHash","pick","exclude","exclusionFilter","ReferenceError","useObservableRef","initialValue","_current","AnimatedLinkTrigger","_args$exit$length","_args$exit","_args$entry","entry","TweenLite","opacity","fromTo","ease","Power2","easeInOut","AnimatedLink","_props$activeClassChe","_props$length","dataAttr","dataAttributes","match","useGetDataAttributes","commonAttr","joinClassName","activeClassChecker","AlwaysFalseFn","to","rel","TransitionLink","trigger","useOnMount","strings","raw","_createClass","defineProperties","descriptor","enumerable","configurable","Constructor","protoProps","staticProps","_templateObject","freeze","TemplateTag","transformers","instance","_classCallCheck","tag","interimTag","bind","transformEndResult","transformString","processSubstitutions","transformer","previousTag","template","substitutions","resultSoFar","remainingPart","substitution","transformSubstitution","shift","res","transform","onString","onSubstitution","endResult","onEndResult","defaults","conjunction","serial","opts","arrayLength","indent","lastIndexOf","min","arr2","regexp","side","splitBy","isValidValue","replaceWhat","replaceWith","toString","_hasClass","isNumber","v","px","plugin","_args","handleEnter","handleLifecycle","handleEntering","handleEntered","_len4","_key4","handleExit","_len5","_key5","handleExiting","_len6","_key6","handleExited","_len7","_key7","idx","originalArgs","_child$props","toArray","inProp","_React$Children$toArr","first","second","ScrollHandler","ScrollContext","_assertThisInitialized2","_inheritsLoose2","nodeInterop","cache","_getRequireWildcardCache","has","hasPropertyDescriptor","_propTypes","_sessionStorage","WeakMap","cacheBabelInterop","cacheNodeInterop","SessionStorage","displayName","_stateStorage","_isTicking","_latestKnownScrollY","scrollListener","_saveScroll","windowScroll","scrollTo","scrollToHash","substring","scrollIntoView","prevRouterProps","routerProps","save","scrollPosition","_this$props$location","read","decodeURI","_this$props$location2","func","isRequired","cof","_source$location","origin","port","canUseDOM","URL","encodeURI","createHistory","listeners","transitioning","resolveTransition","_onTransitionComplete","listen","listener","popstateListener","_ref$replace","go","transition","createMemorySource","initialPath","initialLocation","stack","states","uri","_uri$split","_uri$split$","_uri$split2","_uri$split2$","newIndex","globalHistory","navigator","serviceWorker","register","then","reg","installingWorker","installing","controller","___swUpdated","___failedResources","reload","catch","toPropertyKey","useScrollRestoration","identifier","_reachRouter","useLocation","_scrollHandler","useRef","useLayoutEffect","onScroll","_typeof","Symbol","iterator","localizedManifests","defaultFilename","localizedManifest","find","app","startsWith","start_url","lang","aFunction","that","Set","I","HTMLImageElement","W","z","T","images","fallback","src","gatsbyImageData","childImageSharp","C","l","dataset","objectFit","objectPosition","objectFitPolyfill","reject","loading","shouldLoad","onLoad","currentTarget","Image","currentSrc","q","backgroundColor","bottom","right","F","V","G","layout","paddingTop","maxWidth","display","alt","role","U","B","J","Y","srcSet","innerRef","decoding","X","sources","sizes","u","media","Z","K","Q","$","tt","image","et","rt","hydrated","forceRender","lazyHydrator","unobserveRef","isLoading","isLoaded","h","_lazyHydrate","querySelector","lazyHydrate","JSON","toggleIsLoaded","_setupIntersectionObserver","createIntersectionObserver","onStartLoad","wasCached","shouldComponentUpdate","complete","as","class","dangerouslySetInnerHTML","__html","suppressHydrationWarning","at","nt","ot","st","lt","__imageData","__error","dt","getNanoSeconds","hrtime","loadTime","moduleLoadTime","nodeLoadTime","upTime","hr","uptime","redirectMap","Map","redirectIgnoreCaseMap","maybeGetBrowserRedirect","redirect","ignoreCase","fromPath","isNil","Location","_ref2","Root","createDocumentFragment","Node","createTextNode","insertBefore","firstChild","Element","Document","DocumentFragment","GATSBY_ROUTER_SCROLL_STATE","stateKey","getStateKey","sessionStorage","getItem","storedValue","setItem","stateKeyBase","_requestanimationframeTimer","_createTransitionContext","TransitionRenderer","shouldBeVisible","appearAfter","delay","appearTimeout","clearTimeout","nextProps","transitionStatus","mount","entryZindex","exitZindex","transitionState","injectPageProps","removeRootClass","hasRootClass","some","makeElement","tagName","content","temp","append","childNodes","loadScript","script","onload","onerror","head","asyncPrependToContainer","elementGetter","containerGetter","_window$scrollY","pageYOffset","_arrayLikeToArray","createDesc","_defineProperty","$keys","enumBugKeys","_gatsby","_triggerTransition","defaultOptions","calledOptions","Event","nativeEvent","disableAnimation","persist","preventDefault","triggerTransition","defined","animate","animationDelay","gsapWithCSS","registerPlugin","TweenMaxWithCSS","core","Tween","WrappedComponent","DelayedTransitionWrapper","shouldRender","renderTimeout","_extends2","FUNC_TYPE","UNDEF_TYPE","OBJ_TYPE","STR_TYPE","MAJOR","MODEL","NAME","TYPE","VENDOR","VERSION","ARCHITECTURE","CONSOLE","MOBILE","TABLET","SMARTTV","WEARABLE","EMBEDDED","AMAZON","APPLE","ASUS","BLACKBERRY","BROWSER","CHROME","FIREFOX","GOOGLE","HUAWEI","LG","MICROSOFT","MOTOROLA","OPERA","SAMSUNG","SHARP","SONY","XIAOMI","ZEBRA","FACEBOOK","CHROMIUM_OS","MAC_OS","SUFFIX_BROWSER","enumerize","enums","str1","str2","lowerize","len","rgxMapper","ua","arrays","j","matches","regex","strMapper","windowsVersionMap","ME","XP","Vista","RT","regexes","browser","cpu","device","tablet","engine","EDGE","os","UAParser","extensions","getResult","_navigator","_ua","userAgent","_uach","userAgentData","_rgxmap","mergedRegexes","extend","_isSelfNav","getBrowser","_browser","brave","isBrave","getCPU","_cpu","getDevice","_device","mobile","standalone","maxTouchPoints","getEngine","_engine","getOS","_os","platform","getUA","setUA","CPU","DEVICE","ENGINE","OS","jQuery","Zepto","parser","prop","TransitionHandler","Layout","pluginOptions","bitmap","_setPrototypeOf","setPrototypeOf","routes","default_","uriPathname","uriSegments","segmentize","isRootUri","ranked","rankRoutes","missed","route","routeSegments","routeSegment","uriSegment","isSplat","decodeURIComponent","dynamicMatch","paramRe","reservedNames","base","_to$split","toPathname","toQuery","basePathname","toSegments","baseSegments","addQuery","allSegments","segments","segment","insertParams","_path$split","pathBase","_path$split$","constructedPath","_params$location","_params$location$sear","searchSplit","isDynamic","rankRoute","score","isRootSegment","SEGMENT_POINTS","_objectWithoutProperties","_possibleConstructorReturn","self","_inherits","createNamedContext","defaultValue","Ctx","_temp","getContext","refs","unlisten","_props$history","componentDidCatch","info","isRedirect","_navigate","unmounted","ServerLocation","BaseContext","baseuri","basepath","Router","baseContext","locationContext","RouterImpl","_React$PureComponent","_props","_navigate2","primary","_props$component","domProps","createRoute","clone","FocusWrapper","FocusHandler","wrapperProps","FocusContext","_ref3","requestFocus","FocusHandlerImpl","initialRender","focusHandlerCount","_React$Component2","_temp2","shouldFocus","focus","myURIChanged","navigatedUpToMe","activeElement","_this5","_props2","_props2$component","Comp","outline","tabIndex","forwardRef","Link","_ref4","_ref5","_ref6","_props$getProps","getProps","anchorProps","encodedHref","isCurrent","isPartiallyCurrent","shouldNavigate","shouldReplace","_location$state","restState","obj1","obj2","obj1Keys","every","RedirectRequest","redirectTo","RedirectImpl","_React$Component3","_props3","_props3$replace","noThrow","resolvedTo","_props4","Redirect","_ref7","Match","_ref8","_ref9","_ref10","resolvedPath","useNavigate","useParams","results","useMatch","stripSlashes","elementPath","loadPageSync","InternalPageRenderer","_TransitionLink","arrayLikeToArray","aa","ba","unshift","Function","ca","da","FontFace","cssText","getElementsByTagName","lastChild","parentNode","w","A","onreadystatechange","readyState","D","E","parseInt","H","ga","ha","events","L","ja","M","N","start","fonts","fa","race","R","S","la","offsetWidth","serif","ma","na","oa","qa","xa","vendor","ra","sa","ta","ia","ka","pa","fontfamily","fontStyle","fontWeight","projectId","api","urls","families","testStrings","ya","za","latin","cyrillic","greek","khmer","Hanuman","Aa","thin","extralight","ultralight","light","regular","book","medium","semibold","demibold","bold","extrabold","ultrabold","black","heavy","Ba","italic","normal","Ca","Ea","Fa","Arimo","Cousine","Tinos","Ga","Ha","text","va","Da","wa","Typekit","__webfontfontdeckmodule__","weight","ea","custom","fontdeck","monotype","typekit","google","defaultNoopBatch","printDebugValue","TimerBasedFinalizationRegistry","finalize","maxAge","sweepTimeout","registrations","registration","token","registeredAt","delete","size","scheduleSweep","sweep","observerFinalizationRegistry","FinalizationRegistry","adm","globalIsUsingStaticRendering","__read","ar","done","observerComponentNameFor","baseComponentName","ObjectToBeRetainedByReact","objectToBeRetainedByReactFactory","objectRetainedByReact","forceUpdate","admRef","mounted","changedBeforeMount","rendering","exception","unregister","track","hasSymbol","for","memo","ObserverComponent","autoBind","reactionScheduler","shared","uid","_raf","_raf2","fnStacks","runArray","rafStarted","startId","getTimeStamp","executeFn","loop","currentTimeTick","nextTick","ms","mode","checkTick","clear","addId","_ref$ms","currentId","removeId","setInterval","clearInterval","solid","inTransition","exitTrigger","entryProps","exitProps","triggerResolve","removed","exitPropsTrimmed","_excluded","_getPagesPromises","InternalProvider","prefersReducedMotionSetting","matchMedia","prefersReducedMotion","exitDelay","exitLength","exitState","entryDelay","entryLength","entryState","entryTrigger","updateContext","addListener","charCodeAt","__e","RouteAnnouncerProps","padding","overflow","clip","whiteSpace","border","maybeRedirect","___replace","toPath","nextRoute","reason","onPreRouteUpdate","prevLocation","onRouteUpdate","timeoutId","emitter","loadPage","PageResourceStatus","webpackCompilationHash","___webpackCompilationHash","postMessage","gatsbyApi","reachNavigate","getSavedScrollPosition","oldPathname","RouteAnnouncer","announcementRef","pageName","pageHeadings","querySelectorAll","textContent","newAnnouncement","innerText","compareLocationProps","nextLocation","_prevLocation$state","_nextLocation$state","RouteUpdates","_proto2","shallowDiffers","_i","EnsureResources","withErrorDetails","loadResources","rawPath","matchPath","shallowCompare","ProdLoader","asyncRequires","pageData","setLoader","setApiRunner","___emitter","___loader","publicLoader","___push","___navigate","apiRunnerAsync","RouteHandler","DataContext","GatsbyRoot","staticQueryResults","getStaticQueryResults","LocationHandler","__BASE_PATH__","stripPrefix","pagePath","browserLoc","findMatchPath","SiteRoot","App","onClientEntryRanRef","mark","renderer","hydrateRoot","runRender","rootElement","doc","doScroll","getResourceURLsForPathname","defaultReturn","argTransform","previous","global","__g","_useScrollRestoration","makeDisposerController","disposer","LaterHydrator","__tl_back_button_pressed","__tl_desiredPathname","configure","useProxies","getter","_p$setter","setter","disabled","handleInputValueChange","checked","onChange","htmlFor","shouldShowBanner","serialisable","hasReviewed","enableEssentialCookies","enableGoogleAnalytics","enableLinkedInInsightTag","showManagerOverlay","hasLoaded","googleAnalytics","linkedInInsightTag","useSyncObservableStateToStorage","toJS","manage","acceptAll","applyChanges","initAllEnabled","initGA","initLI","LINKEDIN_INSIGHT_ID","noscript","img","_linkedin_data_partner_ids","lintrk","LOAD_LINKEDIN_INSIGHT","LINKEDIN_INSIGHT_TAG","LOAD_GTAG","scriptExternal","scriptInline","MANAGE_PRIVACY_SETTINGS","dataLayer","Line","PanelToggle","ErrorListItem","_Fragment","ErrorList","errors","errorMessage","details","originalError","errorDetails","response","shouldRenderDetails","_s$errorDetails","_s$errorDetails2","_s$originalError","ErrorBoundary","getDerivedStateFromError","errorInfo","Fallback","ErrorRenderer","cursorTargetFocusOverlayRef","showCoordinationLines","xInt","yInt","vw","vh","rect","offset","elementIsInteractable","nodeName","isIPad","inputs","getAttribute","animateTricolorPaths","deltaX","deltaY","handleMousemove","clientX","clientY","isWebKit","handleError","updateTargetBoundingBox","_cursorTargetFocusOve","_s$rect$offset","_s$rect$offset2","_s$rect$width","_s$rect$offset3","_s$rect$height","_s$rect$offset4","br","getBoundingClientRect","handleClick","handleFocusChange","_document$activeEleme","_document$activeEleme2","when","Symbols","xmlns","detectBrowsers","initReactFastClick","CursorController","AnalyticsManager","DialogStack","_secondsMs","pages","linkState","preventScrollJump","toSplit","withPrefix","getMs","finalResetSeconds","originalCreateElement","touchKeysToStore","touchEvents","downPos","lastPos","isDisabled","myTarget","handleType","stopPropagation","textarea","select","label","forTarget","copyTouchKeys","touch","invalidateIfMoreThanOneTouch","invalid","onMouseEvent","touched","lastTouchDate","moved","onTouchStart","onTouchMove","abs","onTouchEnd","box","radiusX","radiusY","fastclick","fakeClickEvent","propsWithFastclickEvents","newProps","onMouseDown","onMouseMove","onMouseUp","DOM","getReactFCInitializer","elementConfigSet","customFunction","depth","direction","registerParallaxEffect","NoOp","_options$depth","_options$direction","_options$shouldDisabl","_options$shouldDisabl2","shouldDisable","observeVisibility","isArr","val","SHARED","store","copyright","getGlobalPathPrefix","_objectWithoutPropertiesLoose2","_utils","_parsePath","isAbsolutePath","prefix","_prefix","getGlobalBasePrefix","isLocalLink","endsWith","rewriteLinkPath","relativeTo","absolutify","NavLinkPropTypes","activeStyle","partiallyActive","bool","GatsbyLinkLocationWrapper","GatsbyLink","_location","defaultGetProps","IOSupported","IntersectionObserver","handleRef","_prefetch","currentPath","rewrittenPath","newPathName","io","_this$io","unobserve","disconnect","cb","isIntersecting","intersectionRatio","observe","_this$props$getProps","_onClick","_onMouseEnter","onMouseEnter","rest","prefixedTo","hovering","IntersectionObserverEntry","frame","getFrameElement","ownerDocument","registry","crossOriginUpdater","crossOriginRect","THROTTLE_TIMEOUT","POLL_INTERVAL","USE_MUTATION_OBSERVER","_setupCrossOriginUpdater","boundingClientRect","intersectionRect","convertFromParentRect","observer","_checkForIntersections","_resetCrossOriginUpdater","_observationTargets","nodeType","_registerInstance","_monitorIntersections","_unmonitorIntersections","_unregisterInstance","_unmonitorAllIntersections","takeRecords","records","_queuedEntries","_initThresholds","opt_threshold","threshold","_parseRootMargin","opt_rootMargin","margins","margin","parts","parseFloat","unit","win","defaultView","_monitoringDocuments","monitoringInterval","domObserver","addEvent","MutationObserver","attributes","childList","characterData","subtree","_monitoringUnsubscribes","removeEvent","rootDoc","hasDependentTargets","itemDoc","unsubscribe","unsubscribes","rootIsInDom","_rootIsInDom","rootRect","_getRootRect","targetRect","rootContainsTarget","_rootContainsTarget","oldEntry","_computeTargetAndRootIntersection","rootBounds","newEntry","time","_hasCrossedThreshold","_callback","getComputedStyle","rect1","rect2","parent","getParentNode","atRoot","parentRect","parentComputedStyle","frameRect","frameIntersect","isDoc","html","clientHeight","_expandRectByRootMargin","_rootMarginValues","newRect","oldRatio","newRatio","thresholds","containsDeep","frameElement","ensureDOMRect","targetArea","intersectionArea","toFixed","opt_options","timer","rootMargin","opt_useCapture","attachEvent","detachEvent","err","parentBoundingRect","parentIntersectionRect","assignedSlot","shouldEnableHighPerformanceAnimations","isIOS","majorVersion","osVersion","browserMajorVersion","browserVersion","isAndroid","getStorageObject","use","localStorage","readFromStorage","storage","saveToStorage","fireImmediately","registerServiceWorker","GATSBY_IS_PREVIEW","whiteListLinkRels","prefetchedPathnames","setPathResources","resources","onServiceWorkerActive","nodes","headerResources","prefetchedResources","resource","link","onPostPrefetchPathname","_shouldNavigate","_excluded2","weShouldNavigate","number","exitFn","_win","_doc","_docElement","_pluginInitted","_tempDiv","_recentSetterPlugin","_supports3D","_transformProps","_RAD2DEG","PI","_DEG2RAD","_atan2","atan2","_capsExp","_horizontalExp","_complexExp","_propertyAliases","autoAlpha","scale","alpha","_renderCSSProp","ratio","_renderPropWithEnd","_renderCSSPropWithBeginning","_renderRoundedCSSProp","_renderNonTweeningValue","_renderNonTweeningValueOnlyAtEnd","_setterCSSStyle","property","_setterCSSProp","_setterTransform","_gsap","_setterScale","scaleX","scaleY","_setterScaleWithRender","renderTransform","_setterTransformWithRender","_transformProp","_transformOriginProp","_createElement","ns","createElementNS","_getComputedProperty","skipPrefixFallback","cs","getPropertyValue","_checkPropPrefix","_prefixes","preferPrefix","_initCore","_getBBoxHack","swapIfPossible","bbox","svg","ownerSVGElement","oldParent","oldSibling","nextSibling","oldCSS","getBBox","_gsapBBox","_getAttributeFallbacks","attributesArray","hasAttribute","_getBBox","bounds","_isSVG","getCTM","_removeProperty","removeProperty","removeAttribute","_addNonTweeningPT","beginning","end","onlySetAtEnd","pt","_pt","_nonConvertibleUnits","deg","rad","turn","_convertToUnit","isSVG","curValue","curUnit","horizontal","isRootSVG","measureProperty","amount","toPixels","toPercent","_get","uncache","_parseTransform","_firstTwoOnly","zOrigin","_specialProps","_tweenComplexCSSString","startValues","startNum","color","startValue","endValue","endNum","chunk","endUnit","startUnit","relative","matchIndex","lastIndex","units","_next","_keywordToPercent","center","_renderClearProps","tween","_time","_dur","clearTransforms","clearProps","pr","_identity2DMatrix","_rotationalProperties","_isNullTransform","_getComputedTransformMatrixAsArray","matrixString","_getMatrix","force2D","addedToDOM","matrix","consolidate","offsetParent","_applySVGOrigin","originIsAbsolute","smooth","matrixArray","pluginToAddPropTweensTo","determinant","xOriginOld","xOrigin","yOriginOld","yOrigin","xOffsetOld","xOffset","yOffsetOld","yOffset","tx","ty","originSplit","rotation","rotationX","rotationY","skewX","skewY","perspective","angle","cos","sin","a12","a22","t1","t2","t3","a13","a23","a33","a42","a43","a32","invertedScaleX","sqrt","forceCSS","xPercent","yPercent","offsetHeight","transformPerspective","force3D","_renderSVGTransforms","_renderCSSTransforms","_renderNon3DTransforms","_addPxTranslate","_zeroDeg","_zeroPx","_endParenthesis","transforms","use3D","a11","a21","tan","_addRotationalPropTween","cap","change","finalValue","_assign","_addRawTransformPTs","endCache","startCache","vars","positionAndScale","CSSPlugin","targetTest","targets","specialProp","isTransformRelated","transformPropTween","hasPriority","startAt","parseTransform","smoothOrigin","dep","autoRound","aliases","getSetter","utils","checkPrefix","singleMatcher","multiMatcher","decodeComponents","components","tokens","encodedURI","replaceMap","customDecodeURIComponent","validateRedirect","_invariant","_invariant2","_navigator$platform","isChrome","isSafari","isIPhone","isAppleBrowser","isElectron","isChromiumEdge","isEdgeLegacy","callbackRegistry","animationObserver","_def$onBecomeInvisibl","def","_def$onBecomeVisible","onBecomeVisible","once","onBecomeInvisible","_options$onBecomeVisi","hasKey","supportedPrefetchStrategy","feature","fakeLink","relList","support","getElementsByName","req","XMLHttpRequest","open","send","preFetched","Success","preferDefault","createPageDataUrl","stripSurroundingSlashes","doFetch","method","toPageResources","componentChunkName","staticQueryHashes","BaseLoader","loadComponent","matchPaths","inFlightNetworkRequests","pageDb","inFlightDb","staticQueryDb","pageDataDb","prefetchTriggered","prefetchCompleted","setMatchPaths","memoizedGet","inFlightPromise","prefetchDisabled","fetchPageDataJson","loadObj","retries","responseText","jsonPayload","payload","notFound","loadPageDataJson","findPath","loadAppData","allData","finalResult","componentChunkPromise","createdAt","staticQueryBatchPromise","staticQueryHash","staticQueryResultsMap","_options","shouldPrefetch","doesConnectionSupportPrefetch","connection","effectiveType","saveData","prefetch","realPath","doPrefetch","pageDataUrl","prefetchHelper","crossOrigin","createComponentUrls","isPageNotFound","appData","___chunkMapping","__PATH_PREFIX__","_BaseLoader2","chunkName","componentUrls","_loader","valueOf","createLayer","handleResize","defaultTricolorPaths","container","layerRed","pathRed","layerGreen","pathGreen","layerBlue","pathBlue","isFirstTime","morph","_document$getElementB","_options$duration","_options$duration2","_options$duration3","_document$getElementB2","_document$querySelect","_document$querySelect2","_document$getElementB3","_document$querySelect3","_document$querySelect4","_document$getElementB4","_document$querySelect5","_document$querySelect6","TweenMax","morphSVG","red","Expo","easeOut","green","blue","onComplete","_ChildMapping","_assertThisInitialized","values","firstRender","appeared","prevChildMapping","getInitialChildMapping","getNextChildMapping","currentChildMapping","getChildMapping","childFactory","ownKeys","enumerableOnly","symbols","sym","_objectSpread2","sourceSymbolKeys","MDXContext","useMDXComponents","contextComponents","allComponents","MDXProvider","DEFAULTS","inlineCode","wrapper","MDXCreateElement","propComponents","mdxType","originalType","parentName","etc","GatsbyMDXScopeContext","MDXScopeProvider","__mdxScope","componentsAndGuards","componentFromGuards","guard","mdxPlugins","guards","componentName","acc","MDXConsumer","componentsFromContext","scopeContexts","ex","React__default","UA","setDefaults","getNavigatorInstance","isIOS13Check","nav","MSStream","_defineProperties","_getPrototypeOf","getPrototypeOf","DeviceTypes","BrowserTypes","Chrome","Firefox","Opera","Yandex","Safari","InternetExplorer","Edge","Chromium","Ie","MobileSafari","EdgeChromium","MIUI","SamsungBrowser","OsTypes","IOS","Android","WindowsPhone","Windows","initialData","isMobile","isTablet","isSmartTV","isConsole","isWearable","mobilePayload","model","checkType","isEdgeChromiumType","isBrowserType","isEdgeType","getIPad13","isMobileSafari","isChromium","isMobileAndTabletType","isMobileOnly","isDesktop","isWinPhone","isOpera","osName","fullBrowserVersion","major","browserName","mobileVendor","mobileModel","engineName","engineVersion","isEdge","isYandex","deviceType","isIOS13","isIPad13","isIPhone13","isIPod13","isElectronType","isEdgeChromium","isWindows","isMacOs","isMIUI","isSamsungBrowser","_assign2","toInteger","_suppressOverwrites","_globalTimeline","_coreInitted","_coreReady","_lastRenderedFrame","_quickTween","_tickerActive","_id","_req","_self","_delta","_getTime","_lagThreshold","_adjustedLag","_startTime","_lastUpdate","_gap","_nextTime","_listeners","_tick","n1","n2","n3","_config","autoSleep","nullTargetWarn","lineHeight","_defaults","overwrite","_bigNum","_tinyNum","_2PI","_HALF_PI","_gsID","_sqrt","_cos","_sin","_isString","_isFunction","_isNumber","_isUndefined","_isObject","_isNotFalse","_windowExists","_isFuncOrString","_isTypedArray","ArrayBuffer","isView","_isArray","_strictNumExp","_numExp","_numWithUnitExp","_complexStringNumExp","_relExp","_delimitedValueExp","_unitExp","_globals","_installScope","_install","scope","_merge","gsap","_missingPlugin","_warn","suppress","_addGlobal","_emptyFunc","_reservedProps","_lazyTweens","_lazyLookup","_plugins","_effects","_nextGCFrame","_harnessPlugins","_callbackNames","_harness","harnessPlugin","harness","GSCache","_getCache","_getProperty","_forEachName","names","_round","_arrayContainsAny","toSearch","toFind","_parseVars","irVars","isLegacy","varsIndex","inherit","immediateRender","runBackwards","_lazyRender","_lazy","_lazySafeRender","animation","suppressEvents","force","_numericIfPossible","_passThrough","_setDefaults","_setKeyframeDefaults","toMerge","_mergeDeep","_copyExcluding","excluding","copy","_inheritDefaults","keyframes","_dp","_removeLinkedListItem","firstProp","lastProp","prev","_prev","_removeFromParent","onlyIfParentHasAutoRemove","autoRemoveChildren","_act","_uncache","_end","_start","_dirty","_hasNoPausedAncestors","_ts","_elapsedCycleDuration","_repeat","_animationCycle","_tTime","_rDelay","tTime","cycleDuration","whole","_parentToChildTotalTime","parentTime","totalDuration","_tDur","_setEnd","_rts","_alignPlayhead","totalTime","smoothChildTiming","_postAddChecks","timeline","_initted","rawTime","_clamp","_zTime","_addToTimeline","skipChecks","_delay","timeScale","sortBy","_addLinkedListItem","_sort","_recent","_scrollTrigger","ScrollTrigger","_attemptInitTween","_initTween","lazy","_ticker","_parentPlayheadIsBeforeStart","_lock","_setDuration","skipUncache","leavePlayhead","repeat","totalProgress","_onUpdateTotalDuration","Timeline","_zeroPosition","endTime","_parsePosition","labels","recent","clippedDuration","_conditionalReturn","getUnit","_slice","_isArrayLike","nonEmpty","_flatten","leaveStrings","_accumulator","_wake","shuffle","distribute","each","_parseEase","isDecimal","ratios","axis","ratioX","ratioY","edges","originX","originY","wrapAt","distances","_invertEase","_roundModifier","pow","snap","snapTo","radius","is2D","increment","dx","dy","closest","roundingIncrement","returnFunction","_wrapArray","_replaceRandom","nums","mapRange","inMin","inMax","outMin","outMax","inRange","outRange","_getLabelInDirection","fromTime","backward","distance","executeLazyFirst","callbackScope","_interrupt","scrollTrigger","kill","progress","_255","_colorLookup","aqua","lime","silver","maroon","teal","navy","white","olive","yellow","orange","gray","purple","pink","cyan","transparent","_hue","m1","m2","splitColor","toHSL","forceAlpha","wasHSL","_colorOrderData","_colorExp","_formatColors","orderMatchData","shell","colors","_hslExp","_colorStringFilter","combined","overlap","dispatch","elapsed","manual","deltaRatio","fps","wake","gsapVersions","GreenSockGlobals","sleep","lagSmoothing","adjustedLag","_fps","_easeMap","_customEaseExp","_quotesExp","_parseObjectInString","parsedVal","_propagateYoyoEase","isYoyo","_first","yoyoEase","_yoyo","_ease","_yEase","defaultEase","close","nested","_CE","_configEaseFromString","_insertEase","easeIn","lowercaseName","_easeInOutFromOut","_configElastic","amplitude","period","p2","p3","asin","_configBack","overshoot","power","Linear","easeNone","none","SteppedEase","steps","immediateStart","_getSetter","Animation","Infinity","repeatDelay","yoyo","reversed","reverse","paused","startTime","_totalTime","_ptLookup","_pTime","iteration","_ps","_recacheAncestors","includeRepeats","wrapRepeats","globalTime","seek","restart","includeDelay","play","pause","atTime","resume","invalidate","isActive","eventCallback","_onUpdate","onFulfilled","_resolve","_then","_prom","_Animation","sortChildren","fromVars","toVars","delayedCall","staggerTo","stagger","onCompleteAll","onCompleteAllParams","onCompleteParams","staggerFrom","staggerFromTo","prevPaused","pauseTween","prevStart","prevIteration","prevTime","tDur","crossingStart","rewinding","doesWrap","repeatRefresh","onRepeat","_hasPause","_forcing","_last","_findNextPauseTween","onUpdate","adjustedTime","addLabel","getChildren","tweens","timelines","ignoreBeforeTime","getById","animations","removeLabel","killTweensOf","_totalTime2","addPause","removePause","onlyActive","getTweensOf","_overwritingTween","parsedTargets","isGlobalTime","_targets","tweenTo","tl","_vars","_onStart","onStart","onStartParams","tweenFromTo","fromPosition","toPosition","nextLabel","afterTime","previousLabel","beforeTime","currentLabel","shiftChildren","adjustLabels","includeLabels","updateRoot","_addComplexStringPropTween","stringFilter","funcParam","startNums","hasRandom","PropTween","_renderComplexString","fp","_addPropTween","modifier","currentValue","parsedStart","_setterFuncWithParam","_setterFunc","_setterPlain","_renderBoolean","_renderPlain","_checkPlugin","ptLookup","rawVars","_parseFuncOrString","_processVars","priority","cleanVars","gsData","harnessVars","overwritten","onUpdateParams","autoRevert","prevStartAt","_startAt","fullTargets","autoOverwrite","_overwrite","_op","_sortPropTweensByPriority","_onInit","_from","_staggerTweenProps","_staggerPropsToSkip","_Animation2","skipInherit","curTarget","staggerFunc","staggerVarsToMerge","_this3$vars","_proto3","prevRatio","_renderZeroDurationTween","overwrittenProps","curLookup","curOverwriteProps","killingTargets","propTweenLookup","firstPT","a1","a2","_arraysMatch","propertyAliases","_addAliasesToVars","onReverseComplete","onReverseCompleteParams","_setterAttribute","_renderPropTweens","_addPluginModifier","_killPropTweensOf","hasNonDependentRemaining","op","_setterWithModifier","mSet","mt","pt2","TimelineLite","TimelineMax","isFunc","Plugin","instanceDefaults","statics","_createPlugin","getProperty","quickSetter","setters","isTweening","registerEffect","extendTimeline","pluginName","registerEase","parseEase","exportRoot","includeDelayedCalls","wrap","range","wrapYoyo","total","normalize","clamp","pipe","functions","unitize","interpolate","mutate","interpolators","il","master","install","effects","ticker","globalTimeline","globals","getCache","suppressOverwrites","_getPluginPropTween","_buildModifierPlugin","modifiers","_addModifiers","Power0","Power1","Power3","Power4","Back","Quad","Cubic","Quart","Quint","Strong","Elastic","Bounce","Sine","Circ","_reactTransitionGroup","_router","_TransitionRenderer","_delayTransitionRender","_onEnter","_onExit","DelayedTransition","locationKey","$export","IObject","arg","pathCache","trimPathname","rawPathname","trimmedPathname","cleanPath","pickPaths","originalPath","normalizePagePath","foundPath","mergeChildMappings","getProp","nextChildMapping","isValidElement","hasPrev","hasNext","prevChild","isLeaving","mapFn","mapper","getValueForKey","nextKeysPending","pendingKeys","prevKey","childMapping","nextKey","pendingNextKey","DESCRIPTORS","getKeys","gOPS","pIE","toObject","$assign","aLen","getSymbols","isEnum","contextState","updateContextState","observing","setObserving","observerSupport","observed","thisObserved","TransitionObserver","exitResolve","exitPromise","entryResolve","entryPromise","toIObject","arrayIndexOf","IE_PROTO","_window","hashElement","offsetTop","storageKey","_window2","entryPropsTrimmed","visiblePromise","visible","component---cache-caches-gatsby-plugin-offline-app-shell-js","component---src-pages-404-tsx","component---src-pages-about-tsx","component---src-pages-apps-tsx","component---src-pages-clients-fia-tsx","component---src-pages-contact-tsx","component---src-pages-data-protection-policy-tsx","component---src-pages-design-tsx","component---src-pages-index-tsx","component---src-pages-insights-tsx","component---src-pages-plans-tsx","component---src-pages-projects-aaa-idp-animation-tsx","component---src-pages-projects-alexander-boyd-displays-tsx","component---src-pages-projects-celtic-woodland-yoga-festival-tsx","component---src-pages-projects-cpd-animation-tsx","component---src-pages-projects-gcn-tsx","component---src-pages-projects-gymcoach-tsx","component---src-pages-projects-hoponhopoff-tsx","component---src-pages-projects-jim-ocallaghan-tsx","component---src-pages-projects-klh-tsx","component---src-pages-projects-majestic-ireland-tsx","component---src-pages-projects-tbm-animation-tsx","component---src-pages-projects-the-gables-tsx","component---src-pages-projects-turn-2-me-tsx","component---src-pages-projects-urgent-animation-tsx","component---src-pages-services-animation-tsx","component---src-pages-services-wordpress-tsx","component---src-pages-thank-you-tsx","component---src-pages-websites-tsx","useTransitionState","ctx","hide","PROTOTYPE","own","out","IS_FORCED","IS_GLOBAL","IS_STATIC","IS_PROTO","IS_BIND","IS_WRAP","expProto","virtual","toLength","toAbsoluteIndex","IS_INCLUDES","$this","fromIndex"],"sourceRoot":""}