@jupyterlite/xeus 3.0.2 → 3.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"coincident.worker.js","mappings":";sEAGAA,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQE,qBAAkB,EAC1B,MAAMC,EAAc,EAAQ,KAiE5BH,EAAQE,gBA7DR,MAII,WAAAE,CAAYC,GACRC,KAAKC,QAAU,EACfD,KAAKE,UAAY,EACjBF,KAAKG,aAAc,EACnBH,KAAKI,iBAAmB,IAAIP,EAAYQ,OAAOL,MAC/CD,EAAQO,OAAOC,QAAQP,KAAKQ,eAAgBR,MAC5CA,KAAKE,SAAWH,EAAQU,SAAW,GACvC,CAIA,mBAAIC,GACA,OAAOV,KAAKI,gBAChB,CAIA,WAAIK,GACA,OAAOT,KAAKE,QAChB,CACA,WAAIO,CAAQd,GACRK,KAAKE,SAAWP,CACpB,CAOA,cAAIgB,GACA,OAAOX,KAAKG,WAChB,CAIA,OAAAS,GACQZ,KAAKG,cAGTH,KAAKG,aAAc,EACnBN,EAAYQ,OAAOQ,UAAUb,MACjC,CAIA,cAAAQ,CAAeM,EAAQC,GACnBC,aAAahB,KAAKC,QAClBD,KAAKiB,QAAUH,EACfd,KAAKkB,MAAQH,EACbf,KAAKC,OAASkB,YAAW,KACrBnB,KAAKI,iBAAiBgB,KAAK,CACvBN,OAAQd,KAAKiB,QACbF,KAAMf,KAAKkB,OACb,GACHlB,KAAKE,SACZ,qCC7DJ,IAAImB,EAAmBrB,MAAQA,KAAKqB,kBAAqB7B,OAAO8B,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EC,IAAPD,IAAkBA,EAAKD,GAC3B,IAAIG,EAAOpC,OAAOqC,yBAAyBL,EAAGC,GACzCG,KAAS,QAASA,GAAQJ,EAAEM,WAAaF,EAAKG,UAAYH,EAAKI,gBAClEJ,EAAO,CAAEK,YAAY,EAAMC,IAAK,WAAa,OAAOV,EAAEC,EAAI,IAE5DjC,OAAOC,eAAe8B,EAAGG,EAAIE,EAChC,EAAI,SAAUL,EAAGC,EAAGC,EAAGC,QACTC,IAAPD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,EACb,GACGU,EAAgBnC,MAAQA,KAAKmC,cAAiB,SAASX,EAAG9B,GAC1D,IAAK,IAAI0C,KAAKZ,EAAa,YAANY,GAAoB5C,OAAO6C,UAAUC,eAAeC,KAAK7C,EAAS0C,IAAIf,EAAgB3B,EAAS8B,EAAGY,EAC3H,EACA5C,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDwC,EAAa,EAAQ,KAAsBzC,GAC3CyC,EAAa,EAAQ,KAAiBzC,GACtCyC,EAAa,EAAQ,KAAUzC,GAC/ByC,EAAa,EAAQ,KAAyBzC,GAC9CyC,EAAa,EAAQ,KAAiBzC,GACtCyC,EAAa,EAAQ,KAAWzC,GAChCyC,EAAa,EAAQ,KAAazC,GAClCyC,EAAa,EAAQ,KAAWzC,GAChCyC,EAAa,EAAQ,KAAWzC,GAChCyC,EAAa,EAAQ,KAAUzC,6BC5B/BF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,8BCAtDH,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ8C,cAAW,EAyCnB9C,EAAQ8C,SAtCR,MACI,WAAA1C,CAAYC,EAAU,CAAC,GACnBC,KAAKyC,KAAO,IAAIC,IAChB1C,KAAK2C,UAAY5C,aAAyC,EAASA,EAAQ6C,UAL1D,GAMrB,CAIA,QAAIC,GACA,OAAO7C,KAAKyC,KAAKI,IACrB,CAIA,KAAAC,GACI9C,KAAKyC,KAAKK,OACd,CAIA,GAAAZ,CAAIa,GACA,MAAMC,EAAOhD,KAAKyC,KAAKP,IAAIa,IAAQ,KAKnC,OAJY,MAARC,IACAhD,KAAKyC,KAAKQ,OAAOF,GACjB/C,KAAKyC,KAAKS,IAAIH,EAAKC,IAEhBA,CACX,CAIA,GAAAE,CAAIH,EAAKpD,GACDK,KAAKyC,KAAKI,MAAQ7C,KAAK2C,UACvB3C,KAAKyC,KAAKQ,OAAOjD,KAAKyC,KAAKU,OAAOC,OAAOzD,OAE7CK,KAAKyC,KAAKS,IAAIH,EAAKpD,EACvB,6BClCJ,IAAI0D,EANJ7D,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ2D,wBAAqB,EAM7B,SAAWA,GACPA,EAAmBC,kBAAoB,MACvC,MAAMC,EAAqB,CACvB,YACA,SACA,QACA,MACA,OACA,QACA,SACA,UACA,QACA,OACA,QAEJ,MAAMC,EACF,WAAA1D,CAAY2D,GACRzD,KAAKyD,UAAYA,EACjBzD,KAAK0D,KAAO,GACZ1D,KAAK2D,SAAW,CACpB,EAEJN,EAAmBG,kBAAoBA,EAUvCH,EAAmBO,WAHnB,SAAoBC,GAChB,OAAON,EAAmBO,QAAQD,IAAc,CACpD,EAsDAR,EAAmBU,uBA7CnB,SAAgCC,GAC5B,IAAKA,GAAiB,KAATA,EACT,MAAO,GAEX,MAAMC,EAAQD,EAAKE,MAAM,MACnBC,EAAa,GACnB,IAAIC,EAAe,KACnB,IAAK,IAAIC,EAAY,EAAGA,EAAYJ,EAAMK,OAAQD,IAAa,CAC3D,MAAME,EAAON,EAAMI,GACbG,EAA4E,IAAvDD,EAAKT,QAAQT,EAAmBC,mBACrDmB,EAAoC,MAAhBL,EAE1B,GAAKI,GAAuBC,EAI5B,GAAKA,EAcIL,IACDI,GAEAJ,EAAaT,QAAUU,EAAY,EACnCF,EAAWO,KAAKN,GAChBA,EAAe,MAIfA,EAAaV,MAAQa,EAAO,UAvBZ,CAEpBH,EAAe,IAAIZ,EAAkBa,GAErC,MAAMM,EAAaJ,EAAKT,QAAQT,EAAmBC,mBAC7CsB,EAAYL,EAAKM,YAAYxB,EAAmBC,mBACjCqB,IAAeC,IAEhCR,EAAaV,KAAOa,EAAKO,UAAUH,EAAatB,EAAmBC,kBAAkBgB,OAAQM,GAC7FR,EAAaT,QAAUU,EACvBF,EAAWO,KAAKN,GAChBA,EAAe,KAEvB,CAaJ,CACA,OAAOD,CACX,CAEH,CAtFD,CAsFGd,IAAuB3D,EAAQ2D,mBAAqBA,EAAqB,CAAC,oFC7F7E,IAAI0B,gBAAmB/E,MAAQA,KAAK+E,iBAAoB,SAAUC,GAC9D,OAAQA,GAAOA,EAAIlD,WAAckD,EAAM,CAAE,QAAWA,EACxD,EACAxF,OAAOC,eAAeC,QAAS,aAAc,CAAEC,OAAO,IACtDD,QAAQuF,gBAAa,EACrB,MAAMC,YAAc,oBAAQ,KACtBC,WAAaJ,gBAAgB,oBAAQ,MACrCK,MAAQ,oBAAQ,KAItB,IAAIH,YACJ,SAAWA,YAmBP,SAASI,UAAUC,MACf,GAAIC,WACA,OAAOA,WAAWD,OAASE,YAAYF,MAE3CC,WAAa/F,OAAO8B,OAAO,MAC3B,IAAImE,OAAQ,EAEZ,GAAwB,oBAAbC,UAA4BA,SAAU,CAC7C,MAAMC,EAAKD,SAASE,eAAe,uBAC/BD,IACAJ,WAAaM,KAAKC,MAAMH,EAAGI,aAAe,IAC1CN,OAAQ,EAEhB,CAEA,IAAKA,OAA4B,oBAAZO,SAA2BA,QAAQC,KACpD,IACI,MAAMC,KAAM,EAAIf,WAAWgB,SAASH,QAAQC,KAAKG,MAAM,IACjDC,KAAO,oBAAQ,KACrB,IAAIC,SAAW,GACX,wBAAyBJ,IACzBI,SAAWD,KAAKE,QAAQL,IAAI,wBAEvB,wBAAyBF,QAAQQ,MACtCF,SAAWD,KAAKE,QAAQP,QAAQQ,IAAyB,sBAEzDF,WAGAf,WAAakB,KAAK,UAALA,CAAgBH,UAErC,CACA,MAAOI,GACHC,QAAQC,MAAMF,EAClB,CAEJ,GAAKxB,YAAY2B,QAAQC,SAASvB,YAI9B,IAAK,MAAMxC,KAAOwC,WAEiB,iBAApBA,WAAWxC,KAClBwC,WAAWxC,GAAO8C,KAAKkB,UAAUxB,WAAWxC,UANpDwC,WAAa/F,OAAO8B,OAAO,MAU/B,OAAOiE,WAAWD,OAASE,YAAYF,KAC3C,CAUA,SAAS0B,UAAU1B,EAAM3F,GACrB,MAAMsH,EAAO5B,UAAUC,GAEvB,OADAC,WAAWD,GAAQ3F,EACZsH,CACX,CAKA,SAASC,aACL,OAAO9B,MAAM+B,OAAOC,UAAU/B,UAAU,YAAc,IAC1D,CAKA,SAASgC,aACL,OAAOjC,MAAM+B,OAAOG,KAAKJ,aAAc7B,UAAU,WACrD,CAKA,SAASkC,cACL,OAAOnC,MAAM+B,OAAOC,UAAU/B,UAAU,aAAe6B,aAC3D,CAOA,SAASM,kBACL,OAAOpC,MAAM+B,OAAOC,UAAUhC,MAAM+B,OAAOG,KAAKC,cAAelC,UAAU,YAC7E,CAWA,SAASoC,OAAO1H,GACZ,IAAI2H,EAAIC,EAAIC,EAAIC,EAChB,IAAIxB,EAAOtG,EAAQ+H,QAAUP,cAAgBL,aAC7C,MAAMa,EAA+B,QAAvBL,EAAK3H,EAAQgI,YAAyB,IAAPL,EAAgBA,EAAKrC,UAAU,QACtE2C,EAAyC,QAA5BL,EAAK5H,EAAQiI,iBAA8B,IAAPL,EAAgBA,EAAKtC,UAAU,aAChF4C,EAAoB,oBAATF,EAA6B,MAAQ,MACtD1B,EAAOjB,MAAM+B,OAAOG,KAAKjB,EAAM4B,GAC3BD,IAAc/C,WAAWiD,mBACzB7B,EAAOjB,MAAM+B,OAAOG,KAAKjB,EAAM,aAAc8B,mBAAqD,QAAjCP,EAAKvC,UAAU,oBAAiC,IAAPuC,EAAgBA,EAAK3C,WAAWiD,oBAE9I,MAAME,EAAuC,QAA3BP,EAAK9H,EAAQqI,gBAA6B,IAAPP,EAAgBA,EAAKxC,UAAU,YAIpF,OAHI+C,IACA/B,EAAOjB,MAAM+B,OAAOG,KAAKjB,EAAM,OAAQjB,MAAM+B,OAAOkB,YAAYD,KAE7D/B,CACX,CAMA,SAASiC,SAASC,GACd,IAAIC,EAAQnD,UAAU,SACtB,IAAKmD,EAAO,CAER,GAAgC,KADhCD,EAAUA,EAAUnD,MAAM+B,OAAOC,UAAUmB,GAAWrB,cAC1CpD,QAAQ,QAChB,MAAO,GAEX0E,EAAQ,KAAOD,EAAQnC,MAAM,EACjC,CACA,OAAOhB,MAAM+B,OAAOC,UAAUoB,EAClC,CAMA,SAASC,iBAAgB,KAAEpC,EAAI,OAAEqC,EAAM,SAAEC,IACrC,MAAMC,EAAexD,MAAM+B,OAAOkB,YAAYhC,GACxCwC,EAAMzD,MAAM+B,OAAOG,KAAKJ,aAAc,YAAawB,EAAQE,GACjE,OAAID,EACOE,EAAM,iBAEVA,CACX,CAKA,SAASC,WACL,OAAOzD,UAAU,UAAYG,YAAY,kBAC7C,CAKA,SAASuD,qBACL,MAAMC,EAAkB3D,UAAU,mBAClC,MAAwB,KAApB2D,EACO,CAAC,EAAG,EAAG,GAEXnD,KAAKC,MAAMkD,EACtB,CApHA/D,WAAWI,UAAYA,UAcvBJ,WAAW+B,UAAYA,UAOvB/B,WAAWiC,WAAaA,WAOxBjC,WAAWoC,WAAaA,WAOxBpC,WAAWsC,YAAcA,YASzBtC,WAAWuC,gBAAkBA,gBA0B7BvC,WAAWwC,OAASA,OACpBxC,WAAWiD,iBAAmB,UAe9BjD,WAAWqD,SAAWA,SAatBrD,WAAWwD,gBAAkBA,gBAO7BxD,WAAW6D,SAAWA,SAWtB7D,WAAW8D,mBAAqBA,mBAIhC,IAAIxD,WAAa,KAmBb0D,UAbJ,SAASzD,YAAYzC,GACjB,GAAwB,oBAAb2C,WAA6BA,SAASwD,KAC7C,MAAO,GAEX,MAAMC,EAAMzD,SAASwD,KAAKE,QAAQrG,GAClC,YAAmB,IAARoG,EACA,GAEJE,mBAAmBF,EAC9B,EAKA,SAAWF,GASP,SAASK,EAASvG,GACd,IACI,MAAMwG,EAAMlE,UAAUtC,GACtB,GAAIwG,EACA,OAAO1D,KAAKC,MAAMyD,EAE1B,CACA,MAAO3C,GACHD,QAAQ6C,KAAK,mBAAmBzG,KAAQ6D,EAC5C,CACA,MAAO,EACX,CAIAqC,EAAUQ,SAAWH,EAAS,sBAI9BL,EAAUS,SAAWJ,EAAS,sBAgB9BL,EAAUU,WAVV,SAAoBC,GAGhB,MAAMC,EAAiBD,EAAG9F,QAAQ,KAClC,IAAIgG,EAAU,GAId,OAHwB,IAApBD,IACAC,EAAUF,EAAGxD,MAAM,EAAGyD,IAEnBZ,EAAUQ,SAASM,MAAKZ,GAAOA,IAAQS,GAAOE,GAAWX,IAAQW,GAC5E,EAiBAb,EAAUe,WAVV,SAAoBJ,GAGhB,MAAMC,EAAiBD,EAAG9F,QAAQ,KAClC,IAAIgG,EAAU,GAId,OAHwB,IAApBD,IACAC,EAAUF,EAAGxD,MAAM,EAAGyD,IAEnBZ,EAAUS,SAASK,MAAKZ,GAAOA,IAAQS,GAAOE,GAAWX,IAAQW,GAC5E,CAEH,CA7DD,CA6DGb,UAAYhE,WAAWgE,YAAchE,WAAWgE,UAAY,CAAC,GACnE,EA/QD,CA+QGhE,aAAevF,QAAQuF,WAAaA,WAAa,CAAC,gCC3RrDzF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQuK,aAAU,EAClB,MAAMC,EAAS,EAAQ,KAMvB,IAAID,GACJ,SAAWA,GAmIP,SAASE,EAAY9D,GAIjB,OAH0B,IAAtBA,EAAKvC,QAAQ,OACbuC,EAAOA,EAAKD,MAAM,IAEfC,CACX,CA7HA4D,EAAQ3C,KAJR,YAAiB8C,GACb,MAAM/D,EAAO6D,EAAOG,MAAM/C,QAAQ8C,GAClC,MAAgB,MAAT/D,EAAe,GAAK8D,EAAY9D,EAC3C,EAWA4D,EAAQK,qBAJR,YAAiCF,GAC7B,MAAM/D,EAAO6D,EAAOG,MAAM/C,QAAQ8C,GAClC,MAAgB,MAAT/D,EAAe,GAAKA,CAC/B,EAaA4D,EAAQM,SAHR,SAAkBlE,EAAMmE,GACpB,OAAON,EAAOG,MAAME,SAASlE,EAAMmE,EACvC,EAYAP,EAAQQ,QAJR,SAAiBpE,GACb,MAAMqE,EAAMP,EAAYD,EAAOG,MAAMI,QAAQpE,IAC7C,MAAe,MAARqE,EAAc,GAAKA,CAC9B,EAmBAT,EAAQU,QAHR,SAAiBtE,GACb,OAAO6D,EAAOG,MAAMM,QAAQtE,EAChC,EAeA4D,EAAQ7C,UANR,SAAmBf,GACf,MAAa,KAATA,EACO,GAEJ8D,EAAYD,EAAOG,MAAMjD,UAAUf,GAC9C,EAkBA4D,EAAQ1D,QAHR,YAAoBqE,GAChB,OAAOT,EAAYD,EAAOG,MAAM9D,WAAWqE,GAC/C,EAkBAX,EAAQY,SAHR,SAAkBC,EAAMC,GACpB,OAAOZ,EAAYD,EAAOG,MAAMQ,SAASC,EAAMC,GACnD,EAgBAd,EAAQe,mBANR,SAA4BnH,GAIxB,OAHIA,EAAUS,OAAS,GAAgC,IAA3BT,EAAUC,QAAQ,OAC1CD,EAAY,IAAIA,KAEbA,CACX,EAaAoG,EAAQE,YAAcA,CACzB,CA1ID,CA0IGF,IAAYvK,EAAQuK,QAAUA,EAAU,CAAC,gCCjJ5CzK,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQuL,qBAAkB,EAC1B,MAAM/F,EAAc,EAAQ,KA2B5BxF,EAAQuL,gBAlBR,SAAyB3K,EAAQG,GAC7B,MAAMyK,EAAgB,IAAIhG,EAAYiG,gBACtC,SAASC,IACL9K,EAAO+K,WAAWC,EACtB,CACA,SAASA,EAAKxK,EAAQC,GAClBqK,IACAF,EAAc3E,QAAQ,CAACzF,EAAQC,GACnC,CAQA,OAPAT,EAAOC,QAAQ+K,IACV7K,QAAyCA,EAAU,GAAK,GACzDU,YAAW,KACPiK,IACAF,EAAcK,OAAO,6BAA6B9K,QAAc,GACjEA,GAEAyK,EAAcM,OACzB,4BCzBA,IAAIC,EALJjM,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQ+L,UAAO,EAKf,SAAWA,GAmCPA,EAAKC,mBAnBL,SAA4BC,EAAO3H,GAG3B,OAAO2H,CAef,EA8BAF,EAAKG,mBAnBL,SAA4BC,EAAS7H,GAG7B,OAAO6H,CAef,EAuBAJ,EAAKK,UAVL,SAAmBC,EAAKC,GAAQ,GAC5B,OAAOD,EAAIE,QAAQ,uBAAuB,SAAUC,EAAOC,EAAIC,GAC3D,OAAIA,EACOA,EAAGC,cAGHL,EAAQG,EAAGE,cAAgBF,EAAGG,aAE7C,GACJ,EAgBAb,EAAKc,UAPL,SAAmBR,GACf,OAAQA,GAAO,IACVO,cACApI,MAAM,KACNsI,KAAIC,GAAQA,EAAKC,OAAO,GAAGL,cAAgBI,EAAKrG,MAAM,KACtDkB,KAAK,IACd,CAEH,CAtGD,CAsGGmE,IAAS/L,EAAQ+L,KAAOA,EAAO,CAAC,8BC5GnCjM,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQiN,UAAO,EAIf,MAAMC,EAAQ,CACV,CAAEtH,KAAM,QAASuH,aAAc,SAC/B,CAAEvH,KAAM,SAAUuH,aAAc,QAChC,CAAEvH,KAAM,OAAQuH,aAAc,OAC9B,CAAEvH,KAAM,QAASuH,aAAc,MAC/B,CAAEvH,KAAM,UAAWuH,aAAc,KACjC,CAAEvH,KAAM,UAAWuH,aAAc,MAKrC,IAAIF,GACJ,SAAWA,GAwBPA,EAAKG,YAhBL,SAAqBnN,EAAO+I,EAAS,QACjC,MAAMqE,EAAOrH,SAASsH,gBAAgBD,MAAQ,KACxCE,EAAY,IAAIC,KAAKC,mBAAmBJ,EAAM,CAChDK,QAAS,OACTC,MAAO3E,IAEL4E,EAAQ,IAAIC,KAAK5N,GAAO6N,UAAYD,KAAKE,MAC/C,IAAK,IAAIC,KAAQd,EAAO,CACpB,MAAMe,EAASC,KAAKC,KAAKP,EAAQI,EAAKb,cACtC,GAAe,IAAXc,EAGJ,OAAOV,EAAUvE,OAAOiF,EAAQD,EAAKpI,KACzC,CACA,OAAO2H,EAAUvE,OAAO,EAAG,UAC/B,EAiBAiE,EAAKjE,OARL,SAAgB/I,GACZ,MAAMoN,EAAOrH,SAASsH,gBAAgBD,MAAQ,KAK9C,OAJkB,IAAIG,KAAKY,eAAef,EAAM,CAC5CgB,UAAW,QACXC,UAAW,UAEEtF,OAAO,IAAI6E,KAAK5N,GACrC,CAEH,CAzCD,CAyCGgN,IAASjN,EAAQiN,KAAOA,EAAO,CAAC,sCC1DnC,IAAI5H,EAAmB/E,MAAQA,KAAK+E,iBAAoB,SAAUC,GAC9D,OAAQA,GAAOA,EAAIlD,WAAckD,EAAM,CAAE,QAAWA,EACxD,EACAxF,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQyH,YAAS,EACjB,MAAM+C,EAAS,EAAQ,KACjB+D,EAAclJ,EAAgB,EAAQ,MAI5C,IAAIoC,GACJ,SAAWA,GAQP,SAASrB,EAAM+C,GACX,GAAwB,oBAAbnD,UAA4BA,SAAU,CAC7C,MAAMwI,EAAIxI,SAASyI,cAAc,KAEjC,OADAD,EAAEE,KAAOvF,EACFqF,CACX,CACA,OAAO,EAAID,EAAY9H,SAAS0C,EACpC,CAwBA,SAASvB,KAAQsD,GACb,IAAIyD,GAAI,EAAIJ,EAAY9H,SAASyE,EAAM,GAAI,CAAC,GAG5C,MAAM0D,EAA8B,KAAfD,EAAEE,UAAmBF,EAAEG,QACxCF,IACAD,GAAI,EAAIJ,EAAY9H,SAASyE,EAAM,GAAI,SAAWA,EAAM,KAE5D,MAAM6D,EAAS,GAAGH,EAAe,GAAKD,EAAEE,WAAWF,EAAEG,QAAU,KAAO,KAAKH,EAAEK,OAAOL,EAAEK,KAAO,IAAM,KAAKL,EAAEM,OAEpGtI,EAAO6D,EAAOG,MAAM/C,KAAK,GAAKmH,GAA4B,MAAlBJ,EAAEO,SAAS,GAAa,IAAM,KAAKP,EAAEO,cAAehE,EAAMxE,MAAM,IAC9G,MAAO,GAAGqI,IAAkB,MAATpI,EAAe,GAAKA,GAC3C,CAnCAc,EAAOrB,MAAQA,EAWfqB,EAAO0H,YAHP,SAAqBhG,GACjB,OAAO,EAAIoF,EAAY9H,SAAS0C,GAAKiG,QACzC,EAKA3H,EAAOC,UAHP,SAAmByB,GACf,OAAOA,GAAO/C,EAAM+C,GAAKkG,UAC7B,EAsBA5H,EAAOG,KAAOA,EAedH,EAAOkB,YAHP,SAAqBQ,GACjB,OAAOvB,KAAQuB,EAAI3E,MAAM,KAAKsI,IAAIrE,oBACtC,EAyBAhB,EAAO6H,oBAbP,SAA6BrP,GACzB,MAAMwD,EAAO3D,OAAO2D,KAAKxD,GAAOsP,QAAOlM,GAAOA,EAAIuB,OAAS,IAC3D,OAAKnB,EAAKmB,OAGF,IACJnB,EACKqJ,KAAIzJ,IACL,MAAMmM,EAAU/G,mBAAmBgH,OAAOxP,EAAMoD,KAChD,OAAOA,GAAOmM,EAAU,IAAMA,EAAU,GAAG,IAE1C5H,KAAK,KARH,EASf,EAiBAH,EAAOiI,oBAZP,SAA6BzP,GACzB,OAAOA,EACFsM,QAAQ,MAAO,IACf/H,MAAM,KACNmL,QAAO,CAACC,EAAKnG,KACd,MAAOpG,EAAKpD,GAASwJ,EAAIjF,MAAM,KAI/B,OAHInB,EAAIuB,OAAS,IACbgL,EAAIvM,GAAOsG,mBAAmB1J,GAAS,KAEpC2P,CAAG,GACX,CAAC,EACR,EAgBAnI,EAAOoI,QALP,SAAiB1G,EAAK2G,GAAY,GAC9B,MAAM,SAAEjB,GAAazI,EAAM+C,GAC3B,QAAU0F,GAAoD,IAAxC1F,EAAIyD,cAAcxI,QAAQyK,MAC3CiB,EAAkC,IAAtB3G,EAAI/E,QAAQ,MAAmC,IAArB+E,EAAI/E,QAAQ,KAC3D,CAEH,CA3HD,CA2HGqD,IAAWzH,EAAQyH,OAASA,EAAS,CAAC,gCC7HzC,IAAIsI,EAi7DAC,EA4SAC,EAx2BJ,SAAUC,KAASC,GACf,IAAK,MAAMC,KAAUD,QACVC,CAEf,CA0BA,SAAUC,IAEV,CA+BA,SAAUC,EAAUF,EAAQG,EAAQ,GAChC,IAAK,MAAMtQ,KAASmQ,OACV,CAACG,IAAStQ,EAExB,CA+BA,SAAUsP,EAAOa,EAAQI,GACrB,IAAIC,EAAQ,EACZ,IAAK,MAAMxQ,KAASmQ,EACZI,EAAGvQ,EAAOwQ,aACJxQ,EAGlB,CA2CA,SAASyQ,EAAKN,EAAQI,GAClB,IAAIC,EAAQ,EACZ,IAAK,MAAMxQ,KAASmQ,EAChB,GAAII,EAAGvQ,EAAOwQ,KACV,OAAOxQ,CAInB,CAiCA,SAAS0Q,EAAUP,EAAQI,GACvB,IAAIC,EAAQ,EACZ,IAAK,MAAMxQ,KAASmQ,EAChB,GAAII,EAAGvQ,EAAOwQ,KACV,OAAOA,EAAQ,EAGvB,OAAQ,CACZ,CA6BA,SAASG,EAAIR,EAAQI,GACjB,IAAIK,EACJ,IAAK,MAAM5Q,KAASmQ,OACDnO,IAAX4O,EAIAL,EAAGvQ,EAAO4Q,GAAU,IACpBA,EAAS5Q,GAJT4Q,EAAS5Q,EAOjB,OAAO4Q,CACX,CA6BA,SAASC,EAAIV,EAAQI,GACjB,IAAIK,EACJ,IAAK,MAAM5Q,KAASmQ,OACDnO,IAAX4O,EAIAL,EAAGvQ,EAAO4Q,GAAU,IACpBA,EAAS5Q,GAJT4Q,EAAS5Q,EAOjB,OAAO4Q,CACX,CA6BA,SAASE,EAAOX,EAAQI,GACpB,IACIQ,EACAC,EAFAZ,GAAQ,EAGZ,IAAK,MAAMpQ,KAASmQ,EACZC,GACAW,EAAO/Q,EACPgR,EAAOhR,EACPoQ,GAAQ,GAEHG,EAAGvQ,EAAO+Q,GAAQ,EACvBA,EAAO/Q,EAEFuQ,EAAGvQ,EAAOgR,GAAQ,IACvBA,EAAOhR,GAGf,OAAOoQ,OAAQpO,EAAY,CAAC+O,EAAMC,EACtC,CA6BA,SAASC,EAAQd,GACb,OAAOe,MAAM/F,KAAKgF,EACtB,CAiBA,SAASgB,EAAShB,GACd,MAAMS,EAAS,CAAC,EAChB,IAAK,MAAOxN,EAAKpD,KAAUmQ,EACvBS,EAAOxN,GAAOpD,EAElB,OAAO4Q,CACX,CA0BA,SAASQ,EAAKjB,EAAQI,GAClB,IAAIC,EAAQ,EACZ,IAAK,MAAMxQ,KAASmQ,EAChB,IAAI,IAAUI,EAAGvQ,EAAOwQ,KACpB,MAGZ,CA0BA,SAASa,EAAMlB,EAAQI,GACnB,IAAIC,EAAQ,EACZ,IAAK,MAAMxQ,KAASmQ,EAChB,IAAI,IAAUI,EAAGvQ,EAAOwQ,KACpB,OAAO,EAGf,OAAO,CACX,CA0BA,SAASpG,EAAK+F,EAAQI,GAClB,IAAIC,EAAQ,EACZ,IAAK,MAAMxQ,KAASmQ,EAChB,GAAII,EAAGvQ,EAAOwQ,KACV,OAAO,EAGf,OAAO,CACX,CA+BA,SAAU3D,EAAIsD,EAAQI,GAClB,IAAIC,EAAQ,EACZ,IAAK,MAAMxQ,KAASmQ,QACVI,EAAGvQ,EAAOwQ,IAExB,CAsCA,SAAUc,EAAMhB,EAAOiB,EAAMC,QACZxP,IAATuP,GACAA,EAAOjB,EACPA,EAAQ,EACRkB,EAAO,QAEOxP,IAATwP,IACLA,EAAO,GAEX,MAAM7M,EAASoL,EAAQ0B,YAAYnB,EAAOiB,EAAMC,GAChD,IAAK,IAAIhB,EAAQ,EAAGA,EAAQ7L,EAAQ6L,UAC1BF,EAAQkB,EAAOhB,CAE7B,CAyCA,SAASd,EAAOS,EAAQI,EAAImB,GAExB,MAAMC,EAAKxB,EAAOyB,OAAOC,YACzB,IAAIrB,EAAQ,EACRsB,EAAQH,EAAGlO,OAEf,GAAIqO,EAAMC,WAAoB/P,IAAZ0P,EACd,MAAM,IAAIM,UAAU,mDAGxB,GAAIF,EAAMC,KACN,OAAOL,EAIX,IAUIO,EAQAxO,EAlBAyO,EAASP,EAAGlO,OAChB,GAAIyO,EAAOH,WAAoB/P,IAAZ0P,EACf,OAAOI,EAAM9R,MAIjB,GAAIkS,EAAOH,KACP,OAAOxB,EAAGmB,EAASI,EAAM9R,MAAOwQ,KAYpC,IAPIyB,EAAc1B,OADFvO,IAAZ0P,EACiBI,EAAM9R,MAGNuQ,EAAGmB,EAASI,EAAM9R,MAAOwQ,KAHZ0B,EAAOlS,MAAOwQ,OAOvC/M,EAAOkO,EAAGlO,QAAQsO,MACvBE,EAAc1B,EAAG0B,EAAaxO,EAAKzD,MAAOwQ,KAG9C,OAAOyB,CACX,CA+BA,SAAUE,EAAOnS,EAAOoS,GACpB,KAAO,EAAIA,WACDpS,CAEd,CAmBA,SAAUqS,EAAKrS,SACLA,CACV,CA6BA,SAAUsS,EAAMnC,GACZ,GAA4B,mBAAjBA,EAAOmC,YACPnC,EAAOmC,aAGd,IAAK,IAAI9B,EAAQL,EAAOxL,OAAS,EAAG6L,GAAS,EAAGA,UACtCL,EAAOK,EAGzB,CAqCA,SAAS+B,EAAcC,GAEnB,IAAIC,EAAS,GACTC,EAAU,IAAIC,IACdC,EAAQ,IAAI7P,IAEhB,IAAK,MAAM8P,KAAQL,EACfM,EAAQD,GAGZ,IAAK,MAAO/Q,KAAM8Q,EACdG,EAAMjR,GAGV,OAAO2Q,EAEP,SAASK,EAAQD,GACb,IAAKG,EAAUC,GAAUJ,EACrBK,EAAWN,EAAMrQ,IAAI0Q,GACrBC,EACAA,EAASnO,KAAKiO,GAGdJ,EAAMrP,IAAI0P,EAAQ,CAACD,GAE3B,CAEA,SAASD,EAAMI,GACX,GAAIT,EAAQU,IAAID,GACZ,OAEJT,EAAQW,IAAIF,GACZ,IAAID,EAAWN,EAAMrQ,IAAI4Q,GACzB,GAAID,EACA,IAAK,MAAMI,KAASJ,EAChBH,EAAMO,GAGdb,EAAO1N,KAAKoO,EAChB,CACJ,CAgCA,SAAUI,EAAOpD,EAAQqB,GACrB,IAAIY,EAAQ,EACZ,IAAK,MAAMpS,KAASmQ,EACZ,GAAMiC,IAAUZ,UACVxR,EAGlB,CAwNA,SAAUwT,EAAKrD,EAAQiC,GACnB,GAAIA,EAAQ,EACR,OAEJ,MAAMT,EAAKxB,EAAOyB,OAAOC,YACzB,IAAIxO,EACJ,KAAO,EAAI+O,OAAa/O,EAAOsO,EAAGlO,QAAQsO,YAChC1O,EAAKrD,KAEnB,CAgCA,SAAUyT,KAAOvD,GACb,MAAMwD,EAAQxD,EAAQrD,KAAI8G,GAAOA,EAAI/B,OAAOC,cAC5C,IAAI+B,EAAQF,EAAM7G,KAAI8E,GAAMA,EAAGlO,SAC/B,KAAO4N,EAAMuC,GAAOvQ,IAASA,EAAK0O,OAAO6B,EAAQF,EAAM7G,KAAI8E,GAAMA,EAAGlO,eAC1DmQ,EAAM/G,KAAIxJ,GAAQA,EAAKrD,OAErC,6VAr9EA,SAAW8P,GAyCP,SAAS+D,EAAaC,EAAO9T,EAAOsQ,EAAQ,EAAGiB,GAAO,GAClD,IAgBIwC,EAhBAC,EAAIF,EAAMnP,OACd,GAAU,IAANqP,EACA,OAAQ,EAGR1D,EADAA,EAAQ,EACArC,KAAK4C,IAAI,EAAGP,EAAQ0D,GAGpB/F,KAAK0C,IAAIL,EAAO0D,EAAI,GAU5BD,GAPAxC,EADAA,EAAO,EACAtD,KAAK4C,IAAI,EAAGU,EAAOyC,GAGnB/F,KAAK0C,IAAIY,EAAMyC,EAAI,IAGnB1D,EACAiB,EAAO,GAAKyC,EAAI1D,GAGhBiB,EAAOjB,EAAQ,EAE1B,IAAK,IAAI2D,EAAI,EAAGA,EAAIF,IAAQE,EAAG,CAC3B,IAAIC,GAAK5D,EAAQ2D,GAAKD,EACtB,GAAIF,EAAMI,KAAOlU,EACb,OAAOkU,CAEf,CACA,OAAQ,CACZ,CA0CA,SAAShP,EAAY4O,EAAO9T,EAAOsQ,GAAQ,EAAIiB,EAAO,GAClD,IAgBIwC,EAhBAC,EAAIF,EAAMnP,OACd,GAAU,IAANqP,EACA,OAAQ,EAgBRD,GAbAzD,EADAA,EAAQ,EACArC,KAAK4C,IAAI,EAAGP,EAAQ0D,GAGpB/F,KAAK0C,IAAIL,EAAO0D,EAAI,KAG5BzC,EADAA,EAAO,EACAtD,KAAK4C,IAAI,EAAGU,EAAOyC,GAGnB/F,KAAK0C,IAAIY,EAAMyC,EAAI,IAInB1D,EAAQ,GAAK0D,EAAIzC,GAGjBjB,EAAQiB,EAAO,EAE1B,IAAK,IAAI0C,EAAI,EAAGA,EAAIF,IAAQE,EAAG,CAC3B,IAAIC,GAAK5D,EAAQ2D,EAAID,GAAKA,EAC1B,GAAIF,EAAMI,KAAOlU,EACb,OAAOkU,CAEf,CACA,OAAQ,CACZ,CA8CA,SAASC,EAAeL,EAAOvD,EAAID,EAAQ,EAAGiB,GAAO,GACjD,IAgBIwC,EAhBAC,EAAIF,EAAMnP,OACd,GAAU,IAANqP,EACA,OAAQ,EAGR1D,EADAA,EAAQ,EACArC,KAAK4C,IAAI,EAAGP,EAAQ0D,GAGpB/F,KAAK0C,IAAIL,EAAO0D,EAAI,GAU5BD,GAPAxC,EADAA,EAAO,EACAtD,KAAK4C,IAAI,EAAGU,EAAOyC,GAGnB/F,KAAK0C,IAAIY,EAAMyC,EAAI,IAGnB1D,EACAiB,EAAO,GAAKyC,EAAI1D,GAGhBiB,EAAOjB,EAAQ,EAE1B,IAAK,IAAI2D,EAAI,EAAGA,EAAIF,IAAQE,EAAG,CAC3B,IAAIC,GAAK5D,EAAQ2D,GAAKD,EACtB,GAAIzD,EAAGuD,EAAMI,GAAIA,GACb,OAAOA,CAEf,CACA,OAAQ,CACZ,CA8CA,SAASE,EAAcN,EAAOvD,EAAID,GAAQ,EAAIiB,EAAO,GACjD,IAgBI8C,EAhBAL,EAAIF,EAAMnP,OACd,GAAU,IAANqP,EACA,OAAQ,EAgBRK,GAbA/D,EADAA,EAAQ,EACArC,KAAK4C,IAAI,EAAGP,EAAQ0D,GAGpB/F,KAAK0C,IAAIL,EAAO0D,EAAI,KAG5BzC,EADAA,EAAO,EACAtD,KAAK4C,IAAI,EAAGU,EAAOyC,GAGnB/F,KAAK0C,IAAIY,EAAMyC,EAAI,IAItB1D,EAAQ,GAAK0D,EAAIzC,GAGjBjB,EAAQiB,EAAO,EAEvB,IAAK,IAAI0C,EAAI,EAAGA,EAAII,IAAKJ,EAAG,CACxB,IAAIC,GAAK5D,EAAQ2D,EAAID,GAAKA,EAC1B,GAAIzD,EAAGuD,EAAMI,GAAIA,GACb,OAAOA,CAEf,CACA,OAAQ,CACZ,CA0eA,SAASI,EAAQR,EAAOxD,EAAQ,EAAGiB,GAAO,GACtC,IAAIyC,EAAIF,EAAMnP,OACd,KAAIqP,GAAK,GAeT,IAXI1D,EADAA,EAAQ,EACArC,KAAK4C,IAAI,EAAGP,EAAQ0D,GAGpB/F,KAAK0C,IAAIL,EAAO0D,EAAI,GAG5BzC,EADAA,EAAO,EACAtD,KAAK4C,IAAI,EAAGU,EAAOyC,GAGnB/F,KAAK0C,IAAIY,EAAMyC,EAAI,GAEvB1D,EAAQiB,GAAM,CACjB,IAAIhD,EAAIuF,EAAMxD,GACViE,EAAIT,EAAMvC,GACduC,EAAMxD,KAAWiE,EACjBT,EAAMvC,KAAUhD,CACpB,CACJ,CA6MA,SAASiG,EAASV,EAAOtD,GACrB,IAAIwD,EAAIF,EAAMnP,OAId,GAHI6L,EAAQ,IACRA,GAASwD,GAETxD,EAAQ,GAAKA,GAASwD,EACtB,OAEJ,IAAIhU,EAAQ8T,EAAMtD,GAClB,IAAK,IAAIyD,EAAIzD,EAAQ,EAAGyD,EAAID,IAAKC,EAC7BH,EAAMG,EAAI,GAAKH,EAAMG,GAGzB,OADAH,EAAMnP,OAASqP,EAAI,EACZhU,CACX,CA97BA8P,EAAS+D,aAAeA,EAyExB/D,EAAS5K,YAAcA,EA6EvB4K,EAASqE,eAAiBA,EA6E1BrE,EAASsE,cAAgBA,EAiDzBtE,EAAS2E,eAJT,SAAwBX,EAAOvD,EAAID,EAAQ,EAAGiB,GAAO,GACjD,IAAIf,EAAQ2D,EAAeL,EAAOvD,EAAID,EAAOiB,GAC7C,OAAkB,IAAXf,EAAesD,EAAMtD,QAASxO,CACzC,EAkDA8N,EAAS4E,cAJT,SAAuBZ,EAAOvD,EAAID,GAAQ,EAAIiB,EAAO,GACjD,IAAIf,EAAQ4D,EAAcN,EAAOvD,EAAID,EAAOiB,GAC5C,OAAkB,IAAXf,EAAesD,EAAMtD,QAASxO,CACzC,EAyFA8N,EAAS6E,WAhCT,SAAoBb,EAAO9T,EAAOuQ,EAAID,EAAQ,EAAGiB,GAAO,GACpD,IAAIyC,EAAIF,EAAMnP,OACd,GAAU,IAANqP,EACA,OAAO,EAcX,IAAIY,EAXAtE,EADAA,EAAQ,EACArC,KAAK4C,IAAI,EAAGP,EAAQ0D,GAGpB/F,KAAK0C,IAAIL,EAAO0D,EAAI,GAS5BD,GANAxC,EADAA,EAAO,EACAtD,KAAK4C,IAAI,EAAGU,EAAOyC,GAGnB/F,KAAK0C,IAAIY,EAAMyC,EAAI,IAGZ1D,EAAQ,EAC1B,KAAOyD,EAAO,GAAG,CACb,IAAIc,EAAOd,GAAQ,EACfe,EAASF,EAAQC,EACjBtE,EAAGuD,EAAMgB,GAAS9U,GAAS,GAC3B4U,EAAQE,EAAS,EACjBf,GAAQc,EAAO,GAGfd,EAAOc,CAEf,CACA,OAAOD,CACX,EAyFA9E,EAASiF,WAhCT,SAAoBjB,EAAO9T,EAAOuQ,EAAID,EAAQ,EAAGiB,GAAO,GACpD,IAAIyC,EAAIF,EAAMnP,OACd,GAAU,IAANqP,EACA,OAAO,EAcX,IAAIY,EAXAtE,EADAA,EAAQ,EACArC,KAAK4C,IAAI,EAAGP,EAAQ0D,GAGpB/F,KAAK0C,IAAIL,EAAO0D,EAAI,GAS5BD,GANAxC,EADAA,EAAO,EACAtD,KAAK4C,IAAI,EAAGU,EAAOyC,GAGnB/F,KAAK0C,IAAIY,EAAMyC,EAAI,IAGZ1D,EAAQ,EAC1B,KAAOyD,EAAO,GAAG,CACb,IAAIc,EAAOd,GAAQ,EACfe,EAASF,EAAQC,EACjBtE,EAAGuD,EAAMgB,GAAS9U,GAAS,EAC3B+T,EAAOc,GAGPD,EAAQE,EAAS,EACjBf,GAAQc,EAAO,EAEvB,CACA,OAAOD,CACX,EAkDA9E,EAASkF,aAlBT,SAAsBzG,EAAGgG,EAAGhE,GAExB,GAAIhC,IAAMgG,EACN,OAAO,EAGX,GAAIhG,EAAE5J,SAAW4P,EAAE5P,OACf,OAAO,EAGX,IAAK,IAAIsP,EAAI,EAAGD,EAAIzF,EAAE5J,OAAQsP,EAAID,IAAKC,EACnC,GAAI1D,GAAMA,EAAGhC,EAAE0F,GAAIM,EAAEN,IAAM1F,EAAE0F,KAAOM,EAAEN,GAClC,OAAO,EAIf,OAAO,CACX,EAmFAnE,EAASrJ,MApDT,SAAeqN,EAAO1T,EAAU,CAAC,GAE7B,IAAI,MAAEkQ,EAAK,KAAEiB,EAAI,KAAEC,GAASpR,EAM5B,QAJa4B,IAATwP,IACAA,EAAO,GAGE,IAATA,EACA,MAAM,IAAIyD,MAAM,gCAGpB,IAsBItQ,EAtBAqP,EAAIF,EAAMnP,YAEA3C,IAAVsO,EACAA,EAAQkB,EAAO,EAAIwC,EAAI,EAAI,EAEtB1D,EAAQ,EACbA,EAAQrC,KAAK4C,IAAIP,EAAQ0D,EAAGxC,EAAO,GAAK,EAAI,GAEvClB,GAAS0D,IACd1D,EAAQkB,EAAO,EAAIwC,EAAI,EAAIA,QAGlBhS,IAATuP,EACAA,EAAOC,EAAO,GAAK,EAAIwC,EAElBzC,EAAO,EACZA,EAAOtD,KAAK4C,IAAIU,EAAOyC,EAAGxC,EAAO,GAAK,EAAI,GAErCD,GAAQyC,IACbzC,EAAOC,EAAO,EAAIwC,EAAI,EAAIA,GAK1BrP,EADC6M,EAAO,GAAKD,GAAQjB,GAAWkB,EAAO,GAAKlB,GAASiB,EAC5C,EAEJC,EAAO,EACHvD,KAAKiH,OAAO3D,EAAOjB,EAAQ,GAAKkB,EAAO,GAGvCvD,KAAKiH,OAAO3D,EAAOjB,EAAQ,GAAKkB,EAAO,GAGpD,IAAIZ,EAAS,GACb,IAAK,IAAIqD,EAAI,EAAGA,EAAItP,IAAUsP,EAC1BrD,EAAOqD,GAAKH,EAAMxD,EAAQ2D,EAAIzC,GAGlC,OAAOZ,CACX,EAuDAd,EAASqF,KA3BT,SAAcrB,EAAOsB,EAAWC,GAC5B,IAAIrB,EAAIF,EAAMnP,OACd,GAAIqP,GAAK,EACL,OAcJ,IAXIoB,EADAA,EAAY,EACAnH,KAAK4C,IAAI,EAAGuE,EAAYpB,GAGxB/F,KAAK0C,IAAIyE,EAAWpB,EAAI,OAGpCqB,EADAA,EAAU,EACApH,KAAK4C,IAAI,EAAGwE,EAAUrB,GAGtB/F,KAAK0C,IAAI0E,EAASrB,EAAI,IAGhC,OAEJ,IAAIhU,EAAQ8T,EAAMsB,GACdf,EAAIe,EAAYC,EAAU,GAAK,EACnC,IAAK,IAAIpB,EAAImB,EAAWnB,IAAMoB,EAASpB,GAAKI,EACxCP,EAAMG,GAAKH,EAAMG,EAAII,GAEzBP,EAAMuB,GAAWrV,CACrB,EAuDA8P,EAASwE,QAAUA,EAuEnBxE,EAASwF,OAnCT,SAAgBxB,EAAOnG,EAAO2C,EAAQ,EAAGiB,GAAO,GAC5C,IAAIyC,EAAIF,EAAMnP,OACd,GAAIqP,GAAK,EACL,OAcJ,IAXI1D,EADAA,EAAQ,EACArC,KAAK4C,IAAI,EAAGP,EAAQ0D,GAGpB/F,KAAK0C,IAAIL,EAAO0D,EAAI,MAG5BzC,EADAA,EAAO,EACAtD,KAAK4C,IAAI,EAAGU,EAAOyC,GAGnB/F,KAAK0C,IAAIY,EAAMyC,EAAI,IAG1B,OAEJ,IAAIrP,EAAS4M,EAAOjB,EAAQ,EAO5B,GANI3C,EAAQ,EACRA,GAAgBhJ,EAEXgJ,EAAQ,IACbA,GAAUA,EAAQhJ,EAAUA,GAAUA,GAE5B,IAAVgJ,EACA,OAEJ,IAAI4H,EAAQjF,EAAQ3C,EACpB2G,EAAQR,EAAOxD,EAAOiF,EAAQ,GAC9BjB,EAAQR,EAAOyB,EAAOhE,GACtB+C,EAAQR,EAAOxD,EAAOiB,EAC1B,EAiEAzB,EAAS0F,KA5BT,SAAc1B,EAAO9T,EAAOsQ,EAAQ,EAAGiB,GAAO,GAC1C,IAgBIwC,EAhBAC,EAAIF,EAAMnP,OACd,GAAU,IAANqP,EAAJ,CAII1D,EADAA,EAAQ,EACArC,KAAK4C,IAAI,EAAGP,EAAQ0D,GAGpB/F,KAAK0C,IAAIL,EAAO0D,EAAI,GAU5BD,GAPAxC,EADAA,EAAO,EACAtD,KAAK4C,IAAI,EAAGU,EAAOyC,GAGnB/F,KAAK0C,IAAIY,EAAMyC,EAAI,IAGnB1D,EACAiB,EAAO,GAAKyC,EAAI1D,GAGhBiB,EAAOjB,EAAQ,EAE1B,IAAK,IAAI2D,EAAI,EAAGA,EAAIF,IAAQE,EACxBH,GAAOxD,EAAQ2D,GAAKD,GAAKhU,CArB7B,CAuBJ,EA0CA8P,EAAS2F,OAbT,SAAgB3B,EAAOtD,EAAOxQ,GAC1B,IAAIgU,EAAIF,EAAMnP,OAEV6L,EADAA,EAAQ,EACAvC,KAAK4C,IAAI,EAAGL,EAAQwD,GAGpB/F,KAAK0C,IAAIH,EAAOwD,GAE5B,IAAK,IAAIC,EAAID,EAAGC,EAAIzD,IAASyD,EACzBH,EAAMG,GAAKH,EAAMG,EAAI,GAEzBH,EAAMtD,GAASxQ,CACnB,EA4CA8P,EAAS0E,SAAWA,EA4CpB1E,EAAS4F,cAPT,SAAuB5B,EAAO9T,EAAOsQ,EAAQ,EAAGiB,GAAO,GACnD,IAAIf,EAAQqD,EAAaC,EAAO9T,EAAOsQ,EAAOiB,GAI9C,OAHe,IAAXf,GACAgE,EAASV,EAAOtD,GAEbA,CACX,EA6CAV,EAAS6F,aAPT,SAAsB7B,EAAO9T,EAAOsQ,GAAQ,EAAIiB,EAAO,GACnD,IAAIf,EAAQtL,EAAY4O,EAAO9T,EAAOsQ,EAAOiB,GAI7C,OAHe,IAAXf,GACAgE,EAASV,EAAOtD,GAEbA,CACX,EAyEAV,EAAS8F,YApCT,SAAqB9B,EAAO9T,EAAOsQ,EAAQ,EAAGiB,GAAO,GACjD,IAAIyC,EAAIF,EAAMnP,OACd,GAAU,IAANqP,EACA,OAAO,EAGP1D,EADAA,EAAQ,EACArC,KAAK4C,IAAI,EAAGP,EAAQ0D,GAGpB/F,KAAK0C,IAAIL,EAAO0D,EAAI,GAG5BzC,EADAA,EAAO,EACAtD,KAAK4C,IAAI,EAAGU,EAAOyC,GAGnB/F,KAAK0C,IAAIY,EAAMyC,EAAI,GAE9B,IAAI5B,EAAQ,EACZ,IAAK,IAAI6B,EAAI,EAAGA,EAAID,IAAKC,EACjB3D,GAASiB,GAAQ0C,GAAK3D,GAAS2D,GAAK1C,GAAQuC,EAAMG,KAAOjU,GAGpDuR,EAAOjB,IACX2D,GAAK1C,GAAQ0C,GAAK3D,IACnBwD,EAAMG,KAAOjU,EAJboS,IAOKA,EAAQ,IACb0B,EAAMG,EAAI7B,GAAS0B,EAAMG,IAMjC,OAHI7B,EAAQ,IACR0B,EAAMnP,OAASqP,EAAI5B,GAEhBA,CACX,EAgDAtC,EAAS+F,iBART,SAA0B/B,EAAOvD,EAAID,EAAQ,EAAGiB,GAAO,GACnD,IAAIvR,EACAwQ,EAAQ2D,EAAeL,EAAOvD,EAAID,EAAOiB,GAI7C,OAHe,IAAXf,IACAxQ,EAAQwU,EAASV,EAAOtD,IAErB,CAAEA,QAAOxQ,QACpB,EAgDA8P,EAASgG,gBART,SAAyBhC,EAAOvD,EAAID,GAAQ,EAAIiB,EAAO,GACnD,IAAIvR,EACAwQ,EAAQ4D,EAAcN,EAAOvD,EAAID,EAAOiB,GAI5C,OAHe,IAAXf,IACAxQ,EAAQwU,EAASV,EAAOtD,IAErB,CAAEA,QAAOxQ,QACpB,EA6EA8P,EAASiG,eAlCT,SAAwBjC,EAAOvD,EAAID,EAAQ,EAAGiB,GAAO,GACjD,IAAIyC,EAAIF,EAAMnP,OACd,GAAU,IAANqP,EACA,OAAO,EAGP1D,EADAA,EAAQ,EACArC,KAAK4C,IAAI,EAAGP,EAAQ0D,GAGpB/F,KAAK0C,IAAIL,EAAO0D,EAAI,GAG5BzC,EADAA,EAAO,EACAtD,KAAK4C,IAAI,EAAGU,EAAOyC,GAGnB/F,KAAK0C,IAAIY,EAAMyC,EAAI,GAE9B,IAAI5B,EAAQ,EACZ,IAAK,IAAI6B,EAAI,EAAGA,EAAID,IAAKC,EACjB3D,GAASiB,GAAQ0C,GAAK3D,GAAS2D,GAAK1C,GAAQhB,EAAGuD,EAAMG,GAAIA,IAGpD1C,EAAOjB,IAAU2D,GAAK1C,GAAQ0C,GAAK3D,IAAUC,EAAGuD,EAAMG,GAAIA,GAF/D7B,IAKKA,EAAQ,IACb0B,EAAMG,EAAI7B,GAAS0B,EAAMG,IAMjC,OAHI7B,EAAQ,IACR0B,EAAMnP,OAASqP,EAAI5B,GAEhBA,CACX,CAEH,CAn1CD,CAm1CGtC,IAAaA,EAAW,CAAC,IA8lB5B,SAAWC,GAwBPA,EAAQ0B,YAZR,SAAqBnB,EAAOiB,EAAMC,GAC9B,OAAa,IAATA,EACOwE,IAEP1F,EAAQiB,GAAQC,EAAO,GAGvBlB,EAAQiB,GAAQC,EAAO,EAFhB,EAKJvD,KAAKC,MAAMqD,EAAOjB,GAASkB,EACtC,CAEH,CAzBD,CAyBGzB,IAAYA,EAAU,CAAC,IAmR1B,SAAWC,GAqBP,SAASiG,EAAYC,EAAQC,EAAO7F,EAAQ,GACxC,IAAI8F,EAAU,IAAIlF,MAAMiF,EAAMxR,QAC9B,IAAK,IAAIsP,EAAI,EAAGC,EAAI5D,EAAO0D,EAAImC,EAAMxR,OAAQsP,EAAID,IAAKC,IAAKC,EAAG,CAE1D,GADAA,EAAIgC,EAAO/R,QAAQgS,EAAMlC,GAAIC,IAClB,IAAPA,EACA,OAAO,KAEXkC,EAAQnC,GAAKC,CACjB,CACA,OAAOkC,CACX,CACApG,EAAUiG,YAAcA,EAoCxBjG,EAAUqG,kBAZV,SAA2BH,EAAQC,EAAO7F,EAAQ,GAC9C,IAAI8F,EAAUH,EAAYC,EAAQC,EAAO7F,GACzC,IAAK8F,EACD,OAAO,KAEX,IAAIE,EAAQ,EACZ,IAAK,IAAIrC,EAAI,EAAGD,EAAIoC,EAAQzR,OAAQsP,EAAID,IAAKC,EAAG,CAC5C,IAAIC,EAAIkC,EAAQnC,GAAK3D,EACrBgG,GAASpC,EAAIA,CACjB,CACA,MAAO,CAAEoC,QAAOF,UACpB,EAuCApG,EAAUuG,iBAdV,SAA0BL,EAAQC,EAAO7F,EAAQ,GAC7C,IAAI8F,EAAUH,EAAYC,EAAQC,EAAO7F,GACzC,IAAK8F,EACD,OAAO,KAEX,IAAIE,EAAQ,EACRhP,EAAOgJ,EAAQ,EACnB,IAAK,IAAI2D,EAAI,EAAGD,EAAIoC,EAAQzR,OAAQsP,EAAID,IAAKC,EAAG,CAC5C,IAAIC,EAAIkC,EAAQnC,GAChBqC,GAASpC,EAAI5M,EAAO,EACpBA,EAAO4M,CACX,CACA,MAAO,CAAEoC,QAAOF,UACpB,EAgDApG,EAAUwG,UAlCV,SAAmBN,EAAQE,EAAS7F,GAEhC,IAAIK,EAAS,GAET9O,EAAI,EACJwF,EAAO,EACP0M,EAAIoC,EAAQzR,OAEhB,KAAO7C,EAAIkS,GAAG,CAEV,IAAIC,EAAImC,EAAQtU,GACZoS,EAAIkC,EAAQtU,GAEhB,OAASA,EAAIkS,GAAKoC,EAAQtU,KAAOoS,EAAI,GACjCA,IAGA5M,EAAO2M,GACPrD,EAAO7L,KAAKmR,EAAOzP,MAAMa,EAAM2M,IAG/BA,EAAIC,EAAI,GACRtD,EAAO7L,KAAKwL,EAAG2F,EAAOzP,MAAMwN,EAAGC,EAAI,KAGvC5M,EAAO4M,EAAI,CACf,CAMA,OAJI5M,EAAO4O,EAAOvR,QACdiM,EAAO7L,KAAKmR,EAAOzP,MAAMa,IAGtBsJ,CACX,EAcAZ,EAAUyG,IAHV,SAAalI,EAAGgG,GACZ,OAAOhG,EAAIgG,GAAK,EAAIhG,EAAIgG,EAAI,EAAI,CACpC,CAEH,CAvKD,CAuKGvE,IAAcA,EAAY,CAAC,0BC74ErB,SAAWjQ,EAAS2W,GAAa,aActC3W,EAAQmH,aAAU,EAClB,SAAWA,GAgBP,SAASyP,EAAY3W,GACjB,OAAkB,OAAVA,GACa,kBAAVA,GACU,iBAAVA,GACU,iBAAVA,CACf,CAEA,SAAS4W,EAAQ5W,GACb,OAAOkR,MAAM0F,QAAQ5W,EACzB,CAeA,SAAS6W,EAAU/E,EAAOI,GAEtB,GAAIJ,IAAUI,EACV,OAAO,EAGX,GAAIyE,EAAY7E,IAAU6E,EAAYzE,GAClC,OAAO,EAGX,IAAI4E,EAAKF,EAAQ9E,GACbiF,EAAKH,EAAQ1E,GAEjB,OAAI4E,IAAOC,IAIPD,GAAMC,EA8Bd,SAAwBjF,EAAOI,GAE3B,GAAIJ,IAAUI,EACV,OAAO,EAGX,GAAIJ,EAAMnN,SAAWuN,EAAOvN,OACxB,OAAO,EAGX,IAAK,IAAIsP,EAAI,EAAGD,EAAIlC,EAAMnN,OAAQsP,EAAID,IAAKC,EACvC,IAAK4C,EAAU/E,EAAMmC,GAAI/B,EAAO+B,IAC5B,OAAO,EAIf,OAAO,CACX,CA9Ce+C,CAAelF,EAAOI,GAkDrC,SAAyBJ,EAAOI,GAE5B,GAAIJ,IAAUI,EACV,OAAO,EAGX,IAAK,IAAI9O,KAAO0O,EACZ,QAAmB9P,IAAf8P,EAAM1O,MAAwBA,KAAO8O,GACrC,OAAO,EAIf,IAAK,IAAI9O,KAAO8O,EACZ,QAAoBlQ,IAAhBkQ,EAAO9O,MAAwBA,KAAO0O,GACtC,OAAO,EAIf,IAAK,IAAI1O,KAAO0O,EAAO,CAEnB,IAAImF,EAAanF,EAAM1O,GACnB8T,EAAchF,EAAO9O,GAEzB,QAAmBpB,IAAfiV,QAA4CjV,IAAhBkV,EAAhC,CAIA,QAAmBlV,IAAfiV,QAA4CjV,IAAhBkV,EAC5B,OAAO,EAGX,IAAKL,EAAUI,EAAYC,GACvB,OAAO,CAPX,CASJ,CAEA,OAAO,CACX,CApFWC,CAAgBrF,EAAOI,GAClC,CASA,SAASkF,EAASpX,GAEd,OAAI2W,EAAY3W,GACLA,EAGP4W,EAAQ5W,GAwEhB,SAAuBA,GACnB,IAAI4Q,EAAS,IAAIM,MAAMlR,EAAM2E,QAC7B,IAAK,IAAIsP,EAAI,EAAGD,EAAIhU,EAAM2E,OAAQsP,EAAID,IAAKC,EACvCrD,EAAOqD,GAAKmD,EAASpX,EAAMiU,IAE/B,OAAOrD,CACX,CA7EeyG,CAAcrX,GAiF7B,SAAwBA,GACpB,IAAI4Q,EAAS,CAAC,EACd,IAAK,IAAIxN,KAAOpD,EAAO,CAEnB,IAAIsX,EAAWtX,EAAMoD,QACJpB,IAAbsV,IAGJ1G,EAAOxN,GAAOgU,EAASE,GAC3B,CACA,OAAO1G,CACX,CAzFW2G,CAAevX,EAC1B,CA9EAkH,EAAQsQ,YAAc3X,OAAO4X,OAAO,CAAC,GAIrCvQ,EAAQwQ,WAAa7X,OAAO4X,OAAO,IAcnCvQ,EAAQyP,YAAcA,EAItBzP,EAAQ0P,QAAUA,EAIlB1P,EAAQC,SAHR,SAAkBnH,GACd,OAAQ2W,EAAY3W,KAAW4W,EAAQ5W,EAC3C,EAkCAkH,EAAQ2P,UAAYA,EAoBpB3P,EAAQkQ,SAAWA,CAwFtB,CA3KD,CA2KGrX,EAAQmH,UAAYnH,EAAQmH,QAAU,CAAC,IAkb1C,IAAI6I,GACJ,SAAWA,GACP,MAAM4H,EACF,WAAAxX,CAAYyX,GACR,IAAI7P,EAAIC,EAAIC,EAAIC,EAChB7H,KAAKwX,YAAa,EAClBxX,KAAKyX,SAAW,KAChBzX,KAAK0X,SAAW,KAChB1X,KAAK4J,GAAK2N,EAAO3N,GACjB5J,KAAK2X,YAA4C,QAA7BjQ,EAAK6P,EAAOI,mBAAgC,IAAPjQ,EAAgBA,EAAK,GAC9E1H,KAAK4X,SAAWL,EAAOK,SACvB5X,KAAK6X,WAA0C,QAA5BlQ,EAAK4P,EAAOM,kBAA+B,IAAPlQ,EAAgBA,EAAK,KAC5E3H,KAAK8X,SAAsC,QAA1BlQ,EAAK2P,EAAOO,gBAA6B,IAAPlQ,EAAgBA,EAAK,KACxE5H,KAAK+X,UAAwC,QAA3BlQ,EAAK0P,EAAOQ,iBAA8B,IAAPlQ,GAAgBA,EACrE7H,KAAKgY,SAAWT,EAAOS,SAAWT,EAAOS,SAAS5R,QAAU,GAC5DpG,KAAKiY,SAAWV,EAAOU,SAAWV,EAAOU,SAAS7R,QAAU,EAChE,CAIA,aAAI8R,GACA,OAAOlY,KAAKwX,UAChB,CACA,aAAIU,CAAUhK,GACVlO,KAAKwX,WAAatJ,CACtB,CAIA,WAAIiK,GACA,OAAOnY,KAAK0X,QAChB,CACA,WAAIS,CAAQC,GACRpY,KAAK0X,SAAWU,CACpB,CAIA,WAAI5M,GACA,OAAOxL,KAAKyX,QAChB,CACA,WAAIjM,CAAQpJ,GACRpC,KAAKyX,SAAWrV,CACpB,EAQJsN,EAAQ2I,iBAHR,SAA0Bd,GACtB,OAAO,IAAID,EAAWC,EAC1B,EAwCA7H,EAAQ4I,cAjCR,SAAuBf,EAAQgB,EAASC,GACpC,MAAMC,EAAe,IAAIlB,EAAOS,YAAaT,EAAOU,UAC9CvF,EAASgG,IACX,GAAIA,IAAUnB,EAAOO,SACjB,OAAO,EAEX,MAAMlO,EAAK4O,EAAStW,IAAIwW,GACxB,IAAK9O,EACD,OAAO,EAEX,MAAMyI,EAAUkG,EAAQrW,IAAI0H,GACtB6O,EAAe,IAAIpG,EAAQ2F,YAAa3F,EAAQ4F,UACtD,OAA4B,IAAxBQ,EAAanU,SAGjBqU,EAAMjU,KAAKkF,KACP6O,EAAa1O,KAAK2I,KAGtBiG,EAAMC,OACC,GAAK,EAGhB,IAAKrB,EAAOO,UAAoC,IAAxBW,EAAanU,OACjC,OAGJ,MAAMqU,EAAQ,CAACpB,EAAO3N,IAEtB,GAAI6O,EAAa1O,KAAK2I,GAClB,MAAM,IAAImG,eAAe,mBAAmBF,EAAMrR,KAAK,WAE/D,EA8DAoI,EAAQoJ,eA9CR,SAAwBlP,EAAI2O,EAASC,GACjC,MAAMrG,EAAQ,IAAItB,MACZmC,EAAOpJ,IACT,MAAM2N,EAASgB,EAAQrW,IAAI0H,GAGrB6O,EAAe,IAAIlB,EAAOS,YAAaT,EAAOU,UACpD9F,EAAMzN,QAAQ+T,EAAapJ,QAAO,CAACC,EAAKyJ,KACpC,MAAMZ,EAAUK,EAAStW,IAAI6W,GAK7B,OAJIZ,GAEA7I,EAAI5K,KAAK,CAACkF,EAAIuO,IAEX7I,CAAG,GACX,IAAI,EAEX,IAAK,MAAM1F,KAAM2O,EAAQpV,OACrB6P,EAAIpJ,GAIR,MAAMoP,EAAW7G,EAAMlD,QAAOuD,GAAQA,EAAK,KAAO5I,IAClD,IAAIqP,EAAU,EACd,KAAOD,EAAS1U,OAAS2U,GAAS,CAC9B,MAAMC,EAAeF,EAAS1U,OAExB6U,EAAqB,IAAI7G,IAAI0G,EAASxM,KAAIgG,GAAQA,EAAK,MAC7D,IAAK,MAAM4G,KAAOD,EACdhH,EACKlD,QAAOuD,GAAQA,EAAK,KAAO4G,IAC3BC,SAAQ7G,IAEJwG,EAASM,SAAS9G,IACnBwG,EAAStU,KAAK8N,EAClB,IAGRyG,EAAUC,CACd,CACA,MAAM9G,EAASiE,EAAUnE,cAAc8G,GACjC7I,EAAQiC,EAAO/B,WAAUkJ,GAAaA,IAAc3P,IAC1D,OAAe,IAAXuG,EACO,CAACvG,GAELwI,EAAOhM,MAAM,EAAG+J,EAAQ,EACnC,EA6BAT,EAAQ8J,sBAxBR,SAA+BjB,EAASxY,GAEpC,MAAM0Z,EAAa,IAAInH,IAEvB,IAAK,MAAM1I,KAAM2O,EAAQpV,QACa,IAA9BoV,EAAQrW,IAAI0H,GAAImO,WAChB0B,EAAWzG,IAAIpJ,GAIvB,GAAI7J,EAAQ2Z,aACR,IAAK,MAAM9P,KAAM7J,EAAQ2Z,aACrBD,EAAWzG,IAAIpJ,GAIvB,GAAI7J,EAAQ4Z,cACR,IAAK,MAAM/P,KAAM7J,EAAQ4Z,cACrBF,EAAWxW,OAAO2G,GAI1B,OAAOiH,MAAM/F,KAAK2O,EACtB,CAEH,CAnLD,CAmLG/J,IAAYA,EAAU,CAAC,IAwF1B,SAASkK,EAAqBC,GAC1B,IAAIla,EAAQ,EACZ,IAAK,IAAIiU,EAAI,EAAGD,EAAIkG,EAAOvV,OAAQsP,EAAID,IAAKC,EACpCA,EAAI,GAAM,IACVjU,EAAyB,WAAhBiO,KAAKkM,WAA2B,GAE7CD,EAAOjG,GAAa,IAARjU,EACZA,KAAW,CAEnB,CAcAD,EAAQqa,YAAS,GAgCdra,EAAQqa,SAAWra,EAAQqa,OAAS,CAAC,IAb7BC,gBAAkB,MAErB,MAAMC,EAA4B,oBAAXC,SAA2BA,OAAOD,QAAUC,OAAOC,WACtE,KAEJ,OAAIF,GAA4C,mBAA3BA,EAAOD,gBACjB,SAAyBH,GAC5B,OAAOI,EAAOD,gBAAgBH,EAClC,EAGGD,CACV,EAZwB,GA6F7Bla,EAAQ0a,UAAO,GAeZ1a,EAAQ0a,OAAS1a,EAAQ0a,KAAO,CAAC,IAD3BC,MAvET,SAAsBL,GAElB,MAAMM,EAAQ,IAAIC,WAAW,IAEvBC,EAAM,IAAI3J,MAAM,KAEtB,IAAK,IAAI+C,EAAI,EAAGA,EAAI,KAAMA,EACtB4G,EAAI5G,GAAK,IAAMA,EAAE7E,SAAS,IAG9B,IAAK,IAAI6E,EAAI,GAAIA,EAAI,MAAOA,EACxB4G,EAAI5G,GAAKA,EAAE7E,SAAS,IAGxB,OAAO,WAQH,OANAiL,EAAgBM,GAEhBA,EAAM,GAAK,GAAmB,GAAXA,EAAM,GAEzBA,EAAM,GAAK,IAAmB,GAAXA,EAAM,GAEjBE,EAAIF,EAAM,IACdE,EAAIF,EAAM,IACVE,EAAIF,EAAM,IACVE,EAAIF,EAAM,IACV,IACAE,EAAIF,EAAM,IACVE,EAAIF,EAAM,IACV,IACAE,EAAIF,EAAM,IACVE,EAAIF,EAAM,IACV,IACAE,EAAIF,EAAM,IACVE,EAAIF,EAAM,IACV,IACAE,EAAIF,EAAM,KACVE,EAAIF,EAAM,KACVE,EAAIF,EAAM,KACVE,EAAIF,EAAM,KACVE,EAAIF,EAAM,KACVE,EAAIF,EAAM,IAClB,CACJ,CA4BiBG,CAAa/a,EAAQqa,OAAOC,iBAG7Cta,EAAQgb,SAl0BR,MACI,WAAA5a,GACIE,KAAK2a,OAAS,GACd3a,KAAK4a,QAAU,EACnB,CAMA,KAAAC,GACI,OAAO7a,KAAK2a,OAAOvU,OACvB,CASA,OAAA0U,CAAQC,GACJ,OAAsC,IAA/B/a,KAAK2a,OAAO7W,QAAQiX,EAC/B,CASA,OAAAC,CAAQD,GACJ,IAAInH,EAAI5T,KAAK2a,OAAO7W,QAAQiX,GAC5B,OAAc,IAAPnH,EAAW5T,KAAK4a,QAAQhH,QAAKjS,CACxC,CAWA,OAAAsZ,CAAQF,EAAMG,GACVlb,KAAKa,UAAUka,GACf/a,KAAK2a,OAAOjW,KAAKqW,GACjB/a,KAAK4a,QAAQlW,KAAKwW,EACtB,CASA,SAAAra,CAAUka,GACN,IAAInH,EAAI5T,KAAK2a,OAAO7W,QAAQiX,IACjB,IAAPnH,IACA5T,KAAK2a,OAAOQ,OAAOvH,EAAG,GACtB5T,KAAK4a,QAAQO,OAAOvH,EAAG,GAE/B,CAIA,KAAA9Q,GACI9C,KAAK2a,OAAOrW,OAAS,EACrBtE,KAAK4a,QAAQtW,OAAS,CAC1B,GA2vBJ5E,EAAQ0b,eAnvBR,MACI,WAAAtb,CAAYC,EAAU,CAAC,GACnBC,KAAKqb,aAAe,KACpBrb,KAAKsb,gBAAkB,KAAM,EAC7Btb,KAAKub,SAAW,IAAI7Y,IACpB1C,KAAKwb,UAAY,IAAI9Y,IACjB3C,EAAQ0b,iBACR9U,QAAQ+U,KAAK,mEACb1b,KAAKsb,gBAAkBvb,EAAQ0b,eAEvC,CAWA,eAAIE,GACA,OAAO3b,KAAKqb,YAChB,CACA,eAAIM,CAAYC,GACZ,GAA0B,OAAtB5b,KAAKqb,aACL,MAAMzG,MAAM,uEAEhB5U,KAAKqb,aAAeO,CACxB,CAIA,mBAAIC,GACA,OAAOhL,MAAM/F,KAAK9K,KAAKub,UAClBtM,QAAO,EAAErF,EAAI2N,KAAiC,UAArBA,EAAOQ,YAChCvL,KAAI,EAAE5C,EAAI2N,KAAY3N,GAC/B,CAQA,oBAAAkS,CAAqBlS,GACjB,IAAIlC,EAAIC,EACR,OAAmG,QAA3FA,EAAsC,QAAhCD,EAAK1H,KAAKub,SAASrZ,IAAI0H,UAAwB,IAAPlC,OAAgB,EAASA,EAAGiQ,mBAAgC,IAAPhQ,EAAgBA,EAAK,EACpI,CAQA,SAAAoU,CAAUnS,GACN,OAAO5J,KAAKub,SAASxI,IAAInJ,EAC7B,CAQA,iBAAAoS,CAAkBpS,GACd,IAAIlC,EAAIC,EACR,OAAiG,QAAzFA,EAAsC,QAAhCD,EAAK1H,KAAKub,SAASrZ,IAAI0H,UAAwB,IAAPlC,OAAgB,EAASA,EAAGwQ,iBAA8B,IAAPvQ,GAAgBA,CAC7H,CAMA,WAAAsU,GACI,OAAOpL,MAAM/F,KAAK9K,KAAKub,SAASpY,OACpC,CAaA,cAAA+Y,CAAe3E,GAEX,GAAIvX,KAAKub,SAASxI,IAAIwE,EAAO3N,IACzB,MAAM,IAAI+H,UAAU,WAAW4F,EAAO3N,8BAE1C,IAAK5J,KAAKsb,gBAAgB/D,GACtB,MAAM,IAAI3C,MAAM,WAAW2C,EAAO3N,qBAGtC,MAAMsR,EAAOxL,EAAQ2I,iBAAiBd,GAEtC7H,EAAQ4I,cAAc4C,EAAMlb,KAAKub,SAAUvb,KAAKwb,WAE5CN,EAAKpD,UACL9X,KAAKwb,UAAUtY,IAAIgY,EAAKpD,SAAUoD,EAAKtR,IAG3C5J,KAAKub,SAASrY,IAAIgY,EAAKtR,GAAIsR,EAC/B,CASA,eAAAiB,CAAgB5D,GACZ,IAAK,MAAMhB,KAAUgB,EACjBvY,KAAKkc,eAAe3E,EAE5B,CAQA,gBAAA6E,CAAiBxS,EAAIyS,GACjB,MAAM9E,EAASvX,KAAKub,SAASrZ,IAAI0H,GACjC,GAAK2N,EAAL,CAGA,GAAIA,EAAOW,YAAcmE,EACrB,MAAM,IAAIzH,MAAM,WAAWhL,uBAE/B5J,KAAKub,SAAStY,OAAO2G,EAJrB,CAKJ,CASA,oBAAM0S,CAAe1S,GAEjB,MAAM2N,EAASvX,KAAKub,SAASrZ,IAAI0H,GACjC,IAAK2N,EACD,MAAM,IAAIsB,eAAe,WAAWjP,yBAGxC,GAAI2N,EAAOW,UACP,OAGJ,GAAIX,EAAO/L,QACP,OAAO+L,EAAO/L,QAGlB,MAAM+Q,EAAWhF,EAAOS,SAASxL,KAAIgQ,GAAKxc,KAAKyc,uBAAuBD,KAEhEvE,EAAWV,EAAOU,SAASzL,KAAIgQ,GAAKxc,KAAK0c,uBAAuBF,KActE,OAZAjF,EAAO/L,QAAUmR,QAAQC,IAAI,IAAIL,KAAatE,IACzC4E,MAAKrE,GAAYjB,EAAOK,SAASkF,WAAMnb,EAAW,CAAC3B,KAAK2b,eAAgBnD,MACxEqE,MAAK1E,IACNZ,EAAOY,QAAUA,EACjBZ,EAAOW,WAAY,EACnBX,EAAO/L,QAAU,IAAI,IAEpBuR,OAAMnW,IAEP,MADA2Q,EAAO/L,QAAU,KACX5E,CAAK,IAGR2Q,EAAO/L,OAClB,CAOA,qBAAMwR,CAAgBC,EAAMld,EAAU,CAAC,GACnC,OAAQkd,GACJ,IAAK,QAAS,CACV,MAAMC,EAAWld,KAAK6b,gBACjB5M,QAAOkO,GAAYnd,KAAKub,SAASrZ,IAAIib,GAAUpF,YAC/CvL,KAAI2Q,GACEnd,KAAKsc,eAAea,WAEzBR,QAAQC,IAAIM,GAClB,KACJ,CACA,IAAK,UAAW,CAEZ,MAEMA,EAFWxN,EAAQ8J,sBAAsBxZ,KAAKub,SAAUxb,GAEpCyM,KAAI4Q,MAAOxT,IACjC,IACI,aAAa5J,KAAKsc,eAAe1S,EACrC,CACA,MAAOhD,GACHD,QAAQC,MAAM,WAAWgD,yBAA2BhD,EACxD,WAEE+V,QAAQC,IAAIM,GAClB,KACJ,EAER,CASA,sBAAMG,CAAiBzT,GAEnB,MAAM2N,EAASvX,KAAKub,SAASrZ,IAAI0H,GACjC,IAAK2N,EACD,MAAM,IAAIsB,eAAe,WAAWjP,yBAGxC,IAAK2N,EAAOW,UACR,MAAO,GAGX,IAAKX,EAAOM,WACR,MAAM,IAAIlG,UAAU,WAAW/H,kCAGnC,MAAM0T,EAAW5N,EAAQoJ,eAAelP,EAAI5J,KAAKub,SAAUvb,KAAKwb,WAC1D+B,EAAaD,EAAS9Q,KAAI5C,GAAM5J,KAAKub,SAASrZ,IAAI0H,KAExD,IAAK,MAAM2N,KAAUgG,EACjB,IAAKhG,EAAOM,WACR,MAAM,IAAIlG,UAAU,UAAU4F,EAAO3N,8CAA8CA,MAI3F,IAAK,MAAM2N,KAAUgG,EAAY,CAC7B,MAAM/E,EAAW,IAAIjB,EAAOS,YAAaT,EAAOU,UAAUzL,KAAI2L,IAC1D,MAAMvO,EAAK5J,KAAKwb,UAAUtZ,IAAIiW,GAC9B,OAAOvO,EAAK5J,KAAKub,SAASrZ,IAAI0H,GAAIuO,QAAU,IAAI,UAG9CZ,EAAOM,WAAW7X,KAAK2b,eAAgBnD,GAC7CjB,EAAOY,QAAU,KACjBZ,EAAOW,WAAY,CACvB,CAGA,OADAoF,EAAS1E,MACF0E,CACX,CAoBA,4BAAMb,CAAuB/D,GAEzB,MAAM9O,EAAK5J,KAAKwb,UAAUtZ,IAAIwW,GAC9B,IAAK9O,EACD,MAAM,IAAI+H,UAAU,oBAAoB+G,EAAMpT,SAGlD,MAAMiS,EAASvX,KAAKub,SAASrZ,IAAI0H,GAIjC,OAHK2N,EAAOW,iBACFlY,KAAKsc,eAAe1S,GAEvB2N,EAAOY,OAClB,CAoBA,4BAAMuE,CAAuBhE,GAEzB,MAAM9O,EAAK5J,KAAKwb,UAAUtZ,IAAIwW,GAC9B,IAAK9O,EACD,OAAO,KAGX,MAAM2N,EAASvX,KAAKub,SAASrZ,IAAI0H,GACjC,IAAK2N,EAAOW,UACR,UACUlY,KAAKsc,eAAe1S,EAC9B,CACA,MAAO4T,GAEH,OADA7W,QAAQC,MAAM4W,GACP,IACX,CAEJ,OAAOjG,EAAOY,OAClB,GA2aJzY,EAAQyL,gBAhOR,MAII,WAAArL,GACIE,KAAKwL,QAAU,IAAImR,SAAQ,CAACpW,EAASgF,KACjCvL,KAAKyd,SAAWlX,EAChBvG,KAAK0d,QAAUnS,CAAM,GAE7B,CAMA,OAAAhF,CAAQ5G,IAEJ4G,EADcvG,KAAKyd,UACX9d,EACZ,CAMA,MAAA4L,CAAOiS,IAEHjS,EADavL,KAAK0d,SACXF,EACX,GAsMJ9d,EAAQie,MAnLR,MAOI,WAAA7d,CAAYwF,EAAMqS,GACd3X,KAAKsF,KAAOA,EACZtF,KAAK2X,YAAcA,QAAiDA,EAAc,GAClF3X,KAAK4d,0BAA4B,IACrC,EA0KP,CAxhCkEC,CAAQne,EAAS,EAAQ,gFC4SxFgQ,oBA5OJ,MAAMrP,EAMF,WAAAP,CAAYgB,GACRd,KAAKc,OAASA,CAClB,CAWA,OAAAP,CAAQ+K,EAAMwS,GACV,OAAOpO,EAAQnP,QAAQP,KAAMsL,EAAMwS,EACvC,CAWA,UAAAzS,CAAWC,EAAMwS,GACb,OAAOpO,EAAQrE,WAAWrL,KAAMsL,EAAMwS,EAC1C,CAWA,IAAA1c,CAAKL,GACD2O,EAAQtO,KAAKpB,KAAMe,EACvB,GAKJ,SAAWV,GAgBPA,EAAO0d,kBAHP,SAA2Bjd,EAAQkd,GAC/BtO,EAAQqO,kBAAkBjd,EAAQkd,EACtC,EAUA3d,EAAO4d,iBAHP,SAA0Bnd,GACtB4O,EAAQuO,iBAAiBnd,EAC7B,EAeAT,EAAO6d,mBAHP,SAA4BF,GACxBtO,EAAQwO,mBAAmBF,EAC/B,EAeA3d,EAAO8d,cAHP,SAAuBrO,GACnBJ,EAAQyO,cAAcrO,EAC1B,EAcAzP,EAAOQ,UAHP,SAAmBiP,GACfJ,EAAQyO,cAAcrO,EAC1B,EAaAzP,EAAO+d,oBAHP,WACI,OAAO1O,EAAQ2O,gBACnB,EAiBAhe,EAAOie,oBALP,SAA6BC,GACzB,IAAIC,EAAM9O,EAAQ2O,iBAElB,OADA3O,EAAQ2O,iBAAmBE,EACpBC,CACX,CAEH,CA/FD,CA+FGne,IAAWA,EAAS,CAAC,IA6CxB,MAAMoe,UAAepe,EACjB,WAAAP,GACI4e,SAASC,WACT3e,KAAK4e,SAAW,IAAI,EAAAzT,eACxB,CAIA,OAAQoG,OAAOsN,iBACX,IAAIC,EAAU9e,KAAK4e,SACnB,OACI,IACI,MAAM,KAAE7d,EAAI,KAAEqC,SAAe0b,EAAQtT,QACrCsT,EAAU1b,QACJrC,CACV,CACA,MAAOge,GACH,MACJ,CAER,CAMA,IAAA3d,CAAKL,GACD,MAAM+d,EAAU9e,KAAK4e,SACfxb,EAAQpD,KAAK4e,SAAW,IAAI,EAAAzT,gBAClC2T,EAAQvY,QAAQ,CAAExF,OAAMqC,SACxBsb,MAAMtd,KAAKL,EACf,CAIA,IAAAmQ,GACIlR,KAAK4e,SAASpT,QAAQuR,OAAM,KAAe,IAC3C/c,KAAK4e,SAASrT,OAAO,QACrBvL,KAAK4e,SAAW,IAAI,EAAAzT,eACxB,GAMJ,SAAWuE,GA4HP,SAASuO,EAAiBnd,GAEtB,IAAIke,EAAYC,EAAmB/c,IAAIpB,GACvC,GAAKke,GAAkC,IAArBA,EAAU1a,OAA5B,CAIA,IAAK,MAAM4a,KAAcF,EAAW,CAEhC,IAAKE,EAAW5e,OACZ,SAGJ,IAAI0d,EAAWkB,EAAWpB,SAAWoB,EAAW5T,KAEhD4T,EAAW5e,OAAS,KAEpB6e,EAAgBC,EAAmBld,IAAI8b,GAC3C,CAEAmB,EAAgBH,EAfhB,CAgBJ,CAOA,SAASd,EAAmBF,GAExB,IAAIqB,EAAUD,EAAmBld,IAAI8b,GACrC,GAAKqB,GAA8B,IAAnBA,EAAQ/a,OAAxB,CAIA,IAAK,MAAM4a,KAAcG,EAAS,CAE9B,IAAKH,EAAW5e,OACZ,SAGJ,IAAIQ,EAASoe,EAAW5e,OAAOQ,OAE/Boe,EAAW5e,OAAS,KAEpB6e,EAAgBF,EAAmB/c,IAAIpB,GAC3C,CAEAqe,EAAgBE,EAfhB,CAgBJ,CAzKA3P,EAAQ2O,iBAAoBiB,IACxB3Y,QAAQC,MAAM0Y,EAAI,EA0CtB5P,EAAQnP,QA5BR,SAAiBD,EAAQgL,EAAMwS,GAE3BA,EAAUA,QAAWnc,EAErB,IAAIqd,EAAYC,EAAmB/c,IAAI5B,EAAOQ,QAM9C,GALKke,IACDA,EAAY,GACZC,EAAmB/b,IAAI5C,EAAOQ,OAAQke,IAGtCO,EAAeP,EAAW1e,EAAQgL,EAAMwS,GACxC,OAAO,EAGX,IAAIE,EAAWF,GAAWxS,EAEtB+T,EAAUD,EAAmBld,IAAI8b,GAChCqB,IACDA,EAAU,GACVD,EAAmBlc,IAAI8a,EAAUqB,IAGrC,IAAIH,EAAa,CAAE5e,SAAQgL,OAAMwS,WAIjC,OAHAkB,EAAUta,KAAKwa,GACfG,EAAQ3a,KAAKwa,IAEN,CACX,EAsCAxP,EAAQrE,WAxBR,SAAoB/K,EAAQgL,EAAMwS,GAE9BA,EAAUA,QAAWnc,EAErB,IAAIqd,EAAYC,EAAmB/c,IAAI5B,EAAOQ,QAC9C,IAAKke,GAAkC,IAArBA,EAAU1a,OACxB,OAAO,EAGX,IAAI4a,EAAaK,EAAeP,EAAW1e,EAAQgL,EAAMwS,GACzD,IAAKoB,EACD,OAAO,EAGX,IAAIlB,EAAWF,GAAWxS,EAEtB+T,EAAUD,EAAmBld,IAAI8b,GAMrC,OAJAkB,EAAW5e,OAAS,KACpB6e,EAAgBH,GAChBG,EAAgBE,IAET,CACX,EAmCA3P,EAAQqO,kBA1BR,SAA2Bjd,EAAQkd,GAE/B,IAAIgB,EAAYC,EAAmB/c,IAAIpB,GACvC,IAAKke,GAAkC,IAArBA,EAAU1a,OACxB,OAGJ,IAAI+a,EAAUD,EAAmBld,IAAI8b,GACrC,GAAKqB,GAA8B,IAAnBA,EAAQ/a,OAAxB,CAIA,IAAK,MAAM4a,KAAcG,EAEhBH,EAAW5e,QAIZ4e,EAAW5e,OAAOQ,SAAWA,IAC7Boe,EAAW5e,OAAS,MAI5B6e,EAAgBH,GAChBG,EAAgBE,EAdhB,CAeJ,EA6BA3P,EAAQuO,iBAAmBA,EA4B3BvO,EAAQwO,mBAAqBA,EAY7BxO,EAAQyO,cANR,SAAuBrO,GAEnBmO,EAAiBnO,GAEjBoO,EAAmBpO,EACvB,EA6BAJ,EAAQtO,KAfR,SAAcd,EAAQS,GAElB,IAAIie,EAAYC,EAAmB/c,IAAI5B,EAAOQ,QAC9C,GAAKke,GAAkC,IAArBA,EAAU1a,OAK5B,IAAK,IAAIsP,EAAI,EAAGD,EAAIqL,EAAU1a,OAAQsP,EAAID,IAAKC,EAAG,CAC9C,IAAIsL,EAAaF,EAAUpL,GACvBsL,EAAW5e,SAAWA,GACtBkf,EAAWN,EAAYne,EAE/B,CACJ,EAKA,MAAMke,EAAqB,IAAIQ,QAIzBL,EAAqB,IAAIK,QAIzBC,EAAW,IAAIpN,IAIfqN,EACwC,mBAA1BC,sBACJA,sBAAwBC,aAKxC,SAASN,EAAeO,EAAaxf,EAAQgL,EAAMwS,GAC/C,OAAO,IAAA1N,MAAK0P,GAAaZ,GAAcA,EAAW5e,SAAWA,GACzD4e,EAAW5T,OAASA,GACpB4T,EAAWpB,UAAYA,GAC/B,CAQA,SAAS0B,EAAWN,EAAYne,GAC5B,IAAI,OAAET,EAAM,KAAEgL,EAAI,QAAEwS,GAAYoB,EAChC,IACI5T,EAAK/I,KAAKub,EAASxd,EAAOQ,OAAQC,EACtC,CACA,MAAOue,GACH5P,EAAQ2O,iBAAiBiB,EAC7B,CACJ,CAQA,SAASH,EAAgB1L,GACC,IAAlBiM,EAAS7c,MACT8c,EAASI,GAEbL,EAAS1M,IAAIS,EACjB,CAOA,SAASsM,IACLL,EAASrG,QAAQ2G,GACjBN,EAAS5c,OACb,CASA,SAASkd,EAAmBF,GACxB,EAAArQ,SAASiG,eAAeoK,EAAaG,EACzC,CAMA,SAASA,EAAiBf,GACtB,OAA6B,OAAtBA,EAAW5e,MACtB,CACH,CA5SD,CA4SGoP,IAAYA,EAAU,CAAC,0BC9kB1B,SAASwQ,EAASC,GACjB,MAAiB,iBAANA,KACP,iBAAmBC,KAAKD,IACrB,6CAA+CC,KAAKD,EAC5D,CAEA,SAASE,EAAqB/M,EAAKvQ,GAClC,MAAgB,gBAARA,GAA6C,mBAAbuQ,EAAIvQ,IAAgC,cAARA,CACrE,CAEAud,EAAO5gB,QAAU,SAAUqB,EAAMwf,GAC3BA,IAAQA,EAAO,CAAC,GAErB,IAAIC,EAAQ,CACXC,MAAO,CAAC,EACRC,QAAS,CAAC,EACVC,UAAW,MAGgB,mBAAjBJ,EAAKK,UACfJ,EAAMG,UAAYJ,EAAKK,SAGI,kBAAjBL,EAAKM,SAAyBN,EAAKM,QAC7CL,EAAMM,UAAW,EAEjB,GAAGC,OAAOR,EAAKM,SAAS5R,OAAO+R,SAAS3H,SAAQ,SAAUtW,GACzDyd,EAAMC,MAAM1d,IAAO,CACpB,IAGD,IAAIke,EAAU,CAAC,EAEf,SAASC,EAAene,GACvB,OAAOke,EAAQle,GAAKgH,MAAK,SAAUoW,GAClC,OAAOK,EAAMC,MAAMN,EACpB,GACD,CAEA3gB,OAAO2D,KAAKod,EAAKY,OAAS,CAAC,GAAG9H,SAAQ,SAAUtW,GAC/Cke,EAAQle,GAAO,GAAGge,OAAOR,EAAKY,MAAMpe,IACpCke,EAAQle,GAAKsW,SAAQ,SAAU8G,GAC9Bc,EAAQd,GAAK,CAACpd,GAAKge,OAAOE,EAAQle,GAAKkM,QAAO,SAAUmS,GACvD,OAAOjB,IAAMiB,CACd,IACD,GACD,IAEA,GAAGL,OAAOR,EAAKc,QAAQpS,OAAO+R,SAAS3H,SAAQ,SAAUtW,GACxDyd,EAAME,QAAQ3d,IAAO,EACjBke,EAAQle,IACX,GAAGge,OAAOE,EAAQle,IAAMsW,SAAQ,SAAU5X,GACzC+e,EAAME,QAAQjf,IAAK,CACpB,GAEF,IAEA,IAAI6f,EAAWf,EAAKpa,SAAW,CAAC,EAE5BF,EAAO,CAAE8Y,EAAG,IAShB,SAASwC,EAAOjO,EAAKnQ,EAAMxD,GAE1B,IADA,IAAI4B,EAAI+R,EACCM,EAAI,EAAGA,EAAIzQ,EAAKmB,OAAS,EAAGsP,IAAK,CACzC,IAAI7Q,EAAMI,EAAKyQ,GACf,GAAIyM,EAAqB9e,EAAGwB,GAAQ,YACrBpB,IAAXJ,EAAEwB,KAAsBxB,EAAEwB,GAAO,CAAC,GAErCxB,EAAEwB,KAASvD,OAAO6C,WACfd,EAAEwB,KAASye,OAAOnf,WAClBd,EAAEwB,KAASoM,OAAO9M,YAErBd,EAAEwB,GAAO,CAAC,GAEPxB,EAAEwB,KAAS8N,MAAMxO,YAAad,EAAEwB,GAAO,IAC3CxB,EAAIA,EAAEwB,EACP,CAEA,IAAI0e,EAAUte,EAAKA,EAAKmB,OAAS,GAC7B+b,EAAqB9e,EAAGkgB,KAE3BlgB,IAAM/B,OAAO6C,WACVd,IAAMigB,OAAOnf,WACbd,IAAM4N,OAAO9M,YAEhBd,EAAI,CAAC,GAEFA,IAAMsP,MAAMxO,YAAad,EAAI,SACdI,IAAfJ,EAAEkgB,IAA0BjB,EAAMC,MAAMgB,IAAkC,kBAAflgB,EAAEkgB,GAChElgB,EAAEkgB,GAAW9hB,EACHkR,MAAM0F,QAAQhV,EAAEkgB,IAC1BlgB,EAAEkgB,GAAS/c,KAAK/E,GAEhB4B,EAAEkgB,GAAW,CAAClgB,EAAEkgB,GAAU9hB,GAE5B,CAEA,SAAS+hB,EAAO3e,EAAKoG,EAAKwY,GACzB,IAAIA,IAAOnB,EAAMG,WA5ClB,SAAoB5d,EAAK4e,GACxB,OAAQnB,EAAMM,UAAY,YAAcV,KAAKuB,IACzCnB,EAAME,QAAQ3d,IACdyd,EAAMC,MAAM1d,IACZke,EAAQle,EACb,CAuCgC6e,CAAW7e,EAAK4e,KACjB,IAAzBnB,EAAMG,UAAUgB,GADrB,CAIA,IAAIhiB,GAAS6gB,EAAME,QAAQ3d,IAAQmd,EAAS/W,GACzCqY,OAAOrY,GACPA,EACHoY,EAAOtb,EAAMlD,EAAImB,MAAM,KAAMvE,IAE5BshB,EAAQle,IAAQ,IAAIsW,SAAQ,SAAU8G,GACtCoB,EAAOtb,EAAMka,EAAEjc,MAAM,KAAMvE,EAC5B,GATA,CAUD,CAEAH,OAAO2D,KAAKqd,EAAMC,OAAOpH,SAAQ,SAAUtW,GAC1C2e,EAAO3e,OAAuBpB,IAAlB2f,EAASve,IAA6Bue,EAASve,GAC5D,IAEA,IAAI8e,EAAW,IAEa,IAAxB9gB,EAAK+C,QAAQ,QAChB+d,EAAW9gB,EAAKqF,MAAMrF,EAAK+C,QAAQ,MAAQ,GAC3C/C,EAAOA,EAAKqF,MAAM,EAAGrF,EAAK+C,QAAQ,QAGnC,IAAK,IAAI8P,EAAI,EAAGA,EAAI7S,EAAKuD,OAAQsP,IAAK,CACrC,IACI7Q,EACAK,EAFAue,EAAM5gB,EAAK6S,GAIf,GAAI,SAAWwM,KAAKuB,GAAM,CAIzB,IAAIngB,EAAImgB,EAAIzV,MAAM,yBAClBnJ,EAAMvB,EAAE,GACR,IAAI7B,EAAQ6B,EAAE,GACVgf,EAAMC,MAAM1d,KACfpD,EAAkB,UAAVA,GAET+hB,EAAO3e,EAAKpD,EAAOgiB,EACpB,MAAO,GAAI,WAAavB,KAAKuB,GAE5BD,EADA3e,EAAM4e,EAAIzV,MAAM,cAAc,IAClB,EAAOyV,QACb,GAAI,QAAUvB,KAAKuB,GACzB5e,EAAM4e,EAAIzV,MAAM,WAAW,QAGjBvK,KAFVyB,EAAOrC,EAAK6S,EAAI,KAGX,cAAgBwM,KAAKhd,IACrBod,EAAMC,MAAM1d,IACZyd,EAAMM,UACNG,EAAQle,IAAQme,EAAene,GAIzB,iBAAmBqd,KAAKhd,IAClCse,EAAO3e,EAAc,SAATK,EAAiBue,GAC7B/N,GAAK,GAEL8N,EAAO3e,GAAKyd,EAAME,QAAQ3d,IAAO,GAAW4e,IAN5CD,EAAO3e,EAAKK,EAAMue,GAClB/N,GAAK,QAOA,GAAI,UAAYwM,KAAKuB,GAAM,CAIjC,IAHA,IAAIG,EAAUH,EAAIvb,MAAM,GAAI,GAAGlC,MAAM,IAEjC6d,GAAS,EACJlO,EAAI,EAAGA,EAAIiO,EAAQxd,OAAQuP,IAGnC,GAAa,OAFbzQ,EAAOue,EAAIvb,MAAMyN,EAAI,IAErB,CAKA,GAAI,WAAauM,KAAK0B,EAAQjO,KAAmB,MAAZzQ,EAAK,GAAY,CACrDse,EAAOI,EAAQjO,GAAIzQ,EAAKgD,MAAM,GAAIub,GAClCI,GAAS,EACT,KACD,CAEA,GACC,WAAa3B,KAAK0B,EAAQjO,KACvB,0BAA4BuM,KAAKhd,GACnC,CACDse,EAAOI,EAAQjO,GAAIzQ,EAAMue,GACzBI,GAAS,EACT,KACD,CAEA,GAAID,EAAQjO,EAAI,IAAMiO,EAAQjO,EAAI,GAAG3H,MAAM,MAAO,CACjDwV,EAAOI,EAAQjO,GAAI8N,EAAIvb,MAAMyN,EAAI,GAAI8N,GACrCI,GAAS,EACT,KACD,CACCL,EAAOI,EAAQjO,IAAI2M,EAAME,QAAQoB,EAAQjO,KAAM,GAAW8N,EAtB3D,MAFCD,EAAOI,EAAQjO,GAAIzQ,EAAMue,GA4B3B5e,EAAM4e,EAAIvb,OAAO,GAAG,GACf2b,GAAkB,MAARhf,KAEbhC,EAAK6S,EAAI,IACL,cAAgBwM,KAAKrf,EAAK6S,EAAI,KAC9B4M,EAAMC,MAAM1d,IACZke,EAAQle,IAAQme,EAAene,GAIzBhC,EAAK6S,EAAI,IAAM,iBAAmBwM,KAAKrf,EAAK6S,EAAI,KAC1D8N,EAAO3e,EAAqB,SAAhBhC,EAAK6S,EAAI,GAAe+N,GACpC/N,GAAK,GAEL8N,EAAO3e,GAAKyd,EAAME,QAAQ3d,IAAO,GAAW4e,IAN5CD,EAAO3e,EAAKhC,EAAK6S,EAAI,GAAI+N,GACzB/N,GAAK,GAQR,MAIC,GAHK4M,EAAMG,YAAsC,IAAzBH,EAAMG,UAAUgB,IACvC1b,EAAK8Y,EAAEra,KAAK8b,EAAME,QAAQ3B,IAAMmB,EAASyB,GAAOA,EAAMH,OAAOG,IAE1DpB,EAAKyB,UAAW,CACnB/b,EAAK8Y,EAAEra,KAAKoY,MAAM7W,EAAK8Y,EAAGhe,EAAKqF,MAAMwN,EAAI,IACzC,KACD,CAEF,CAoBA,OAlBApU,OAAO2D,KAAKme,GAAUjI,SAAQ,SAAU5X,GAjPzC,IAAgB6R,EAAKnQ,EAChB5B,EADW+R,EAkPFrN,EAlPO9C,EAkPD1B,EAAEyC,MAAM,KAjPvB3C,EAAI+R,EACRnQ,EAAKiD,MAAM,GAAI,GAAGiT,SAAQ,SAAUtW,GACnCxB,EAAIA,EAAEwB,IAAQ,CAAC,CAChB,IAEUI,EAAKA,EAAKmB,OAAS,KACf/C,IA4OZggB,EAAOtb,EAAMxE,EAAEyC,MAAM,KAAMod,EAAS7f,KAEnCwf,EAAQxf,IAAM,IAAI4X,SAAQ,SAAU8G,GACpCoB,EAAOtb,EAAMka,EAAEjc,MAAM,KAAMod,EAAS7f,GACrC,IAEF,IAEI8e,EAAK,MACRta,EAAK,MAAQ4b,EAASzb,QAEtByb,EAASxI,SAAQ,SAAU5X,GAC1BwE,EAAK8Y,EAAEra,KAAKjD,EACb,IAGMwE,CACR,wBC5OA,SAASgc,EAAW5b,GAClB,GAAoB,iBAATA,EACT,MAAM,IAAIsL,UAAU,mCAAqC9L,KAAKkB,UAAUV,GAE5E,CAGA,SAAS6b,EAAqB7b,EAAM8b,GAMlC,IALA,IAIIze,EAJA0e,EAAM,GACNC,EAAoB,EACpBC,GAAa,EACbC,EAAO,EAEF3O,EAAI,EAAGA,GAAKvN,EAAK/B,SAAUsP,EAAG,CACrC,GAAIA,EAAIvN,EAAK/B,OACXZ,EAAO2C,EAAKmc,WAAW5O,OACpB,IAAa,KAATlQ,EACP,MAEAA,EAAO,EAAQ,CACjB,GAAa,KAATA,EAAmB,CACrB,GAAI4e,IAAc1O,EAAI,GAAc,IAAT2O,QAEpB,GAAID,IAAc1O,EAAI,GAAc,IAAT2O,EAAY,CAC5C,GAAIH,EAAI9d,OAAS,GAA2B,IAAtB+d,GAA8D,KAAnCD,EAAII,WAAWJ,EAAI9d,OAAS,IAAsD,KAAnC8d,EAAII,WAAWJ,EAAI9d,OAAS,GAC1H,GAAI8d,EAAI9d,OAAS,EAAG,CAClB,IAAIme,EAAiBL,EAAIvd,YAAY,KACrC,GAAI4d,IAAmBL,EAAI9d,OAAS,EAAG,EACb,IAApBme,GACFL,EAAM,GACNC,EAAoB,GAGpBA,GADAD,EAAMA,EAAIhc,MAAM,EAAGqc,IACKne,OAAS,EAAI8d,EAAIvd,YAAY,KAEvDyd,EAAY1O,EACZ2O,EAAO,EACP,QACF,CACF,MAAO,GAAmB,IAAfH,EAAI9d,QAA+B,IAAf8d,EAAI9d,OAAc,CAC/C8d,EAAM,GACNC,EAAoB,EACpBC,EAAY1O,EACZ2O,EAAO,EACP,QACF,CAEEJ,IACEC,EAAI9d,OAAS,EACf8d,GAAO,MAEPA,EAAM,KACRC,EAAoB,EAExB,MACMD,EAAI9d,OAAS,EACf8d,GAAO,IAAM/b,EAAKD,MAAMkc,EAAY,EAAG1O,GAEvCwO,EAAM/b,EAAKD,MAAMkc,EAAY,EAAG1O,GAClCyO,EAAoBzO,EAAI0O,EAAY,EAEtCA,EAAY1O,EACZ2O,EAAO,CACT,MAAoB,KAAT7e,IAA+B,IAAV6e,IAC5BA,EAEFA,GAAQ,CAEZ,CACA,OAAOH,CACT,CAcA,IAAI/X,EAAQ,CAEV9D,QAAS,WAKP,IAJA,IAEImc,EAFAC,EAAe,GACfC,GAAmB,EAGdhP,EAAI+K,UAAUra,OAAS,EAAGsP,IAAM,IAAMgP,EAAkBhP,IAAK,CACpE,IAAIvN,EACAuN,GAAK,EACPvN,EAAOsY,UAAU/K,SAELjS,IAAR+gB,IACFA,EAAM1c,QAAQ0c,OAChBrc,EAAOqc,GAGTT,EAAW5b,GAGS,IAAhBA,EAAK/B,SAITqe,EAAetc,EAAO,IAAMsc,EAC5BC,EAA0C,KAAvBvc,EAAKmc,WAAW,GACrC,CAQA,OAFAG,EAAeT,EAAqBS,GAAeC,GAE/CA,EACED,EAAare,OAAS,EACjB,IAAMqe,EAEN,IACAA,EAAare,OAAS,EACxBqe,EAEA,GAEX,EAEAvb,UAAW,SAAmBf,GAG5B,GAFA4b,EAAW5b,GAES,IAAhBA,EAAK/B,OAAc,MAAO,IAE9B,IAAIue,EAAoC,KAAvBxc,EAAKmc,WAAW,GAC7BM,EAAyD,KAArCzc,EAAKmc,WAAWnc,EAAK/B,OAAS,GAQtD,OAHoB,KAFpB+B,EAAO6b,EAAqB7b,GAAOwc,IAE1Bve,QAAiBue,IAAYxc,EAAO,KACzCA,EAAK/B,OAAS,GAAKwe,IAAmBzc,GAAQ,KAE9Cwc,EAAmB,IAAMxc,EACtBA,CACT,EAEAwc,WAAY,SAAoBxc,GAE9B,OADA4b,EAAW5b,GACJA,EAAK/B,OAAS,GAA4B,KAAvB+B,EAAKmc,WAAW,EAC5C,EAEAlb,KAAM,WACJ,GAAyB,IAArBqX,UAAUra,OACZ,MAAO,IAET,IADA,IAAIye,EACKnP,EAAI,EAAGA,EAAI+K,UAAUra,SAAUsP,EAAG,CACzC,IAAI+N,EAAMhD,UAAU/K,GACpBqO,EAAWN,GACPA,EAAIrd,OAAS,SACA3C,IAAXohB,EACFA,EAASpB,EAEToB,GAAU,IAAMpB,EAEtB,CACA,YAAehgB,IAAXohB,EACK,IACF1Y,EAAMjD,UAAU2b,EACzB,EAEAlY,SAAU,SAAkBC,EAAMC,GAIhC,GAHAkX,EAAWnX,GACXmX,EAAWlX,GAEPD,IAASC,EAAI,MAAO,GAKxB,IAHAD,EAAOT,EAAM9D,QAAQuE,OACrBC,EAAKV,EAAM9D,QAAQwE,IAEF,MAAO,GAIxB,IADA,IAAIiY,EAAY,EACTA,EAAYlY,EAAKxG,QACa,KAA/BwG,EAAK0X,WAAWQ,KADYA,GASlC,IALA,IAAIC,EAAUnY,EAAKxG,OACf4e,EAAUD,EAAUD,EAGpBG,EAAU,EACPA,EAAUpY,EAAGzG,QACa,KAA3ByG,EAAGyX,WAAWW,KADUA,GAW9B,IAPA,IACIC,EADQrY,EAAGzG,OACK6e,EAGhB7e,EAAS4e,EAAUE,EAAQF,EAAUE,EACrCC,GAAiB,EACjBzP,EAAI,EACDA,GAAKtP,IAAUsP,EAAG,CACvB,GAAIA,IAAMtP,EAAQ,CAChB,GAAI8e,EAAQ9e,EAAQ,CAClB,GAAmC,KAA/ByG,EAAGyX,WAAWW,EAAUvP,GAG1B,OAAO7I,EAAG3E,MAAM+c,EAAUvP,EAAI,GACzB,GAAU,IAANA,EAGT,OAAO7I,EAAG3E,MAAM+c,EAAUvP,EAE9B,MAAWsP,EAAU5e,IACoB,KAAnCwG,EAAK0X,WAAWQ,EAAYpP,GAG9ByP,EAAgBzP,EACD,IAANA,IAGTyP,EAAgB,IAGpB,KACF,CACA,IAAIC,EAAWxY,EAAK0X,WAAWQ,EAAYpP,GAE3C,GAAI0P,IADSvY,EAAGyX,WAAWW,EAAUvP,GAEnC,MACoB,KAAb0P,IACPD,EAAgBzP,EACpB,CAEA,IAAI2P,EAAM,GAGV,IAAK3P,EAAIoP,EAAYK,EAAgB,EAAGzP,GAAKqP,IAAWrP,EAClDA,IAAMqP,GAAkC,KAAvBnY,EAAK0X,WAAW5O,KAChB,IAAf2P,EAAIjf,OACNif,GAAO,KAEPA,GAAO,OAMb,OAAIA,EAAIjf,OAAS,EACRif,EAAMxY,EAAG3E,MAAM+c,EAAUE,IAEhCF,GAAWE,EACoB,KAA3BtY,EAAGyX,WAAWW,MACdA,EACGpY,EAAG3E,MAAM+c,GAEpB,EAEAK,UAAW,SAAmBnd,GAC5B,OAAOA,CACT,EAEAoE,QAAS,SAAiBpE,GAExB,GADA4b,EAAW5b,GACS,IAAhBA,EAAK/B,OAAc,MAAO,IAK9B,IAJA,IAAIZ,EAAO2C,EAAKmc,WAAW,GACvBiB,EAAmB,KAAT/f,EACVggB,GAAO,EACPC,GAAe,EACV/P,EAAIvN,EAAK/B,OAAS,EAAGsP,GAAK,IAAKA,EAEtC,GAAa,MADblQ,EAAO2C,EAAKmc,WAAW5O,KAEnB,IAAK+P,EAAc,CACjBD,EAAM9P,EACN,KACF,OAGF+P,GAAe,EAInB,OAAa,IAATD,EAAmBD,EAAU,IAAM,IACnCA,GAAmB,IAARC,EAAkB,KAC1Brd,EAAKD,MAAM,EAAGsd,EACvB,EAEAnZ,SAAU,SAAkBlE,EAAMmE,GAChC,QAAY7I,IAAR6I,GAAoC,iBAARA,EAAkB,MAAM,IAAImH,UAAU,mCACtEsQ,EAAW5b,GAEX,IAGIuN,EAHA3D,EAAQ,EACRyT,GAAO,EACPC,GAAe,EAGnB,QAAYhiB,IAAR6I,GAAqBA,EAAIlG,OAAS,GAAKkG,EAAIlG,QAAU+B,EAAK/B,OAAQ,CACpE,GAAIkG,EAAIlG,SAAW+B,EAAK/B,QAAUkG,IAAQnE,EAAM,MAAO,GACvD,IAAIud,EAASpZ,EAAIlG,OAAS,EACtBuf,GAAoB,EACxB,IAAKjQ,EAAIvN,EAAK/B,OAAS,EAAGsP,GAAK,IAAKA,EAAG,CACrC,IAAIlQ,EAAO2C,EAAKmc,WAAW5O,GAC3B,GAAa,KAATlQ,GAGA,IAAKigB,EAAc,CACjB1T,EAAQ2D,EAAI,EACZ,KACF,OAEwB,IAAtBiQ,IAGFF,GAAe,EACfE,EAAmBjQ,EAAI,GAErBgQ,GAAU,IAERlgB,IAAS8G,EAAIgY,WAAWoB,IACR,KAAZA,IAGJF,EAAM9P,IAKRgQ,GAAU,EACVF,EAAMG,GAId,CAGA,OADI5T,IAAUyT,EAAKA,EAAMG,GAAmC,IAATH,IAAYA,EAAMrd,EAAK/B,QACnE+B,EAAKD,MAAM6J,EAAOyT,EAC3B,CACE,IAAK9P,EAAIvN,EAAK/B,OAAS,EAAGsP,GAAK,IAAKA,EAClC,GAA2B,KAAvBvN,EAAKmc,WAAW5O,IAGhB,IAAK+P,EAAc,CACjB1T,EAAQ2D,EAAI,EACZ,KACF,OACkB,IAAT8P,IAGXC,GAAe,EACfD,EAAM9P,EAAI,GAId,OAAa,IAAT8P,EAAmB,GAChBrd,EAAKD,MAAM6J,EAAOyT,EAE7B,EAEA/Y,QAAS,SAAiBtE,GACxB4b,EAAW5b,GAQX,IAPA,IAAIyd,GAAY,EACZC,EAAY,EACZL,GAAO,EACPC,GAAe,EAGfK,EAAc,EACTpQ,EAAIvN,EAAK/B,OAAS,EAAGsP,GAAK,IAAKA,EAAG,CACzC,IAAIlQ,EAAO2C,EAAKmc,WAAW5O,GAC3B,GAAa,KAATlQ,GASS,IAATggB,IAGFC,GAAe,EACfD,EAAM9P,EAAI,GAEC,KAATlQ,GAEkB,IAAdogB,EACFA,EAAWlQ,EACY,IAAhBoQ,IACPA,EAAc,IACK,IAAdF,IAGTE,GAAe,QArBb,IAAKL,EAAc,CACjBI,EAAYnQ,EAAI,EAChB,KACF,CAoBN,CAEA,OAAkB,IAAdkQ,IAA4B,IAATJ,GAEH,IAAhBM,GAEgB,IAAhBA,GAAqBF,IAAaJ,EAAM,GAAKI,IAAaC,EAAY,EACjE,GAEF1d,EAAKD,MAAM0d,EAAUJ,EAC9B,EAEAhb,OAAQ,SAAgBub,GACtB,GAAmB,OAAfA,GAA6C,iBAAfA,EAChC,MAAM,IAAItS,UAAU,0EAA4EsS,GAElG,OAvVJ,SAAiBC,EAAKD,GACpB,IAAIvZ,EAAMuZ,EAAWvZ,KAAOuZ,EAAWE,KACnCC,EAAOH,EAAWG,OAASH,EAAW3e,MAAQ,KAAO2e,EAAWzZ,KAAO,IAC3E,OAAKE,EAGDA,IAAQuZ,EAAWE,KACdzZ,EAAM0Z,EAER1Z,EA8UU,IA9UE0Z,EALVA,CAMX,CA6UWC,CAAQ,EAAKJ,EACtB,EAEAne,MAAO,SAAeO,GACpB4b,EAAW5b,GAEX,IAAIie,EAAM,CAAEH,KAAM,GAAIzZ,IAAK,GAAI0Z,KAAM,GAAI5Z,IAAK,GAAIlF,KAAM,IACxD,GAAoB,IAAhBe,EAAK/B,OAAc,OAAOggB,EAC9B,IAEIrU,EAFAvM,EAAO2C,EAAKmc,WAAW,GACvBK,EAAsB,KAATnf,EAEbmf,GACFyB,EAAIH,KAAO,IACXlU,EAAQ,GAERA,EAAQ,EAaV,IAXA,IAAI6T,GAAY,EACZC,EAAY,EACZL,GAAO,EACPC,GAAe,EACf/P,EAAIvN,EAAK/B,OAAS,EAIlB0f,EAAc,EAGXpQ,GAAK3D,IAAS2D,EAEnB,GAAa,MADblQ,EAAO2C,EAAKmc,WAAW5O,KAUV,IAAT8P,IAGFC,GAAe,EACfD,EAAM9P,EAAI,GAEC,KAATlQ,GAEkB,IAAdogB,EAAiBA,EAAWlQ,EAA2B,IAAhBoQ,IAAmBA,EAAc,IACrD,IAAdF,IAGXE,GAAe,QAlBb,IAAKL,EAAc,CACjBI,EAAYnQ,EAAI,EAChB,KACF,CAwCN,OArBkB,IAAdkQ,IAA4B,IAATJ,GAEP,IAAhBM,GAEgB,IAAhBA,GAAqBF,IAAaJ,EAAM,GAAKI,IAAaC,EAAY,GACvD,IAATL,IACiCY,EAAIF,KAAOE,EAAIhf,KAAhC,IAAdye,GAAmBlB,EAAkCxc,EAAKD,MAAM,EAAGsd,GAAgCrd,EAAKD,MAAM2d,EAAWL,KAG7G,IAAdK,GAAmBlB,GACrByB,EAAIhf,KAAOe,EAAKD,MAAM,EAAG0d,GACzBQ,EAAIF,KAAO/d,EAAKD,MAAM,EAAGsd,KAEzBY,EAAIhf,KAAOe,EAAKD,MAAM2d,EAAWD,GACjCQ,EAAIF,KAAO/d,EAAKD,MAAM2d,EAAWL,IAEnCY,EAAI9Z,IAAMnE,EAAKD,MAAM0d,EAAUJ,IAG7BK,EAAY,EAAGO,EAAI5Z,IAAMrE,EAAKD,MAAM,EAAG2d,EAAY,GAAYlB,IAAYyB,EAAI5Z,IAAM,KAElF4Z,CACT,EAEAJ,IAAK,IACLK,UAAW,IACXC,MAAO,KACPna,MAAO,MAGTA,EAAMA,MAAQA,EAEdiW,EAAO5gB,QAAU2K,4BC9gBjB,IAAI0I,EAAMvT,OAAO6C,UAAUC,eAU3B,SAASmiB,EAAOC,GACd,IACE,OAAOrb,mBAAmBqb,EAAMzY,QAAQ,MAAO,KACjD,CAAE,MAAOvF,GACP,OAAO,IACT,CACF,CASA,SAASie,EAAOD,GACd,IACE,OAAOvc,mBAAmBuc,EAC5B,CAAE,MAAOhe,GACP,OAAO,IACT,CACF,CAmFAhH,EAAQqH,UA1CR,SAAwBuM,EAAK7E,GAC3BA,EAASA,GAAU,GAEnB,IACI9O,EACAoD,EAFA6hB,EAAQ,GASZ,IAAK7hB,IAFD,iBAAoB0L,IAAQA,EAAS,KAE7B6E,EACV,GAAIP,EAAIxQ,KAAK+Q,EAAKvQ,GAAM,CAkBtB,IAjBApD,EAAQ2T,EAAIvQ,KAMGpD,UAAqCklB,MAAMllB,KACxDA,EAAQ,IAGVoD,EAAM4hB,EAAO5hB,GACbpD,EAAQglB,EAAOhlB,GAMH,OAARoD,GAA0B,OAAVpD,EAAgB,SACpCilB,EAAMlgB,KAAK3B,EAAK,IAAKpD,EACvB,CAGF,OAAOilB,EAAMtgB,OAASmK,EAASmW,EAAMtd,KAAK,KAAO,EACnD,EAMA5H,EAAQoG,MA3ER,SAAqBgQ,GAKnB,IAJA,IAEIgP,EAFAC,EAAS,uBACTxU,EAAS,CAAC,EAGPuU,EAAOC,EAAOC,KAAKlP,IAAQ,CAChC,IAAI/S,EAAM0hB,EAAOK,EAAK,IAClBnlB,EAAQ8kB,EAAOK,EAAK,IAUZ,OAAR/hB,GAA0B,OAAVpD,GAAkBoD,KAAOwN,IAC7CA,EAAOxN,GAAOpD,EAChB,CAEA,OAAO4Q,CACT,uBCrDA+P,EAAO5gB,QAAU,SAAkBulB,EAAM1W,GAIvC,GAHAA,EAAWA,EAASrK,MAAM,KAAK,KAC/B+gB,GAAQA,GAEG,OAAO,EAElB,OAAQ1W,GACN,IAAK,OACL,IAAK,KACL,OAAgB,KAAT0W,EAEP,IAAK,QACL,IAAK,MACL,OAAgB,MAATA,EAEP,IAAK,MACL,OAAgB,KAATA,EAEP,IAAK,SACL,OAAgB,KAATA,EAEP,IAAK,OACL,OAAO,EAGT,OAAgB,IAATA,CACT,8BCnCA,IAAI1I,EAAW,EAAQ,IACnB2I,EAAK,EAAQ,KACbC,EAAsB,6EACtBC,EAAS,YACT5W,EAAU,gCACVyW,EAAO,QACPI,EAAa,mDACbC,EAAqB,aAUzB,SAASC,EAASxZ,GAChB,OAAQA,GAAY,IAAIgD,WAAW9C,QAAQkZ,EAAqB,GAClE,CAcA,IAAIK,EAAQ,CACV,CAAC,IAAK,QACN,CAAC,IAAK,SACN,SAAkBC,EAAS5c,GACzB,OAAO6c,EAAU7c,EAAI0F,UAAYkX,EAAQxZ,QAAQ,MAAO,KAAOwZ,CACjE,EACA,CAAC,IAAK,YACN,CAAC,IAAK,OAAQ,GACd,CAACE,IAAK,YAAQhkB,EAAW,EAAG,GAC5B,CAAC,UAAW,YAAQA,EAAW,GAC/B,CAACgkB,IAAK,gBAAYhkB,EAAW,EAAG,IAW9BikB,EAAS,CAAEC,KAAM,EAAG/P,MAAO,GAc/B,SAASgQ,EAAUC,GACjB,IAYIhjB,EALAijB,GALkB,oBAAX9L,OAAoCA,YACpB,IAAX,EAAA+L,EAAoC,EAAAA,EAC3B,oBAATC,KAAkCA,KACjC,CAAC,GAEOF,UAAY,CAAC,EAGlCG,EAAmB,CAAC,EACpBC,SAHJL,EAAMA,GAAOC,GAMb,GAAI,UAAYD,EAAIxX,SAClB4X,EAAmB,IAAIE,EAAIC,SAASP,EAAInX,UAAW,CAAC,QAC/C,GAAI,WAAawX,EAEtB,IAAKrjB,KADLojB,EAAmB,IAAIE,EAAIN,EAAK,CAAC,GACrBH,SAAeO,EAAiBpjB,QACvC,GAAI,WAAaqjB,EAAM,CAC5B,IAAKrjB,KAAOgjB,EACNhjB,KAAO6iB,IACXO,EAAiBpjB,GAAOgjB,EAAIhjB,SAGGpB,IAA7BwkB,EAAiB3X,UACnB2X,EAAiB3X,QAAUA,EAAQ4R,KAAK2F,EAAI3X,MAEhD,CAEA,OAAO+X,CACT,CASA,SAAST,EAAUa,GACjB,MACa,UAAXA,GACW,SAAXA,GACW,UAAXA,GACW,WAAXA,GACW,QAAXA,GACW,SAAXA,CAEJ,CAkBA,SAASC,EAAgBf,EAASO,GAEhCP,GADAA,EAAUF,EAASE,IACDxZ,QAAQmZ,EAAQ,IAClCY,EAAWA,GAAY,CAAC,EAExB,IAKIS,EALAva,EAAQmZ,EAAWL,KAAKS,GACxBlX,EAAWrC,EAAM,GAAKA,EAAM,GAAGI,cAAgB,GAC/Coa,IAAmBxa,EAAM,GACzBya,IAAiBza,EAAM,GACvB0a,EAAe,EAkCnB,OA/BIF,EACEC,GACFF,EAAOva,EAAM,GAAKA,EAAM,GAAKA,EAAM,GACnC0a,EAAe1a,EAAM,GAAG5H,OAAS4H,EAAM,GAAG5H,SAE1CmiB,EAAOva,EAAM,GAAKA,EAAM,GACxB0a,EAAe1a,EAAM,GAAG5H,QAGtBqiB,GACFF,EAAOva,EAAM,GAAKA,EAAM,GACxB0a,EAAe1a,EAAM,GAAG5H,QAExBmiB,EAAOva,EAAM,GAIA,UAAbqC,EACEqY,GAAgB,IAClBH,EAAOA,EAAKrgB,MAAM,IAEXsf,EAAUnX,GACnBkY,EAAOva,EAAM,GACJqC,EACLmY,IACFD,EAAOA,EAAKrgB,MAAM,IAEXwgB,GAAgB,GAAKlB,EAAUM,EAASzX,YACjDkY,EAAOva,EAAM,IAGR,CACLqC,SAAUA,EACVC,QAASkY,GAAkBhB,EAAUnX,GACrCqY,aAAcA,EACdH,KAAMA,EAEV,CAoDA,SAASJ,EAAIZ,EAASO,EAAUjB,GAI9B,GAFAU,GADAA,EAAUF,EAASE,IACDxZ,QAAQmZ,EAAQ,MAE5BplB,gBAAgBqmB,GACpB,OAAO,IAAIA,EAAIZ,EAASO,EAAUjB,GAGpC,IAAIla,EAAUgc,EAAW/gB,EAAOghB,EAAa3W,EAAOpN,EAChDgkB,EAAevB,EAAMpf,QACrBggB,SAAcJ,EACdnd,EAAM7I,KACN4T,EAAI,EA8CR,IAjCI,WAAawS,GAAQ,WAAaA,IACpCrB,EAASiB,EACTA,EAAW,MAGTjB,GAAU,mBAAsBA,IAAQA,EAASG,EAAGpf,OAQxD+E,IADAgc,EAAYL,EAAgBf,GAAW,GALvCO,EAAWF,EAAUE,KAMCzX,WAAasY,EAAUrY,QAC7C3F,EAAI2F,QAAUqY,EAAUrY,SAAW3D,GAAYmb,EAASxX,QACxD3F,EAAI0F,SAAWsY,EAAUtY,UAAYyX,EAASzX,UAAY,GAC1DkX,EAAUoB,EAAUJ,MAOK,UAAvBI,EAAUtY,WACmB,IAA3BsY,EAAUD,cAAsBtB,EAAmBlF,KAAKqF,MACxDoB,EAAUrY,UACTqY,EAAUtY,UACTsY,EAAUD,aAAe,IACxBlB,EAAU7c,EAAI0F,cAEnBwY,EAAa,GAAK,CAAC,OAAQ,aAGtBnT,EAAImT,EAAaziB,OAAQsP,IAGH,mBAF3BkT,EAAcC,EAAanT,KAO3B9N,EAAQghB,EAAY,GACpB/jB,EAAM+jB,EAAY,GAEdhhB,GAAUA,EACZ+C,EAAI9F,GAAO0iB,EACF,iBAAoB3f,IAC7BqK,EAAkB,MAAVrK,EACJ2f,EAAQ5gB,YAAYiB,GACpB2f,EAAQ3hB,QAAQgC,MAGd,iBAAoBghB,EAAY,IAClCje,EAAI9F,GAAO0iB,EAAQrf,MAAM,EAAG+J,GAC5BsV,EAAUA,EAAQrf,MAAM+J,EAAQ2W,EAAY,MAE5Cje,EAAI9F,GAAO0iB,EAAQrf,MAAM+J,GACzBsV,EAAUA,EAAQrf,MAAM,EAAG+J,MAGrBA,EAAQrK,EAAMkf,KAAKS,MAC7B5c,EAAI9F,GAAOoN,EAAM,GACjBsV,EAAUA,EAAQrf,MAAM,EAAG+J,EAAMA,QAGnCtH,EAAI9F,GAAO8F,EAAI9F,IACb8H,GAAYic,EAAY,IAAKd,EAASjjB,IAAa,GAOjD+jB,EAAY,KAAIje,EAAI9F,GAAO8F,EAAI9F,GAAKuJ,gBApCtCmZ,EAAUqB,EAAYrB,EAAS5c,GA4C/Bkc,IAAQlc,EAAIiN,MAAQiP,EAAOlc,EAAIiN,QAM/BjL,GACCmb,EAASxX,SACkB,MAA3B3F,EAAI+F,SAASlC,OAAO,KACF,KAAjB7D,EAAI+F,UAAyC,KAAtBoX,EAASpX,YAEpC/F,EAAI+F,SA/JR,SAAiB/D,EAAUuZ,GACzB,GAAiB,KAAbvZ,EAAiB,OAAOuZ,EAQ5B,IANA,IAAI/d,GAAQ+d,GAAQ,KAAKlgB,MAAM,KAAKkC,MAAM,GAAI,GAAG2a,OAAOlW,EAAS3G,MAAM,MACnE0P,EAAIvN,EAAK/B,OACT2C,EAAOZ,EAAKuN,EAAI,GAChBoT,GAAU,EACVC,EAAK,EAEFrT,KACW,MAAZvN,EAAKuN,GACPvN,EAAK8U,OAAOvH,EAAG,GACM,OAAZvN,EAAKuN,IACdvN,EAAK8U,OAAOvH,EAAG,GACfqT,KACSA,IACC,IAANrT,IAASoT,GAAU,GACvB3gB,EAAK8U,OAAOvH,EAAG,GACfqT,KAOJ,OAHID,GAAS3gB,EAAK2gB,QAAQ,IACb,MAAT/f,GAAyB,OAATA,GAAeZ,EAAK3B,KAAK,IAEtC2B,EAAKiB,KAAK,IACnB,CAqImBf,CAAQsC,EAAI+F,SAAUoX,EAASpX,WAOjB,MAA3B/F,EAAI+F,SAASlC,OAAO,IAAcgZ,EAAU7c,EAAI0F,YAClD1F,EAAI+F,SAAW,IAAM/F,EAAI+F,UAQtB2N,EAAS1T,EAAIoc,KAAMpc,EAAI0F,YAC1B1F,EAAI8F,KAAO9F,EAAIiG,SACfjG,EAAIoc,KAAO,IAMbpc,EAAIqe,SAAWre,EAAIse,SAAW,GAE1Bte,EAAI6F,SACNyB,EAAQtH,EAAI6F,KAAK5K,QAAQ,OAGvB+E,EAAIqe,SAAWre,EAAI6F,KAAKtI,MAAM,EAAG+J,GACjCtH,EAAIqe,SAAW/e,mBAAmBkB,mBAAmBR,EAAIqe,WAEzDre,EAAIse,SAAWte,EAAI6F,KAAKtI,MAAM+J,EAAQ,GACtCtH,EAAIse,SAAWhf,mBAAmBkB,mBAAmBR,EAAIse,YAEzDte,EAAIqe,SAAW/e,mBAAmBkB,mBAAmBR,EAAI6F,OAG3D7F,EAAI6F,KAAO7F,EAAIse,SAAWte,EAAIqe,SAAU,IAAKre,EAAIse,SAAWte,EAAIqe,UAGlEre,EAAIue,OAA0B,UAAjBve,EAAI0F,UAAwBmX,EAAU7c,EAAI0F,WAAa1F,EAAI8F,KACpE9F,EAAI0F,SAAU,KAAM1F,EAAI8F,KACxB,OAKJ9F,EAAIuF,KAAOvF,EAAIkG,UACjB,CA2KAsX,EAAIhkB,UAAY,CAAEa,IA5JlB,SAAa4hB,EAAMnlB,EAAOuQ,GACxB,IAAIrH,EAAM7I,KAEV,OAAQ8kB,GACN,IAAK,QACC,iBAAoBnlB,GAASA,EAAM2E,SACrC3E,GAASuQ,GAAMgV,EAAGpf,OAAOnG,IAG3BkJ,EAAIic,GAAQnlB,EACZ,MAEF,IAAK,OACHkJ,EAAIic,GAAQnlB,EAEP4c,EAAS5c,EAAOkJ,EAAI0F,UAGd5O,IACTkJ,EAAI8F,KAAO9F,EAAIiG,SAAU,IAAKnP,IAH9BkJ,EAAI8F,KAAO9F,EAAIiG,SACfjG,EAAIic,GAAQ,IAKd,MAEF,IAAK,WACHjc,EAAIic,GAAQnlB,EAERkJ,EAAIoc,OAAMtlB,GAAS,IAAKkJ,EAAIoc,MAChCpc,EAAI8F,KAAOhP,EACX,MAEF,IAAK,OACHkJ,EAAIic,GAAQnlB,EAERslB,EAAK7E,KAAKzgB,IACZA,EAAQA,EAAMuE,MAAM,KACpB2E,EAAIoc,KAAOtlB,EAAMiZ,MACjB/P,EAAIiG,SAAWnP,EAAM2H,KAAK,OAE1BuB,EAAIiG,SAAWnP,EACfkJ,EAAIoc,KAAO,IAGb,MAEF,IAAK,WACHpc,EAAI0F,SAAW5O,EAAM2M,cACrBzD,EAAI2F,SAAW0B,EACf,MAEF,IAAK,WACL,IAAK,OACH,GAAIvQ,EAAO,CACT,IAAI0nB,EAAgB,aAATvC,EAAsB,IAAM,IACvCjc,EAAIic,GAAQnlB,EAAM+M,OAAO,KAAO2a,EAAOA,EAAO1nB,EAAQA,CACxD,MACEkJ,EAAIic,GAAQnlB,EAEd,MAEF,IAAK,WACL,IAAK,WACHkJ,EAAIic,GAAQ3c,mBAAmBxI,GAC/B,MAEF,IAAK,OACH,IAAIwQ,EAAQxQ,EAAMmE,QAAQ,MAErBqM,GACHtH,EAAIqe,SAAWvnB,EAAMyG,MAAM,EAAG+J,GAC9BtH,EAAIqe,SAAW/e,mBAAmBkB,mBAAmBR,EAAIqe,WAEzDre,EAAIse,SAAWxnB,EAAMyG,MAAM+J,EAAQ,GACnCtH,EAAIse,SAAWhf,mBAAmBkB,mBAAmBR,EAAIse,YAEzDte,EAAIqe,SAAW/e,mBAAmBkB,mBAAmB1J,IAI3D,IAAK,IAAIiU,EAAI,EAAGA,EAAI4R,EAAMlhB,OAAQsP,IAAK,CACrC,IAAI0T,EAAM9B,EAAM5R,GAEZ0T,EAAI,KAAIze,EAAIye,EAAI,IAAMze,EAAIye,EAAI,IAAIhb,cACxC,CAUA,OARAzD,EAAI6F,KAAO7F,EAAIse,SAAWte,EAAIqe,SAAU,IAAKre,EAAIse,SAAWte,EAAIqe,SAEhEre,EAAIue,OAA0B,UAAjBve,EAAI0F,UAAwBmX,EAAU7c,EAAI0F,WAAa1F,EAAI8F,KACpE9F,EAAI0F,SAAU,KAAM1F,EAAI8F,KACxB,OAEJ9F,EAAIuF,KAAOvF,EAAIkG,WAERlG,CACT,EA8D4BkG,SArD5B,SAAkBhI,GACXA,GAAa,mBAAsBA,IAAWA,EAAYme,EAAGne,WAElE,IAAI+O,EACAjN,EAAM7I,KACN2O,EAAO9F,EAAI8F,KACXJ,EAAW1F,EAAI0F,SAEfA,GAAqD,MAAzCA,EAAS7B,OAAO6B,EAASjK,OAAS,KAAYiK,GAAY,KAE1E,IAAIgC,EACFhC,GACE1F,EAAI0F,UAAY1F,EAAI2F,SAAYkX,EAAU7c,EAAI0F,UAAY,KAAO,IAsCrE,OApCI1F,EAAIqe,UACN3W,GAAU1H,EAAIqe,SACVre,EAAIse,WAAU5W,GAAU,IAAK1H,EAAIse,UACrC5W,GAAU,KACD1H,EAAIse,UACb5W,GAAU,IAAK1H,EAAIse,SACnB5W,GAAU,KAEO,UAAjB1H,EAAI0F,UACJmX,EAAU7c,EAAI0F,YACbI,GACgB,MAAjB9F,EAAI+F,WAMJ2B,GAAU,MAQkB,MAA1B5B,EAAKA,EAAKrK,OAAS,IAAe2gB,EAAK7E,KAAKvX,EAAIiG,YAAcjG,EAAIoc,QACpEtW,GAAQ,KAGV4B,GAAU5B,EAAO9F,EAAI+F,UAErBkH,EAAQ,iBAAoBjN,EAAIiN,MAAQ/O,EAAU8B,EAAIiN,OAASjN,EAAIiN,SACxDvF,GAAU,MAAQuF,EAAMpJ,OAAO,GAAK,IAAKoJ,EAAQA,GAExDjN,EAAIgd,OAAMtV,GAAU1H,EAAIgd,MAErBtV,CACT,GAQA8V,EAAIG,gBAAkBA,EACtBH,EAAIL,SAAWF,EACfO,EAAId,SAAWA,EACfc,EAAInB,GAAKA,EAET5E,EAAO5gB,QAAU2mB,IC3kBbkB,yBAA2B,CAAC,EAGhC,SAASC,oBAAoBC,GAE5B,IAAIC,EAAeH,yBAAyBE,GAC5C,QAAqB9lB,IAAjB+lB,EACH,OAAOA,EAAahoB,QAGrB,IAAI4gB,EAASiH,yBAAyBE,GAAY,CAGjD/nB,QAAS,CAAC,GAOX,OAHAioB,oBAAoBF,GAAUllB,KAAK+d,EAAO5gB,QAAS4gB,EAAQA,EAAO5gB,QAAS8nB,qBAGpElH,EAAO5gB,OACf,CCtBA8nB,oBAAoBI,KAAO,CAAC,ECC5BJ,oBAAoB7T,EAAK2M,IACxB,IAAIuH,EAASvH,GAAUA,EAAOxe,WAC7B,IAAOwe,EAAiB,QACxB,IAAM,EAEP,OADAkH,oBAAoBxT,EAAE6T,EAAQ,CAAE3Z,EAAG2Z,IAC5BA,CAAM,ECLdL,oBAAoBxT,EAAI,CAACtU,EAASooB,KACjC,IAAI,IAAI/kB,KAAO+kB,EACXN,oBAAoBjmB,EAAEumB,EAAY/kB,KAASykB,oBAAoBjmB,EAAE7B,EAASqD,IAC5EvD,OAAOC,eAAeC,EAASqD,EAAK,CAAEd,YAAY,EAAMC,IAAK4lB,EAAW/kB,IAE1E,ECNDykB,oBAAoBvB,EAAI,WACvB,GAA0B,iBAAf8B,WAAyB,OAAOA,WAC3C,IACC,OAAO/nB,MAAQ,IAAIgoB,SAAS,cAAb,EAChB,CAAE,MAAOthB,GACR,GAAsB,iBAAXwT,OAAqB,OAAOA,MACxC,CACA,CAPuB,GCAxBsN,oBAAoBjmB,EAAI,CAAC+R,EAAK2U,IAAUzoB,OAAO6C,UAAUC,eAAeC,KAAK+Q,EAAK2U,GCClFT,oBAAoBU,EAAKxoB,IACH,oBAAX6R,QAA0BA,OAAO4W,aAC1C3oB,OAAOC,eAAeC,EAAS6R,OAAO4W,YAAa,CAAExoB,MAAO,WAE7DH,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,GAAO,yMCLvD,MAGM,EAAY,WCFZ,EAAU,uCCGV,EAA+B,MAG/B,EAA+B,MAI/B,EAA+B,OCHrC4W,QAAO,GAAI1F,MAElB,IAAKuX,kBAAiB,SAAQ,GAAIL,YAC7BM,OAAM,OAAM,YAAW,GAAIC,QAC5B,EAAc,KAGb,IACH,EAAYzO,IAAU,CACpBla,MAAO,IAAIgd,SAAQ4L,IAEjB,IAAIC,EAAI,IAAIC,OAAO,wGACnBD,EAAED,UAAYA,EACdC,EAAEE,YAAY7O,EAAO,OAM3B,IACE,IAAI,EAAkB,EACxB,CACA,MAAOkF,GACL,EAAoB4J,YAEpB,MAAMC,EAAM,IAAInJ,QAEhB,GAAI,EAAQ,CACV,MAAMoJ,EAAY,IAAInmB,KACfL,WAAW,YAACqmB,IAAgBD,OAE7BK,EAAWC,IACf,MAAMC,EAAUD,EAAM7N,OAAO,GAC7B,IAAK,EAAQ8N,GAAU,CACrBD,EAAME,2BACN,MAAM,GAAErf,EAAE,GAAEsf,GAAOF,EACnBH,EAAU3mB,IAAI0H,EAAdif,CAAkBK,EACpB,GAGF,EAAc,SAAUhO,KAASuL,GAC/B,MAAMuC,EAAU9N,IAAO,GACvB,GAAI,EAAQ8N,GAAU,CACpB,MAAOpf,EAAIsf,GAAMF,EACjBJ,EAAI1lB,IAAIgmB,EAAItf,GACZ5J,KAAKmpB,iBAAiB,UAAWL,EACnC,CACA,OAAOJ,EAAYnmB,KAAKvC,KAAMkb,KAASuL,EACzC,EAEA,EAAYyC,IAAM,CAChBvpB,MAAO,IAAIgd,SAAQpW,IACjBsiB,EAAU3lB,IAAI0lB,EAAI1mB,IAAIgnB,GAAK3iB,EAAQ,IAClCsW,MAAKuM,IACNP,EAAU5lB,OAAO2lB,EAAI1mB,IAAIgnB,IACzBN,EAAI3lB,OAAOimB,GACX,IAAK,IAAItV,EAAI,EAAGA,EAAIwV,EAAK9kB,OAAQsP,IAAKsV,EAAGtV,GAAKwV,EAAKxV,GACnD,MAAO,IAAI,KAGjB,KACK,CACH,MAAMyV,EAAK,CAACzf,EAAIsf,KAAO,CAAE,CAAC,GAAU,CAAEtf,KAAIsf,QAE1C,EAASA,IACPR,YAAYW,EAAGT,EAAI1mB,IAAIgnB,GAAKA,GAAI,EAGlCC,iBAAiB,WAAWJ,IAC1B,MAAMC,EAAUD,EAAM7N,OAAO,GAC7B,GAAI,EAAQ8N,GAAU,CACpB,MAAOpf,EAAIsf,GAAMF,EACjBJ,EAAI1lB,IAAIgmB,EAAItf,EACd,IAEJ,CACF,CC1EA,MAAO0f,WAAU,MAAK,cAAa,GAAIvB,YAGhCwB,kBAAmB,GAAa,GAChCA,kBAAmB,GAAc,EAQlC,EAAU,IAAIC,QAGd,EAAU,IAAI/J,QAEd,EAAa,CAAC9f,MAAO,CAACkd,KAAM3M,GAAMA,MAGxC,IAAI,EAAM,EAcV,MAAM,EAAa,CAACgW,GAAOpgB,QAAQD,KAAKC,MAAOiB,YAAYlB,KAAKkB,UAAW0iB,YAAWC,aAAa7jB,QAEjG,IAAK,EAAQkN,IAAImT,GAAO,CAEtB,MAAMyD,EAAc,GAAezD,EAAKwC,YAElCkB,EAAO,CAACC,KAAa9oB,IAAS4oB,EAAYpnB,KAAK2jB,EAAM,CAAC,CAAC,GAAUnlB,GAAO,CAAC8oB,aAEzEtL,SAAiBmL,IAAc,EAAWA,EAAYA,GAAWnL,QACjEuL,EAAQJ,GAAWI,OAAS,GAC5BC,EAAU,IAAIC,YAAY,UAI1BC,EAAU,CAACC,EAAShB,IAAOgB,EAC/B,EAAUhB,EAAI,IACZ3K,EA5Cc,EAAC2K,EAAIY,EAAOvL,KAChC,KAAiC,cAA1B,EAAK2K,EAAI,EAAG,EAAGY,IACpBvL,GAAS,EA0CK,CAAc2K,EAAIY,EAAOvL,GAAW,EAAK2K,EAAI,GAAK,GAGhE,IAAIiB,GAAU,EAEd,EAAQjnB,IAAIgjB,EAAM,IAAIkE,MAAM,IAAI,EAAK,CAOnC,CAAC,GAAM,CAACrL,EAAGsL,IAA6B,iBAAXA,IAAwBA,EAAOC,WAAW,KAGvE,CAAC,GAAM,CAACvL,EAAGsL,IAAsB,SAAXA,EAAoB,KAAO,IAAKtpB,KAEpD,MAAM6I,EAAK,IAIX,IAAIsf,EAAK,IAAI,EAAW,IAAI,EAA8B,EAAZ,IAG1CW,EAAW,GACX,EAAQ9W,IAAIhS,EAAKwpB,IAAI,IAAMV,IAC7B,EAAQ5mB,OAAO4mB,EAAW9oB,EAAK6X,OAGjCgR,EAAKC,EAAUjgB,EAAIsf,EAAImB,EAAQZ,EAAY1oB,EAAKyL,IAAIid,GAAa1oB,GAGjE,MAAMmpB,EAAUhE,IAAS6B,WAIzB,IAAIyC,EAAW,EAIf,OAHIL,GAAWD,IACbM,EAAWrpB,WAAWwF,QAAQ6C,KAAM,IAAM,qCAAqC6gB,0BAE1EJ,EAAQC,EAAShB,GAAIvpB,MAAMkd,MAAK,KACrC7b,aAAawpB,GAGb,MAAMlmB,EAAS4kB,EAAG,GAGlB,IAAK5kB,EAAQ,OAGb,MAAMgW,EAAQ,EAAahW,EAO3B,OAJA4kB,EAAK,IAAI,EAAW,IAAI,EAAkB5O,EAASA,EAAQ,IAG3DsP,EAAK,GAAIhgB,EAAIsf,GACNe,EAAQC,EAAShB,GAAIvpB,MAAMkd,MAAK,IAAM/W,EAC3CikB,EAAQtF,OAAO,IAAI,EAAYyE,EAAGrP,QAAQzT,MAAM,EAAG9B,MACpD,GAEJ,EAGD,CAAC,GAAKmmB,EAASJ,EAAQK,GACrB,MAAMtE,SAAcsE,EACpB,GAAItE,IAAS,EACX,MAAM,IAAIxR,MAAM,oBAAoByV,QAAajE,KAEnD,IAAKqE,EAAQ5nB,KAAM,CAEjB,MAAM8nB,EAAU,IAAI,EAEpBzE,EAAKiD,iBAAiB,WAAW/L,MAAO2L,IAEtC,MAAMC,EAAUD,EAAM7N,OAAO,GAC7B,GAAI,EAAQ8N,GAAU,CAEpBD,EAAME,2BACN,MAAOrf,EAAIsf,KAAOzC,GAAQuC,EAC1B,IAAIpiB,EAEJ,GAAI6f,EAAKniB,OAAQ,CACf,MAAO+lB,EAAQtpB,GAAQ0lB,EACvB,GAAIgE,EAAQ1X,IAAIsX,GAAS,CACvBF,GAAU,EACV,IAEE,MAAM5Z,QAAeka,EAAQvoB,IAAImoB,EAAZI,IAAuB1pB,GAC5C,QAAe,IAAXwP,EAAmB,CACrB,MAAMqa,EAAa7jB,EAAU0iB,EAAYA,EAAUlZ,GAAUA,GAE7Doa,EAAQznB,IAAI0G,EAAIghB,GAGhB1B,EAAG,GAAK0B,EAAWtmB,MACrB,CACF,CACA,MAAOya,GACLnY,EAAQmY,CACV,CACA,QACEoL,GAAU,CACZ,CACF,MAGEvjB,EAAQ,IAAIgO,MAAM,uBAAuByV,KAG3CnB,EAAG,GAAK,CACV,KAIK,CACH,MAAM3Y,EAASoa,EAAQzoB,IAAI0H,GAC3B+gB,EAAQ1nB,OAAO2G,GAEf,IAAK,IAAIihB,EAAQ,IAAI,EAAY3B,EAAGrP,QAASjG,EAAI,EAAGA,EAAIrD,EAAOjM,OAAQsP,IACrEiX,EAAMjX,GAAKrD,EAAOiS,WAAW5O,EACjC,CAGA,GADA,EAAOsV,EAAI,GACPtiB,EAAO,MAAMA,CACnB,IAEJ,CAEA,QAAS6jB,EAAQvnB,IAAImnB,EAAQK,EAC/B,IAEJ,CACA,OAAO,EAAQxoB,IAAIgkB,EAAK,EAG1B,EAAW2D,SAAW,IAAI9oB,KAAU,EAAQiS,IAAIjS,GAAOA,GAEvD,UChMM,EAAU,IAAI+pB,YACd,EAAU,IAAId,YAAY,SAE1B,EAAiB,CACnB,GAAgB,EAChB,GAAgB,EAChB,GAAc,EACd,IAAgB,EAChB,IAAyB,EACzB,IAAuB,EACvB,KAAyB,EACzB,KAAiC,EACjC,KAAwB,EACxB,KAAkC,EAClC,KAAgC,EAChC,KAAyC,EACzC,KAAuC,EACvC,MAAmB,EACnB,MAA4B,EAC5B,MAA0B,EAC1B,MAAoC,EACpC,MAAkC,EAClC,MAAmC,EACnC,MAAiC,EACjC,MAA2C,EAC3C,MAAyC,EACzC,MAA2B,EAC3B,MAAyB,GAEtB,MAAM,EACT,WAAAlqB,CAAYirB,GACR/qB,KAAK+qB,GAAKA,CACd,CACA,IAAAC,CAAKC,GACD,MAAM5kB,EAAOrG,KAAK+qB,GAAGG,SAASD,EAAOnY,MACjC9S,KAAK+qB,GAAGI,GAAGC,OAAOH,EAAOnY,KAAK/K,QAC9BkjB,EAAOI,KAAOrrB,KAAK+qB,GAAGO,IAAIppB,IAAImE,GAEtC,CACA,KAAAklB,CAAMN,GACF,IAAKjrB,KAAK+qB,GAAGI,GAAGC,OAAOH,EAAOnY,KAAK/K,QAAUkjB,EAAOI,KAChD,OAEJ,MAAMhlB,EAAOrG,KAAK+qB,GAAGG,SAASD,EAAOnY,MAC/B0N,EAAQyK,EAAOzK,MACrB,IAAIgL,EAA+B,iBAAVhL,EAAqBiL,SAASjL,EAAO,IAAMA,EACpEgL,GAAe,KACf,IAAIE,GAAa,EACbF,KAAe,IACfE,EAAa,EAAeF,IAE5BE,GACA1rB,KAAK+qB,GAAGO,IAAIK,IAAItlB,EAAM4kB,EAAOI,MAEjCJ,EAAOI,UAAO1pB,CAClB,CACA,IAAAiqB,CAAKX,EAAQpR,EAAQgS,EAAQvnB,EAAQwnB,GACjC,GAAIxnB,GAAU,QACM3C,IAAhBspB,EAAOI,MACPS,IAAab,EAAOI,KAAKnQ,KAAK5W,QAAU,GACxC,OAAO,EAEX,MAAMzB,EAAO+K,KAAK0C,IAAI2a,EAAOI,KAAKnQ,KAAK5W,OAASwnB,EAAUxnB,GAE1D,OADAuV,EAAO3W,IAAI+nB,EAAOI,KAAKnQ,KAAK6Q,SAASD,EAAUA,EAAWjpB,GAAOgpB,GAC1DhpB,CACX,CACA,KAAAmpB,CAAMf,EAAQpR,EAAQgS,EAAQvnB,EAAQwnB,GAClC,IAAIpkB,EACJ,GAAIpD,GAAU,QAAqB3C,IAAhBspB,EAAOI,KACtB,OAAO,EAGX,GADAJ,EAAOnY,KAAKmZ,UAAY1e,KAAKE,MACzBqe,EAAWxnB,IAAkC,QAAtBoD,EAAKujB,EAAOI,YAAyB,IAAP3jB,OAAgB,EAASA,EAAGwT,KAAK5W,SAAW,GAAI,CACrG,MAAM4nB,EAAUjB,EAAOI,KAAKnQ,KAAO+P,EAAOI,KAAKnQ,KAAO,IAAIX,WAC1D0Q,EAAOI,KAAKnQ,KAAO,IAAIX,WAAWuR,EAAWxnB,GAC7C2mB,EAAOI,KAAKnQ,KAAKhY,IAAIgpB,EACzB,CAEA,OADAjB,EAAOI,KAAKnQ,KAAKhY,IAAI2W,EAAOkS,SAASF,EAAQA,EAASvnB,GAASwnB,GACxDxnB,CACX,CACA,MAAA6nB,CAAOlB,EAAQY,EAAQO,GACnB,IAAIN,EAAWD,EACf,GCnFgB,IDmFZO,EACAN,GAAYb,EAAOa,cAElB,GCrFW,IDqFPM,GACDpsB,KAAK+qB,GAAGI,GAAGC,OAAOH,EAAOnY,KAAK/K,MAAO,CACrC,QAAoBpG,IAAhBspB,EAAOI,KAIP,MAAM,IAAIrrB,KAAK+qB,GAAGI,GAAGkB,WAAWrsB,KAAK+qB,GAAGuB,YAAYC,OAHpDT,GAAYb,EAAOI,KAAKnQ,KAAK5W,MAKrC,CAEJ,GAAIwnB,EAAW,EACX,MAAM,IAAI9rB,KAAK+qB,GAAGI,GAAGkB,WAAWrsB,KAAK+qB,GAAGuB,YAAYE,QAExD,OAAOV,CACX,EAEG,MAAM,EACT,WAAAhsB,CAAYirB,GACR/qB,KAAK+qB,GAAKA,CACd,CACA,IAAAjY,CAAK2Z,GACD,OCzGD,SAA0BA,GAC7B,MAAO,SAAUA,CACrB,CDuGY,CAAiBA,GACVA,EAAa3Z,KAEjB2Z,CACX,CACA,OAAAC,CAAQ/sB,GACJ,MAAMmT,EAAO9S,KAAK8S,KAAKnT,GACvB,MAAO,IACAK,KAAK+qB,GAAGO,IAAIoB,QAAQ1sB,KAAK+qB,GAAGG,SAASpY,IACxC/K,KAAM+K,EAAK/K,KACX4kB,IAAK7Z,EAAKlJ,GAElB,CACA,OAAAgjB,CAAQjtB,EAAOktB,GACX,MAAM/Z,EAAO9S,KAAK8S,KAAKnT,GACvB,IAAK,MAAOoD,EAAKpD,KAAUH,OAAOstB,QAAQD,GACtC,OAAQ9pB,GACJ,IAAK,OACD+P,EAAK/K,KAAOpI,EACZ,MACJ,IAAK,YACDmT,EAAKmZ,UAAYtsB,EACjB,MACJ,IAAK,OAAQ,CACT,MAAMkD,EAAOlD,EACP0G,EAAOrG,KAAK+qB,GAAGG,SAASpY,GAC9B,GAAI9S,KAAK+qB,GAAGI,GAAGC,OAAOtY,EAAK/K,OAASlF,GAAQ,EAAG,CAC3C,MAAMwoB,EAAOrrB,KAAK+qB,GAAGO,IAAIppB,IAAImE,GACvB6lB,EAAUb,EAAKnQ,KAAOmQ,EAAKnQ,KAAO,IAAIX,WACxC1X,IAASqpB,EAAQ5nB,SACbzB,EAAOqpB,EAAQ5nB,OACf+mB,EAAKnQ,KAAOmQ,EAAKnQ,KAAK9U,MAAM,EAAGvD,IAG/BwoB,EAAKnQ,KAAO,IAAIX,WAAW1X,GAC3BwoB,EAAKnQ,KAAKhY,IAAIgpB,IAElBlsB,KAAK+qB,GAAGO,IAAIK,IAAItlB,EAAMglB,GAE9B,MAEI1kB,QAAQ6C,KAAK,kBAAmB3G,EAAM,KAAMiQ,EAAM,uBAEtD,KACJ,CACA,QACInM,QAAQ6C,KAAK,UAAWzG,EAAK,KAAMpD,EAAO,KAAMmT,EAAM,uBAItE,CACA,MAAAia,CAAOC,EAAQ1nB,GACX,MAAMwN,EAAO9S,KAAK8S,KAAKka,GACjB3mB,EAAOrG,KAAK+qB,GAAGkC,KAAKC,MAAMltB,KAAK+qB,GAAGG,SAASpY,GAAOxN,GAClDiL,EAASvQ,KAAK+qB,GAAGO,IAAIyB,OAAO1mB,GAClC,IAAKkK,EAAO4c,GACR,MAAMntB,KAAK+qB,GAAGI,GAAGiC,cAAcptB,KAAK+qB,GAAGuB,YAAoB,QAE/D,OAAOtsB,KAAK+qB,GAAGsC,WAAWva,EAAMxN,EAAMiL,EAAOxI,KAAM,EACvD,CACA,KAAAulB,CAAMN,EAAQ1nB,EAAMyC,EAAMwlB,GACtB,MAAMza,EAAO9S,KAAK8S,KAAKka,GACjB3mB,EAAOrG,KAAK+qB,GAAGkC,KAAKC,MAAMltB,KAAK+qB,GAAGG,SAASpY,GAAOxN,GAExD,OADAtF,KAAK+qB,GAAGO,IAAIgC,MAAMjnB,EAAM0B,GACjB/H,KAAK+qB,GAAGsC,WAAWva,EAAMxN,EAAMyC,EAAMwlB,EAChD,CACA,MAAAC,CAAO7tB,EAAO8tB,EAAQC,GAClB,MAAMC,EAAU3tB,KAAK8S,KAAKnT,GACpBiuB,EAAa5tB,KAAK8S,KAAK2a,GAC7BztB,KAAK+qB,GAAGO,IAAIkC,OAAOG,EAAQX,OACrBhtB,KAAK+qB,GAAGkC,KAAKC,MAAMltB,KAAK+qB,GAAGG,SAASyC,EAAQX,QAASW,EAAQroB,MAC7DqoB,EAAQroB,KAAMtF,KAAK+qB,GAAGkC,KAAKC,MAAMltB,KAAK+qB,GAAGG,SAAS0C,GAAaF,IAErEC,EAAQroB,KAAOooB,EACfC,EAAQX,OAASY,CACrB,CACA,MAAAC,CAAOb,EAAQ1nB,GACXtF,KAAK+qB,GAAGO,IAAIwC,MAAM9tB,KAAK+qB,GAAGkC,KAAKC,MAAMltB,KAAK+qB,GAAGG,SAASlrB,KAAK8S,KAAKka,IAAU1nB,GAC9E,CACA,KAAAwoB,CAAMd,EAAQ1nB,GACVtF,KAAK+qB,GAAGO,IAAIwC,MAAM9tB,KAAK+qB,GAAGkC,KAAKC,MAAMltB,KAAK+qB,GAAGG,SAASlrB,KAAK8S,KAAKka,IAAU1nB,GAC9E,CACA,OAAAyoB,CAAQpuB,GACJ,OAAOK,KAAK+qB,GAAGO,IAAIyC,QAAQ/tB,KAAK+qB,GAAGG,SAASlrB,KAAK8S,KAAKnT,IAC1D,CACA,OAAAquB,CAAQhB,EAAQU,EAASO,GACrB,MAAM,IAAIjuB,KAAK+qB,GAAGI,GAAGkB,WAAWrsB,KAAK+qB,GAAGuB,YAAmB,MAC/D,CACA,QAAA4B,CAASpb,GACL,MAAM,IAAI9S,KAAK+qB,GAAGI,GAAGkB,WAAWrsB,KAAK+qB,GAAGuB,YAAmB,MAC/D,EAKG,MAAM,EACT,WAAAxsB,CAAYquB,EAAWC,EAAYjD,EAAImB,GACnCtsB,KAAKquB,WAAaF,EAClBnuB,KAAKsuB,YAAcF,EACnBpuB,KAAKmrB,GAAKA,EACVnrB,KAAKssB,YAAcA,CACvB,CACA,MAAAS,CAAO1mB,GACH,OAAOrG,KAAKuuB,QAAQ,CAAEC,OAAQ,SAAUnoB,KAAMrG,KAAKyuB,cAAcpoB,IACrE,CACA,OAAAqoB,CAAQroB,GACJ,OAAOrG,KAAKuuB,QAAQ,CAAEC,OAAQ,UAAWnoB,KAAMrG,KAAKyuB,cAAcpoB,IACtE,CACA,KAAAinB,CAAMjnB,EAAM0B,GACR,OAAO/H,KAAKuuB,QAAQ,CAChBC,OAAQ,QACRnoB,KAAMrG,KAAKyuB,cAAcpoB,GACzB6U,KAAM,CAAEnT,SAEhB,CACA,MAAAylB,CAAOS,EAASU,GACZ,OAAO3uB,KAAKuuB,QAAQ,CAChBC,OAAQ,SACRnoB,KAAMrG,KAAKyuB,cAAcR,GACzB/S,KAAM,CAAEyT,QAAS3uB,KAAKyuB,cAAcE,KAE5C,CACA,OAAAZ,CAAQ1nB,GACJ,MAAMuoB,EAAU5uB,KAAKuuB,QAAQ,CACzBC,OAAQ,UACRnoB,KAAMrG,KAAKyuB,cAAcpoB,KAI7B,OAFAuoB,EAAQlqB,KAAK,KACbkqB,EAAQlqB,KAAK,MACNkqB,CACX,CACA,KAAAd,CAAMznB,GACF,OAAOrG,KAAKuuB,QAAQ,CAAEC,OAAQ,QAASnoB,KAAMrG,KAAKyuB,cAAcpoB,IACpE,CACA,GAAAnE,CAAImE,GACA,MAAMwoB,EAAW7uB,KAAKuuB,QAAQ,CAC1BC,OAAQ,MACRnoB,KAAMrG,KAAKyuB,cAAcpoB,KAE7B,IAAKwoB,EACD,MAAM,IAAI7uB,KAAKmrB,GAAGkB,WAAWrsB,KAAKssB,YAAoB,QAE1D,MAAMwC,EAAoBD,EAAS3f,QAC7BxG,EAASmmB,EAASnmB,OACxB,OAAQA,GACJ,IAAK,OACL,IAAK,OACD,MAAO,CACHwS,KAAM,EAAQyJ,OAAOmK,GACrBpmB,UAER,IAAK,SAAU,CACX,MAAMqmB,EAAYC,KAAKF,GACjBG,EAAMF,EAAUzqB,OAChB4W,EAAO,IAAIX,WAAW0U,GAC5B,IAAK,IAAIrb,EAAI,EAAGA,EAAIqb,EAAKrb,IACrBsH,EAAKtH,GAAKmb,EAAUvM,WAAW5O,GAEnC,MAAO,CACHsH,OACAxS,SAER,CACA,QACI,MAAM,IAAI1I,KAAKmrB,GAAGkB,WAAWrsB,KAAKssB,YAAoB,QAElE,CACA,GAAAX,CAAItlB,EAAM1G,GACN,OAAQA,EAAM+I,QACV,IAAK,OACL,IAAK,OACD,OAAO1I,KAAKuuB,QAAQ,CAChBC,OAAQ,MACRnoB,KAAMrG,KAAKyuB,cAAcpoB,GACzB6U,KAAM,CACFxS,OAAQ/I,EAAM+I,OACdwS,KAAM,EAAQuJ,OAAO9kB,EAAMub,SAGvC,IAAK,SAAU,CACX,IAAIgU,EAAS,GACb,IAAK,IAAItb,EAAI,EAAGA,EAAIjU,EAAMub,KAAKiU,WAAYvb,IACvCsb,GAAU/f,OAAOigB,aAAazvB,EAAMub,KAAKtH,IAE7C,OAAO5T,KAAKuuB,QAAQ,CAChBC,OAAQ,MACRnoB,KAAMrG,KAAKyuB,cAAcpoB,GACzB6U,KAAM,CACFxS,OAAQ/I,EAAM+I,OACdwS,KAAMmU,KAAKH,KAGvB,EAER,CACA,OAAAxC,CAAQrmB,GACJ,MAAMipB,EAAQtvB,KAAKuuB,QAAQ,CACvBC,OAAQ,UACRnoB,KAAMrG,KAAKyuB,cAAcpoB,KAc7B,OAXIipB,EAAMC,QACND,EAAMC,MAAQ,IAAIhiB,KAAK+hB,EAAMC,QAE7BD,EAAME,QACNF,EAAME,MAAQ,IAAIjiB,KAAK+hB,EAAME,QAE7BF,EAAMG,QACNH,EAAMG,MAAQ,IAAIliB,KAAK+hB,EAAMG,QAGjCH,EAAMzsB,KAAOysB,EAAMzsB,MAAQ,EACpBysB,CACX,CAMA,aAAAb,CAAcpoB,GASV,OAPIA,EAAKikB,WAAWtqB,KAAKsuB,eACrBjoB,EAAOA,EAAKD,MAAMpG,KAAKsuB,YAAYhqB,SAGnCtE,KAAKquB,aACLhoB,EAAO,GAAGrG,KAAKquB,cAA+BhoB,KAE3CA,CACX,EAKG,MAAM,UAAiC,EAC1C,WAAAvG,CAAYyI,EAAS4lB,EAAWC,EAAYjD,EAAImB,GAC5C5N,MAAMyP,EAAWC,EAAYjD,EAAImB,GACjCtsB,KAAK0vB,SAAWnnB,CACpB,CACA,OAAAgmB,CAAQrT,GACJ,MAAMyU,EAAM,IAAIC,eAChBD,EAAI3E,KAAK,OAAQ6E,UAAU7vB,KAAK8vB,WAAW,GAC3C,IACIH,EAAII,KAAKlqB,KAAKkB,UAAUmU,GAC5B,CACA,MAAOxU,GACHC,QAAQC,MAAMF,EAClB,CACA,GAAIipB,EAAIK,QAAU,IACd,MAAM,IAAIhwB,KAAKmrB,GAAGkB,WAAWrsB,KAAKssB,YAAoB,QAE1D,OAAOzmB,KAAKC,MAAM6pB,EAAIM,aAC1B,CAIA,YAAIH,GACA,MAAO,GAAG9vB,KAAK0vB,mBACnB,EAEG,MAAM,EACT,WAAA5vB,CAAYC,GACRC,KAAKmrB,GAAKprB,EAAQorB,GAClBnrB,KAAKitB,KAAOltB,EAAQktB,KACpBjtB,KAAKssB,YAAcvsB,EAAQusB,YAC3BtsB,KAAKsrB,IAAMtrB,KAAKkwB,UAAUnwB,GAC1BC,KAAKmuB,UAAYpuB,EAAQouB,UACzBnuB,KAAKmwB,SAAW,IAAI,EAAyBnwB,MAC7CA,KAAKowB,WAAa,IAAI,EAA2BpwB,KACrD,CAMA,SAAAkwB,CAAUnwB,GACN,OAAO,IAAI,EAAyBA,EAAQwI,QAASxI,EAAQouB,UAAWpuB,EAAQquB,WAAYruB,EAAQorB,GAAIprB,EAAQusB,YACpH,CACA,KAAA+D,CAAMA,GACF,OAAOrwB,KAAKqtB,WAAW,KAAMgD,EAAMjC,WAAY,MAAgB,EACnE,CACA,UAAAf,CAAWL,EAAQ1nB,EAAMyC,EAAMwlB,GAC3B,MAAMpC,EAAKnrB,KAAKmrB,GAChB,IAAKA,EAAGmF,MAAMvoB,KAAUojB,EAAGC,OAAOrjB,GAC9B,MAAM,IAAIojB,EAAGkB,WAAWrsB,KAAKssB,YAAoB,QAErD,MAAMxZ,EAAOqY,EAAGkC,WAAWL,EAAQ1nB,EAAMyC,EAAMwlB,GAG/C,OAFAza,EAAKqd,SAAWnwB,KAAKmwB,SACrBrd,EAAKsd,WAAapwB,KAAKowB,WAChBtd,CACX,CACA,OAAAyd,CAAQlqB,GACJ,OAAOrG,KAAKsrB,IAAIoD,QAAQroB,EAC5B,CACA,QAAA6kB,CAASpY,GACL,MAAMlI,EAAQ,GACd,IAAI4lB,EAAc1d,EAElB,IADAlI,EAAMlG,KAAK8rB,EAAYlrB,MAChBkrB,EAAYxD,SAAWwD,GAC1BA,EAAcA,EAAYxD,OAC1BpiB,EAAMlG,KAAK8rB,EAAYlrB,MAG3B,OADAsF,EAAMqJ,UACCjU,KAAKitB,KAAK3lB,KAAKwV,MAAM,KAAMlS,EACtC,MEnQA,EAAkB,EAAoB,EAAO,EAAU,EAAc,EAAsC,EAAK,EAAe,EAAU,EAAS,EAAQ,EAAI,EAAa,EAAM,EAAK,EAAgB,EAAoB,EAAM,EAAc,EAAgB,EAAW,EAAS,8BA7JlR,GAAWpL,OAAO8B,OAClB,GAAY9B,OAAOC,eACnB,GAAmBD,OAAOqC,yBAC1B,GAAoBrC,OAAOixB,oBAC3B,GAAejxB,OAAOkxB,eACtB,GAAelxB,OAAO6C,UAAUC,eAChC,GAAQ,CAAC4N,EAAIkS,IAAQ,WACvB,OAAOlS,IAAOkS,GAAM,EAAIlS,EAAG,GAAkBA,GAAI,KAAKA,EAAK,IAAKkS,CAClE,EAsBA,SAAS,KACP,MAAM,IAAIxN,MAAM,kCAClB,CACA,SAAS,KACP,MAAM,IAAIA,MAAM,oCAClB,CACA,SAAS,GAAW+b,GAClB,GAAI,IAAqBxvB,WACvB,OAAOA,WAAWwvB,EAAK,GAEzB,IAAK,IAAqB,KAAqB,IAAqBxvB,WAElE,OADA,EAAmBA,WACZA,WAAWwvB,EAAK,GAEzB,IACE,OAAO,EAAiBA,EAAK,EAC/B,CAAE,MAAOjqB,GACP,IACE,OAAO,EAAiBnE,KAAK,KAAMouB,EAAK,EAC1C,CAAE,MAAOC,GACP,OAAO,EAAiBruB,KAAKvC,KAAM2wB,EAAK,EAC1C,CACF,CACF,CAmBA,SAAS,KACF,GAAa,IAGlB,GAAW,EACP,EAAarsB,OACf,EAAQ,EAAayc,OAAO,GAE5B,GAAc,EAEZ,EAAMzc,QACR,KAEJ,CACA,SAAS,KACP,IAAI,EAAJ,CAGA,IAAI7D,EAAU,GAAW,IACzB,GAAW,EAEX,IADA,IAAIwuB,EAAM,EAAM3qB,OACT2qB,GAAK,CAGV,IAFA,EAAe,EACf,EAAQ,KACC,EAAaA,GAChB,GACF,EAAa,GAAY4B,MAG7B,GAAc,EACd5B,EAAM,EAAM3qB,MACd,CACA,EAAe,KACf,GAAW,EAnDb,SAAyBwsB,GACvB,GAAI,IAAuB9vB,aACzB,OAAOA,aAAa8vB,GAEtB,IAAK,IAAuB,KAAwB,IAAuB9vB,aAEzE,OADA,EAAqBA,aACdA,aAAa8vB,GAEtB,IACE,OAAO,EAAmBA,EAC5B,CAAE,MAAOpqB,GACP,IACE,OAAO,EAAmBnE,KAAK,KAAMuuB,EACvC,CAAE,MAAOF,GACP,OAAO,EAAmBruB,KAAKvC,KAAM8wB,EACvC,CACF,CACF,CAmCE,CAAgBrwB,EAjBhB,CAkBF,CACA,SAAS,GAASkwB,GAChB,IAAI5vB,EAAO,IAAI8P,MAAM8N,UAAUra,OAAS,GACxC,GAAIqa,UAAUra,OAAS,EACrB,IAAK,IAAIsP,EAAI,EAAGA,EAAI+K,UAAUra,OAAQsP,IACpC7S,EAAK6S,EAAI,GAAK+K,UAAU/K,GAG5B,EAAMlP,KAAK,IAAI,GAAKisB,EAAK5vB,IACJ,IAAjB,EAAMuD,QAAiB,GACzB,GAAW,GAEf,CACA,SAAS,GAAKqsB,EAAKld,GACjBzT,KAAK2wB,IAAMA,EACX3wB,KAAKyT,MAAQA,CACf,CACA,SAAS,KACT,CACA,SAAS,GAAQnO,GACf,MAAM,IAAIsP,MAAM,mCAClB,CACA,SAAS,KACP,MAAO,GACT,CACA,SAAS,GAAMlK,GACb,MAAM,IAAIkK,MAAM,iCAClB,CACA,SAAS,KACP,OAAO,CACT,CACA,SAAS,GAAOmc,GACd,IAAIC,EAAgD,KAApC,EAAezuB,KAAK,GAChC0uB,EAAUrjB,KAAKiH,MAAMmc,GACrBE,EAActjB,KAAKiH,MAAMmc,EAAY,EAAI,KAS7C,OARID,IACFE,GAAoBF,EAAkB,IACtCG,GAA4BH,EAAkB,IAC5B,IAChBE,IACAC,GAAe,MAGZ,CAACD,EAASC,EACnB,CACA,SAAS,KAGP,OAFkC,IAAI3jB,KACd,GACX,GACf,CAEA,IA45BI,GAAQ,GAAW,GAAK,GAAQ,GAAsB,GA55BtD,GAAe,GAAM,CACvB,mEACE,EAAmB,GACnB,EAAqB,GACgB,mBAA1Bwa,WAAW5mB,aACpB,EAAmBA,YAEkB,mBAA5B4mB,WAAW/mB,eACpB,EAAqBA,cAEvB,EAAQ,GACR,GAAW,EACX,GAAc,EACd,GAAKqB,UAAUwuB,IAAM,WACnB7wB,KAAK2wB,IAAI7T,MAAM,KAAM9c,KAAKyT,MAC5B,EAIA,EAAM,CAAC,EACP,EAAO,GAEP,EAAW,CAAC,EACZ,EAAU,CAAC,EACX,EAAS,CAAC,EACV,EAAK,GACL,EAAc,GACd,EAAO,GACP,EAAM,GACN,EAAiB,GACjB,EAAqB,GACrB,EAAO,GACP,EAAesU,WAAWoJ,aAAe,CAAC,EAC1C,EAAiB,EAAa1jB,KAAO,EAAa2jB,QAAU,EAAaC,OAAS,EAAaC,MAAQ,EAAaC,WAAa,WAC/H,OAAO,IAAqBhkB,MAAQC,SACtC,EACA,EAA4B,IAAID,KAChC,EAAU,CACRikB,SAAQ,GACRC,MAvBM,UAwBNC,SAtBQ,EAuBRlrB,IAAG,EACHP,KAAI,EACJ0rB,QAtBQ,GAuBRC,SAAQ,EACRC,GAAE,EACFC,YAAW,EACX9f,KAAI,EACJ+f,IAAG,EACHC,eAAc,EACdC,mBAAkB,EAClB7wB,KAAI,EACJ8wB,QAAO,GACPxP,IAAG,GACHyP,MAAK,GACLC,MAAK,GACLC,OAAM,GACNC,SAxCS,UAyCTC,QAAO,EACPC,OAAM,EACNC,OAAM,IAER,EAAU,CAAC,EACXjzB,OAAO2D,KAAK,GAASkW,SAAStW,IAC5B,MAAM2vB,EAAO3vB,EAAImB,MAAM,KACvB,IAAIyuB,EAAS,EACb,IAAK,IAAI/e,EAAI,EAAGA,EAAI8e,EAAKpuB,OAAQsP,IAAK,CACpC,MAAMgf,EAAMF,EAAK9e,GACbA,IAAM8e,EAAKpuB,OAAS,EACtBquB,EAAOC,GAAO,EAAQ7vB,GAEtB4vB,EAASA,EAAOC,KAASD,EAAOC,GAAO,CAAC,EAE5C,IAEJ,IAIF,SAAS,KACP,IAAS,EAET,IADA,IAAIlvB,EAAO,mEACFkQ,EAAI,EAAsBA,EAAblQ,KAAwBkQ,EAC5C,GAAOA,GAAKlQ,EAAKkQ,GACjB,GAAUlQ,EAAK8e,WAAW5O,IAAMA,EAElC,GAAU,IAAI4O,WAAW,IAAM,GAC/B,GAAU,IAAIA,WAAW,IAAM,EACjC,CAiCA,SAAS,GAAYqQ,EAAO5iB,EAAOyT,GAGjC,IAFA,IAAIoP,EAJmBC,EAKnBC,EAAS,GACJpf,EAAI3D,EAAO2D,EAAI8P,EAAK9P,GAAK,EAChCkf,GAAOD,EAAMjf,IAAM,KAAOif,EAAMjf,EAAI,IAAM,GAAKif,EAAMjf,EAAI,GACzDof,EAAOtuB,KAPF,IADgBquB,EAQOD,IAPT,GAAK,IAAM,GAAOC,GAAO,GAAK,IAAM,GAAOA,GAAO,EAAI,IAAM,GAAa,GAANA,IASxF,OAAOC,EAAO1rB,KAAK,GACrB,CACA,SAAS,GAAoBurB,GAI3B,IAAIC,EAHC,IACH,KAQF,IALA,IAAI7D,EAAM4D,EAAMvuB,OACZ2uB,EAAahE,EAAM,EACnB+D,EAAS,GACTpoB,EAAQ,GACRsoB,EAAiB,MACZtf,EAAI,EAAGuf,EAAOlE,EAAMgE,EAAYrf,EAAIuf,EAAMvf,GAAKsf,EACtDtoB,EAAMlG,KACJ,GACEmuB,EACAjf,EACAA,EAAIsf,EAAiBC,EAAOA,EAAOvf,EAAIsf,IAiB7C,OAbmB,IAAfD,GACFH,EAAMD,EAAM5D,EAAM,GAClB+D,GAAU,GAAOF,GAAO,GACxBE,GAAU,GAAOF,GAAO,EAAI,IAC5BE,GAAU,MACc,IAAfC,IACTH,GAAOD,EAAM5D,EAAM,IAAM,GAAK4D,EAAM5D,EAAM,GAC1C+D,GAAU,GAAOF,GAAO,IACxBE,GAAU,GAAOF,GAAO,EAAI,IAC5BE,GAAU,GAAOF,GAAO,EAAI,IAC5BE,GAAU,KAEZpoB,EAAMlG,KAAKsuB,GACJpoB,EAAMtD,KAAK,GACpB,CACA,SAAS,KACP,OAAO,GAAQ8rB,oBAAsB,WAAa,UACpD,CACA,SAAS,GAAaC,EAAM/uB,GAC1B,GAAI,KAAeA,EACjB,MAAM,IAAIgvB,WAAW,8BAWvB,OATI,GAAQF,qBACVC,EAAO,IAAI9Y,WAAWjW,IACjBivB,UAAY,GAAQlxB,WAEZ,OAATgxB,IACFA,EAAO,IAAI,GAAQ/uB,IAErB+uB,EAAK/uB,OAASA,GAET+uB,CACT,CACA,SAAS,GAAQ1R,EAAK6R,EAAkBlvB,GACtC,KAAK,GAAQ8uB,qBAAyBpzB,gBAAgB,IACpD,OAAO,IAAI,GAAQ2hB,EAAK6R,EAAkBlvB,GAE5C,GAAmB,iBAARqd,EAAkB,CAC3B,GAAgC,iBAArB6R,EACT,MAAM,IAAI5e,MACR,qEAGJ,OAAO,GAAY5U,KAAM2hB,EAC3B,CACA,OAAO,GAAK3hB,KAAM2hB,EAAK6R,EAAkBlvB,EAC3C,CACA,SAAS,GAAK+uB,EAAM1zB,EAAO6zB,EAAkBlvB,GAC3C,GAAqB,iBAAV3E,EACT,MAAM,IAAIgS,UAAU,yCAEtB,MAA2B,oBAAhBgX,aAA+BhpB,aAAiBgpB,YA0D7D,SAAyB0K,EAAM5f,EAAOggB,EAAYnvB,GAEhD,GADAmP,EAAM0b,WACFsE,EAAa,GAAKhgB,EAAM0b,WAAasE,EACvC,MAAM,IAAIH,WAAW,6BAEvB,GAAI7f,EAAM0b,WAAasE,GAAcnvB,GAAU,GAC7C,MAAM,IAAIgvB,WAAW,6BAevB,OAZE7f,OADiB,IAAfggB,QAAoC,IAAXnvB,EACnB,IAAIiW,WAAW9G,QACH,IAAXnP,EACD,IAAIiW,WAAW9G,EAAOggB,GAEtB,IAAIlZ,WAAW9G,EAAOggB,EAAYnvB,GAExC,GAAQ8uB,qBACVC,EAAO5f,GACF8f,UAAY,GAAQlxB,UAEzBgxB,EAAO,GAAcA,EAAM5f,GAEtB4f,CACT,CA/EW,CAAgBA,EAAM1zB,EAAO6zB,EAAkBlvB,GAEnC,iBAAV3E,EAgCb,SAAoB0zB,EAAMhS,EAAQqS,GAIhC,GAHwB,iBAAbA,GAAsC,KAAbA,IAClCA,EAAW,SAER,GAAQC,WAAWD,GACtB,MAAM,IAAI/hB,UAAU,8CAEtB,IAAIrN,EAAwC,EAA/B,GAAW+c,EAAQqS,GAE5BE,GADJP,EAAO,GAAaA,EAAM/uB,IACR0nB,MAAM3K,EAAQqS,GAIhC,OAHIE,IAAWtvB,IACb+uB,EAAOA,EAAKjtB,MAAM,EAAGwtB,IAEhBP,CACT,CA7CW,CAAWA,EAAM1zB,EAAO6zB,GA6EnC,SAAoBH,EAAM/f,GACxB,GAAI,GAAiBA,GAAM,CACzB,IAAI2b,EAA4B,EAAtB,GAAQ3b,EAAIhP,QAEtB,OAAoB,KADpB+uB,EAAO,GAAaA,EAAMpE,IACjB3qB,QAGTgP,EAAIugB,KAAKR,EAAM,EAAG,EAAGpE,GAFZoE,CAIX,CACA,GAAI/f,EAAK,CACP,GAA2B,oBAAhBqV,aAA+BrV,EAAIuG,kBAAkB8O,aAAe,WAAYrV,EACzF,MAA0B,iBAAfA,EAAIhP,SA8hBN6E,EA9hBmCmK,EAAIhP,SA+hBrC6E,EA9hBF,GAAakqB,EAAM,GAErB,GAAcA,EAAM/f,GAE7B,GAAiB,WAAbA,EAAI8S,MAAqBvV,MAAM0F,QAAQjD,EAAI4H,MAC7C,OAAO,GAAcmY,EAAM/f,EAAI4H,KAEnC,CAshBF,IAAe/R,EArhBb,MAAM,IAAIwI,UACR,qFAEJ,CAnGS,CAAW0hB,EAAM1zB,EAC1B,CACA,SAAS,GAAWkD,GAClB,GAAoB,iBAATA,EACT,MAAM,IAAI8O,UAAU,oCACf,GAAI9O,EAAO,EAChB,MAAM,IAAIywB,WAAW,uCAEzB,CAWA,SAAS,GAAYD,EAAMxwB,GAGzB,GAFA,GAAWA,GACXwwB,EAAO,GAAaA,EAAMxwB,EAAO,EAAI,EAAoB,EAAhB,GAAQA,KAC5C,GAAQuwB,oBACX,IAAK,IAAIxf,EAAI,EAAGA,EAAI/Q,IAAQ+Q,EAC1Byf,EAAKzf,GAAK,EAGd,OAAOyf,CACT,CAgBA,SAAS,GAAcA,EAAM5f,GAC3B,IAAInP,EAASmP,EAAMnP,OAAS,EAAI,EAA4B,EAAxB,GAAQmP,EAAMnP,QAClD+uB,EAAO,GAAaA,EAAM/uB,GAC1B,IAAK,IAAIsP,EAAI,EAAGA,EAAItP,EAAQsP,GAAK,EAC/Byf,EAAKzf,GAAgB,IAAXH,EAAMG,GAElB,OAAOyf,CACT,CAiDA,SAAS,GAAQ/uB,GACf,GAAIA,GAAU,KACZ,MAAM,IAAIgvB,WACR,0DAA4D,KAAavkB,SAAS,IAAM,UAG5F,OAAgB,EAATzK,CACT,CACA,SAAS,GAAiB4P,GACxB,QAAe,MAALA,IAAaA,EAAE4f,UAC3B,CACA,SAAS,GAAWzS,EAAQqS,GAC1B,GAAI,GAAiBrS,GACnB,OAAOA,EAAO/c,OAEhB,GAA2B,oBAAhBqkB,aAA6D,mBAAvBA,YAAYoL,SAA0BpL,YAAYoL,OAAO1S,IAAWA,aAAkBsH,aACrI,OAAOtH,EAAO8N,WAEM,iBAAX9N,IACTA,EAAS,GAAKA,GAEhB,IAAI4N,EAAM5N,EAAO/c,OACjB,GAAY,IAAR2qB,EAAW,OAAO,EAEtB,IADA,IAAI+E,GAAc,IAEhB,OAAQN,GACN,IAAK,QACL,IAAK,SACL,IAAK,SACH,OAAOzE,EACT,IAAK,OACL,IAAK,QACL,UAAK,EACH,OAAO,GAAY5N,GAAQ/c,OAC7B,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAa,EAAN2qB,EACT,IAAK,MACH,OAAOA,IAAQ,EACjB,IAAK,SACH,OAAO,GAAc5N,GAAQ/c,OAC/B,QACE,GAAI0vB,EAAa,OAAO,GAAY3S,GAAQ/c,OAC5CovB,GAAY,GAAKA,GAAUpnB,cAC3B0nB,GAAc,EAGtB,CACA,SAAS,GAAaN,EAAUzjB,EAAOyT,GACrC,IAAIsQ,GAAc,EAIlB,SAHc,IAAV/jB,GAAoBA,EAAQ,KAC9BA,EAAQ,GAENA,EAAQjQ,KAAKsE,OACf,MAAO,GAKT,SAHY,IAARof,GAAkBA,EAAM1jB,KAAKsE,UAC/Bof,EAAM1jB,KAAKsE,QAETof,GAAO,EACT,MAAO,GAIT,IAFAA,KAAS,KACTzT,KAAW,GAET,MAAO,GAGT,IADKyjB,IAAUA,EAAW,UAExB,OAAQA,GACN,IAAK,MACH,OAAO,GAAS1zB,KAAMiQ,EAAOyT,GAC/B,IAAK,OACL,IAAK,QACH,OAAO,GAAU1jB,KAAMiQ,EAAOyT,GAChC,IAAK,QACH,OAAO,GAAW1jB,KAAMiQ,EAAOyT,GACjC,IAAK,SACL,IAAK,SACH,OAAO,GAAY1jB,KAAMiQ,EAAOyT,GAClC,IAAK,SACH,OAAO,GAAY1jB,KAAMiQ,EAAOyT,GAClC,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAO,GAAa1jB,KAAMiQ,EAAOyT,GACnC,QACE,GAAIsQ,EACF,MAAM,IAAIriB,UAAU,qBAAuB+hB,GAC7CA,GAAYA,EAAW,IAAIpnB,cAC3B0nB,GAAc,EAGtB,CACA,SAAS,GAAK9f,EAAGP,EAAGnS,GAClB,IAAIoS,EAAIM,EAAEP,GACVO,EAAEP,GAAKO,EAAE1S,GACT0S,EAAE1S,GAAKoS,CACT,CACA,SAAS,GAAqBiG,EAAQ1Q,EAAKsqB,EAAYC,EAAUhpB,GAC/D,GAAsB,IAAlBmP,EAAOvV,OAAc,OAAQ,EAcjC,GAb0B,iBAAfmvB,GACTC,EAAWD,EACXA,EAAa,GACJA,EAAa,WACtBA,EAAa,WACJA,GAAc,aACvBA,GAAc,YAEhBA,GAAcA,EACV5O,MAAM4O,KACRA,EAAa/oB,EAAM,EAAImP,EAAOvV,OAAS,GAErCmvB,EAAa,IAAGA,EAAa5Z,EAAOvV,OAASmvB,GAC7CA,GAAc5Z,EAAOvV,OAAQ,CAC/B,GAAIoG,EAAK,OAAQ,EACZ+oB,EAAa5Z,EAAOvV,OAAS,CACpC,MAAO,GAAImvB,EAAa,EAAG,CACzB,IAAI/oB,EACC,OAAQ,EADJ+oB,EAAa,CAExB,CAIA,GAHmB,iBAARtqB,IACTA,EAAM,GAAQ2B,KAAK3B,EAAKuqB,IAEtB,GAAiBvqB,GACnB,OAAmB,IAAfA,EAAI7E,QACE,EAEH,GAAauV,EAAQ1Q,EAAKsqB,EAAYC,EAAUhpB,GAClD,GAAmB,iBAARvB,EAEhB,OADAA,GAAY,IACR,GAAQiqB,qBAA+D,mBAAjC7Y,WAAWlY,UAAUyB,QACzD4G,EACK6P,WAAWlY,UAAUyB,QAAQvB,KAClCsX,EACA1Q,EACAsqB,GAGKlZ,WAAWlY,UAAUwC,YAAYtC,KACtCsX,EACA1Q,EACAsqB,GAIC,GAAa5Z,EAAQ,CAAC1Q,GAAMsqB,EAAYC,EAAUhpB,GAE3D,MAAM,IAAIiH,UAAU,uCACtB,CACA,SAAS,GAAasiB,EAAK9qB,EAAKsqB,EAAYC,EAAUhpB,GACpD,IAsBIkJ,EAtBAsgB,EAAY,EACZC,EAAYF,EAAI3vB,OAChB8vB,EAAYjrB,EAAI7E,OACpB,QAAiB,IAAbovB,IAEe,UADjBA,EAAWvkB,OAAOukB,GAAUpnB,gBACY,UAAbonB,GAAqC,YAAbA,GAAuC,aAAbA,GAAyB,CACpG,GAAIO,EAAI3vB,OAAS,GAAK6E,EAAI7E,OAAS,EACjC,OAAQ,EAEV4vB,EAAY,EACZC,GAAa,EACbC,GAAa,EACbX,GAAc,CAChB,CAEF,SAAS7H,EAAKyI,EAAKC,GACjB,OAAkB,IAAdJ,EACKG,EAAIC,GAEJD,EAAIE,aAAaD,EAAKJ,EAEjC,CAEA,GAAIxpB,EAAK,CACP,IAAI8pB,GAAc,EAClB,IAAK5gB,EAAI6f,EAAY7f,EAAIugB,EAAWvgB,IAClC,GAAIgY,EAAKqI,EAAKrgB,KAAOgY,EAAKziB,GAAqB,IAAhBqrB,EAAoB,EAAI5gB,EAAI4gB,IAEzD,IADoB,IAAhBA,IAAmBA,EAAa5gB,GAChCA,EAAI4gB,EAAa,IAAMJ,EACzB,OAAOI,EAAaN,OAEF,IAAhBM,IAAmB5gB,GAAKA,EAAI4gB,GAChCA,GAAc,CAGpB,MAGE,IAFIf,EAAaW,EAAYD,IAC3BV,EAAaU,EAAYC,GACtBxgB,EAAI6f,EAAY7f,GAAK,EAAGA,IAAK,CAEhC,IADA,IAAInO,GAAQ,EACHoO,EAAI,EAAGA,EAAIugB,EAAWvgB,IAC7B,GAAI+X,EAAKqI,EAAKrgB,EAAIC,KAAO+X,EAAKziB,EAAK0K,GAAI,CACrCpO,GAAQ,EACR,KACF,CAEF,GAAIA,EAAO,OAAOmO,CACpB,CAEF,OAAQ,CACV,CACA,SAAS,GAASygB,EAAKhT,EAAQwK,EAAQvnB,GACrCunB,EAASrK,OAAOqK,IAAW,EAC3B,IAAI4I,EAAYJ,EAAI/vB,OAASunB,EACxBvnB,GAGHA,EAASkd,OAAOld,IACHmwB,IACXnwB,EAASmwB,GAJXnwB,EAASmwB,EAOX,IAAIC,EAASrT,EAAO/c,OACpB,GAAIowB,EAAS,GAAM,EAAG,MAAM,IAAI/iB,UAAU,sBACtCrN,EAASowB,EAAS,IACpBpwB,EAASowB,EAAS,GAEpB,IAAK,IAAI9gB,EAAI,EAAGA,EAAItP,IAAUsP,EAAG,CAC/B,IAAI+gB,EAASlJ,SAASpK,EAAOuT,OAAW,EAAJhhB,EAAO,GAAI,IAC/C,GAAIiR,MAAM8P,GAAS,OAAO/gB,EAC1BygB,EAAIxI,EAASjY,GAAK+gB,CACpB,CACA,OAAO/gB,CACT,CACA,SAAS,GAAUygB,EAAKhT,EAAQwK,EAAQvnB,GACtC,OAAO,GACL,GAAY+c,EAAQgT,EAAI/vB,OAASunB,GACjCwI,EACAxI,EACAvnB,EAEJ,CACA,SAAS,GAAW+vB,EAAKhT,EAAQwK,EAAQvnB,GACvC,OAAO,GAsQT,SAAsByH,GAEpB,IADA,IAAI8oB,EAAY,GACPjhB,EAAI,EAAGA,EAAI7H,EAAIzH,SAAUsP,EAChCihB,EAAUnwB,KAAyB,IAApBqH,EAAIyW,WAAW5O,IAEhC,OAAOihB,CACT,CA5QoB,CAAaxT,GAASgT,EAAKxI,EAAQvnB,EACvD,CACA,SAAS,GAAY+vB,EAAKhT,EAAQwK,EAAQvnB,GACxC,OAAO,GAAW+vB,EAAKhT,EAAQwK,EAAQvnB,EACzC,CACA,SAAS,GAAY+vB,EAAKhT,EAAQwK,EAAQvnB,GACxC,OAAO,GAAW,GAAc+c,GAASgT,EAAKxI,EAAQvnB,EACxD,CACA,SAAS,GAAU+vB,EAAKhT,EAAQwK,EAAQvnB,GACtC,OAAO,GAoQT,SAAwByH,EAAK+oB,GAG3B,IAFA,IAAIC,EAAGC,EAAIC,EACPJ,EAAY,GACPjhB,EAAI,EAAGA,EAAI7H,EAAIzH,WACjBwwB,GAAS,GAAK,KADalhB,EAGhCohB,GADAD,EAAIhpB,EAAIyW,WAAW5O,KACT,EACVqhB,EAAKF,EAAI,IACTF,EAAUnwB,KAAKuwB,GACfJ,EAAUnwB,KAAKswB,GAEjB,OAAOH,CACT,CA/QI,CAAexT,EAAQgT,EAAI/vB,OAASunB,GACpCwI,EACAxI,EACAvnB,EAEJ,CACA,SAAS,GAAY+vB,EAAKpkB,EAAOyT,GAC/B,OAAc,IAAVzT,GAAeyT,IAAQ2Q,EAAI/vB,OACtB,GAAoB+vB,GAEpB,GAAoBA,EAAIjuB,MAAM6J,EAAOyT,GAEhD,CACA,SAAS,GAAU2Q,EAAKpkB,EAAOyT,GAC7BA,EAAM9V,KAAK0C,IAAI+jB,EAAI/vB,OAAQof,GAG3B,IAFA,IAAItB,EAAM,GACNxO,EAAI3D,EACD2D,EAAI8P,GAAK,CACd,IAIMwR,EAAYC,EAAWC,EAAYC,EAJrCC,EAAYjB,EAAIzgB,GAChB2hB,EAAY,KACZC,EAAmBF,EAAY,IAAM,EAAIA,EAAY,IAAM,EAAIA,EAAY,IAAM,EAAI,EACzF,GAAI1hB,EAAI4hB,GAAoB9R,EAE1B,OAAQ8R,GACN,KAAK,EACCF,EAAY,MACdC,EAAYD,GAEd,MACF,KAAK,EAEwB,MAAT,KADlBJ,EAAab,EAAIzgB,EAAI,OAEnByhB,GAA6B,GAAZC,IAAmB,EAAiB,GAAbJ,GACpB,MAClBK,EAAYF,GAGhB,MACF,KAAK,EACHH,EAAab,EAAIzgB,EAAI,GACrBuhB,EAAYd,EAAIzgB,EAAI,GACO,MAAT,IAAbshB,IAAmD,MAAT,IAAZC,KACjCE,GAA6B,GAAZC,IAAmB,IAAmB,GAAbJ,IAAoB,EAAgB,GAAZC,GAC9C,OAASE,EAAgB,OAASA,EAAgB,SACpEE,EAAYF,GAGhB,MACF,KAAK,EACHH,EAAab,EAAIzgB,EAAI,GACrBuhB,EAAYd,EAAIzgB,EAAI,GACpBwhB,EAAaf,EAAIzgB,EAAI,GACM,MAAT,IAAbshB,IAAmD,MAAT,IAAZC,IAAmD,MAAT,IAAbC,KAC9DC,GAA6B,GAAZC,IAAmB,IAAmB,GAAbJ,IAAoB,IAAkB,GAAZC,IAAmB,EAAiB,GAAbC,GACvE,OAASC,EAAgB,UAC3CE,EAAYF,GAKJ,OAAdE,GACFA,EAAY,MACZC,EAAmB,GACVD,EAAY,QACrBA,GAAa,MACbnT,EAAI1d,KAAK6wB,IAAc,GAAK,KAAO,OACnCA,EAAY,MAAoB,KAAZA,GAEtBnT,EAAI1d,KAAK6wB,GACT3hB,GAAK4hB,CACP,CACA,OAEF,SAA+BC,GAC7B,IAAIxG,EAAMwG,EAAWnxB,OACrB,GAAI2qB,GAAO,GACT,OAAO9f,OAAOigB,aAAatS,MAAM3N,OAAQsmB,GAI3C,IAFA,IAAIrT,EAAM,GACNxO,EAAI,EACDA,EAAIqb,GACT7M,GAAOjT,OAAOigB,aAAatS,MACzB3N,OACAsmB,EAAWrvB,MAAMwN,EAAGA,GAAK,KAG7B,OAAOwO,CACT,CAhBS,CAAsBA,EAC/B,CAgBA,SAAS,GAAWiS,EAAKpkB,EAAOyT,GAC9B,IAAIY,EAAM,GACVZ,EAAM9V,KAAK0C,IAAI+jB,EAAI/vB,OAAQof,GAC3B,IAAK,IAAI9P,EAAI3D,EAAO2D,EAAI8P,IAAO9P,EAC7B0Q,GAAOnV,OAAOigB,aAAsB,IAATiF,EAAIzgB,IAEjC,OAAO0Q,CACT,CACA,SAAS,GAAY+P,EAAKpkB,EAAOyT,GAC/B,IAAIY,EAAM,GACVZ,EAAM9V,KAAK0C,IAAI+jB,EAAI/vB,OAAQof,GAC3B,IAAK,IAAI9P,EAAI3D,EAAO2D,EAAI8P,IAAO9P,EAC7B0Q,GAAOnV,OAAOigB,aAAaiF,EAAIzgB,IAEjC,OAAO0Q,CACT,CACA,SAAS,GAAS+P,EAAKpkB,EAAOyT,GAC5B,IAsFa/P,EAtFTsb,EAAMoF,EAAI/vB,SACT2L,GAASA,EAAQ,KAAGA,EAAQ,KAC5ByT,GAAOA,EAAM,GAAKA,EAAMuL,KAAKvL,EAAMuL,GAExC,IADA,IAAI1L,EAAM,GACD3P,EAAI3D,EAAO2D,EAAI8P,IAAO9P,EAC7B2P,IAiFW5P,EAjFE0gB,EAAIzgB,IAkFX,GAAW,IAAMD,EAAE5E,SAAS,IAC7B4E,EAAE5E,SAAS,IAjFlB,OAAOwU,CACT,CACA,SAAS,GAAa8Q,EAAKpkB,EAAOyT,GAGhC,IAFA,IAAIpJ,EAAQ+Z,EAAIjuB,MAAM6J,EAAOyT,GACzBtB,EAAM,GACDxO,EAAI,EAAGA,EAAI0G,EAAMhW,OAAQsP,GAAK,EACrCwO,GAAOjT,OAAOigB,aAAa9U,EAAM1G,GAAoB,IAAf0G,EAAM1G,EAAI,IAElD,OAAOwO,CACT,CACA,SAAS,GAAYyJ,EAAQrhB,EAAKlG,GAChC,GAAIunB,EAAS,GAAM,GAAKA,EAAS,EAC/B,MAAM,IAAIyH,WAAW,sBACvB,GAAIzH,EAASrhB,EAAMlG,EACjB,MAAM,IAAIgvB,WAAW,wCACzB,CACA,SAAS,GAASe,EAAK10B,EAAOksB,EAAQrhB,EAAKgG,EAAKF,GAC9C,IAAK,GAAiB+jB,GACpB,MAAM,IAAI1iB,UAAU,+CACtB,GAAIhS,EAAQ6Q,GAAO7Q,EAAQ2Q,EACzB,MAAM,IAAIgjB,WAAW,qCACvB,GAAIzH,EAASrhB,EAAM6pB,EAAI/vB,OAAQ,MAAM,IAAIgvB,WAAW,qBACtD,CACA,SAAS,GAAkBe,EAAK10B,EAAOksB,EAAQ6J,GACzC/1B,EAAQ,IAAGA,EAAQ,MAAQA,EAAQ,GACvC,IAAK,IAAIiU,EAAI,EAAGC,EAAIjG,KAAK0C,IAAI+jB,EAAI/vB,OAASunB,EAAQ,GAAIjY,EAAIC,IAAKD,EAC7DygB,EAAIxI,EAASjY,IAAMjU,EAAQ,KAAO,GAAK+1B,EAAe9hB,EAAI,EAAIA,MAAqC,GAA5B8hB,EAAe9hB,EAAI,EAAIA,EAElG,CACA,SAAS,GAAkBygB,EAAK10B,EAAOksB,EAAQ6J,GACzC/1B,EAAQ,IAAGA,EAAQ,WAAaA,EAAQ,GAC5C,IAAK,IAAIiU,EAAI,EAAGC,EAAIjG,KAAK0C,IAAI+jB,EAAI/vB,OAASunB,EAAQ,GAAIjY,EAAIC,IAAKD,EAC7DygB,EAAIxI,EAASjY,GAAKjU,IAAuC,GAA5B+1B,EAAe9hB,EAAI,EAAIA,GAAS,GAEjE,CACA,SAAS,GAAaygB,EAAK10B,EAAOksB,EAAQrhB,EAAKgG,EAAKF,GAClD,GAAIub,EAASrhB,EAAM6pB,EAAI/vB,OAAQ,MAAM,IAAIgvB,WAAW,sBACpD,GAAIzH,EAAS,EAAG,MAAM,IAAIyH,WAAW,qBACvC,CACA,SAAS,GAAWe,EAAK10B,EAAOksB,EAAQ6J,EAAcC,GAYpD,OAXKA,GACH,GACEtB,EACA10B,EACAksB,EACA,GAKJ,GAAawI,EAAK10B,EAAOksB,EAAQ6J,EAAc,GAAI,GAC5C7J,EAAS,CAClB,CACA,SAAS,GAAYwI,EAAK10B,EAAOksB,EAAQ6J,EAAcC,GAYrD,OAXKA,GACH,GACEtB,EACA10B,EACAksB,EACA,GAKJ,GAAawI,EAAK10B,EAAOksB,EAAQ6J,EAAc,GAAI,GAC5C7J,EAAS,CAClB,CAiBA,SAAS,GAAYxK,EAAQyT,GAE3B,IAAIS,EADJT,EAAQA,GAASnf,IAKjB,IAHA,IAAIrR,EAAS+c,EAAO/c,OAChBsxB,EAAgB,KAChBtb,EAAQ,GACH1G,EAAI,EAAGA,EAAItP,IAAUsP,EAAG,CAE/B,IADA2hB,EAAYlU,EAAOmB,WAAW5O,IACd,OAAS2hB,EAAY,MAAO,CAC1C,IAAKK,EAAe,CAClB,GAAIL,EAAY,MAAO,EAChBT,GAAS,IAAM,GAAGxa,EAAM5V,KAAK,IAAK,IAAK,KAC5C,QACF,CAAO,GAAIkP,EAAI,IAAMtP,EAAQ,EACtBwwB,GAAS,IAAM,GAAGxa,EAAM5V,KAAK,IAAK,IAAK,KAC5C,QACF,CACAkxB,EAAgBL,EAChB,QACF,CACA,GAAIA,EAAY,MAAO,EAChBT,GAAS,IAAM,GAAGxa,EAAM5V,KAAK,IAAK,IAAK,KAC5CkxB,EAAgBL,EAChB,QACF,CACAA,EAAgE,OAAnDK,EAAgB,OAAS,GAAKL,EAAY,MACzD,MAAWK,IACJd,GAAS,IAAM,GAAGxa,EAAM5V,KAAK,IAAK,IAAK,KAG9C,GADAkxB,EAAgB,KACZL,EAAY,IAAK,CACnB,IAAKT,GAAS,GAAK,EAAG,MACtBxa,EAAM5V,KAAK6wB,EACb,MAAO,GAAIA,EAAY,KAAM,CAC3B,IAAKT,GAAS,GAAK,EAAG,MACtBxa,EAAM5V,KAAK6wB,GAAa,EAAI,IAAiB,GAAZA,EAAiB,IACpD,MAAO,GAAIA,EAAY,MAAO,CAC5B,IAAKT,GAAS,GAAK,EAAG,MACtBxa,EAAM5V,KACJ6wB,GAAa,GAAK,IAClBA,GAAa,EAAI,GAAK,IACV,GAAZA,EAAiB,IAErB,KAAO,MAAIA,EAAY,SASrB,MAAM,IAAI3gB,MAAM,sBARhB,IAAKkgB,GAAS,GAAK,EAAG,MACtBxa,EAAM5V,KACJ6wB,GAAa,GAAK,IAClBA,GAAa,GAAK,GAAK,IACvBA,GAAa,EAAI,GAAK,IACV,GAAZA,EAAiB,IAIrB,CACF,CACA,OAAOjb,CACT,CAqBA,SAAS,GAAcvO,GACrB,OAjuBF,SAA2B8pB,GAIzB,IAAIjiB,EAAGC,EAAGiiB,EAAGhD,EAAKiD,EAAc9B,EAH3B,IACH,KAGF,IAAIhF,EAAM4G,EAAIvxB,OACd,GAAI2qB,EAAM,EAAI,EACZ,MAAM,IAAIra,MAAM,kDAElBmhB,EAAgC,MAAjBF,EAAI5G,EAAM,GAAa,EAAqB,MAAjB4G,EAAI5G,EAAM,GAAa,EAAI,EACrEgF,EAAM,IAAI,GAAU,EAANhF,EAAU,EAAI8G,GAC5BD,EAAIC,EAAe,EAAI9G,EAAM,EAAIA,EACjC,IAAI+G,EAAI,EACR,IAAKpiB,EAAI,EAAGC,EAAI,EAAGD,EAAIkiB,EAAGliB,GAAK,EAAGC,GAAK,EACrCif,EAAM,GAAU+C,EAAIrT,WAAW5O,KAAO,GAAK,GAAUiiB,EAAIrT,WAAW5O,EAAI,KAAO,GAAK,GAAUiiB,EAAIrT,WAAW5O,EAAI,KAAO,EAAI,GAAUiiB,EAAIrT,WAAW5O,EAAI,IACzJqgB,EAAI+B,KAAOlD,GAAO,GAAK,IACvBmB,EAAI+B,KAAOlD,GAAO,EAAI,IACtBmB,EAAI+B,KAAa,IAANlD,EAUb,OARqB,IAAjBiD,GACFjD,EAAM,GAAU+C,EAAIrT,WAAW5O,KAAO,EAAI,GAAUiiB,EAAIrT,WAAW5O,EAAI,KAAO,EAC9EqgB,EAAI+B,KAAa,IAANlD,GACe,IAAjBiD,IACTjD,EAAM,GAAU+C,EAAIrT,WAAW5O,KAAO,GAAK,GAAUiiB,EAAIrT,WAAW5O,EAAI,KAAO,EAAI,GAAUiiB,EAAIrT,WAAW5O,EAAI,KAAO,EACvHqgB,EAAI+B,KAAOlD,GAAO,EAAI,IACtBmB,EAAI+B,KAAa,IAANlD,GAENmB,CACT,CAqsBS,CA9FT,SAAqBloB,GAEnB,IADAA,EAOF,SAAoBA,GAClB,OAAIA,EAAIkqB,KAAalqB,EAAIkqB,OAClBlqB,EAAIE,QAAQ,aAAc,GACnC,CAVQ,CAAWF,GAAKE,QAAQ,GAAmB,KACzC3H,OAAS,EAAG,MAAO,GAC3B,KAAOyH,EAAIzH,OAAS,GAAM,GACxByH,GAAY,IAEd,OAAOA,CACT,CAuF2B,CAAYA,GACvC,CACA,SAAS,GAAWmqB,EAAKC,EAAKtK,EAAQvnB,GACpC,IAAK,IAAIsP,EAAI,EAAGA,EAAItP,KACdsP,EAAIiY,GAAUsK,EAAI7xB,QAAUsP,GAAKsiB,EAAI5xB,UADbsP,EAE5BuiB,EAAIviB,EAAIiY,GAAUqK,EAAItiB,GAExB,OAAOA,CACT,CAIA,SAAS,GAASN,GAChB,OAAc,MAAPA,MAAkBA,EAAIwgB,WAAa,GAAaxgB,IAKzD,SAAsBA,GACpB,MAAkC,mBAApBA,EAAI8iB,aAAmD,mBAAd9iB,EAAIlN,OAAwB,GAAakN,EAAIlN,MAAM,EAAG,GAC/G,CAPiE,CAAakN,GAC9E,CACA,SAAS,GAAaA,GACpB,QAASA,EAAIxT,aAAmD,mBAA7BwT,EAAIxT,YAAYu2B,UAA2B/iB,EAAIxT,YAAYu2B,SAAS/iB,EACzG,CAIA,SAAS,GAAYuG,EAAQgS,EAAQyK,EAAMC,EAAMC,GAC/C,IAAI9vB,EAAGlF,EACHi1B,EAAgB,EAATD,EAAaD,EAAO,EAC3BG,GAAQ,GAAKD,GAAQ,EACrBE,EAAQD,GAAQ,EAChBE,GAAS,EACThjB,EAAI0iB,EAAOE,EAAS,EAAI,EACxBxiB,EAAIsiB,GAAQ,EAAI,EAChBle,EAAIyB,EAAOgS,EAASjY,GAKxB,IAJAA,GAAKI,EACLtN,EAAI0R,GAAK,IAAMwe,GAAS,EACxBxe,KAAOwe,EACPA,GAASH,EACFG,EAAQ,EAAGlwB,EAAQ,IAAJA,EAAUmT,EAAOgS,EAASjY,GAAIA,GAAKI,EAAG4iB,GAAS,GAKrE,IAHAp1B,EAAIkF,GAAK,IAAMkwB,GAAS,EACxBlwB,KAAOkwB,EACPA,GAASL,EACFK,EAAQ,EAAGp1B,EAAQ,IAAJA,EAAUqY,EAAOgS,EAASjY,GAAIA,GAAKI,EAAG4iB,GAAS,GAErE,GAAU,IAANlwB,EACFA,EAAI,EAAIiwB,MACH,IAAIjwB,IAAMgwB,EACf,OAAOl1B,EAAImkB,IAAqBhQ,KAAdyC,GAAK,EAAI,GAE3B5W,GAAQoM,KAAKipB,IAAI,EAAGN,GACpB7vB,GAAQiwB,CACV,CACA,OAAQve,GAAK,EAAI,GAAK5W,EAAIoM,KAAKipB,IAAI,EAAGnwB,EAAI6vB,EAC5C,CACA,SAAS,GAAa1c,EAAQla,EAAOksB,EAAQyK,EAAMC,EAAMC,GACvD,IAAI9vB,EAAGlF,EAAGuzB,EACN0B,EAAgB,EAATD,EAAaD,EAAO,EAC3BG,GAAQ,GAAKD,GAAQ,EACrBE,EAAQD,GAAQ,EAChBI,EAAc,KAATP,EAAc3oB,KAAKipB,IAAI,GAAI,IAAMjpB,KAAKipB,IAAI,GAAI,IAAM,EACzDjjB,EAAI0iB,EAAO,EAAIE,EAAS,EACxBxiB,EAAIsiB,EAAO,GAAK,EAChBle,EAAIzY,EAAQ,GAAe,IAAVA,GAAe,EAAIA,EAAQ,EAAI,EAAI,EA+BxD,IA9BAA,EAAQiO,KAAKmpB,IAAIp3B,GACbklB,MAAMllB,IAAUA,IAAUgW,KAC5BnU,EAAIqjB,MAAMllB,GAAS,EAAI,EACvB+G,EAAIgwB,IAEJhwB,EAAIkH,KAAKiH,MAAMjH,KAAKopB,IAAIr3B,GAASiO,KAAKqpB,KAClCt3B,GAASo1B,EAAInnB,KAAKipB,IAAI,GAAInwB,IAAM,IAClCA,IACAquB,GAAK,IAGLp1B,GADE+G,EAAIiwB,GAAS,EACNG,EAAK/B,EAEL+B,EAAKlpB,KAAKipB,IAAI,EAAG,EAAIF,IAEpB5B,GAAK,IACfruB,IACAquB,GAAK,GAEHruB,EAAIiwB,GAASD,GACfl1B,EAAI,EACJkF,EAAIgwB,GACKhwB,EAAIiwB,GAAS,GACtBn1B,GAAK7B,EAAQo1B,EAAI,GAAKnnB,KAAKipB,IAAI,EAAGN,GAClC7vB,GAAQiwB,IAERn1B,EAAI7B,EAAQiO,KAAKipB,IAAI,EAAGF,EAAQ,GAAK/oB,KAAKipB,IAAI,EAAGN,GACjD7vB,EAAI,IAGD6vB,GAAQ,EAAG1c,EAAOgS,EAASjY,GAAS,IAAJpS,EAASoS,GAAKI,EAAGxS,GAAK,IAAK+0B,GAAQ,GAI1E,IAFA7vB,EAAIA,GAAK6vB,EAAO/0B,EAChBi1B,GAAQF,EACDE,EAAO,EAAG5c,EAAOgS,EAASjY,GAAS,IAAJlN,EAASkN,GAAKI,EAAGtN,GAAK,IAAK+vB,GAAQ,GAEzE5c,EAAOgS,EAASjY,EAAII,IAAU,IAAJoE,CAC5B,CAEA,IAljCkB8e,GAAIlyB,GAkjClB,GAAc,GAAM,CACtB,kEACE,KACA,KACA,GAAS,GACT,GAAY,GACZ,GAA4B,oBAAfuV,WAA6BA,WAAa1J,MACvD,IAAS,EACT,GAAQuiB,yBAAyD,IAAnCrL,WAAWqL,qBAAiCrL,WAAWqL,oBACrF,GAAQ+D,SAAW,KACnB,GAAQC,SAAW,SAASnD,GAE1B,OADAA,EAAIV,UAAY,GAAQlxB,UACjB4xB,CACT,EACA,GAAQnpB,KAAO,SAASnL,EAAO6zB,EAAkBlvB,GAC/C,OAAO,GAAK,KAAM3E,EAAO6zB,EAAkBlvB,EAC7C,EACA,GAAQ+yB,WAAa,KACjB,GAAQjE,sBACV,GAAQ/wB,UAAUkxB,UAAYhZ,WAAWlY,UACzC,GAAQkxB,UAAYhZ,WACE,oBAAXhJ,QAA0BA,OAAO+lB,SAAW,GAAQ/lB,OAAO+lB,UAGxE,GAAQC,MAAQ,SAAS10B,EAAM20B,EAAO9D,GACpC,OA/tBN,SAAeL,EAAMxwB,EAAM20B,EAAO9D,GAEhC,OADA,GAAW7wB,GACPA,GAAQ,EACH,GAAawwB,EAAMxwB,QAEd,IAAV20B,EACyB,iBAAb9D,EAAwB,GAAaL,EAAMxwB,GAAMsS,KAAKqiB,EAAO9D,GAAY,GAAaL,EAAMxwB,GAAMsS,KAAKqiB,GAEhH,GAAanE,EAAMxwB,EAC5B,CAstBa,CAAM,KAAMA,EAAM20B,EAAO9D,EAClC,EACA,GAAQ+D,YAAc,SAAS50B,GAC7B,OAAO,GAAY,KAAMA,EAC3B,EACA,GAAQ60B,gBAAkB,SAAS70B,GACjC,OAAO,GAAY,KAAMA,EAC3B,EACA,GAAQwzB,SAAW,GACnB,GAAQsB,QAAU,SAAiBzpB,EAAGgG,GACpC,IAAK,GAAiBhG,KAAO,GAAiBgG,GAC5C,MAAM,IAAIvC,UAAU,6BAEtB,GAAIzD,IAAMgG,EAAG,OAAO,EAGpB,IAFA,IAAIiM,EAAIjS,EAAE5J,OACN8c,EAAIlN,EAAE5P,OACDsP,EAAI,EAAGqb,EAAMrhB,KAAK0C,IAAI6P,EAAGiB,GAAIxN,EAAIqb,IAAOrb,EAC/C,GAAI1F,EAAE0F,KAAOM,EAAEN,GAAI,CACjBuM,EAAIjS,EAAE0F,GACNwN,EAAIlN,EAAEN,GACN,KACF,CAEF,OAAIuM,EAAIiB,GAAW,EACfA,EAAIjB,EAAU,EACX,CACT,EACA,GAAQwT,WAAa,SAAoBD,GACvC,OAAQvkB,OAAOukB,GAAUpnB,eACvB,IAAK,MACL,IAAK,OACL,IAAK,QACL,IAAK,QACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAO,EACT,QACE,OAAO,EAEb,EACA,GAAQyU,OAAS,SAAgB6W,EAAMtzB,GACrC,IAAKuM,MAAM0F,QAAQqhB,GACjB,MAAM,IAAIjmB,UAAU,+CAEtB,GAAoB,IAAhBimB,EAAKtzB,OACP,OAAO,GAAQizB,MAAM,GAEvB,IAAI3jB,EACJ,QAAe,IAAXtP,EAEF,IADAA,EAAS,EACJsP,EAAI,EAAGA,EAAIgkB,EAAKtzB,SAAUsP,EAC7BtP,GAAUszB,EAAKhkB,GAAGtP,OAGtB,IAAIuV,EAAS,GAAQ4d,YAAYnzB,GAC7BuzB,EAAM,EACV,IAAKjkB,EAAI,EAAGA,EAAIgkB,EAAKtzB,SAAUsP,EAAG,CAChC,IAAIygB,EAAMuD,EAAKhkB,GACf,IAAK,GAAiBygB,GACpB,MAAM,IAAI1iB,UAAU,+CAEtB0iB,EAAIR,KAAKha,EAAQge,GACjBA,GAAOxD,EAAI/vB,MACb,CACA,OAAOuV,CACT,EACA,GAAQsV,WAAa,GACrB,GAAQ9sB,UAAUyxB,WAAY,EAC9B,GAAQzxB,UAAUy1B,OAAS,WACzB,IAAI7I,EAAMjvB,KAAKsE,OACf,GAAI2qB,EAAM,GAAM,EACd,MAAM,IAAIqE,WAAW,6CAEvB,IAAK,IAAI1f,EAAI,EAAGA,EAAIqb,EAAKrb,GAAK,EAC5B,GAAK5T,KAAM4T,EAAGA,EAAI,GAEpB,OAAO5T,IACT,EACA,GAAQqC,UAAU01B,OAAS,WACzB,IAAI9I,EAAMjvB,KAAKsE,OACf,GAAI2qB,EAAM,GAAM,EACd,MAAM,IAAIqE,WAAW,6CAEvB,IAAK,IAAI1f,EAAI,EAAGA,EAAIqb,EAAKrb,GAAK,EAC5B,GAAK5T,KAAM4T,EAAGA,EAAI,GAClB,GAAK5T,KAAM4T,EAAI,EAAGA,EAAI,GAExB,OAAO5T,IACT,EACA,GAAQqC,UAAU21B,OAAS,WACzB,IAAI/I,EAAMjvB,KAAKsE,OACf,GAAI2qB,EAAM,GAAM,EACd,MAAM,IAAIqE,WAAW,6CAEvB,IAAK,IAAI1f,EAAI,EAAGA,EAAIqb,EAAKrb,GAAK,EAC5B,GAAK5T,KAAM4T,EAAGA,EAAI,GAClB,GAAK5T,KAAM4T,EAAI,EAAGA,EAAI,GACtB,GAAK5T,KAAM4T,EAAI,EAAGA,EAAI,GACtB,GAAK5T,KAAM4T,EAAI,EAAGA,EAAI,GAExB,OAAO5T,IACT,EACA,GAAQqC,UAAU0M,SAAW,WAC3B,IAAIzK,EAAuB,EAAdtE,KAAKsE,OAClB,OAAe,IAAXA,EAAqB,GACA,IAArBqa,UAAUra,OAAqB,GAAUtE,KAAM,EAAGsE,GAC/C,GAAawY,MAAM9c,KAAM2e,UAClC,EACA,GAAQtc,UAAU41B,OAAS,SAAgB/jB,GACzC,IAAK,GAAiBA,GAAI,MAAM,IAAIvC,UAAU,6BAC9C,OAAI3R,OAASkU,GACuB,IAA7B,GAAQyjB,QAAQ33B,KAAMkU,EAC/B,EACA,GAAQ7R,UAAUs1B,QAAU,SAAkBhF,EAAQ1iB,EAAOyT,EAAKwU,EAAWC,GAC3E,IAAK,GAAiBxF,GACpB,MAAM,IAAIhhB,UAAU,6BActB,QAZc,IAAV1B,IACFA,EAAQ,QAEE,IAARyT,IACFA,EAAMiP,EAASA,EAAOruB,OAAS,QAEf,IAAd4zB,IACFA,EAAY,QAEE,IAAZC,IACFA,EAAUn4B,KAAKsE,QAEb2L,EAAQ,GAAKyT,EAAMiP,EAAOruB,QAAU4zB,EAAY,GAAKC,EAAUn4B,KAAKsE,OACtE,MAAM,IAAIgvB,WAAW,sBAEvB,GAAI4E,GAAaC,GAAWloB,GAASyT,EACnC,OAAO,EAET,GAAIwU,GAAaC,EACf,OAAQ,EAEV,GAAIloB,GAASyT,EACX,OAAO,EAMT,GAAI1jB,OAAS2yB,EAAQ,OAAO,EAM5B,IALA,IAAIxS,GAFJgY,KAAa,IADbD,KAAe,GAIX9W,GALJsC,KAAS,IADTzT,KAAW,GAOPgf,EAAMrhB,KAAK0C,IAAI6P,EAAGiB,GAClBgX,EAAWp4B,KAAKoG,MAAM8xB,EAAWC,GACjCE,EAAa1F,EAAOvsB,MAAM6J,EAAOyT,GAC5B9P,EAAI,EAAGA,EAAIqb,IAAOrb,EACzB,GAAIwkB,EAASxkB,KAAOykB,EAAWzkB,GAAI,CACjCuM,EAAIiY,EAASxkB,GACbwN,EAAIiX,EAAWzkB,GACf,KACF,CAEF,OAAIuM,EAAIiB,GAAW,EACfA,EAAIjB,EAAU,EACX,CACT,EACA,GAAQ9d,UAAUiX,SAAW,SAAkBnQ,EAAKsqB,EAAYC,GAC9D,OAAoD,IAA7C1zB,KAAK8D,QAAQqF,EAAKsqB,EAAYC,EACvC,EACA,GAAQrxB,UAAUyB,QAAU,SAAiBqF,EAAKsqB,EAAYC,GAC5D,OAAO,GAAqB1zB,KAAMmJ,EAAKsqB,EAAYC,GAAU,EAC/D,EACA,GAAQrxB,UAAUwC,YAAc,SAAqBsE,EAAKsqB,EAAYC,GACpE,OAAO,GAAqB1zB,KAAMmJ,EAAKsqB,EAAYC,GAAU,EAC/D,EACA,GAAQrxB,UAAU2pB,MAAQ,SAAe3K,EAAQwK,EAAQvnB,EAAQovB,GAC/D,QAAe,IAAX7H,EACF6H,EAAW,OACXpvB,EAAStE,KAAKsE,OACdunB,EAAS,OACJ,QAAe,IAAXvnB,GAAuC,iBAAXunB,EACrC6H,EAAW7H,EACXvnB,EAAStE,KAAKsE,OACdunB,EAAS,MACJ,KAAIyM,SAASzM,GAUlB,MAAM,IAAIjX,MACR,2EAVFiX,GAAkB,EACdyM,SAASh0B,IACXA,GAAkB,OACD,IAAbovB,IAAqBA,EAAW,UAEpCA,EAAWpvB,EACXA,OAAS,EAMb,CACA,IAAImwB,EAAYz0B,KAAKsE,OAASunB,EAE9B,SADe,IAAXvnB,GAAqBA,EAASmwB,KAAWnwB,EAASmwB,GAClDpT,EAAO/c,OAAS,IAAMA,EAAS,GAAKunB,EAAS,IAAMA,EAAS7rB,KAAKsE,OACnE,MAAM,IAAIgvB,WAAW,0CAElBI,IAAUA,EAAW,QAE1B,IADA,IAAIM,GAAc,IAEhB,OAAQN,GACN,IAAK,MACH,OAAO,GAAS1zB,KAAMqhB,EAAQwK,EAAQvnB,GACxC,IAAK,OACL,IAAK,QACH,OAAO,GAAUtE,KAAMqhB,EAAQwK,EAAQvnB,GACzC,IAAK,QACH,OAAO,GAAWtE,KAAMqhB,EAAQwK,EAAQvnB,GAC1C,IAAK,SACL,IAAK,SACH,OAAO,GAAYtE,KAAMqhB,EAAQwK,EAAQvnB,GAC3C,IAAK,SACH,OAAO,GAAYtE,KAAMqhB,EAAQwK,EAAQvnB,GAC3C,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAO,GAAUtE,KAAMqhB,EAAQwK,EAAQvnB,GACzC,QACE,GAAI0vB,EACF,MAAM,IAAIriB,UAAU,qBAAuB+hB,GAC7CA,GAAY,GAAKA,GAAUpnB,cAC3B0nB,GAAc,EAGtB,EACA,GAAQ3xB,UAAUk2B,OAAS,WACzB,MAAO,CACLnS,KAAM,SACNlL,KAAMrK,MAAMxO,UAAU+D,MAAM7D,KAAKvC,KAAKw4B,MAAQx4B,KAAM,GAExD,EACA,GAAuB,KACvB,GAAQqC,UAAU+D,MAAQ,SAAe6J,EAAOyT,GAC9C,IAgBI+U,EAhBAxJ,EAAMjvB,KAAKsE,OAiBf,IAhBA2L,IAAUA,GAEE,GACVA,GAASgf,GACG,IAAGhf,EAAQ,GACdA,EAAQgf,IACjBhf,EAAQgf,IALVvL,OAAc,IAARA,EAAiBuL,IAAQvL,GAOrB,GACRA,GAAOuL,GACG,IAAGvL,EAAM,GACVA,EAAMuL,IACfvL,EAAMuL,GAEJvL,EAAMzT,IAAOyT,EAAMzT,GAEnB,GAAQmjB,qBACVqF,EAASz4B,KAAK+rB,SAAS9b,EAAOyT,IACvB6P,UAAY,GAAQlxB,cACtB,CACL,IAAIq2B,EAAWhV,EAAMzT,EACrBwoB,EAAS,IAAI,GAAQC,OAAU,GAC/B,IAAK,IAAI9kB,EAAI,EAAGA,EAAI8kB,IAAY9kB,EAC9B6kB,EAAO7kB,GAAK5T,KAAK4T,EAAI3D,EAEzB,CACA,OAAOwoB,CACT,EACA,GAAQp2B,UAAUs2B,WAAa,SAAoB9M,EAAQ+M,EAAajD,GACtE9J,GAAkB,EAClB+M,GAA4B,EACvBjD,GAAU,GAAY9J,EAAQ+M,EAAa54B,KAAKsE,QAIrD,IAHA,IAAI6E,EAAMnJ,KAAK6rB,GACXgN,EAAM,EACNjlB,EAAI,IACCA,EAAIglB,IAAgBC,GAAO,MAClC1vB,GAAOnJ,KAAK6rB,EAASjY,GAAKilB,EAE5B,OAAO1vB,CACT,EACA,GAAQ9G,UAAUy2B,WAAa,SAAoBjN,EAAQ+M,EAAajD,GACtE9J,GAAkB,EAClB+M,GAA4B,EACvBjD,GACH,GAAY9J,EAAQ+M,EAAa54B,KAAKsE,QAIxC,IAFA,IAAI6E,EAAMnJ,KAAK6rB,IAAW+M,GACtBC,EAAM,EACHD,EAAc,IAAMC,GAAO,MAChC1vB,GAAOnJ,KAAK6rB,IAAW+M,GAAeC,EAExC,OAAO1vB,CACT,EACA,GAAQ9G,UAAU02B,UAAY,SAAmBlN,EAAQ8J,GAEvD,OADKA,GAAU,GAAY9J,EAAQ,EAAG7rB,KAAKsE,QACpCtE,KAAK6rB,EACd,EACA,GAAQxpB,UAAU22B,aAAe,SAAsBnN,EAAQ8J,GAE7D,OADKA,GAAU,GAAY9J,EAAQ,EAAG7rB,KAAKsE,QACpCtE,KAAK6rB,GAAU7rB,KAAK6rB,EAAS,IAAM,CAC5C,EACA,GAAQxpB,UAAUkyB,aAAe,SAAsB1I,EAAQ8J,GAE7D,OADKA,GAAU,GAAY9J,EAAQ,EAAG7rB,KAAKsE,QACpCtE,KAAK6rB,IAAW,EAAI7rB,KAAK6rB,EAAS,EAC3C,EACA,GAAQxpB,UAAU42B,aAAe,SAAsBpN,EAAQ8J,GAE7D,OADKA,GAAU,GAAY9J,EAAQ,EAAG7rB,KAAKsE,SACnCtE,KAAK6rB,GAAU7rB,KAAK6rB,EAAS,IAAM,EAAI7rB,KAAK6rB,EAAS,IAAM,IAAyB,SAAnB7rB,KAAK6rB,EAAS,EACzF,EACA,GAAQxpB,UAAU62B,aAAe,SAAsBrN,EAAQ8J,GAE7D,OADKA,GAAU,GAAY9J,EAAQ,EAAG7rB,KAAKsE,QACrB,SAAftE,KAAK6rB,IAAsB7rB,KAAK6rB,EAAS,IAAM,GAAK7rB,KAAK6rB,EAAS,IAAM,EAAI7rB,KAAK6rB,EAAS,GACnG,EACA,GAAQxpB,UAAU82B,UAAY,SAAmBtN,EAAQ+M,EAAajD,GACpE9J,GAAkB,EAClB+M,GAA4B,EACvBjD,GAAU,GAAY9J,EAAQ+M,EAAa54B,KAAKsE,QAIrD,IAHA,IAAI6E,EAAMnJ,KAAK6rB,GACXgN,EAAM,EACNjlB,EAAI,IACCA,EAAIglB,IAAgBC,GAAO,MAClC1vB,GAAOnJ,KAAK6rB,EAASjY,GAAKilB,EAI5B,OADI1vB,IADJ0vB,GAAO,OACS1vB,GAAOyE,KAAKipB,IAAI,EAAG,EAAI+B,IAChCzvB,CACT,EACA,GAAQ9G,UAAU+2B,UAAY,SAAmBvN,EAAQ+M,EAAajD,GACpE9J,GAAkB,EAClB+M,GAA4B,EACvBjD,GAAU,GAAY9J,EAAQ+M,EAAa54B,KAAKsE,QAIrD,IAHA,IAAIsP,EAAIglB,EACJC,EAAM,EACN1vB,EAAMnJ,KAAK6rB,IAAWjY,GACnBA,EAAI,IAAMilB,GAAO,MACtB1vB,GAAOnJ,KAAK6rB,IAAWjY,GAAKilB,EAI9B,OADI1vB,IADJ0vB,GAAO,OACS1vB,GAAOyE,KAAKipB,IAAI,EAAG,EAAI+B,IAChCzvB,CACT,EACA,GAAQ9G,UAAUg3B,SAAW,SAAkBxN,EAAQ8J,GAErD,OADKA,GAAU,GAAY9J,EAAQ,EAAG7rB,KAAKsE,QACtB,IAAftE,KAAK6rB,IACwB,GAA3B,IAAM7rB,KAAK6rB,GAAU,GADK7rB,KAAK6rB,EAEzC,EACA,GAAQxpB,UAAUi3B,YAAc,SAAqBzN,EAAQ8J,GACtDA,GAAU,GAAY9J,EAAQ,EAAG7rB,KAAKsE,QAC3C,IAAI6E,EAAMnJ,KAAK6rB,GAAU7rB,KAAK6rB,EAAS,IAAM,EAC7C,OAAa,MAAN1iB,EAAoB,WAANA,EAAmBA,CAC1C,EACA,GAAQ9G,UAAUk3B,YAAc,SAAqB1N,EAAQ8J,GACtDA,GAAU,GAAY9J,EAAQ,EAAG7rB,KAAKsE,QAC3C,IAAI6E,EAAMnJ,KAAK6rB,EAAS,GAAK7rB,KAAK6rB,IAAW,EAC7C,OAAa,MAAN1iB,EAAoB,WAANA,EAAmBA,CAC1C,EACA,GAAQ9G,UAAUm3B,YAAc,SAAqB3N,EAAQ8J,GAE3D,OADKA,GAAU,GAAY9J,EAAQ,EAAG7rB,KAAKsE,QACpCtE,KAAK6rB,GAAU7rB,KAAK6rB,EAAS,IAAM,EAAI7rB,KAAK6rB,EAAS,IAAM,GAAK7rB,KAAK6rB,EAAS,IAAM,EAC7F,EACA,GAAQxpB,UAAUo3B,YAAc,SAAqB5N,EAAQ8J,GAE3D,OADKA,GAAU,GAAY9J,EAAQ,EAAG7rB,KAAKsE,QACpCtE,KAAK6rB,IAAW,GAAK7rB,KAAK6rB,EAAS,IAAM,GAAK7rB,KAAK6rB,EAAS,IAAM,EAAI7rB,KAAK6rB,EAAS,EAC7F,EACA,GAAQxpB,UAAU+zB,YAAc,SAAqBvK,EAAQ8J,GAE3D,OADKA,GAAU,GAAY9J,EAAQ,EAAG7rB,KAAKsE,QACpC,GAAYtE,KAAM6rB,GAAQ,EAAM,GAAI,EAC7C,EACA,GAAQxpB,UAAUq3B,YAAc,SAAqB7N,EAAQ8J,GAE3D,OADKA,GAAU,GAAY9J,EAAQ,EAAG7rB,KAAKsE,QACpC,GAAYtE,KAAM6rB,GAAQ,EAAO,GAAI,EAC9C,EACA,GAAQxpB,UAAUs3B,aAAe,SAAsB9N,EAAQ8J,GAE7D,OADKA,GAAU,GAAY9J,EAAQ,EAAG7rB,KAAKsE,QACpC,GAAYtE,KAAM6rB,GAAQ,EAAM,GAAI,EAC7C,EACA,GAAQxpB,UAAUu3B,aAAe,SAAsB/N,EAAQ8J,GAE7D,OADKA,GAAU,GAAY9J,EAAQ,EAAG7rB,KAAKsE,QACpC,GAAYtE,KAAM6rB,GAAQ,EAAO,GAAI,EAC9C,EACA,GAAQxpB,UAAUw3B,YAAc,SAAqBl6B,EAAOksB,EAAQ+M,EAAajD,GAC/Eh2B,GAASA,EACTksB,GAAkB,EAClB+M,GAA4B,EACvBjD,GAEH,GAAS31B,KAAML,EAAOksB,EAAQ+M,EADfhrB,KAAKipB,IAAI,EAAG,EAAI+B,GAAe,EACO,GAEvD,IAAIC,EAAM,EACNjlB,EAAI,EAER,IADA5T,KAAK6rB,GAAkB,IAARlsB,IACNiU,EAAIglB,IAAgBC,GAAO,MAClC74B,KAAK6rB,EAASjY,GAAKjU,EAAQk5B,EAAM,IAEnC,OAAOhN,EAAS+M,CAClB,EACA,GAAQv2B,UAAUy3B,YAAc,SAAqBn6B,EAAOksB,EAAQ+M,EAAajD,GAC/Eh2B,GAASA,EACTksB,GAAkB,EAClB+M,GAA4B,EACvBjD,GAEH,GAAS31B,KAAML,EAAOksB,EAAQ+M,EADfhrB,KAAKipB,IAAI,EAAG,EAAI+B,GAAe,EACO,GAEvD,IAAIhlB,EAAIglB,EAAc,EAClBC,EAAM,EAEV,IADA74B,KAAK6rB,EAASjY,GAAa,IAARjU,IACViU,GAAK,IAAMilB,GAAO,MACzB74B,KAAK6rB,EAASjY,GAAKjU,EAAQk5B,EAAM,IAEnC,OAAOhN,EAAS+M,CAClB,EACA,GAAQv2B,UAAU03B,WAAa,SAAoBp6B,EAAOksB,EAAQ8J,GAMhE,OALAh2B,GAASA,EACTksB,GAAkB,EACb8J,GAAU,GAAS31B,KAAML,EAAOksB,EAAQ,EAAG,IAAK,GAChD,GAAQuH,sBAAqBzzB,EAAQiO,KAAKiH,MAAMlV,IACrDK,KAAK6rB,GAAkB,IAARlsB,EACRksB,EAAS,CAClB,EACA,GAAQxpB,UAAU23B,cAAgB,SAAuBr6B,EAAOksB,EAAQ8J,GAUtE,OATAh2B,GAASA,EACTksB,GAAkB,EACb8J,GAAU,GAAS31B,KAAML,EAAOksB,EAAQ,EAAG,MAAO,GACnD,GAAQuH,qBACVpzB,KAAK6rB,GAAkB,IAARlsB,EACfK,KAAK6rB,EAAS,GAAKlsB,IAAU,GAE7B,GAAkBK,KAAML,EAAOksB,GAAQ,GAElCA,EAAS,CAClB,EACA,GAAQxpB,UAAU43B,cAAgB,SAAuBt6B,EAAOksB,EAAQ8J,GAUtE,OATAh2B,GAASA,EACTksB,GAAkB,EACb8J,GAAU,GAAS31B,KAAML,EAAOksB,EAAQ,EAAG,MAAO,GACnD,GAAQuH,qBACVpzB,KAAK6rB,GAAUlsB,IAAU,EACzBK,KAAK6rB,EAAS,GAAa,IAARlsB,GAEnB,GAAkBK,KAAML,EAAOksB,GAAQ,GAElCA,EAAS,CAClB,EACA,GAAQxpB,UAAU63B,cAAgB,SAAuBv6B,EAAOksB,EAAQ8J,GAYtE,OAXAh2B,GAASA,EACTksB,GAAkB,EACb8J,GAAU,GAAS31B,KAAML,EAAOksB,EAAQ,EAAG,WAAY,GACxD,GAAQuH,qBACVpzB,KAAK6rB,EAAS,GAAKlsB,IAAU,GAC7BK,KAAK6rB,EAAS,GAAKlsB,IAAU,GAC7BK,KAAK6rB,EAAS,GAAKlsB,IAAU,EAC7BK,KAAK6rB,GAAkB,IAARlsB,GAEf,GAAkBK,KAAML,EAAOksB,GAAQ,GAElCA,EAAS,CAClB,EACA,GAAQxpB,UAAU83B,cAAgB,SAAuBx6B,EAAOksB,EAAQ8J,GAYtE,OAXAh2B,GAASA,EACTksB,GAAkB,EACb8J,GAAU,GAAS31B,KAAML,EAAOksB,EAAQ,EAAG,WAAY,GACxD,GAAQuH,qBACVpzB,KAAK6rB,GAAUlsB,IAAU,GACzBK,KAAK6rB,EAAS,GAAKlsB,IAAU,GAC7BK,KAAK6rB,EAAS,GAAKlsB,IAAU,EAC7BK,KAAK6rB,EAAS,GAAa,IAARlsB,GAEnB,GAAkBK,KAAML,EAAOksB,GAAQ,GAElCA,EAAS,CAClB,EACA,GAAQxpB,UAAU+3B,WAAa,SAAoBz6B,EAAOksB,EAAQ+M,EAAajD,GAG7E,GAFAh2B,GAASA,EACTksB,GAAkB,GACb8J,EAAU,CACb,IAAI0E,EAAQzsB,KAAKipB,IAAI,EAAG,EAAI+B,EAAc,GAC1C,GAAS54B,KAAML,EAAOksB,EAAQ+M,EAAayB,EAAQ,GAAIA,EACzD,CACA,IAAIzmB,EAAI,EACJilB,EAAM,EACNyB,EAAM,EAEV,IADAt6B,KAAK6rB,GAAkB,IAARlsB,IACNiU,EAAIglB,IAAgBC,GAAO,MAC9Bl5B,EAAQ,GAAa,IAAR26B,GAAsC,IAAzBt6B,KAAK6rB,EAASjY,EAAI,KAC9C0mB,EAAM,GAERt6B,KAAK6rB,EAASjY,IAAMjU,EAAQk5B,EAAO,GAAKyB,EAAM,IAEhD,OAAOzO,EAAS+M,CAClB,EACA,GAAQv2B,UAAUk4B,WAAa,SAAoB56B,EAAOksB,EAAQ+M,EAAajD,GAG7E,GAFAh2B,GAASA,EACTksB,GAAkB,GACb8J,EAAU,CACb,IAAI0E,EAAQzsB,KAAKipB,IAAI,EAAG,EAAI+B,EAAc,GAC1C,GAAS54B,KAAML,EAAOksB,EAAQ+M,EAAayB,EAAQ,GAAIA,EACzD,CACA,IAAIzmB,EAAIglB,EAAc,EAClBC,EAAM,EACNyB,EAAM,EAEV,IADAt6B,KAAK6rB,EAASjY,GAAa,IAARjU,IACViU,GAAK,IAAMilB,GAAO,MACrBl5B,EAAQ,GAAa,IAAR26B,GAAsC,IAAzBt6B,KAAK6rB,EAASjY,EAAI,KAC9C0mB,EAAM,GAERt6B,KAAK6rB,EAASjY,IAAMjU,EAAQk5B,EAAO,GAAKyB,EAAM,IAEhD,OAAOzO,EAAS+M,CAClB,EACA,GAAQv2B,UAAUm4B,UAAY,SAAmB76B,EAAOksB,EAAQ8J,GAO9D,OANAh2B,GAASA,EACTksB,GAAkB,EACb8J,GAAU,GAAS31B,KAAML,EAAOksB,EAAQ,EAAG,KAAM,KACjD,GAAQuH,sBAAqBzzB,EAAQiO,KAAKiH,MAAMlV,IACjDA,EAAQ,IAAGA,EAAQ,IAAMA,EAAQ,GACrCK,KAAK6rB,GAAkB,IAARlsB,EACRksB,EAAS,CAClB,EACA,GAAQxpB,UAAUo4B,aAAe,SAAsB96B,EAAOksB,EAAQ8J,GAUpE,OATAh2B,GAASA,EACTksB,GAAkB,EACb8J,GAAU,GAAS31B,KAAML,EAAOksB,EAAQ,EAAG,OAAQ,OACpD,GAAQuH,qBACVpzB,KAAK6rB,GAAkB,IAARlsB,EACfK,KAAK6rB,EAAS,GAAKlsB,IAAU,GAE7B,GAAkBK,KAAML,EAAOksB,GAAQ,GAElCA,EAAS,CAClB,EACA,GAAQxpB,UAAUq4B,aAAe,SAAsB/6B,EAAOksB,EAAQ8J,GAUpE,OATAh2B,GAASA,EACTksB,GAAkB,EACb8J,GAAU,GAAS31B,KAAML,EAAOksB,EAAQ,EAAG,OAAQ,OACpD,GAAQuH,qBACVpzB,KAAK6rB,GAAUlsB,IAAU,EACzBK,KAAK6rB,EAAS,GAAa,IAARlsB,GAEnB,GAAkBK,KAAML,EAAOksB,GAAQ,GAElCA,EAAS,CAClB,EACA,GAAQxpB,UAAUs4B,aAAe,SAAsBh7B,EAAOksB,EAAQ8J,GAYpE,OAXAh2B,GAASA,EACTksB,GAAkB,EACb8J,GAAU,GAAS31B,KAAML,EAAOksB,EAAQ,EAAG,YAAa,YACzD,GAAQuH,qBACVpzB,KAAK6rB,GAAkB,IAARlsB,EACfK,KAAK6rB,EAAS,GAAKlsB,IAAU,EAC7BK,KAAK6rB,EAAS,GAAKlsB,IAAU,GAC7BK,KAAK6rB,EAAS,GAAKlsB,IAAU,IAE7B,GAAkBK,KAAML,EAAOksB,GAAQ,GAElCA,EAAS,CAClB,EACA,GAAQxpB,UAAUu4B,aAAe,SAAsBj7B,EAAOksB,EAAQ8J,GAapE,OAZAh2B,GAASA,EACTksB,GAAkB,EACb8J,GAAU,GAAS31B,KAAML,EAAOksB,EAAQ,EAAG,YAAa,YACzDlsB,EAAQ,IAAGA,EAAQ,WAAaA,EAAQ,GACxC,GAAQyzB,qBACVpzB,KAAK6rB,GAAUlsB,IAAU,GACzBK,KAAK6rB,EAAS,GAAKlsB,IAAU,GAC7BK,KAAK6rB,EAAS,GAAKlsB,IAAU,EAC7BK,KAAK6rB,EAAS,GAAa,IAARlsB,GAEnB,GAAkBK,KAAML,EAAOksB,GAAQ,GAElCA,EAAS,CAClB,EACA,GAAQxpB,UAAUw4B,aAAe,SAAsBl7B,EAAOksB,EAAQ8J,GACpE,OAAO,GAAW31B,KAAML,EAAOksB,GAAQ,EAAM8J,EAC/C,EACA,GAAQtzB,UAAUy4B,aAAe,SAAsBn7B,EAAOksB,EAAQ8J,GACpE,OAAO,GAAW31B,KAAML,EAAOksB,GAAQ,EAAO8J,EAChD,EACA,GAAQtzB,UAAU04B,cAAgB,SAAuBp7B,EAAOksB,EAAQ8J,GACtE,OAAO,GAAY31B,KAAML,EAAOksB,GAAQ,EAAM8J,EAChD,EACA,GAAQtzB,UAAU24B,cAAgB,SAAuBr7B,EAAOksB,EAAQ8J,GACtE,OAAO,GAAY31B,KAAML,EAAOksB,GAAQ,EAAO8J,EACjD,EACA,GAAQtzB,UAAUwxB,KAAO,SAAclB,EAAQsI,EAAahrB,EAAOyT,GAMjE,GALKzT,IAAOA,EAAQ,GACfyT,GAAe,IAARA,IAAWA,EAAM1jB,KAAKsE,QAC9B22B,GAAetI,EAAOruB,SAAQ22B,EAActI,EAAOruB,QAClD22B,IAAaA,EAAc,GAC5BvX,EAAM,GAAKA,EAAMzT,IAAOyT,EAAMzT,GAC9ByT,IAAQzT,EAAO,OAAO,EAC1B,GAAsB,IAAlB0iB,EAAOruB,QAAgC,IAAhBtE,KAAKsE,OAAc,OAAO,EACrD,GAAI22B,EAAc,EAChB,MAAM,IAAI3H,WAAW,6BAEvB,GAAIrjB,EAAQ,GAAKA,GAASjQ,KAAKsE,OAC7B,MAAM,IAAIgvB,WAAW,6BACvB,GAAI5P,EAAM,EAAG,MAAM,IAAI4P,WAAW,2BAC9B5P,EAAM1jB,KAAKsE,SAAQof,EAAM1jB,KAAKsE,QAC9BquB,EAAOruB,OAAS22B,EAAcvX,EAAMzT,IACtCyT,EAAMiP,EAAOruB,OAAS22B,EAAchrB,GAEtC,IACI2D,EADAqb,EAAMvL,EAAMzT,EAEhB,GAAIjQ,OAAS2yB,GAAU1iB,EAAQgrB,GAAeA,EAAcvX,EAC1D,IAAK9P,EAAIqb,EAAM,EAAGrb,GAAK,IAAKA,EAC1B+e,EAAO/e,EAAIqnB,GAAej7B,KAAK4T,EAAI3D,QAEhC,GAAIgf,EAAM,MAAQ,GAAQmE,oBAC/B,IAAKxf,EAAI,EAAGA,EAAIqb,IAAOrb,EACrB+e,EAAO/e,EAAIqnB,GAAej7B,KAAK4T,EAAI3D,QAGrCsK,WAAWlY,UAAUa,IAAIX,KACvBowB,EACA3yB,KAAK+rB,SAAS9b,EAAOA,EAAQgf,GAC7BgM,GAGJ,OAAOhM,CACT,EACA,GAAQ5sB,UAAU8S,KAAO,SAAchM,EAAK8G,EAAOyT,EAAKgQ,GACtD,GAAmB,iBAARvqB,EAAkB,CAS3B,GARqB,iBAAV8G,GACTyjB,EAAWzjB,EACXA,EAAQ,EACRyT,EAAM1jB,KAAKsE,QACa,iBAARof,IAChBgQ,EAAWhQ,EACXA,EAAM1jB,KAAKsE,QAEM,IAAf6E,EAAI7E,OAAc,CACpB,IAAIZ,EAAOyF,EAAIqZ,WAAW,GACtB9e,EAAO,MACTyF,EAAMzF,EAEV,CACA,QAAiB,IAAbgwB,GAA2C,iBAAbA,EAChC,MAAM,IAAI/hB,UAAU,6BAEtB,GAAwB,iBAAb+hB,IAA0B,GAAQC,WAAWD,GACtD,MAAM,IAAI/hB,UAAU,qBAAuB+hB,EAE/C,KAA0B,iBAARvqB,IAChBA,GAAY,KAEd,GAAI8G,EAAQ,GAAKjQ,KAAKsE,OAAS2L,GAASjQ,KAAKsE,OAASof,EACpD,MAAM,IAAI4P,WAAW,sBAEvB,GAAI5P,GAAOzT,EACT,OAAOjQ,KAKT,IAAI4T,EACJ,GAJA3D,KAAkB,EAClByT,OAAc,IAARA,EAAiB1jB,KAAKsE,OAASof,IAAQ,EACxCva,IAAKA,EAAM,GAEG,iBAARA,EACT,IAAKyK,EAAI3D,EAAO2D,EAAI8P,IAAO9P,EACzB5T,KAAK4T,GAAKzK,MAEP,CACL,IAAImR,EAAQ,GAAiBnR,GAAOA,EAAM,GAAY,IAAI,GAAQA,EAAKuqB,GAAU3kB,YAC7EkgB,EAAM3U,EAAMhW,OAChB,IAAKsP,EAAI,EAAGA,EAAI8P,EAAMzT,IAAS2D,EAC7B5T,KAAK4T,EAAI3D,GAASqK,EAAM1G,EAAIqb,EAEhC,CACA,OAAOjvB,IACT,EACA,GAAoB,oBACtB,IAIE,GAAc,GAAM,CACtB,mEACE,IACF,IAIE,IAtvDck3B,GAsvDc,CAC9B,uDAAuDx3B,EAAS4gB,GAC9D,KACA,KACA,IACM4a,EADFC,GACED,EAAiC,oBAAbx1B,UAA4BA,SAAS01B,cAAgB11B,SAAS01B,cAAclF,SAAM,EACnG,SAASmF,EAAY,CAAC,GAC3B,IACIC,EAAqBC,EADrBC,EAAUH,EAEdG,EAAe,MAAI,IAAI7e,SAAQ,CAACpW,EAASgF,KACvC+vB,EAAsB/0B,EACtBg1B,EAAqBhwB,CAAM,IAE7B,IAgBIkwB,EAAOC,EAhBPC,EAAkBn8B,OAAOo8B,OAAO,CAAC,EAAGJ,GAEpCK,EAAc,iBACdC,EAAQ,CAAC9L,EAAQ+L,KACnB,MAAMA,CAAO,EAKXC,EAAkB,GAWU,oBAAZt2B,UAA2BA,SAAS01B,gBACpDY,EAAkBt2B,SAAS01B,cAAclF,KAEvCgF,IACFc,EAAkBd,GAGlBc,EADuC,IAArCA,EAAgBl4B,QAAQ,SACRk4B,EAAgBpH,OAAO,EAAGoH,EAAgB/vB,QAAQ,SAAU,IAAIpH,YAAY,KAAO,GAEnF,GAGlB42B,EAAS5yB,IACP,IAAI8mB,EAAM,IAAIC,eAGd,OAFAD,EAAI3E,KAAK,MAAOniB,GAAK,GACrB8mB,EAAII,KAAK,MACFJ,EAAIM,YAAY,EAWzByL,EAAY,CAAC7yB,EAAKozB,EAAQC,KACxB,IAAIvM,EAAM,IAAIC,eACdD,EAAI3E,KAAK,MAAOniB,GAAK,GACrB8mB,EAAIwM,aAAe,cACnBxM,EAAIsM,OAAS,KACO,KAAdtM,EAAIK,QAA+B,GAAdL,EAAIK,QAAeL,EAAId,SAC9CoN,EAAOtM,EAAId,UAGbqN,GAAS,EAEXvM,EAAIuM,QAAUA,EACdvM,EAAII,KAAK,KAAK,EAMpB,IAOIqM,EAPA7Y,EAAMiY,EAAe,OAAK70B,QAAQqwB,IAAIqF,KAAK11B,SAC3C2Y,EAAMkc,EAAkB,UAAK70B,QAAQC,MAAMy1B,KAAK11B,SACpDnH,OAAOo8B,OAAOJ,EAASG,GACvBA,EAAkB,KACdH,EAAmB,WAAgBA,EAAmB,UACtDA,EAAqB,cAAGK,EAAcL,EAAqB,aAC3DA,EAAc,OAAGM,EAAQN,EAAc,MAEvCA,EAAoB,aAAGY,EAAaZ,EAAoB,YAC5D,IA4CIc,EA5CAC,EAAgBf,EAAuB,gBAAK,EAQhD,SAASgB,EAAgBC,GACvB,OAAIC,EAA2BC,GAAgBF,GACxCG,EAAOH,EAChB,CACA,SAASI,EAAgBJ,GACvB,OAAIC,EAA2BI,GAAgBL,GACxCM,EAAON,EAChB,CACA,SAASO,EAAiBP,GACxB,OAAIC,EAA2BO,GAAiBR,KAAS,EAClDS,EAAQT,EACjB,CASA,SAASU,EAAiBV,EAAKtzB,GAC7B,OAAIuzB,EAA2BU,GAAiBX,EAAKtzB,GAC9Ck0B,EAAMZ,GAAOtzB,CACtB,CACA,SAASm0B,EAAiBb,EAAKtzB,GAC7B,OAAIuzB,EAA2Ba,GAAiBd,EAAKtzB,GAC9CyzB,EAAOH,GAAOtzB,CACvB,CACA,SAASq0B,EAAiBf,EAAKtzB,GAC7B,OAAIuzB,EAA2Be,GAAiBhB,EAAKtzB,GAC9C4zB,EAAON,GAAOtzB,CACvB,CACA,SAASu0B,EAAkBjB,EAAKtzB,GAC9B,OAAIuzB,EAA2BiB,GAAkBlB,EAAKtzB,KAAS,EACxD+zB,EAAQT,GAAOtzB,CACxB,CA1C0B,iBAAfy0B,aACTC,EAAM,mCA2CR,IAOIR,EAAOS,EAAQlB,EAAiBG,EAAQG,EAASa,EAASC,EAP1DC,GAAQ,EAEZ,SAASC,EAAOC,EAAWn6B,GACpBm6B,GACHN,EAAM75B,EAEV,CAEA,SAASo6B,IACP,IAAIlqB,EAAIooB,EAAWziB,OACnB2hB,EAAe,MAAI6B,EAAQ,IAAIgB,UAAUnqB,GACzCsnB,EAAgB,OAAIoB,EAAS,IAAI0B,WAAWpqB,GAC5CsnB,EAAgB,OAAIsC,EAAS,IAAIvjB,WAAWrG,GAC5CsnB,EAAiB,QAAc,IAAI+C,YAAYrqB,GAC/CsnB,EAAgB,OAAIuB,EAAS,IAAIzT,WAAWpV,GAC5CsnB,EAAiB,QAAI0B,EAAU,IAAIsB,YAAYtqB,GAC/CsnB,EAAiB,QAAIuC,EAAU,IAAIU,aAAavqB,GAChDsnB,EAAiB,QAAIwC,EAAU,IAAIU,aAAaxqB,EAClD,CAEA,IAAIyqB,EAAe,GACfC,EAAa,GACbC,EAAa,GACbC,EAAgB,GAChBpC,GAAqB,EAGzB,SAASqC,IACP,OAAOxC,IAAiByC,CAC1B,CA2CA,IA8CIC,EAnOgB54B,EA8PhB64B,EAkLAC,EACAC,EA5PAC,EAAkB,EAClBC,EAAuB,KACvBC,EAAwB,KAI5B,SAASC,EAAiB51B,GACxBy1B,IACI7D,EAAgC,wBAClCA,EAAgC,uBAAE6D,EAEtC,CACA,SAASI,EAAoB71B,GAK3B,GAJAy1B,IACI7D,EAAgC,wBAClCA,EAAgC,uBAAE6D,GAEb,GAAnBA,IAC2B,OAAzBC,IACFI,cAAcJ,GACdA,EAAuB,MAErBC,GAAuB,CACzB,IAAI7U,EAAW6U,EACfA,EAAwB,KACxB7U,GACF,CAEJ,CACA,SAASmT,EAAM8B,GACTnE,EAAiB,SACnBA,EAAiB,QAAEmE,GAGrBrgB,EADAqgB,EAAO,WAAaA,EAAO,KAE3B1B,GAAQ,EAER0B,GAAQ,2CACR,IAAIj5B,EAAI,IAAIk3B,YAAYgC,aAAaD,GAErC,MADApE,EAAmB70B,GACbA,CACR,CAEA,SAASm5B,EAAUC,GACjB,OAAOA,EAASxV,WAFE,wCAGpB,CAMA,SAASyV,EAAc1U,GACrB,GAAIA,GAAQ4T,GAAkB7C,EAC5B,OAAO,IAAI7hB,WAAW6hB,GAKxB,KAAM,iDACR,CAeA,SAAS4D,EAAoBC,EAAWC,GACtC,IAAIrU,EAAS,EACTsU,EAAU,EACdngC,KAAKogC,WAAa,CAAC,EACnBpgC,KAAKqgC,YAAc,GACnBrgC,KAAKsgC,SAAW,CAAC,EACjBtgC,KAAKugC,iBAAmB,EACxB,IAAI1mB,EAASomB,EACb,SAASO,IACP,IAAIjwB,EAAS,EACTkwB,EAAQ,EACZ,EAAG,CACD,IAAIC,EAAO7mB,EAAOgS,KAClBtb,IAAkB,IAAPmwB,IAAeD,EAC1BA,GAAS,CACX,OAAgB,IAAPC,GACT,OAAOnwB,CACT,CACA,SAASowB,IACP,IAAIngB,EAAQggB,IACZA,IACsB,EAARhgB,GAEZggB,GAEJ,CACAI,EAAc,KAAO/U,EAAShS,EAAOvV,QAAQ,CAC3C,IAAI8hB,EAAOvM,EAAOgS,KACdnI,EAAM8c,IAAmB3U,EAC7B,OAAQzF,GACN,KAAK,EAEH,IADA,IAAIrU,EAAQyuB,IACLzuB,KAAU,GAIf,OAHA8Z,EAAS2U,IAAmB3U,EAC5BA,EAAS2U,IAAmB3U,EACjBhS,EAAOgS,MAEhB,KAAK,IACDsU,EACFK,IACA,MACF,KAAK,EACHA,IACAG,IACA,MACF,KAAK,EACHA,IACA,MACF,KAAK,EACH9U,GAAU,EACV,MACF,KAAK,IACDA,EACF2U,IAINxgC,KAAKugC,iBAAmBJ,EACxB,MACF,KAAK,GAEH,IADIpuB,EAAQyuB,IACLzuB,KAAU,GAAG,CAClB,IAAIlP,EAAO29B,IACXxgC,KAAKogC,WAAWD,KAAatU,EAC7B7rB,KAAKqgC,YAAY37B,KAAKmnB,GACtBA,GAAUhpB,CACZ,CACA,MAAM+9B,EAEV/U,EAASnI,CACX,CACA,IAAImd,EAAWjD,YAAYzC,OAAO2F,eAAeZ,EAAY,QACzDa,EAAcF,EAASv8B,OAASu8B,EAAS,QAAK,EAClD,GAAIE,EAGF,IAFAlnB,EAAS,IAAIU,WAAWwmB,GACxBlV,EAAS,EACFA,EAAShS,EAAOvV,QAAQ,CAC7B,IAAI08B,EAAkBnnB,EAAOgS,KACzBoD,EAAMuR,IACV,GAAuB,GAAnBQ,EAKJ,IADIjvB,EAAQyuB,IACLzuB,KAAU,GAAG,CAClB,IAAI5B,EAAQqwB,IACRl8B,EAASk8B,IACbxgC,KAAKsgC,SAASnwB,GAAS8wB,GAAkBpnB,EAAQgS,EAAQvnB,GACzDunB,GAAUvnB,CACZ,MATEunB,GAAUoD,CAUd,CAEJ,CAyBA,SAASiS,EAAuBC,EAAYC,EAASpjB,GACnD,IAAIqjB,EACJ,OArIF,SAA0BF,GACxB,OAAK/E,GACiB,mBAATkF,MASN3kB,QAAQpW,UAAUsW,MAAK,IAAMkjB,EAAcoB,KARvCG,MAAMH,EAAY,CAAEI,YAAa,gBAAiB1kB,MAAMgS,IAC7D,IAAKA,EAAa,GAChB,KAAM,uCAAyCsS,EAAa,IAE9D,OAAOtS,EAAsB,aAAG,IAC/B9R,OAAM,IAAMgjB,EAAcoB,IAInC,CAyHSK,CAAiBL,GAAYtkB,MAAMqS,IACxCmS,EAAcnS,EACP0O,YAAY6D,YAAYvS,EAAQkS,MACtCvkB,MAAM6kB,IACPxC,EAAsB,IAAIc,EAAoBqB,EAAaK,EAASphB,QAC7DohB,KACN7kB,KAAKmB,GAAWR,IACjB8B,EAAI,0CAA0C9B,KAC9CqgB,EAAMrgB,EAAO,GAEjB,CAkDA,SAASmkB,GAAW3R,GAClBhwB,KAAKsF,KAAO,aACZtF,KAAK4hC,QAAU,gCAAgC5R,KAC/ChwB,KAAKgwB,OAASA,CAChB,CAjNK6P,EADLZ,EAAiB,iBApOG54B,EAsOU44B,EAA5BA,EArOIzD,EAAoB,WACfA,EAAoB,WAAEn1B,EAAM21B,GAE9BA,EAAkB31B,GAwV3B25B,EAAoB39B,UAAUw/B,QAAU,SAAS1B,EAAStU,GACxD,OAAO7rB,KAAKogC,WAAWD,GAAWtU,CACpC,EACAmU,EAAoB39B,UAAUy/B,SAAW,SAASjW,GAIhD,IAHA,IAEIkW,EAFA9M,EAAK,EACLD,EAAKh1B,KAAKqgC,YAAY/7B,OAEnB2wB,EAAKD,GACV+M,EAAMn0B,KAAKiH,OAAOogB,EAAKD,GAAM,GACzBh1B,KAAKqgC,YAAY0B,GAAOlW,EAC1BmJ,EAAK+M,EAEL9M,EAAK8M,EAAM,EAGf,OAAO9M,EAAKj1B,KAAKugC,iBAAmB,CACtC,EACAP,EAAoB39B,UAAU2/B,WAAa,SAASC,EAASC,GAC3D,OAAOliC,KAAK8hC,SAASG,IAAYjiC,KAAK8hC,SAASI,EACjD,EACAlC,EAAoB39B,UAAU8/B,QAAU,SAAStW,GAC/C,IAAI1b,EAAQnQ,KAAK8hC,SAASjW,GAC1B,OAAO7rB,KAAKsgC,SAASnwB,IAAU,iBAAmBA,EAAQ,GAC5D,EAoEA,IAAIiyB,GAAoC,oBAAfpY,YAA6B,IAAIA,YAAY,aAAU,EAC5EiX,GAAoB,CAACoB,EAAaC,EAAKC,KAGzC,IAFA,IAAIC,EAASF,EAAMC,EACfE,EAASH,EACND,EAAYI,MAAaA,GAAUD,MAAWC,EACrD,GAAIA,EAASH,EAAM,IAAMD,EAAYxoB,QAAUuoB,GAC7C,OAAOA,GAAY3d,OAAO4d,EAAYtW,SAASuW,EAAKG,IAGtD,IADA,IAAI12B,EAAM,GACHu2B,EAAMG,GAAQ,CACnB,IAAIC,EAAKL,EAAYC,KACrB,GAAW,IAALI,EAAN,CAIA,IAAIC,EAA0B,GAArBN,EAAYC,KACrB,GAAkB,MAAR,IAALI,GAAL,CAIA,IAAIE,EAA0B,GAArBP,EAAYC,KAMrB,IAJEI,EADgB,MAAR,IAALA,IACQ,GAALA,IAAY,GAAKC,GAAM,EAAIC,GAEtB,EAALF,IAAW,GAAKC,GAAM,GAAKC,GAAM,EAAyB,GAArBP,EAAYC,MAEhD,MACPv2B,GAAOoD,OAAOigB,aAAasT,OACtB,CACL,IAAIG,EAAKH,EAAK,MACd32B,GAAOoD,OAAOigB,aAAa,MAAQyT,GAAM,GAAI,MAAa,KAALA,EACvD,CAZA,MAFE92B,GAAOoD,OAAOigB,cAAmB,GAALsT,IAAY,EAAIC,EAH9C,MAFE52B,GAAOoD,OAAOigB,aAAasT,EAoB/B,CACA,OAAO32B,CAAG,EAER+2B,GAAwBC,IAC1B,KAAOA,EAAUz+B,OAAS,GACxBy+B,EAAUtC,OAAVsC,CAAkBvH,EACpB,EAyBEwH,GAAe,CAACvG,EAAK8F,IAAmB9F,EAAMwE,GAAkBnD,EAAQrB,EAAK8F,GAAkB,GAI/FtV,GAAO,CAAEgW,MAAQ58B,GAA4B,MAAnBA,EAAKqG,OAAO,GAAYw2B,UAAYpD,GAC9C,gEACC9a,KAAK8a,GAAU15B,MAAM,GACvC+8B,eAAgB,CAACv4B,EAAOuX,KAEzB,IADA,IAAI8E,EAAK,EACArT,EAAIhJ,EAAMtG,OAAS,EAAGsP,GAAK,EAAGA,IAAK,CAC1C,IAAI3M,EAAO2D,EAAMgJ,GACJ,MAAT3M,EACF2D,EAAMuQ,OAAOvH,EAAG,GACE,OAAT3M,GACT2D,EAAMuQ,OAAOvH,EAAG,GAChBqT,KACSA,IACTrc,EAAMuQ,OAAOvH,EAAG,GAChBqT,IAEJ,CACA,GAAI9E,EACF,KAAO8E,EAAIA,IACTrc,EAAMoc,QAAQ,MAGlB,OAAOpc,CAAK,EACXxD,UAAYf,IACb,IAAIwc,EAAaoK,GAAKgW,MAAM58B,GAAO+8B,EAAoC,MAApB/8B,EAAKuuB,QAAQ,GAQhE,OAPAvuB,EAAO4mB,GAAKkW,eAAe98B,EAAKnC,MAAM,KAAK+K,QAAQ7M,KAAQA,KAAKygB,GAAYvb,KAAK,OACnEub,IACZxc,EAAO,KAELA,GAAQ+8B,IACV/8B,GAAQ,MAEFwc,EAAa,IAAM,IAAMxc,CAAI,EACpCoE,QAAUpE,IACX,IAAIkK,EAAS0c,GAAKiW,UAAU78B,GAAO8d,EAAO5T,EAAO,GAAI7F,EAAM6F,EAAO,GAClE,OAAK4T,GAASzZ,GAGVA,IACFA,EAAMA,EAAIkqB,OAAO,EAAGlqB,EAAIpG,OAAS,IAE5B6f,EAAOzZ,GALL,GAKQ,EAChBH,SAAWlE,IACZ,GAAa,MAATA,EAAc,MAAO,IAGzB,IAAIic,GADJjc,GADAA,EAAO4mB,GAAK7lB,UAAUf,IACV4F,QAAQ,MAAO,KACNpH,YAAY,KACjC,OAAmB,IAAfyd,EAAyBjc,EACtBA,EAAKuuB,OAAOtS,EAAY,EAAE,EAChChb,KAAM,WACP,IAAI8C,EAAQyG,MAAMxO,UAAU+D,MAAM7D,KAAKoc,WACvC,OAAOsO,GAAK7lB,UAAUgD,EAAM9C,KAAK,KACnC,EAAG4lB,MAAO,CAAC4I,EAAG5N,IAAM+E,GAAK7lB,UAAU0uB,EAAI,IAAM5N,IAMzCmb,GAAcC,IAAUD,GALP,MACnB,GAAqB,iBAAVppB,QAA0D,mBAA7BA,OAAwB,gBAC9D,OAAQqpB,GAASrpB,OAAOD,gBAAgBspB,GACnCzF,EAAM,mBAAmB,EAEO0F,IAAkBD,GACvDE,GAAU,CAAEj9B,QAAS,WAEvB,IADA,IAAIoc,EAAe,GAAIC,GAAmB,EACjChP,EAAI+K,UAAUra,OAAS,EAAGsP,IAAM,IAAMgP,EAAkBhP,IAAK,CACpE,IAAIvN,EAAOuN,GAAK,EAAI+K,UAAU/K,GAAKuX,GAAGzI,MACtC,GAAmB,iBAARrc,EACT,MAAM,IAAIsL,UAAU,6CACf,IAAKtL,EACV,MAAO,GAETsc,EAAetc,EAAO,IAAMsc,EAC5BC,EAAmBqK,GAAKgW,MAAM58B,EAChC,CAEA,OAAQuc,EAAmB,IAAM,KADjCD,EAAesK,GAAKkW,eAAexgB,EAAaze,MAAM,KAAK+K,QAAQ7M,KAAQA,KAAKwgB,GAAkBtb,KAAK,OAChD,GACzD,EAAGuD,SAAU,CAAC44B,EAAO14B,KAGnB,SAASkrB,EAAKhC,GAEZ,IADA,IAAIhkB,EAAQ,EACLA,EAAQgkB,EAAI3vB,QACE,KAAf2vB,EAAIhkB,GADiBA,KAI3B,IADA,IAAIyT,EAAMuQ,EAAI3vB,OAAS,EAChBof,GAAO,GACK,KAAbuQ,EAAIvQ,GADOA,KAGjB,OAAIzT,EAAQyT,EAAY,GACjBuQ,EAAI7tB,MAAM6J,EAAOyT,EAAMzT,EAAQ,EACxC,CAbAwzB,EAAQD,GAAQj9B,QAAQk9B,GAAO7O,OAAO,GACtC7pB,EAAKy4B,GAAQj9B,QAAQwE,GAAI6pB,OAAO,GAiBhC,IAJA,IAAI8O,EAAYzN,EAAKwN,EAAMv/B,MAAM,MAC7By/B,EAAU1N,EAAKlrB,EAAG7G,MAAM,MACxBI,EAASsJ,KAAK0C,IAAIozB,EAAUp/B,OAAQq/B,EAAQr/B,QAC5Cs/B,EAAkBt/B,EACbsP,EAAI,EAAGA,EAAItP,EAAQsP,IAC1B,GAAI8vB,EAAU9vB,KAAO+vB,EAAQ/vB,GAAI,CAC/BgwB,EAAkBhwB,EAClB,KACF,CAEF,IAAIiwB,EAAc,GAClB,IAASjwB,EAAIgwB,EAAiBhwB,EAAI8vB,EAAUp/B,OAAQsP,IAClDiwB,EAAYn/B,KAAK,MAGnB,OADAm/B,EAAcA,EAAY9iB,OAAO4iB,EAAQv9B,MAAMw9B,KAC5Bt8B,KAAK,IAAI,GAE1Bw8B,GAA0B,GAC1BC,GAAmBh4B,IAErB,IADA,IAAIkjB,EAAM,EACDrb,EAAI,EAAGA,EAAI7H,EAAIzH,SAAUsP,EAAG,CACnC,IAAImhB,EAAIhpB,EAAIyW,WAAW5O,GACnBmhB,GAAK,IACP9F,IACS8F,GAAK,KACd9F,GAAO,EACE8F,GAAK,OAASA,GAAK,OAC5B9F,GAAO,IACLrb,GAEFqb,GAAO,CAEX,CACA,OAAOA,CAAG,EAER+U,GAAoB,CAACj4B,EAAKk4B,EAAMC,EAAQC,KAC1C,KAAMA,EAAkB,GAAI,OAAO,EAGnC,IAFA,IAAIC,EAAWF,EACX1B,EAAS0B,EAASC,EAAkB,EAC/BvwB,EAAI,EAAGA,EAAI7H,EAAIzH,SAAUsP,EAAG,CACnC,IAAIvF,EAAItC,EAAIyW,WAAW5O,GAKvB,GAJIvF,GAAK,OAASA,GAAK,QAErBA,EAAI,QAAc,KAAJA,IAAa,IAAW,KAD7BtC,EAAIyW,aAAa5O,IAGxBvF,GAAK,IAAK,CACZ,GAAI61B,GAAU1B,EAAQ,MACtByB,EAAKC,KAAY71B,CACnB,MAAO,GAAIA,GAAK,KAAM,CACpB,GAAI61B,EAAS,GAAK1B,EAAQ,MAC1ByB,EAAKC,KAAY,IAAM71B,GAAK,EAC5B41B,EAAKC,KAAY,IAAU,GAAJ71B,CACzB,MAAO,GAAIA,GAAK,MAAO,CACrB,GAAI61B,EAAS,GAAK1B,EAAQ,MAC1ByB,EAAKC,KAAY,IAAM71B,GAAK,GAC5B41B,EAAKC,KAAY,IAAM71B,GAAK,EAAI,GAChC41B,EAAKC,KAAY,IAAU,GAAJ71B,CACzB,KAAO,CACL,GAAI61B,EAAS,GAAK1B,EAAQ,MAC1ByB,EAAKC,KAAY,IAAM71B,GAAK,GAC5B41B,EAAKC,KAAY,IAAM71B,GAAK,GAAK,GACjC41B,EAAKC,KAAY,IAAM71B,GAAK,EAAI,GAChC41B,EAAKC,KAAY,IAAU,GAAJ71B,CACzB,CACF,CAEA,OADA41B,EAAKC,GAAU,EACRA,EAASE,CAAQ,EAE1B,SAASC,GAAmBC,EAASC,EAAajgC,GAChD,IAAI2qB,EAAM3qB,EAAS,EAAIA,EAASy/B,GAAgBO,GAAW,EACvDE,EAAU,IAAI3zB,MAAMoe,GACpBwV,EAAkBT,GAAkBM,EAASE,EAAS,EAAGA,EAAQlgC,QAErE,OADIigC,IAAaC,EAAQlgC,OAASmgC,GAC3BD,CACT,CACA,IAwkEIE,GAnjEAC,GAAM,CAAEC,KAAM,GAAI,IAAAC,GACtB,EAAG,QAAAC,GACH,EAAG,QAAAC,CAASxX,EAAKyX,GACfL,GAAIC,KAAKrX,GAAO,CAAE7I,MAAO,GAAIsO,OAAQ,GAAIgS,OACzC7Z,GAAG8Z,eAAe1X,EAAKoX,GAAIvU,WAC7B,EAAGA,WAAY,CAAE,IAAApF,CAAKC,GACpB,IAAIia,EAAMP,GAAIC,KAAK3Z,EAAOnY,KAAKqyB,MAC/B,IAAKD,EACH,MAAM,IAAI/Z,GAAGkB,WAAW,IAE1BpB,EAAOia,IAAMA,EACbja,EAAOma,UAAW,CACpB,EAAG,KAAA7Z,CAAMN,GACPA,EAAOia,IAAIF,IAAIK,MAAMpa,EAAOia,IAC9B,EAAG,KAAAG,CAAMpa,GACPA,EAAOia,IAAIF,IAAIK,MAAMpa,EAAOia,IAC9B,EAAG,IAAAtZ,CAAKX,EAAQpR,EAAQgS,EAAQvnB,EAAQuzB,GACtC,IAAK5M,EAAOia,MAAQja,EAAOia,IAAIF,IAAIM,SACjC,MAAM,IAAIna,GAAGkB,WAAW,IAG1B,IADA,IAAIkZ,EAAY,EACP3xB,EAAI,EAAGA,EAAItP,EAAQsP,IAAK,CAC/B,IAAIrD,EACJ,IACEA,EAAS0a,EAAOia,IAAIF,IAAIM,SAASra,EAAOia,IAC1C,CAAE,MAAOx+B,GACP,MAAM,IAAIykB,GAAGkB,WAAW,GAC1B,CACA,QAAe,IAAX9b,GAAmC,IAAdg1B,EACvB,MAAM,IAAIpa,GAAGkB,WAAW,GAE1B,GAAI9b,QAAsC,MAC1Cg1B,IACA1rB,EAAOgS,EAASjY,GAAKrD,CACvB,CAIA,OAHIg1B,IACFta,EAAOnY,KAAKmZ,UAAY1e,KAAKE,OAExB83B,CACT,EAAG,KAAAvZ,CAAMf,EAAQpR,EAAQgS,EAAQvnB,EAAQuzB,GACvC,IAAK5M,EAAOia,MAAQja,EAAOia,IAAIF,IAAIQ,SACjC,MAAM,IAAIra,GAAGkB,WAAW,IAE1B,IACE,IAAK,IAAIzY,EAAI,EAAGA,EAAItP,EAAQsP,IAC1BqX,EAAOia,IAAIF,IAAIQ,SAASva,EAAOia,IAAKrrB,EAAOgS,EAASjY,GAExD,CAAE,MAAOlN,GACP,MAAM,IAAIykB,GAAGkB,WAAW,GAC1B,CAIA,OAHI/nB,IACF2mB,EAAOnY,KAAKmZ,UAAY1e,KAAKE,OAExBmG,CACT,GAAK6xB,gBAAiB,CAAEH,SAASJ,GA3EV,MACrB,IAAKpB,GAAwBx/B,OAAQ,CACnC,IAAIiM,EAAS,KAYb,GAXqB,oBAAV2J,QAAiD,mBAAjBA,OAAOwrB,OAEjC,QADfn1B,EAAS2J,OAAOwrB,OAAO,cAErBn1B,GAAU,MAEgB,mBAAZo1B,UAED,QADfp1B,EAASo1B,cAEPp1B,GAAU,OAGTA,EACH,OAAO,KAETuzB,GAA0BO,GAAmB9zB,GAAQ,EACvD,CACA,OAAOuzB,GAAwBrD,OAAO,EAyD/BmF,GACN,QAAAJ,CAASN,EAAK/7B,GACH,OAARA,GAAwB,KAARA,GAClBoa,EAAI0d,GAAkBiE,EAAIlS,OAAQ,IAClCkS,EAAIlS,OAAS,IAEF,GAAP7pB,GAAU+7B,EAAIlS,OAAOtuB,KAAKyE,EAElC,EAAG,KAAAk8B,CAAMH,GACHA,EAAIlS,QAAUkS,EAAIlS,OAAO1uB,OAAS,IACpCif,EAAI0d,GAAkBiE,EAAIlS,OAAQ,IAClCkS,EAAIlS,OAAS,GAEjB,EAAG6S,aAAaX,IACP,CAAEY,QAAS,MAAOC,QAAS,EAAGC,QAAS,IAAKC,QAAS,MAAOC,KAAM,CAAC,EAAG,GAAI,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,KACjLC,aAAY,CAACjB,EAAKkB,EAAkBlrB,IAC9B,EACNmrB,iBAAiBnB,GACX,CAAC,GAAI,KACToB,iBAAkB,CAAE,QAAAd,CAASN,EAAK/7B,GACzB,OAARA,GAAwB,KAARA,GAClBmW,EAAI2hB,GAAkBiE,EAAIlS,OAAQ,IAClCkS,EAAIlS,OAAS,IAEF,GAAP7pB,GAAU+7B,EAAIlS,OAAOtuB,KAAKyE,EAElC,EAAG,KAAAk8B,CAAMH,GACHA,EAAIlS,QAAUkS,EAAIlS,OAAO1uB,OAAS,IACpCgb,EAAI2hB,GAAkBiE,EAAIlS,OAAQ,IAClCkS,EAAIlS,OAAS,GAEjB,IAMIuT,GAAa1jC,IACfA,EAFgB,CAACA,GAEQ,MAFY+K,KAAKC,KAAKhL,EAEtB,OAAlB2jC,CAAY3jC,GACnB,IAAI45B,EAAMgK,GAA6B,MAAO5jC,GAC9C,OAAK45B,EARU,EAAChX,EAAS5iB,KACzBi7B,EAAO3oB,KAAK,EAAGsQ,EAASA,EAAU5iB,GAC3B4iB,GAOAihB,CAAWjK,EAAK55B,GADN,CACW,EAE1B8jC,GAAQ,CAAEC,UAAW,KAAMvW,MAAMA,GAC5BsW,GAAMtZ,WAAW,KAAM,IAAK,MAAa,GAC/C,UAAAA,CAAWL,EAAQ1nB,EAAMyC,EAAMwlB,GAChC,GAAIpC,GAAG0b,SAAS9+B,IAASojB,GAAG2b,OAAO/+B,GACjC,MAAM,IAAIojB,GAAGkB,WAAW,IAErBsa,GAAMC,YACTD,GAAMC,UAAY,CAAEl8B,IAAK,CAAEoI,KAAM,CAAE4Z,QAASia,GAAMxW,SAASzD,QAASE,QAAS+Z,GAAMxW,SAASvD,QAASG,OAAQ4Z,GAAMxW,SAASpD,OAAQO,MAAOqZ,GAAMxW,SAAS7C,MAAOE,OAAQmZ,GAAMxW,SAAS3C,OAAQK,OAAQ8Y,GAAMxW,SAAStC,OAAQC,MAAO6Y,GAAMxW,SAASrC,MAAOC,QAAS4Y,GAAMxW,SAASpC,QAASC,QAAS2Y,GAAMxW,SAASnC,SAAW/C,OAAQ,CAAEkB,OAAQwa,GAAMvW,WAAWjE,SAAYd,KAAM,CAAEvY,KAAM,CAAE4Z,QAASia,GAAMxW,SAASzD,QAASE,QAAS+Z,GAAMxW,SAASvD,SAAW3B,OAAQ,CAAEkB,OAAQwa,GAAMvW,WAAWjE,OAAQP,KAAM+a,GAAMvW,WAAWxE,KAAMI,MAAO2a,GAAMvW,WAAWpE,MAAO+a,SAAUJ,GAAMvW,WAAW2W,SAAUC,KAAML,GAAMvW,WAAW4W,KAAMC,MAAON,GAAMvW,WAAW6W,QAAWC,KAAM,CAAEp0B,KAAM,CAAE4Z,QAASia,GAAMxW,SAASzD,QAASE,QAAS+Z,GAAMxW,SAASvD,QAASsB,SAAUyY,GAAMxW,SAASjC,UAAYjD,OAAQ,CAAC,GAAKkc,OAAQ,CAAEr0B,KAAM,CAAE4Z,QAASia,GAAMxW,SAASzD,QAASE,QAAS+Z,GAAMxW,SAASvD,SAAW3B,OAAQE,GAAGic,qBAEv3B,IAAIt0B,EAAOqY,GAAGkC,WAAWL,EAAQ1nB,EAAMyC,EAAMwlB,GAsB7C,OArBIpC,GAAGmF,MAAMxd,EAAK/K,OAChB+K,EAAKqd,SAAWwW,GAAMC,UAAUl8B,IAAIoI,KACpCA,EAAKsd,WAAauW,GAAMC,UAAUl8B,IAAIugB,OACtCnY,EAAKu0B,SAAW,CAAC,GACRlc,GAAGC,OAAOtY,EAAK/K,OACxB+K,EAAKqd,SAAWwW,GAAMC,UAAUvb,KAAKvY,KACrCA,EAAKsd,WAAauW,GAAMC,UAAUvb,KAAKJ,OACvCnY,EAAKw0B,UAAY,EACjBx0B,EAAKu0B,SAAW,MACPlc,GAAGoc,OAAOz0B,EAAK/K,OACxB+K,EAAKqd,SAAWwW,GAAMC,UAAUM,KAAKp0B,KACrCA,EAAKsd,WAAauW,GAAMC,UAAUM,KAAKjc,QAC9BE,GAAGqc,SAAS10B,EAAK/K,QAC1B+K,EAAKqd,SAAWwW,GAAMC,UAAUO,OAAOr0B,KACvCA,EAAKsd,WAAauW,GAAMC,UAAUO,OAAOlc,QAE3CnY,EAAKmZ,UAAY1e,KAAKE,MAClBuf,IACFA,EAAOqa,SAAS/hC,GAAQwN,EACxBka,EAAOf,UAAYnZ,EAAKmZ,WAEnBnZ,CACT,EAAG20B,wBAAwB30B,GACpBA,EAAKu0B,SACNv0B,EAAKu0B,SAAStb,SAAiBjZ,EAAKu0B,SAAStb,SAAS,EAAGjZ,EAAKw0B,WAC3D,IAAI/sB,WAAWzH,EAAKu0B,UAFA,IAAI9sB,WAAW,GAGzC,iBAAAmtB,CAAkB50B,EAAM60B,GACzB,IAAIC,EAAe90B,EAAKu0B,SAAWv0B,EAAKu0B,SAAS/iC,OAAS,EAC1D,KAAIsjC,GAAgBD,GAApB,CAEAA,EAAc/5B,KAAK4C,IAAIm3B,EAAaC,GAAgBA,EADxB,QAC+D,EAAI,SAAW,GACtF,GAAhBA,IAAmBD,EAAc/5B,KAAK4C,IAAIm3B,EAAa,MAC3D,IAAIE,EAAc/0B,EAAKu0B,SACvBv0B,EAAKu0B,SAAW,IAAI9sB,WAAWotB,GAC3B70B,EAAKw0B,UAAY,GAAGx0B,EAAKu0B,SAASnkC,IAAI2kC,EAAY9b,SAAS,EAAGjZ,EAAKw0B,WAAY,EAN5C,CAOzC,EAAG,iBAAAQ,CAAkBh1B,EAAMi1B,GACzB,GAAIj1B,EAAKw0B,WAAaS,EACtB,GAAe,GAAXA,EACFj1B,EAAKu0B,SAAW,KAChBv0B,EAAKw0B,UAAY,MACZ,CACL,IAAIO,EAAc/0B,EAAKu0B,SACvBv0B,EAAKu0B,SAAW,IAAI9sB,WAAWwtB,GAC3BF,GACF/0B,EAAKu0B,SAASnkC,IAAI2kC,EAAY9b,SAAS,EAAGne,KAAK0C,IAAIy3B,EAASj1B,EAAKw0B,aAEnEx0B,EAAKw0B,UAAYS,CACnB,CACF,EAAG5X,SAAU,CAAE,OAAAzD,CAAQ5Z,GACrB,IAAI+Z,EAAO,CAAC,EAsBZ,OArBAA,EAAKU,IAAMpC,GAAGqc,SAAS10B,EAAK/K,MAAQ+K,EAAKlJ,GAAK,EAC9CijB,EAAKF,IAAM7Z,EAAKlJ,GAChBijB,EAAK9kB,KAAO+K,EAAK/K,KACjB8kB,EAAKmb,MAAQ,EACbnb,EAAKob,IAAM,EACXpb,EAAKqb,IAAM,EACXrb,EAAKsY,KAAOryB,EAAKqyB,KACbha,GAAGmF,MAAMxd,EAAK/K,MAChB8kB,EAAKhqB,KAAO,KACHsoB,GAAGC,OAAOtY,EAAK/K,MACxB8kB,EAAKhqB,KAAOiQ,EAAKw0B,UACRnc,GAAGoc,OAAOz0B,EAAK/K,MACxB8kB,EAAKhqB,KAAOiQ,EAAKo0B,KAAK5iC,OAEtBuoB,EAAKhqB,KAAO,EAEdgqB,EAAK0C,MAAQ,IAAIhiB,KAAKuF,EAAKmZ,WAC3BY,EAAK2C,MAAQ,IAAIjiB,KAAKuF,EAAKmZ,WAC3BY,EAAK4C,MAAQ,IAAIliB,KAAKuF,EAAKmZ,WAC3BY,EAAKsb,QAAU,KACftb,EAAKub,OAASx6B,KAAKC,KAAKgf,EAAKhqB,KAAOgqB,EAAKsb,SAClCtb,CACT,EAAG,OAAAD,CAAQ9Z,EAAM+Z,QACG,IAAdA,EAAK9kB,OACP+K,EAAK/K,KAAO8kB,EAAK9kB,WAEI,IAAnB8kB,EAAKZ,YACPnZ,EAAKmZ,UAAYY,EAAKZ,gBAEN,IAAdY,EAAKhqB,MACP8jC,GAAMmB,kBAAkBh1B,EAAM+Z,EAAKhqB,KAEvC,EAAG,MAAAkqB,CAAOC,EAAQ1nB,GAChB,MAAM6lB,GAAGiC,cAAc,GACzB,EAAGE,MAAK,CAACN,EAAQ1nB,EAAMyC,EAAMwlB,IACpBoZ,GAAMtZ,WAAWL,EAAQ1nB,EAAMyC,EAAMwlB,GAC3C,MAAAC,CAAO6a,EAAUC,EAASC,GAC3B,GAAIpd,GAAGmF,MAAM+X,EAAStgC,MAAO,CAC3B,IAAIygC,EACJ,IACEA,EAAWrd,GAAGsd,WAAWH,EAASC,EACpC,CAAE,MAAO7hC,GACT,CACA,GAAI8hC,EACF,IAAK,IAAI50B,KAAK40B,EAASnB,SACrB,MAAM,IAAIlc,GAAGkB,WAAW,GAG9B,QACOgc,EAASrb,OAAOqa,SAASgB,EAAS/iC,MACzC+iC,EAASrb,OAAOf,UAAY1e,KAAKE,MACjC46B,EAAS/iC,KAAOijC,EAChBD,EAAQjB,SAASkB,GAAYF,EAC7BC,EAAQrc,UAAYoc,EAASrb,OAAOf,UACpCoc,EAASrb,OAASsb,CACpB,EAAG,MAAAza,CAAOb,EAAQ1nB,UACT0nB,EAAOqa,SAAS/hC,GACvB0nB,EAAOf,UAAY1e,KAAKE,KAC1B,EAAG,KAAAqgB,CAAMd,EAAQ1nB,GACf,IAAIwN,EAAOqY,GAAGsd,WAAWzb,EAAQ1nB,GACjC,IAAK,IAAIsO,KAAKd,EAAKu0B,SACjB,MAAM,IAAIlc,GAAGkB,WAAW,WAEnBW,EAAOqa,SAAS/hC,GACvB0nB,EAAOf,UAAY1e,KAAKE,KAC1B,EAAG,OAAAsgB,CAAQjb,GACT,IAAIga,EAAU,CAAC,IAAK,MACpB,IAAK,IAAI/pB,KAAO+P,EAAKu0B,SACdv0B,EAAKu0B,SAAS/kC,eAAeS,IAGlC+pB,EAAQpoB,KAAK3B,GAEf,OAAO+pB,CACT,EAAG,OAAAkB,CAAQhB,EAAQ0b,EAASC,GAC1B,IAAI71B,EAAO6zB,GAAMtZ,WAAWL,EAAQ0b,EAAS,MAAa,GAE1D,OADA51B,EAAKo0B,KAAOyB,EACL71B,CACT,EAAG,QAAAob,CAASpb,GACV,IAAKqY,GAAGoc,OAAOz0B,EAAK/K,MAClB,MAAM,IAAIojB,GAAGkB,WAAW,IAE1B,OAAOvZ,EAAKo0B,IACd,GAAK9W,WAAY,CAAE,IAAAxE,CAAKX,EAAQpR,EAAQgS,EAAQvnB,EAAQwnB,GACtD,IAAIub,EAAWpc,EAAOnY,KAAKu0B,SAC3B,GAAIvb,GAAYb,EAAOnY,KAAKw0B,UAAW,OAAO,EAC9C,IAAIzkC,EAAO+K,KAAK0C,IAAI2a,EAAOnY,KAAKw0B,UAAYxb,EAAUxnB,GACtD,GAAIzB,EAAO,GAAKwkC,EAAStb,SACvBlS,EAAO3W,IAAImkC,EAAStb,SAASD,EAAUA,EAAWjpB,GAAOgpB,QAEzD,IAAK,IAAIjY,EAAI,EAAGA,EAAI/Q,EAAM+Q,IAAKiG,EAAOgS,EAASjY,GAAKyzB,EAASvb,EAAWlY,GAE1E,OAAO/Q,CACT,EAAG,KAAAmpB,CAAMf,EAAQpR,EAAQgS,EAAQvnB,EAAQwnB,EAAU8c,GAIjD,GAHI/uB,EAAOA,SAAWwjB,EAAMxjB,SAC1B+uB,GAAS,IAENtkC,EAAQ,OAAO,EACpB,IAAIwO,EAAOmY,EAAOnY,KAElB,GADAA,EAAKmZ,UAAY1e,KAAKE,MAClBoM,EAAOkS,YAAcjZ,EAAKu0B,UAAYv0B,EAAKu0B,SAAStb,UAAW,CACjE,GAAI6c,EAGF,OAFA91B,EAAKu0B,SAAWxtB,EAAOkS,SAASF,EAAQA,EAASvnB,GACjDwO,EAAKw0B,UAAYhjC,EACVA,EACF,GAAuB,IAAnBwO,EAAKw0B,WAAgC,IAAbxb,EAGjC,OAFAhZ,EAAKu0B,SAAWxtB,EAAOzT,MAAMylB,EAAQA,EAASvnB,GAC9CwO,EAAKw0B,UAAYhjC,EACVA,EACF,GAAIwnB,EAAWxnB,GAAUwO,EAAKw0B,UAEnC,OADAx0B,EAAKu0B,SAASnkC,IAAI2W,EAAOkS,SAASF,EAAQA,EAASvnB,GAASwnB,GACrDxnB,CAEX,CAEA,GADAqiC,GAAMe,kBAAkB50B,EAAMgZ,EAAWxnB,GACrCwO,EAAKu0B,SAAStb,UAAYlS,EAAOkS,SACnCjZ,EAAKu0B,SAASnkC,IAAI2W,EAAOkS,SAASF,EAAQA,EAASvnB,GAASwnB,QAE5D,IAAK,IAAIlY,EAAI,EAAGA,EAAItP,EAAQsP,IAC1Bd,EAAKu0B,SAASvb,EAAWlY,GAAKiG,EAAOgS,EAASjY,GAIlD,OADAd,EAAKw0B,UAAY15B,KAAK4C,IAAIsC,EAAKw0B,UAAWxb,EAAWxnB,GAC9CA,CACT,EAAG,MAAA6nB,CAAOlB,EAAQY,EAAQO,GACxB,IAAIN,EAAWD,EAQf,GAPe,IAAXO,EACFN,GAAYb,EAAOa,SACC,IAAXM,GACLjB,GAAGC,OAAOH,EAAOnY,KAAK/K,QACxB+jB,GAAYb,EAAOnY,KAAKw0B,WAGxBxb,EAAW,EACb,MAAM,IAAIX,GAAGkB,WAAW,IAE1B,OAAOP,CACT,EAAG,QAAAib,CAAS9b,EAAQY,EAAQvnB,GAC1BqiC,GAAMe,kBAAkBzc,EAAOnY,KAAM+Y,EAASvnB,GAC9C2mB,EAAOnY,KAAKw0B,UAAY15B,KAAK4C,IAAIya,EAAOnY,KAAKw0B,UAAWzb,EAASvnB,EACnE,EAAG,IAAA0iC,CAAK/b,EAAQ3mB,EAAQwnB,EAAU+c,EAAMroB,GACtC,IAAK2K,GAAGC,OAAOH,EAAOnY,KAAK/K,MACzB,MAAM,IAAIojB,GAAGkB,WAAW,IAE1B,IAAIoQ,EACAqM,EACAzB,EAAWpc,EAAOnY,KAAKu0B,SAC3B,GAAc,EAAR7mB,GAAc6mB,EAASxtB,SAAWwjB,EAAMxjB,OAGvC,CAUL,IATIiS,EAAW,GAAKA,EAAWxnB,EAAS+iC,EAAS/iC,UAE7C+iC,EADEA,EAAStb,SACAsb,EAAStb,SAASD,EAAUA,EAAWxnB,GAEvCuM,MAAMxO,UAAU+D,MAAM7D,KAAK8kC,EAAUvb,EAAUA,EAAWxnB,IAGzEwkC,GAAY,IACZrM,EAAM8J,GAAUjiC,IAEd,MAAM,IAAI6mB,GAAGkB,WAAW,IAE1BgR,EAAMn6B,IAAImkC,EAAU5K,EACtB,MAhBEqM,GAAY,EACZrM,EAAM4K,EAAS5T,WAgBjB,MAAO,CAAEgJ,MAAKqM,YAChB,EAAG7B,MAAK,CAAChc,EAAQpR,EAAQgS,EAAQvnB,EAAQykC,KACvCpC,GAAMvW,WAAWpE,MAAMf,EAAQpR,EAAQ,EAAGvV,EAAQunB,GAAQ,GACnD,KAiBLmd,GAAiBxN,EAAwB,gBAAK,GAgD9CyN,GAAa,CAACC,EAASC,KACzB,IAAIphC,EAAO,EAGX,OAFImhC,IAASnhC,GAAQ,KACjBohC,IAAUphC,GAAQ,KACfA,CAAI,EAETojB,GAAK,CAAEhH,KAAM,KAAMilB,OAAQ,GAAIC,QAAS,CAAC,EAAGC,QAAS,GAAIC,UAAW,EAAGC,UAAW,KAAMC,YAAa,IAAKC,aAAa,EAAOC,mBAAmB,EAAMtd,WAAY,KAAMe,cAAe,CAAC,EAAGwc,YAAa,KAAMC,eAAgB,EAAG,UAAAC,CAAWzjC,EAAMka,EAAO,CAAC,GAE7P,KADAla,EAAOm9B,GAAQj9B,QAAQF,IACZ,MAAO,CAAEA,KAAM,GAAIyM,KAAM,MAGpC,IADAyN,EAAO/gB,OAAOo8B,OADC,CAAEmO,cAAc,EAAMC,cAAe,GACrBzpB,IACtBypB,cAAgB,EACvB,MAAM,IAAI7e,GAAGkB,WAAW,IAK1B,IAHA,IAAIzhB,EAAQvE,EAAKnC,MAAM,KAAK+K,QAAQ7M,KAAQA,IACxC6nC,EAAU9e,GAAGhH,KACb+lB,EAAe,IACVt2B,EAAI,EAAGA,EAAIhJ,EAAMtG,OAAQsP,IAAK,CACrC,IAAIu2B,EAASv2B,IAAMhJ,EAAMtG,OAAS,EAClC,GAAI6lC,GAAU5pB,EAAKyM,OACjB,MASF,GAPAid,EAAU9e,GAAGsd,WAAWwB,EAASr/B,EAAMgJ,IACvCs2B,EAAejd,GAAKC,MAAMgd,EAAct/B,EAAMgJ,IAC1CuX,GAAGif,aAAaH,MACbE,GAAUA,GAAU5pB,EAAKwpB,gBAC5BE,EAAUA,EAAQI,QAAQlmB,OAGzBgmB,GAAU5pB,EAAK+pB,OAElB,IADA,IAAIv4B,EAAQ,EACLoZ,GAAGoc,OAAO0C,EAAQliC,OAAO,CAC9B,IAAIm/B,EAAO/b,GAAG+C,SAASgc,GAIvB,GAHAA,EAAe1G,GAAQj9B,QAAQ0mB,GAAKxiB,QAAQy/B,GAAehD,GAE3D+C,EADc9e,GAAG2e,WAAWI,EAAc,CAAEF,cAAezpB,EAAKypB,cAAgB,IAC9Dl3B,KACdf,IAAU,GACZ,MAAM,IAAIoZ,GAAGkB,WAAW,GAE5B,CAEJ,CACA,MAAO,CAAEhmB,KAAM6jC,EAAcp3B,KAAMm3B,EACrC,EAAG,OAAAM,CAAQz3B,GAET,IADA,IAAIzM,IACS,CACX,GAAI8kB,GAAGqf,OAAO13B,GAAO,CACnB,IAAIud,EAAQvd,EAAKud,MAAMjC,WACvB,OAAK/nB,EAC8B,MAA5BgqB,EAAMA,EAAM/rB,OAAS,GAAa,GAAG+rB,KAAShqB,IAASgqB,EAAQhqB,EADpDgqB,CAEpB,CACAhqB,EAAOA,EAAO,GAAGyM,EAAKxN,QAAQe,IAASyM,EAAKxN,KAC5CwN,EAAOA,EAAKka,MACd,CACF,EAAG,QAAAyd,CAASC,EAAUplC,GAEpB,IADA,IAAIugB,EAAO,EACFjS,EAAI,EAAGA,EAAItO,EAAKhB,OAAQsP,IAC/BiS,GAAQA,GAAQ,GAAKA,EAAOvgB,EAAKkd,WAAW5O,GAAK,EAEnD,OAAQ82B,EAAW7kB,IAAS,GAAKsF,GAAGqe,UAAUllC,MAChD,EAAG,WAAAqmC,CAAY73B,GACb,IAAI+S,EAAOsF,GAAGsf,SAAS33B,EAAKka,OAAOpjB,GAAIkJ,EAAKxN,MAC5CwN,EAAK83B,UAAYzf,GAAGqe,UAAU3jB,GAC9BsF,GAAGqe,UAAU3jB,GAAQ/S,CACvB,EAAG,cAAA+3B,CAAe/3B,GAChB,IAAI+S,EAAOsF,GAAGsf,SAAS33B,EAAKka,OAAOpjB,GAAIkJ,EAAKxN,MAC5C,GAAI6lB,GAAGqe,UAAU3jB,KAAU/S,EACzBqY,GAAGqe,UAAU3jB,GAAQ/S,EAAK83B,eAG1B,IADA,IAAIX,EAAU9e,GAAGqe,UAAU3jB,GACpBokB,GAAS,CACd,GAAIA,EAAQW,YAAc93B,EAAM,CAC9Bm3B,EAAQW,UAAY93B,EAAK83B,UACzB,KACF,CACAX,EAAUA,EAAQW,SACpB,CAEJ,EAAG,UAAAnC,CAAWzb,EAAQ1nB,GACpB,IAAIwlC,EAAU3f,GAAG4f,UAAU/d,GAC3B,GAAI8d,EACF,MAAM,IAAI3f,GAAGkB,WAAWye,EAAS9d,GAGnC,IADA,IAAInH,EAAOsF,GAAGsf,SAASzd,EAAOpjB,GAAItE,GACzBwN,EAAOqY,GAAGqe,UAAU3jB,GAAO/S,EAAMA,EAAOA,EAAK83B,UAAW,CAC/D,IAAII,EAAWl4B,EAAKxN,KACpB,GAAIwN,EAAKka,OAAOpjB,KAAOojB,EAAOpjB,IAAMohC,IAAa1lC,EAC/C,OAAOwN,CAEX,CACA,OAAOqY,GAAG4B,OAAOC,EAAQ1nB,EAC3B,EAAG,UAAA+nB,CAAWL,EAAQ1nB,EAAMyC,EAAMo9B,GAChC,IAAIryB,EAAO,IAAIqY,GAAG8f,OAAOje,EAAQ1nB,EAAMyC,EAAMo9B,GAE7C,OADAha,GAAGwf,YAAY73B,GACRA,CACT,EAAG,WAAAo4B,CAAYp4B,GACbqY,GAAG0f,eAAe/3B,EACpB,EAAG03B,OAAO13B,GACDA,IAASA,EAAKka,OACpBod,aAAat3B,KACLA,EAAKu3B,QACbjf,OAAOrjB,GACkB,QAAX,MAAPA,GACPuoB,MAAMvoB,GACmB,QAAX,MAAPA,GACPw/B,OAAOx/B,GACkB,QAAX,MAAPA,GACPy/B,SAASz/B,GACgB,OAAX,MAAPA,GACP8+B,SAAS9+B,GACgB,QAAX,MAAPA,GACP++B,OAAO/+B,GACkB,OAAX,MAAPA,GACPojC,SAASpjC,KACgB,OAAlBA,GACP,uBAAAqjC,CAAwBC,GACzB,IAAIC,EAAQ,CAAC,IAAK,IAAK,MAAa,EAAPD,GAI7B,OAHW,IAAPA,IACFC,GAAS,KAEJA,CACT,EAAGC,gBAAe,CAACz4B,EAAMw4B,IACnBngB,GAAGwe,qBAGH2B,EAAMhyB,SAAS,MAAsB,IAAZxG,EAAK/K,SAEvBujC,EAAMhyB,SAAS,MAAsB,IAAZxG,EAAK/K,SAE9BujC,EAAMhyB,SAAS,MAAsB,GAAZxG,EAAK/K,MANhC,EAGA,EAORgjC,UAAUrgC,GACGygB,GAAGogB,gBAAgB7gC,EAAK,OAEjCA,EAAIylB,SAASpD,OACX,EAD0B,GAEhC,SAAAye,CAAU9gC,EAAKpF,GAChB,IAEE,OADW6lB,GAAGsd,WAAW/9B,EAAKpF,GACvB,EACT,CAAE,MAAOoB,GACT,CACA,OAAOykB,GAAGogB,gBAAgB7gC,EAAK,KACjC,EAAG,SAAA+gC,CAAU/gC,EAAKpF,EAAMomC,GACtB,IAAI54B,EACJ,IACEA,EAAOqY,GAAGsd,WAAW/9B,EAAKpF,EAC5B,CAAE,MAAOoB,GACP,OAAOA,EAAEilC,KACX,CACA,IAAIb,EAAU3f,GAAGogB,gBAAgB7gC,EAAK,MACtC,GAAIogC,EACF,OAAOA,EAET,GAAIY,EAAO,CACT,IAAKvgB,GAAGmF,MAAMxd,EAAK/K,MACjB,OAAO,GAET,GAAIojB,GAAGqf,OAAO13B,IAASqY,GAAGof,QAAQz3B,KAAUqY,GAAGzI,MAC7C,OAAO,EAEX,MACE,GAAIyI,GAAGmF,MAAMxd,EAAK/K,MAChB,OAAO,GAGX,OAAO,CACT,EAAG6jC,QAAO,CAAC94B,EAAM0N,IACV1N,EAGDqY,GAAGoc,OAAOz0B,EAAK/K,MACV,GACEojB,GAAGmF,MAAMxd,EAAK/K,QACmB,MAAtCojB,GAAGigB,wBAAwB5qB,IAA0B,IAARA,GACxC,GAGJ2K,GAAGogB,gBAAgBz4B,EAAMqY,GAAGigB,wBAAwB5qB,IATlD,GAURqrB,aAAc,KAAM,MAAAC,GACrB,IAAK,IAAIC,EAAK,EAAGA,GAAM5gB,GAAG0gB,aAAcE,IACtC,IAAK5gB,GAAGme,QAAQyC,GACd,OAAOA,EAGX,MAAM,IAAI5gB,GAAGkB,WAAW,GAC1B,EAAG,gBAAA2f,CAAiBD,GAClB,IAAI9gB,EAASE,GAAG8gB,UAAUF,GAC1B,IAAK9gB,EACH,MAAM,IAAIE,GAAGkB,WAAW,GAE1B,OAAOpB,CACT,EAAGghB,UAAYF,GAAO5gB,GAAGme,QAAQyC,GAAKG,aAAY,CAACjhB,EAAQ8gB,GAAK,KACzD5gB,GAAGghB,WACNhhB,GAAGghB,SAAW,WACZnsC,KAAKosC,OAAS,CAAC,CACjB,EACAjhB,GAAGghB,SAAS9pC,UAAY,CAAC,EACzB7C,OAAO6sC,iBAAiBlhB,GAAGghB,SAAS9pC,UAAW,CAAEyN,OAAQ,CAAE,GAAA5N,GACzD,OAAOlC,KAAK8S,IACd,EAAG,GAAA5P,CAAIiG,GACLnJ,KAAK8S,KAAO3J,CACd,GAAKmjC,OAAQ,CAAE,GAAApqC,GACb,OAAkC,IAAb,QAAblC,KAAKwgB,MACf,GAAK+rB,QAAS,CAAE,GAAArqC,GACd,SAAqB,QAAblC,KAAKwgB,MACf,GAAKgsB,SAAU,CAAE,GAAAtqC,GACf,OAAoB,KAAblC,KAAKwgB,KACd,GAAKA,MAAO,CAAE,GAAAte,GACZ,OAAOlC,KAAKosC,OAAO5rB,KACrB,EAAG,GAAAtd,CAAIiG,GACLnJ,KAAKosC,OAAO5rB,MAAQrX,CACtB,GAAK2iB,SAAU,CAAE,GAAA5pB,GACf,OAAOlC,KAAKosC,OAAOtgB,QACrB,EAAG,GAAA5oB,CAAIiG,GACLnJ,KAAKosC,OAAOtgB,SAAW3iB,CACzB,MAEF8hB,EAASzrB,OAAOo8B,OAAO,IAAIzQ,GAAGghB,SAAYlhB,IAC/B,GAAP8gB,IACFA,EAAK5gB,GAAG2gB,UAEV7gB,EAAO8gB,GAAKA,EACZ5gB,GAAGme,QAAQyC,GAAM9gB,EACVA,GACN,WAAAwhB,CAAYV,GACb5gB,GAAGme,QAAQyC,GAAM,IACnB,EAAG3E,kBAAmB,CAAE,IAAApc,CAAKC,GAC3B,IAAIyhB,EAASvhB,GAAGwhB,UAAU1hB,EAAOnY,KAAKqyB,MACtCla,EAAOmF,WAAasc,EAAOtc,WACvBnF,EAAOmF,WAAWpF,MACpBC,EAAOmF,WAAWpF,KAAKC,EAE3B,EAAG,MAAAkB,GACD,MAAM,IAAIhB,GAAGkB,WAAW,GAC1B,GAAKugB,MAAQrf,GAAQA,GAAO,EAAGsf,MAAQtf,GAAc,IAANA,EAAWuf,QAAS,CAACC,EAAIC,IAAOD,GAAM,EAAIC,EAAI,cAAA/H,CAAe1X,EAAKyX,GAC/G7Z,GAAGke,QAAQ9b,GAAO,CAAE6C,WAAY4U,EAClC,EAAG2H,UAAYpf,GAAQpC,GAAGke,QAAQ9b,GAAM,SAAA0f,CAAU5c,GAGhD,IAFA,IAAI+Y,EAAS,GACT8D,EAAQ,CAAC7c,GACN6c,EAAM5oC,QAAQ,CACnB,IAAI9C,EAAI0rC,EAAMt0B,MACdwwB,EAAO1kC,KAAKlD,GACZ0rC,EAAMxoC,KAAKoY,MAAMowB,EAAO1rC,EAAE4nC,OAC5B,CACA,OAAOA,CACT,EAAG,MAAA+D,CAAO7jC,EAAUohB,GACK,mBAAZphB,IACTohB,EAAWphB,EACXA,GAAW,GAEb6hB,GAAG0e,iBACC1e,GAAG0e,eAAiB,GACtBvqB,EAAI,YAAY6L,GAAG0e,yFAErB,IAAIT,EAASje,GAAG8hB,UAAU9hB,GAAGhH,KAAKkM,OAC9B+c,EAAY,EAChB,SAASC,EAAWvC,GAElB,OADA3f,GAAG0e,iBACInf,EAASogB,EAClB,CACA,SAASp5B,EAAKo5B,GACZ,GAAIA,EACF,OAAKp5B,EAAK47B,aAIV,GAHE57B,EAAK47B,SAAU,EACRD,EAAWvC,MAIhBsC,GAAahE,EAAO9kC,QACxB+oC,EAAW,KAEf,CACAjE,EAAO/vB,SAASgX,IACd,IAAKA,EAAMjK,KAAK+mB,OACd,OAAOz7B,EAAK,MAEd2e,EAAMjK,KAAK+mB,OAAO9c,EAAO/mB,EAAUoI,EAAK,GAE5C,EAAG,KAAA2e,CAAMjK,EAAM7F,EAAM6N,GACnB,IAEItb,EAFAqR,EAAsB,MAAfiK,EACPmf,GAAUnf,EAEd,GAAIjK,GAAQgH,GAAGhH,KACb,MAAM,IAAIgH,GAAGkB,WAAW,IACnB,IAAKlI,IAASopB,EAAQ,CAC3B,IAAIC,EAAUriB,GAAG2e,WAAW1b,EAAY,CAAE2b,cAAc,IAGxD,GAFA3b,EAAaof,EAAQnnC,KACrByM,EAAO06B,EAAQ16B,KACXqY,GAAGif,aAAat3B,GAClB,MAAM,IAAIqY,GAAGkB,WAAW,IAE1B,IAAKlB,GAAGmF,MAAMxd,EAAK/K,MACjB,MAAM,IAAIojB,GAAGkB,WAAW,GAE5B,CACA,IAAIgE,EAAQ,CAAEjK,OAAM7F,OAAM6N,aAAYgb,OAAQ,IAC1CqE,EAAYrnB,EAAKiK,MAAMA,GAW3B,OAVAod,EAAUpd,MAAQA,EAClBA,EAAMlM,KAAOspB,EACTtpB,EACFgH,GAAGhH,KAAOspB,EACD36B,IACTA,EAAKu3B,QAAUha,EACXvd,EAAKud,OACPvd,EAAKud,MAAM+Y,OAAO1kC,KAAK2rB,IAGpBod,CACT,EAAG,OAAAC,CAAQtf,GACT,IAAIof,EAAUriB,GAAG2e,WAAW1b,EAAY,CAAE2b,cAAc,IACxD,IAAK5e,GAAGif,aAAaoD,EAAQ16B,MAC3B,MAAM,IAAIqY,GAAGkB,WAAW,IAE1B,IAAIvZ,EAAO06B,EAAQ16B,KACfud,EAAQvd,EAAKu3B,QACbjB,EAASje,GAAG8hB,UAAU5c,GAC1B7wB,OAAO2D,KAAKgoB,GAAGqe,WAAWnwB,SAASwM,IAEjC,IADA,IAAIokB,EAAU9e,GAAGqe,UAAU3jB,GACpBokB,GAAS,CACd,IAAI7mC,EAAO6mC,EAAQW,UACfxB,EAAO9vB,SAAS2wB,EAAQ5Z,QAC1BlF,GAAG+f,YAAYjB,GAEjBA,EAAU7mC,CACZ,KAEF0P,EAAKu3B,QAAU,KACf,IAAI/H,EAAMxvB,EAAKud,MAAM+Y,OAAOtlC,QAAQusB,GACpCvd,EAAKud,MAAM+Y,OAAOjuB,OAAOmnB,EAAK,EAChC,EAAGvV,OAAM,CAACC,EAAQ1nB,IACT0nB,EAAOmD,SAASpD,OAAOC,EAAQ1nB,GACrC,KAAAgoB,CAAMjnB,EAAM0B,EAAMwlB,GACnB,IACIP,EADU7B,GAAG2e,WAAWzjC,EAAM,CAAE2mB,QAAQ,IACvBla,KACjBxN,EAAO2nB,GAAK1iB,SAASlE,GACzB,IAAKf,GAAiB,MAATA,GAAyB,OAATA,EAC3B,MAAM,IAAI6lB,GAAGkB,WAAW,IAE1B,IAAIye,EAAU3f,GAAGqgB,UAAUxe,EAAQ1nB,GACnC,GAAIwlC,EACF,MAAM,IAAI3f,GAAGkB,WAAWye,GAE1B,IAAK9d,EAAOmD,SAAS7C,MACnB,MAAM,IAAInC,GAAGkB,WAAW,IAE1B,OAAOW,EAAOmD,SAAS7C,MAAMN,EAAQ1nB,EAAMyC,EAAMwlB,EACnD,EAAGjsB,OAAM,CAAC+E,EAAM0B,KACdA,OAAgB,IAATA,EAAkBA,EAAO,IAChCA,GAAQ,KACRA,GAAQ,MACDojB,GAAGmC,MAAMjnB,EAAM0B,EAAM,IAC3B4lC,MAAK,CAACtnC,EAAM0B,KACbA,OAAgB,IAATA,EAAkBA,EAAO,IAChCA,GAAQ,KACRA,GAAQ,MACDojB,GAAGmC,MAAMjnB,EAAM0B,EAAM,IAC3B,SAAA6lC,CAAUvnC,EAAM0B,GAGjB,IAFA,IAAI8lC,EAAOxnC,EAAKnC,MAAM,KAClB8P,EAAI,GACCJ,EAAI,EAAGA,EAAIi6B,EAAKvpC,SAAUsP,EACjC,GAAKi6B,EAAKj6B,GAAV,CACAI,GAAK,IAAM65B,EAAKj6B,GAChB,IACEuX,GAAGwiB,MAAM35B,EAAGjM,EACd,CAAE,MAAOrB,GACP,GAAe,IAAXA,EAAEilC,MAAa,MAAMjlC,CAC3B,CANsB,CAQ1B,EAAGonC,MAAK,CAACznC,EAAM0B,EAAMwlB,UACD,IAAPA,IACTA,EAAMxlB,EACNA,EAAO,KAETA,GAAQ,KACDojB,GAAGmC,MAAMjnB,EAAM0B,EAAMwlB,IAC3B,OAAAS,CAAQ2a,EAASoF,GAClB,IAAKvK,GAAQj9B,QAAQoiC,GACnB,MAAM,IAAIxd,GAAGkB,WAAW,IAE1B,IACIW,EADU7B,GAAG2e,WAAWiE,EAAS,CAAE/gB,QAAQ,IAC1Bla,KACrB,IAAKka,EACH,MAAM,IAAI7B,GAAGkB,WAAW,IAE1B,IAAIqc,EAAUzb,GAAK1iB,SAASwjC,GACxBjD,EAAU3f,GAAGqgB,UAAUxe,EAAQ0b,GACnC,GAAIoC,EACF,MAAM,IAAI3f,GAAGkB,WAAWye,GAE1B,IAAK9d,EAAOmD,SAASnC,QACnB,MAAM,IAAI7C,GAAGkB,WAAW,IAE1B,OAAOW,EAAOmD,SAASnC,QAAQhB,EAAQ0b,EAASC,EAClD,EAAG,MAAAnb,CAAOwgB,EAAUC,GAClB,IAIaC,EAAS5F,EAJlB6F,EAAclhB,GAAKxiB,QAAQujC,GAC3BI,EAAcnhB,GAAKxiB,QAAQwjC,GAC3BI,EAAWphB,GAAK1iB,SAASyjC,GACzBzF,EAAWtb,GAAK1iB,SAAS0jC,GAM7B,GAHAC,EADU/iB,GAAG2e,WAAWkE,EAAU,CAAEhhB,QAAQ,IAC1Bla,KAElBw1B,EADUnd,GAAG2e,WAAWmE,EAAU,CAAEjhB,QAAQ,IAC1Bla,MACbo7B,IAAY5F,EAAS,MAAM,IAAInd,GAAGkB,WAAW,IAClD,GAAI6hB,EAAQ7d,QAAUiY,EAAQjY,MAC5B,MAAM,IAAIlF,GAAGkB,WAAW,IAE1B,IASImc,EATAH,EAAWld,GAAGsd,WAAWyF,EAASG,GAClCxjC,EAAW24B,GAAQ34B,SAASmjC,EAAUI,GAC1C,GAA2B,MAAvBvjC,EAAS6B,OAAO,GAClB,MAAM,IAAIye,GAAGkB,WAAW,IAG1B,GAA2B,OAD3BxhB,EAAW24B,GAAQ34B,SAASojC,EAAUE,IACzBzhC,OAAO,GAClB,MAAM,IAAIye,GAAGkB,WAAW,IAG1B,IACEmc,EAAWrd,GAAGsd,WAAWH,EAASC,EACpC,CAAE,MAAO7hC,GACT,CACA,GAAI2hC,IAAaG,EAAjB,CAGA,IAAIkD,EAAQvgB,GAAGmF,MAAM+X,EAAStgC,MAC1B+iC,EAAU3f,GAAGsgB,UAAUyC,EAASG,EAAU3C,GAC9C,GAAIZ,EACF,MAAM,IAAI3f,GAAGkB,WAAWye,GAG1B,GADAA,EAAUtC,EAAWrd,GAAGsgB,UAAUnD,EAASC,EAAUmD,GAASvgB,GAAGqgB,UAAUlD,EAASC,GAElF,MAAM,IAAIpd,GAAGkB,WAAWye,GAE1B,IAAKoD,EAAQ/d,SAAS3C,OACpB,MAAM,IAAIrC,GAAGkB,WAAW,IAE1B,GAAIlB,GAAGif,aAAa/B,IAAaG,GAAYrd,GAAGif,aAAa5B,GAC3D,MAAM,IAAIrd,GAAGkB,WAAW,IAE1B,GAAIic,IAAY4F,IACdpD,EAAU3f,GAAGogB,gBAAgB2C,EAAS,MAEpC,MAAM,IAAI/iB,GAAGkB,WAAWye,GAG5B3f,GAAG0f,eAAexC,GAClB,IACE6F,EAAQ/d,SAAS3C,OAAO6a,EAAUC,EAASC,EAC7C,CAAE,MAAO7hC,GACP,MAAMA,CACR,CAAE,QACAykB,GAAGwf,YAAYtC,EACjB,CA7BA,CA8BF,EAAG,KAAAva,CAAMznB,GACP,IACI2mB,EADU7B,GAAG2e,WAAWzjC,EAAM,CAAE2mB,QAAQ,IACvBla,KACjBxN,EAAO2nB,GAAK1iB,SAASlE,GACrByM,EAAOqY,GAAGsd,WAAWzb,EAAQ1nB,GAC7BwlC,EAAU3f,GAAGsgB,UAAUze,EAAQ1nB,GAAM,GACzC,GAAIwlC,EACF,MAAM,IAAI3f,GAAGkB,WAAWye,GAE1B,IAAK9d,EAAOmD,SAASrC,MACnB,MAAM,IAAI3C,GAAGkB,WAAW,IAE1B,GAAIlB,GAAGif,aAAat3B,GAClB,MAAM,IAAIqY,GAAGkB,WAAW,IAE1BW,EAAOmD,SAASrC,MAAMd,EAAQ1nB,GAC9B6lB,GAAG+f,YAAYp4B,EACjB,EAAG,OAAAib,CAAQ1nB,GACT,IACIyM,EADUqY,GAAG2e,WAAWzjC,EAAM,CAAEikC,QAAQ,IACzBx3B,KACnB,IAAKA,EAAKqd,SAASpC,QACjB,MAAM,IAAI5C,GAAGkB,WAAW,IAE1B,OAAOvZ,EAAKqd,SAASpC,QAAQjb,EAC/B,EAAG,MAAA+a,CAAOxnB,GACR,IACI2mB,EADU7B,GAAG2e,WAAWzjC,EAAM,CAAE2mB,QAAQ,IACvBla,KACrB,IAAKka,EACH,MAAM,IAAI7B,GAAGkB,WAAW,IAE1B,IAAI/mB,EAAO2nB,GAAK1iB,SAASlE,GACrByM,EAAOqY,GAAGsd,WAAWzb,EAAQ1nB,GAC7BwlC,EAAU3f,GAAGsgB,UAAUze,EAAQ1nB,GAAM,GACzC,GAAIwlC,EACF,MAAM,IAAI3f,GAAGkB,WAAWye,GAE1B,IAAK9d,EAAOmD,SAAStC,OACnB,MAAM,IAAI1C,GAAGkB,WAAW,IAE1B,GAAIlB,GAAGif,aAAat3B,GAClB,MAAM,IAAIqY,GAAGkB,WAAW,IAE1BW,EAAOmD,SAAStC,OAAOb,EAAQ1nB,GAC/B6lB,GAAG+f,YAAYp4B,EACjB,EAAG,QAAAob,CAAS7nB,GACV,IACI6gC,EADU/b,GAAG2e,WAAWzjC,GACTyM,KACnB,IAAKo0B,EACH,MAAM,IAAI/b,GAAGkB,WAAW,IAE1B,IAAK6a,EAAK/W,SAASjC,SACjB,MAAM,IAAI/C,GAAGkB,WAAW,IAE1B,OAAOmX,GAAQj9B,QAAQ4kB,GAAGof,QAAQrD,EAAKla,QAASka,EAAK/W,SAASjC,SAASgZ,GACzE,EAAG,IAAAoH,CAAKjoC,EAAMkoC,GACZ,IACIz7B,EADUqY,GAAG2e,WAAWzjC,EAAM,CAAEikC,QAASiE,IAC1Bz7B,KACnB,IAAKA,EACH,MAAM,IAAIqY,GAAGkB,WAAW,IAE1B,IAAKvZ,EAAKqd,SAASzD,QACjB,MAAM,IAAIvB,GAAGkB,WAAW,IAE1B,OAAOvZ,EAAKqd,SAASzD,QAAQ5Z,EAC/B,EAAG07B,MAAMnoC,GACA8kB,GAAGmjB,KAAKjoC,GAAM,GACpB,KAAAooC,CAAMpoC,EAAM0B,EAAMwmC,GACnB,IAAIz7B,EAOJ,KAJEA,EAFiB,iBAARzM,EACK8kB,GAAG2e,WAAWzjC,EAAM,CAAEikC,QAASiE,IAC9Bz7B,KAERzM,GAEC8pB,SAASvD,QACjB,MAAM,IAAIzB,GAAGkB,WAAW,IAE1BvZ,EAAKqd,SAASvD,QAAQ9Z,EAAM,CAAE/K,KAAa,KAAPA,GAA0B,KAAZ+K,EAAK/K,KAAckkB,UAAW1e,KAAKE,OACvF,EAAG,MAAAihC,CAAOroC,EAAM0B,GACdojB,GAAGsjB,MAAMpoC,EAAM0B,GAAM,EACvB,EAAG,MAAA4mC,CAAO5C,EAAIhkC,GACZ,IAAIkjB,EAASE,GAAG6gB,iBAAiBD,GACjC5gB,GAAGsjB,MAAMxjB,EAAOnY,KAAM/K,EACxB,EAAG,KAAA6mC,CAAMvoC,EAAM4hC,EAAKC,EAAKqG,GACvB,IAAIz7B,EAOJ,KAJEA,EAFiB,iBAARzM,EACK8kB,GAAG2e,WAAWzjC,EAAM,CAAEikC,QAASiE,IAC9Bz7B,KAERzM,GAEC8pB,SAASvD,QACjB,MAAM,IAAIzB,GAAGkB,WAAW,IAE1BvZ,EAAKqd,SAASvD,QAAQ9Z,EAAM,CAAEmZ,UAAW1e,KAAKE,OAChD,EAAG,MAAAohC,CAAOxoC,EAAM4hC,EAAKC,GACnB/c,GAAGyjB,MAAMvoC,EAAM4hC,EAAKC,GAAK,EAC3B,EAAG,MAAA4G,CAAO/C,EAAI9D,EAAKC,GACjB,IAAIjd,EAASE,GAAG6gB,iBAAiBD,GACjC5gB,GAAGyjB,MAAM3jB,EAAOnY,KAAMm1B,EAAKC,EAC7B,EAAG,QAAA6G,CAAS1oC,EAAM4oB,GAChB,GAAIA,EAAM,EACR,MAAM,IAAI9D,GAAGkB,WAAW,IAE1B,IAAIvZ,EAOJ,KAJEA,EAFiB,iBAARzM,EACK8kB,GAAG2e,WAAWzjC,EAAM,CAAEikC,QAAQ,IAC7Bx3B,KAERzM,GAEC8pB,SAASvD,QACjB,MAAM,IAAIzB,GAAGkB,WAAW,IAE1B,GAAIlB,GAAGmF,MAAMxd,EAAK/K,MAChB,MAAM,IAAIojB,GAAGkB,WAAW,IAE1B,IAAKlB,GAAGC,OAAOtY,EAAK/K,MAClB,MAAM,IAAIojB,GAAGkB,WAAW,IAE1B,IAAIye,EAAU3f,GAAGogB,gBAAgBz4B,EAAM,KACvC,GAAIg4B,EACF,MAAM,IAAI3f,GAAGkB,WAAWye,GAE1Bh4B,EAAKqd,SAASvD,QAAQ9Z,EAAM,CAAEjQ,KAAMosB,EAAKhD,UAAW1e,KAAKE,OAC3D,EAAG,SAAAuhC,CAAUjD,EAAI9c,GACf,IAAIhE,EAASE,GAAG6gB,iBAAiBD,GACjC,KAAoB,QAAf9gB,EAAOzK,OACV,MAAM,IAAI2K,GAAGkB,WAAW,IAE1BlB,GAAG4jB,SAAS9jB,EAAOnY,KAAMmc,EAC3B,EAAG,KAAAggB,CAAM5oC,EAAMkpB,EAAOC,GACpB,IACI1c,EADUqY,GAAG2e,WAAWzjC,EAAM,CAAEikC,QAAQ,IACzBx3B,KACnBA,EAAKqd,SAASvD,QAAQ9Z,EAAM,CAAEmZ,UAAWre,KAAK4C,IAAI+e,EAAOC,IAC3D,EAAG,IAAAxE,CAAK3kB,EAAMma,EAAOzY,GACnB,GAAa,KAAT1B,EACF,MAAM,IAAI8kB,GAAGkB,WAAW,IAS1B,IAAIvZ,EACJ,GAPA/K,OAAsB,IAARA,EAAsB,IAAMA,EAExCA,EADU,IAFZyY,EAAwB,iBAATA,EA3lBU,CAACzU,IAC1B,IACIyU,EADY,CAAE,EAAK,EAAG,KAAM,EAAG,EAAK,IAAc,KAAM,IAAc,EAAK,KAAe,KAAM,MAC9EzU,GACtB,QAAoB,IAATyU,EACT,MAAM,IAAI5L,MAAM,2BAA2B7I,KAE7C,OAAOyU,CAAK,EAqlBuB0uB,CAAqB1uB,GAASA,GAGjD,KAAPzY,EAAc,MAEd,EAGU,iBAAR1B,EACTyM,EAAOzM,MACF,CACLA,EAAO4mB,GAAK7lB,UAAUf,GACtB,IAEEyM,EADcqY,GAAG2e,WAAWzjC,EAAM,CAAEikC,SAAkB,OAAR9pB,KAC/B1N,IACjB,CAAE,MAAOpM,GACT,CACF,CACA,IAAIyoC,GAAU,EACd,GAAY,GAAR3uB,EACF,GAAI1N,GACF,GAAY,IAAR0N,EACF,MAAM,IAAI2K,GAAGkB,WAAW,SAG1BvZ,EAAOqY,GAAGmC,MAAMjnB,EAAM0B,EAAM,GAC5BonC,GAAU,EAGd,IAAKr8B,EACH,MAAM,IAAIqY,GAAGkB,WAAW,IAK1B,GAHIlB,GAAGqc,SAAS10B,EAAK/K,QACnByY,IAAS,KAEC,MAARA,IAAkB2K,GAAGmF,MAAMxd,EAAK/K,MAClC,MAAM,IAAIojB,GAAGkB,WAAW,IAE1B,IAAK8iB,EAAS,CACZ,IAAIrE,EAAU3f,GAAGygB,QAAQ94B,EAAM0N,GAC/B,GAAIsqB,EACF,MAAM,IAAI3f,GAAGkB,WAAWye,EAE5B,CACY,IAARtqB,IAAgB2uB,GAClBhkB,GAAG4jB,SAASj8B,EAAM,GAEpB0N,IAAS,OACT,IAAIyK,EAASE,GAAG+gB,aAAa,CAAEp5B,OAAMzM,KAAM8kB,GAAGof,QAAQz3B,GAAO0N,QAAO4kB,UAAU,EAAMtZ,SAAU,EAAGsE,WAAYtd,EAAKsd,WAAYgf,SAAU,GAAIxoC,OAAO,IAUnJ,OATIqkB,EAAOmF,WAAWpF,MACpBC,EAAOmF,WAAWpF,KAAKC,IAErBuQ,EAAsB,cAAe,EAARhb,IAC1B2K,GAAGkkB,YAAWlkB,GAAGkkB,UAAY,CAAC,GAC7BhpC,KAAQ8kB,GAAGkkB,YACflkB,GAAGkkB,UAAUhpC,GAAQ,IAGlB4kB,CACT,EAAG,KAAAM,CAAMN,GACP,GAAIE,GAAGmkB,SAASrkB,GACd,MAAM,IAAIE,GAAGkB,WAAW,GAEtBpB,EAAOskB,WAAUtkB,EAAOskB,SAAW,MACvC,IACMtkB,EAAOmF,WAAW7E,OACpBN,EAAOmF,WAAW7E,MAAMN,EAE5B,CAAE,MAAOvkB,GACP,MAAMA,CACR,CAAE,QACAykB,GAAGshB,YAAYxhB,EAAO8gB,GACxB,CACA9gB,EAAO8gB,GAAK,IACd,EAAGuD,SAASrkB,GACW,OAAdA,EAAO8gB,GACb,MAAA5f,CAAOlB,EAAQY,EAAQO,GACxB,GAAIjB,GAAGmkB,SAASrkB,GACd,MAAM,IAAIE,GAAGkB,WAAW,GAE1B,IAAKpB,EAAOma,WAAana,EAAOmF,WAAWjE,OACzC,MAAM,IAAIhB,GAAGkB,WAAW,IAE1B,GAAc,GAAVD,GAAyB,GAAVA,GAAyB,GAAVA,EAChC,MAAM,IAAIjB,GAAGkB,WAAW,IAI1B,OAFApB,EAAOa,SAAWb,EAAOmF,WAAWjE,OAAOlB,EAAQY,EAAQO,GAC3DnB,EAAOmkB,SAAW,GACXnkB,EAAOa,QAChB,EAAG,IAAAF,CAAKX,EAAQpR,EAAQgS,EAAQvnB,EAAQwnB,GACtC,GAAIxnB,EAAS,GAAKwnB,EAAW,EAC3B,MAAM,IAAIX,GAAGkB,WAAW,IAE1B,GAAIlB,GAAGmkB,SAASrkB,GACd,MAAM,IAAIE,GAAGkB,WAAW,GAE1B,GAAiC,IAAb,QAAfpB,EAAOzK,OACV,MAAM,IAAI2K,GAAGkB,WAAW,GAE1B,GAAIlB,GAAGmF,MAAMrF,EAAOnY,KAAK/K,MACvB,MAAM,IAAIojB,GAAGkB,WAAW,IAE1B,IAAKpB,EAAOmF,WAAWxE,KACrB,MAAM,IAAIT,GAAGkB,WAAW,IAE1B,IAAImjB,OAA6B,IAAZ1jB,EACrB,GAAK0jB,GAEE,IAAKvkB,EAAOma,SACjB,MAAM,IAAIja,GAAGkB,WAAW,SAFxBP,EAAWb,EAAOa,SAIpB,IAAIyZ,EAAYta,EAAOmF,WAAWxE,KAAKX,EAAQpR,EAAQgS,EAAQvnB,EAAQwnB,GAEvE,OADK0jB,IAASvkB,EAAOa,UAAYyZ,GAC1BA,CACT,EAAG,KAAAvZ,CAAMf,EAAQpR,EAAQgS,EAAQvnB,EAAQwnB,EAAU8c,GACjD,GAAItkC,EAAS,GAAKwnB,EAAW,EAC3B,MAAM,IAAIX,GAAGkB,WAAW,IAE1B,GAAIlB,GAAGmkB,SAASrkB,GACd,MAAM,IAAIE,GAAGkB,WAAW,GAE1B,KAAoB,QAAfpB,EAAOzK,OACV,MAAM,IAAI2K,GAAGkB,WAAW,GAE1B,GAAIlB,GAAGmF,MAAMrF,EAAOnY,KAAK/K,MACvB,MAAM,IAAIojB,GAAGkB,WAAW,IAE1B,IAAKpB,EAAOmF,WAAWpE,MACrB,MAAM,IAAIb,GAAGkB,WAAW,IAEtBpB,EAAOma,UAA2B,KAAfna,EAAOzK,OAC5B2K,GAAGgB,OAAOlB,EAAQ,EAAG,GAEvB,IAAIukB,OAA6B,IAAZ1jB,EACrB,GAAK0jB,GAEE,IAAKvkB,EAAOma,SACjB,MAAM,IAAIja,GAAGkB,WAAW,SAFxBP,EAAWb,EAAOa,SAIpB,IAAI2jB,EAAexkB,EAAOmF,WAAWpE,MAAMf,EAAQpR,EAAQgS,EAAQvnB,EAAQwnB,EAAU8c,GAErF,OADK4G,IAASvkB,EAAOa,UAAY2jB,GAC1BA,CACT,EAAG,QAAA1I,CAAS9b,EAAQY,EAAQvnB,GAC1B,GAAI6mB,GAAGmkB,SAASrkB,GACd,MAAM,IAAIE,GAAGkB,WAAW,GAE1B,GAAIR,EAAS,GAAKvnB,GAAU,EAC1B,MAAM,IAAI6mB,GAAGkB,WAAW,IAE1B,KAAoB,QAAfpB,EAAOzK,OACV,MAAM,IAAI2K,GAAGkB,WAAW,GAE1B,IAAKlB,GAAGC,OAAOH,EAAOnY,KAAK/K,QAAUojB,GAAGmF,MAAMrF,EAAOnY,KAAK/K,MACxD,MAAM,IAAIojB,GAAGkB,WAAW,IAE1B,IAAKpB,EAAOmF,WAAW2W,SACrB,MAAM,IAAI5b,GAAGkB,WAAW,KAE1BpB,EAAOmF,WAAW2W,SAAS9b,EAAQY,EAAQvnB,EAC7C,EAAG,IAAA0iC,CAAK/b,EAAQ3mB,EAAQwnB,EAAU+c,EAAMroB,GACtC,GAAY,EAAPqoB,KAA4B,EAARroB,IAAiD,IAAb,QAAfyK,EAAOzK,OACnD,MAAM,IAAI2K,GAAGkB,WAAW,GAE1B,GAAiC,IAAb,QAAfpB,EAAOzK,OACV,MAAM,IAAI2K,GAAGkB,WAAW,GAE1B,IAAKpB,EAAOmF,WAAW4W,KACrB,MAAM,IAAI7b,GAAGkB,WAAW,IAE1B,OAAOpB,EAAOmF,WAAW4W,KAAK/b,EAAQ3mB,EAAQwnB,EAAU+c,EAAMroB,EAChE,EAAGymB,MAAK,CAAChc,EAAQpR,EAAQgS,EAAQvnB,EAAQykC,IAClC9d,EAAOmF,WAAW6W,MAGhBhc,EAAOmF,WAAW6W,MAAMhc,EAAQpR,EAAQgS,EAAQvnB,EAAQykC,GAFtD,EAGR2G,OAASzkB,GAAW,EAAG,KAAA0kB,CAAM1kB,EAAQ2kB,EAAKjuB,GAC3C,IAAKsJ,EAAOmF,WAAWuf,MACrB,MAAM,IAAIxkB,GAAGkB,WAAW,IAE1B,OAAOpB,EAAOmF,WAAWuf,MAAM1kB,EAAQ2kB,EAAKjuB,EAC9C,EAAG,QAAAkuB,CAASxpC,EAAMka,EAAO,CAAC,GAGxB,GAFAA,EAAKC,MAAQD,EAAKC,OAAS,EAC3BD,EAAKmT,SAAWnT,EAAKmT,UAAY,SACX,SAAlBnT,EAAKmT,UAAyC,WAAlBnT,EAAKmT,SACnC,MAAM,IAAI9e,MAAM,0BAA0B2L,EAAKmT,aAEjD,IAAIpP,EACA2G,EAASE,GAAGH,KAAK3kB,EAAMka,EAAKC,OAE5Blc,EADO6mB,GAAGmjB,KAAKjoC,GACDxD,KACdwxB,EAAM,IAAI9Z,WAAWjW,GAQzB,OAPA6mB,GAAGS,KAAKX,EAAQoJ,EAAK,EAAG/vB,EAAQ,GACV,SAAlBic,EAAKmT,SACPpP,EAAM2c,GAAkB5M,EAAK,GACF,WAAlB9T,EAAKmT,WACdpP,EAAM+P,GAERlJ,GAAGI,MAAMN,GACF3G,CACT,EAAG,SAAAwrB,CAAUzpC,EAAM6U,EAAMqF,EAAO,CAAC,GAC/BA,EAAKC,MAAQD,EAAKC,OAAS,IAC3B,IAAIyK,EAASE,GAAGH,KAAK3kB,EAAMka,EAAKC,MAAOD,EAAKxY,MAC5C,GAAmB,iBAARmT,EAAkB,CAC3B,IAAImZ,EAAM,IAAI9Z,WAAWwpB,GAAgB7oB,GAAQ,GAC7C60B,EAAiB/L,GAAkB9oB,EAAMmZ,EAAK,EAAGA,EAAI/vB,QACzD6mB,GAAGa,MAAMf,EAAQoJ,EAAK,EAAG0b,OAAgB,EAAQxvB,EAAKqoB,OACxD,KAAO,KAAIjgB,YAAYoL,OAAO7Y,GAG5B,MAAM,IAAItG,MAAM,yBAFhBuW,GAAGa,MAAMf,EAAQ/P,EAAM,EAAGA,EAAKiU,gBAAY,EAAQ5O,EAAKqoB,OAG1D,CACAzd,GAAGI,MAAMN,EACX,EAAGvI,IAAK,IAAMyI,GAAGse,YAAa,KAAAtX,CAAM9rB,GAClC,IAAImnC,EAAUriB,GAAG2e,WAAWzjC,EAAM,CAAEikC,QAAQ,IAC5C,GAAqB,OAAjBkD,EAAQ16B,KACV,MAAM,IAAIqY,GAAGkB,WAAW,IAE1B,IAAKlB,GAAGmF,MAAMkd,EAAQ16B,KAAK/K,MACzB,MAAM,IAAIojB,GAAGkB,WAAW,IAE1B,IAAIye,EAAU3f,GAAGogB,gBAAgBiC,EAAQ16B,KAAM,KAC/C,GAAIg4B,EACF,MAAM,IAAI3f,GAAGkB,WAAWye,GAE1B3f,GAAGse,YAAc+D,EAAQnnC,IAC3B,EAAG,wBAAA2pC,GACD7kB,GAAGwiB,MAAM,QACTxiB,GAAGwiB,MAAM,SACTxiB,GAAGwiB,MAAM,iBACX,EAAG,oBAAAsC,GACD9kB,GAAGwiB,MAAM,QACTxiB,GAAG8Z,eAAe9Z,GAAG2hB,QAAQ,EAAG,GAAI,CAAElhB,KAAM,IAAM,EAAGI,MAAO,CAACf,EAAQpR,EAAQgS,EAAQvnB,EAAQuzB,IAAQvzB,IACrG6mB,GAAG2iB,MAAM,YAAa3iB,GAAG2hB,QAAQ,EAAG,IACpCnI,GAAII,SAAS5Z,GAAG2hB,QAAQ,EAAG,GAAInI,GAAIc,iBACnCd,GAAII,SAAS5Z,GAAG2hB,QAAQ,EAAG,GAAInI,GAAI2B,kBACnCnb,GAAG2iB,MAAM,WAAY3iB,GAAG2hB,QAAQ,EAAG,IACnC3hB,GAAG2iB,MAAM,YAAa3iB,GAAG2hB,QAAQ,EAAG,IACpC,IAAIoD,EAAe,IAAI31B,WAAW,MAAO41B,EAAa,EAClDC,EAAa,KACI,IAAfD,IACFA,EAAa9M,GAAW6M,GAAc/gB,YAEjC+gB,IAAeC,IAExBhlB,GAAGklB,aAAa,OAAQ,SAAUD,GAClCjlB,GAAGklB,aAAa,OAAQ,UAAWD,GACnCjlB,GAAGwiB,MAAM,YACTxiB,GAAGwiB,MAAM,eACX,EAAG,wBAAA2C,GACDnlB,GAAGwiB,MAAM,SACT,IAAI4C,EAAYplB,GAAGwiB,MAAM,cACzBxiB,GAAGwiB,MAAM,iBACTxiB,GAAGkF,MAAM,CAAE,KAAAA,GACT,IAAIvd,EAAOqY,GAAGkC,WAAWkjB,EAAW,KAAM,MAAa,IAQvD,OAPAz9B,EAAKqd,SAAW,CAAE,MAAApD,CAAOC,EAAQ1nB,GAC/B,IAAIymC,GAAMzmC,EACN2lB,EAASE,GAAG6gB,iBAAiBD,GAC7BznB,EAAM,CAAE0I,OAAQ,KAAMqD,MAAO,CAAEjC,WAAY,QAAU+B,SAAU,CAAEjC,SAAU,IAAMjD,EAAO5kB,OAE5F,OADAie,EAAI0I,OAAS1I,EACNA,CACT,GACOxR,CACT,GAAK,CAAC,EAAG,gBACX,EAAG,qBAAA09B,GACGhV,EAAe,MACjBrQ,GAAGklB,aAAa,OAAQ,QAAS7U,EAAe,OAEhDrQ,GAAG6C,QAAQ,WAAY,cAErBwN,EAAgB,OAClBrQ,GAAGklB,aAAa,OAAQ,SAAU,KAAM7U,EAAgB,QAExDrQ,GAAG6C,QAAQ,WAAY,eAErBwN,EAAgB,OAClBrQ,GAAGklB,aAAa,OAAQ,SAAU,KAAM7U,EAAgB,QAExDrQ,GAAG6C,QAAQ,YAAa,eAEd7C,GAAGH,KAAK,aAAc,GACrBG,GAAGH,KAAK,cAAe,GACvBG,GAAGH,KAAK,cAAe,EACtC,EAAG,gBAAAylB,GACGtlB,GAAGkB,aACPlB,GAAGkB,WAAa,SAAoBsf,EAAO74B,GACzC9S,KAAKsF,KAAO,aACZtF,KAAK8S,KAAOA,EACZ9S,KAAK0wC,SAAW,SAASC,GACvB3wC,KAAK2rC,MAAQgF,CACf,EACA3wC,KAAK0wC,SAAS/E,GACd3rC,KAAK4hC,QAAU,UACjB,EACAzW,GAAGkB,WAAWhqB,UAAY,IAAIuS,MAC9BuW,GAAGkB,WAAWhqB,UAAUvC,YAAcqrB,GAAGkB,WACzC,CAAC,IAAIhT,SAAS3V,IACZynB,GAAGiC,cAAc1pB,GAAQ,IAAIynB,GAAGkB,WAAW3oB,GAC3CynB,GAAGiC,cAAc1pB,GAAMktC,MAAQ,2BAA2B,IAE9D,EAAG,UAAAC,GACD1lB,GAAGslB,mBACHtlB,GAAGqe,UAAY,IAAI34B,MAAM,MACzBsa,GAAGkF,MAAMsW,GAAO,CAAC,EAAG,KACpBxb,GAAG6kB,2BACH7kB,GAAG8kB,uBACH9kB,GAAGmlB,2BACHnlB,GAAGye,YAAc,CAAE,MAASjD,GAC9B,EAAG,IAAA9B,CAAKngB,EAAOsO,EAAQpsB,GACrBukB,GAAG0Z,KAAK6E,aAAc,EACtBve,GAAGslB,mBACHjV,EAAe,MAAI9W,GAAS8W,EAAe,MAC3CA,EAAgB,OAAIxI,GAAUwI,EAAgB,OAC9CA,EAAgB,OAAI50B,GAAS40B,EAAgB,OAC7CrQ,GAAGqlB,uBACL,EAAG,IAAAM,GACD3lB,GAAG0Z,KAAK6E,aAAc,EACtB,IAAK,IAAI91B,EAAI,EAAGA,EAAIuX,GAAGme,QAAQhlC,OAAQsP,IAAK,CAC1C,IAAIqX,EAASE,GAAGme,QAAQ11B,GACnBqX,GAGLE,GAAGI,MAAMN,EACX,CACF,EAAG,UAAA8lB,CAAW1qC,EAAM2qC,GAClB,IAAI1sB,EAAM6G,GAAG8lB,YAAY5qC,EAAM2qC,GAC/B,OAAK1sB,EAAI4sB,OAGF5sB,EAAIxU,OAFF,IAGX,EAAG,WAAAmhC,CAAY5qC,EAAM2qC,GACnB,IAEE3qC,GADImnC,EAAUriB,GAAG2e,WAAWzjC,EAAM,CAAEikC,QAAS0G,KAC9B3qC,IACjB,CAAE,MAAOK,GACT,CACA,IAAI4d,EAAM,CAAEkmB,QAAQ,EAAO0G,QAAQ,EAAOtqC,MAAO,EAAGtB,KAAM,KAAMe,KAAM,KAAMyJ,OAAQ,KAAMqhC,cAAc,EAAOC,WAAY,KAAMC,aAAc,MAC/I,IACE,IAAI7D,EAAUriB,GAAG2e,WAAWzjC,EAAM,CAAE2mB,QAAQ,IAC5C1I,EAAI6sB,cAAe,EACnB7sB,EAAI8sB,WAAa5D,EAAQnnC,KACzBie,EAAI+sB,aAAe7D,EAAQ16B,KAC3BwR,EAAIhf,KAAO2nB,GAAK1iB,SAASlE,GACzBmnC,EAAUriB,GAAG2e,WAAWzjC,EAAM,CAAEikC,QAAS0G,IACzC1sB,EAAI4sB,QAAS,EACb5sB,EAAIje,KAAOmnC,EAAQnnC,KACnBie,EAAIxU,OAAS09B,EAAQ16B,KACrBwR,EAAIhf,KAAOkoC,EAAQ16B,KAAKxN,KACxBgf,EAAIkmB,OAA0B,MAAjBgD,EAAQnnC,IACvB,CAAE,MAAOK,GACP4d,EAAI1d,MAAQF,EAAEilC,KAChB,CACA,OAAOrnB,CACT,EAAG,UAAAgtB,CAAWtkB,EAAQ3mB,EAAM6iC,EAASC,GACnCnc,EAA0B,iBAAVA,EAAqBA,EAAS7B,GAAGof,QAAQvd,GAEzD,IADA,IAAIpiB,EAAQvE,EAAKnC,MAAM,KAAK+P,UACrBrJ,EAAMtG,QAAQ,CACnB,IAAIwgB,EAAOla,EAAMgO,MACjB,GAAKkM,EAAL,CACA,IAAImlB,EAAUhd,GAAKC,MAAMF,EAAQlI,GACjC,IACEqG,GAAGwiB,MAAM1D,EACX,CAAE,MAAOvjC,GACT,CACAsmB,EAASid,CANU,CAOrB,CACA,OAAOA,CACT,EAAG,UAAAsH,CAAWvkB,EAAQ1nB,EAAMksC,EAAYtI,EAASC,GAC/C,IAAI9iC,EAAO4mB,GAAKC,MAAuB,iBAAVF,EAAqBA,EAAS7B,GAAGof,QAAQvd,GAAS1nB,GAC3EyC,EAAOkhC,GAAWC,EAASC,GAC/B,OAAOhe,GAAG7pB,OAAO+E,EAAM0B,EACzB,EAAG,cAAA0pC,CAAezkB,EAAQ1nB,EAAM4V,EAAMguB,EAASC,EAAUP,GACvD,IAAIviC,EAAOf,EACP0nB,IACFA,EAA0B,iBAAVA,EAAqBA,EAAS7B,GAAGof,QAAQvd,GACzD3mB,EAAOf,EAAO2nB,GAAKC,MAAMF,EAAQ1nB,GAAQ0nB,GAE3C,IAAIjlB,EAAOkhC,GAAWC,EAASC,GAC3Br2B,EAAOqY,GAAG7pB,OAAO+E,EAAM0B,GAC3B,GAAImT,EAAM,CACR,GAAmB,iBAARA,EAAkB,CAE3B,IADA,IAAI+Y,EAAM,IAAIpjB,MAAMqK,EAAK5W,QAChBsP,EAAI,EAAGqb,EAAM/T,EAAK5W,OAAQsP,EAAIqb,IAAOrb,EAAGqgB,EAAIrgB,GAAKsH,EAAKsH,WAAW5O,GAC1EsH,EAAO+Y,CACT,CACA9I,GAAGsjB,MAAM37B,EAAa,IAAP/K,GACf,IAAIkjB,EAASE,GAAGH,KAAKlY,EAAM,KAC3BqY,GAAGa,MAAMf,EAAQ/P,EAAM,EAAGA,EAAK5W,OAAQ,EAAGskC,GAC1Czd,GAAGI,MAAMN,GACTE,GAAGsjB,MAAM37B,EAAM/K,EACjB,CACA,OAAO+K,CACT,EAAG,YAAAu9B,CAAarjB,EAAQ1nB,EAAMof,EAAOsO,GACnC,IAAI3sB,EAAO4mB,GAAKC,MAAuB,iBAAVF,EAAqBA,EAAS7B,GAAGof,QAAQvd,GAAS1nB,GAC3EyC,EAAOkhC,KAAavkB,IAASsO,GAC5B7H,GAAGklB,aAAazD,QAAOzhB,GAAGklB,aAAazD,MAAQ,IACpD,IAAIrf,EAAMpC,GAAG2hB,QAAQ3hB,GAAGklB,aAAazD,QAAS,GAwC9C,OAvCAzhB,GAAG8Z,eAAe1X,EAAK,CAAE,IAAAvC,CAAKC,GAC5BA,EAAOma,UAAW,CACpB,EAAG,KAAA7Z,CAAMN,GACH+H,GAAUA,EAAOnZ,QAAUmZ,EAAOnZ,OAAOvV,QAC3C0uB,EAAO,GAEX,EAAG,IAAApH,CAAKX,EAAQpR,EAAQgS,EAAQvnB,EAAQuzB,GAEtC,IADA,IAAI0N,EAAY,EACP3xB,EAAI,EAAGA,EAAItP,EAAQsP,IAAK,CAC/B,IAAIrD,EACJ,IACEA,EAASmU,GACX,CAAE,MAAOhe,GACP,MAAM,IAAIykB,GAAGkB,WAAW,GAC1B,CACA,QAAe,IAAX9b,GAAmC,IAAdg1B,EACvB,MAAM,IAAIpa,GAAGkB,WAAW,GAE1B,GAAI9b,QAAsC,MAC1Cg1B,IACA1rB,EAAOgS,EAASjY,GAAKrD,CACvB,CAIA,OAHIg1B,IACFta,EAAOnY,KAAKmZ,UAAY1e,KAAKE,OAExB83B,CACT,EAAG,KAAAvZ,CAAMf,EAAQpR,EAAQgS,EAAQvnB,EAAQuzB,GACvC,IAAK,IAAIjkB,EAAI,EAAGA,EAAItP,EAAQsP,IAC1B,IACEof,EAAOnZ,EAAOgS,EAASjY,GACzB,CAAE,MAAOlN,GACP,MAAM,IAAIykB,GAAGkB,WAAW,GAC1B,CAKF,OAHI/nB,IACF2mB,EAAOnY,KAAKmZ,UAAY1e,KAAKE,OAExBmG,CACT,IACOuX,GAAG2iB,MAAMznC,EAAM0B,EAAMwlB,EAC9B,EAAG,aAAAmkB,CAAcp+B,GACf,GAAIA,EAAIq+B,UAAYr+B,EAAIs+B,UAAYt+B,EAAI4zB,MAAQ5zB,EAAI+zB,SAAU,OAAO,EACrE,GAA6B,oBAAlBzX,eACT,MAAM,IAAIhb,MAAM,oMACX,IAAI6mB,EAQT,MAAM,IAAI7mB,MAAM,iDAPhB,IACEtB,EAAI+zB,SAAWhD,GAAmB5I,EAAMnoB,EAAIzK,MAAM,GAClDyK,EAAIg0B,UAAYh0B,EAAI+zB,SAAS/iC,MAC/B,CAAE,MAAOoC,GACP,MAAM,IAAIykB,GAAGkB,WAAW,GAC1B,CAIJ,EAAG,cAAAwlB,CAAe7kB,EAAQ1nB,EAAMuD,EAAKqgC,EAASC,GAC5C,SAAS2I,IACP9xC,KAAK+xC,aAAc,EACnB/xC,KAAKgyC,OAAS,EAChB,CA6DA,GA5DAF,EAAezvC,UAAUH,IAAM,SAA4BogC,GACzD,KAAIA,EAAMtiC,KAAKsE,OAAS,GAAKg+B,EAAM,GAAnC,CAGA,IAAI2P,EAAc3P,EAAMtiC,KAAKkyC,UACzBC,EAAW7P,EAAMtiC,KAAKkyC,UAAY,EACtC,OAAOlyC,KAAK6nB,OAAOsqB,GAAUF,EAH7B,CAIF,EACAH,EAAezvC,UAAU+vC,cAAgB,SAAsCvqB,GAC7E7nB,KAAK6nB,OAASA,CAChB,EACAiqB,EAAezvC,UAAUgwC,YAAc,WACrC,IAAI1iB,EAAM,IAAIC,eAGd,GAFAD,EAAI3E,KAAK,OAAQniB,GAAK,GACtB8mB,EAAII,KAAK,QACHJ,EAAIK,QAAU,KAAOL,EAAIK,OAAS,KAAsB,MAAfL,EAAIK,QAAiB,MAAM,IAAIpb,MAAM,iBAAmB/L,EAAM,aAAe8mB,EAAIK,QAChI,IACIsiB,EADAC,EAAa/wB,OAAOmO,EAAI6iB,kBAAkB,mBAE1CC,GAAkBH,EAAS3iB,EAAI6iB,kBAAkB,mBAAgC,UAAXF,EACtEI,GAAYJ,EAAS3iB,EAAI6iB,kBAAkB,sBAAmC,SAAXF,EACnEJ,EAAY,QACXO,IAAgBP,EAAYK,GACjC,IAiBII,EAAa3yC,KACjB2yC,EAAWP,eAAeD,IACxB,IAAIliC,EAAQkiC,EAAWD,EACnBxuB,GAAOyuB,EAAW,GAAKD,EAAY,EAKvC,GAJAxuB,EAAM9V,KAAK0C,IAAIoT,EAAK6uB,EAAa,QACS,IAA/BI,EAAWX,OAAOG,KAC3BQ,EAAWX,OAAOG,GAvBV,EAAC1O,EAAO14B,KAClB,GAAI04B,EAAQ14B,EAAI,MAAM,IAAI6J,MAAM,kBAAoB6uB,EAAQ,KAAO14B,EAAK,4BACxE,GAAIA,EAAKwnC,EAAa,EAAG,MAAM,IAAI39B,MAAM,QAAU29B,EAAa,uCAChE,IAAIK,EAAO,IAAIhjB,eAQf,GAPAgjB,EAAK5nB,KAAK,MAAOniB,GAAK,GAClB0pC,IAAeL,GAAWU,EAAKC,iBAAiB,QAAS,SAAWpP,EAAQ,IAAM14B,GACtF6nC,EAAKzW,aAAe,cAChByW,EAAKE,kBACPF,EAAKE,iBAAiB,sCAExBF,EAAK7iB,KAAK,QACJ6iB,EAAK5iB,QAAU,KAAO4iB,EAAK5iB,OAAS,KAAuB,MAAhB4iB,EAAK5iB,QAAiB,MAAM,IAAIpb,MAAM,iBAAmB/L,EAAM,aAAe+pC,EAAK5iB,QACpI,YAAsB,IAAlB4iB,EAAK/jB,SACA,IAAItU,WAAWq4B,EAAK/jB,UAAY,IAElCwV,GAAmBuO,EAAK3iB,cAAgB,IAAI,EAAK,EAQxB8iB,CAAM9iC,EAAOyT,SAEH,IAA/BivB,EAAWX,OAAOG,GAA0B,MAAM,IAAIv9B,MAAM,iBACvE,OAAO+9B,EAAWX,OAAOG,EAAS,KAEhCO,GAAaH,IACfL,EAAYK,EAAa,EACzBA,EAAavyC,KAAK6nB,OAAO,GAAGvjB,OAC5B4tC,EAAYK,EACZhvB,EAAI,gFAENvjB,KAAKgzC,QAAUT,EACfvyC,KAAKizC,WAAaf,EAClBlyC,KAAK+xC,aAAc,CACrB,EAC6B,oBAAlBniB,eACmB,KAAM,sHAelC,IAAI4hB,EAAa,CAAEG,UAAU,EAAO9oC,OAElCiK,EAAOqY,GAAGomB,WAAWvkB,EAAQ1nB,EAAMksC,EAAYtI,EAASC,GACxDqI,EAAWnK,SACbv0B,EAAKu0B,SAAWmK,EAAWnK,SAClBmK,EAAW3oC,MACpBiK,EAAKu0B,SAAW,KAChBv0B,EAAKjK,IAAM2oC,EAAW3oC,KAExBrJ,OAAO6sC,iBAAiBv5B,EAAM,CAAEw0B,UAAW,CAAEplC,IAAK,WAChD,OAAOlC,KAAKqnC,SAAS/iC,MACvB,KACA,IAAI8rB,EAAa,CAAC,EASlB,SAAS8iB,EAAYjoB,EAAQpR,EAAQgS,EAAQvnB,EAAQwnB,GACnD,IAAIub,EAAWpc,EAAOnY,KAAKu0B,SAC3B,GAAIvb,GAAYub,EAAS/iC,OAAQ,OAAO,EACxC,IAAIzB,EAAO+K,KAAK0C,IAAI+2B,EAAS/iC,OAASwnB,EAAUxnB,GAChD,GAAI+iC,EAASjhC,MACX,IAAK,IAAIwN,EAAI,EAAGA,EAAI/Q,EAAM+Q,IACxBiG,EAAOgS,EAASjY,GAAKyzB,EAASvb,EAAWlY,QAG3C,IAASA,EAAI,EAAGA,EAAI/Q,EAAM+Q,IACxBiG,EAAOgS,EAASjY,GAAKyzB,EAASnlC,IAAI4pB,EAAWlY,GAGjD,OAAO/Q,CACT,CAeA,OArCWrD,OAAO2D,KAAK2P,EAAKsd,YACvB/W,SAAStW,IACZ,IAAImN,EAAK4C,EAAKsd,WAAWrtB,GACzBqtB,EAAWrtB,GAAO,WAEhB,OADAooB,GAAGumB,cAAc5+B,GACV5C,EAAG4M,MAAM,KAAM6B,UACxB,CAAC,IAiBHyR,EAAWxE,KAAO,CAACX,EAAQpR,EAAQgS,EAAQvnB,EAAQwnB,KACjDX,GAAGumB,cAAc5+B,GACVogC,EAAYjoB,EAAQpR,EAAQgS,EAAQvnB,EAAQwnB,IAErDsE,EAAW4W,KAAO,CAAC/b,EAAQ3mB,EAAQwnB,EAAU+c,EAAMroB,KACjD2K,GAAGumB,cAAc5+B,GACjB,IAAI2pB,EAAM8J,GAAUjiC,GACpB,IAAKm4B,EACH,MAAM,IAAItR,GAAGkB,WAAW,IAG1B,OADA6mB,EAAYjoB,EAAQoS,EAAOZ,EAAKn4B,EAAQwnB,GACjC,CAAE2Q,MAAKqM,WAAW,EAAM,EAEjCh2B,EAAKsd,WAAaA,EACXtd,CACT,GACIqgC,GAAW,CAAEC,iBAAkB,EAAG,WAAAC,CAAYC,EAAOjtC,EAAMktC,GAC7D,GAAItmB,GAAKgW,MAAM58B,GACb,OAAOA,EAET,IAAIqE,EAOJ,GALEA,GADa,MAAX4oC,EACInoB,GAAGzI,MAEOywB,GAASK,gBAAgBF,GACzBjtC,KAEC,GAAfA,EAAK/B,OAAa,CACpB,IAAKivC,EACH,MAAM,IAAIpoB,GAAGkB,WAAW,IAE1B,OAAO3hB,CACT,CACA,OAAOuiB,GAAKC,MAAMxiB,EAAKrE,EACzB,EAAG,MAAAotC,CAAOC,EAAMrtC,EAAMguB,GACpB,IACE,IAAIia,EAAOoF,EAAKrtC,EAClB,CAAE,MAAOK,GACP,GAAIA,GAAKA,EAAEoM,MAAQma,GAAK7lB,UAAUf,KAAU4mB,GAAK7lB,UAAU+jB,GAAGof,QAAQ7jC,EAAEoM,OACtE,OAAQ,GAEV,MAAMpM,CACR,CACA82B,EAAiBnJ,GAAO,EAAGia,EAAK/gB,KAChCiQ,EAAiBnJ,EAAM,GAAK,EAAGia,EAAKvmC,MACpC21B,EAAkBrJ,EAAM,GAAK,EAAGia,EAAKtG,OACrCxK,EAAiBnJ,EAAM,IAAM,EAAGia,EAAKrG,KACrCzK,EAAiBnJ,EAAM,IAAM,EAAGia,EAAKpG,KACrC1K,EAAiBnJ,EAAM,IAAM,EAAGia,EAAKnJ,MACwL3H,EAAiBnJ,EAAM,IAAM,GAA1P+K,EAAU,CAACkP,EAAKzrC,OAAS,GAAIs8B,EAAamP,EAAKzrC,MAAO+K,KAAKmpB,IAAIoI,IAAe,EAAIA,EAAa,GAAKvxB,KAAKiH,MAAMsqB,EAAa,cAAgB,KAAOvxB,KAAKC,MAAMsxB,MAAiBA,IAAe,IAAM,cAAgB,EAAI,KAA6C,IAAK3B,EAAiBnJ,EAAM,IAAM,EAAG+K,EAAQ,IAClT5B,EAAiBnJ,EAAM,IAAM,EAAG,MAChCmJ,EAAiBnJ,EAAM,IAAM,EAAGia,EAAKlG,QACrC,IAAI7Y,EAAQ+e,EAAK/e,MAAM/hB,UACnBgiB,EAAQ8e,EAAK9e,MAAMhiB,UACnBiiB,EAAQ6e,EAAK7e,MAAMjiB,UAQvB,OAPyPgwB,EAAiBnJ,EAAM,IAAM,GAAtR+K,EAAU,CAACxxB,KAAKiH,MAAM0a,EAAQ,OAAS,GAAI4P,EAAavxB,KAAKiH,MAAM0a,EAAQ,MAAO3hB,KAAKmpB,IAAIoI,IAAe,EAAIA,EAAa,GAAKvxB,KAAKiH,MAAMsqB,EAAa,cAAgB,KAAOvxB,KAAKC,MAAMsxB,MAAiBA,IAAe,IAAM,cAAgB,EAAI,KAA6C,IAAK3B,EAAiBnJ,EAAM,IAAM,EAAG+K,EAAQ,IAC9U1B,EAAkBrJ,EAAM,IAAM,EAAG9E,EAAQ,IAAM,KAC0MiO,EAAiBnJ,EAAM,IAAM,GAAtR+K,EAAU,CAACxxB,KAAKiH,MAAM2a,EAAQ,OAAS,GAAI2P,EAAavxB,KAAKiH,MAAM2a,EAAQ,MAAO5hB,KAAKmpB,IAAIoI,IAAe,EAAIA,EAAa,GAAKvxB,KAAKiH,MAAMsqB,EAAa,cAAgB,KAAOvxB,KAAKC,MAAMsxB,MAAiBA,IAAe,IAAM,cAAgB,EAAI,KAA6C,IAAK3B,EAAiBnJ,EAAM,IAAM,EAAG+K,EAAQ,IAC9U1B,EAAkBrJ,EAAM,IAAM,EAAG7E,EAAQ,IAAM,KAC0MgO,EAAiBnJ,EAAM,IAAM,GAAtR+K,EAAU,CAACxxB,KAAKiH,MAAM4a,EAAQ,OAAS,GAAI0P,EAAavxB,KAAKiH,MAAM4a,EAAQ,MAAO7hB,KAAKmpB,IAAIoI,IAAe,EAAIA,EAAa,GAAKvxB,KAAKiH,MAAMsqB,EAAa,cAAgB,KAAOvxB,KAAKC,MAAMsxB,MAAiBA,IAAe,IAAM,cAAgB,EAAI,KAA6C,IAAK3B,EAAiBnJ,EAAM,IAAM,EAAG+K,EAAQ,IAC9U1B,EAAkBrJ,EAAM,IAAM,EAAG5E,EAAQ,IAAM,KAC4K+N,EAAiBnJ,EAAM,IAAM,GAAxP+K,EAAU,CAACkP,EAAK3hB,MAAQ,GAAIwS,EAAamP,EAAK3hB,KAAM/e,KAAKmpB,IAAIoI,IAAe,EAAIA,EAAa,GAAKvxB,KAAKiH,MAAMsqB,EAAa,cAAgB,KAAOvxB,KAAKC,MAAMsxB,MAAiBA,IAAe,IAAM,cAAgB,EAAI,KAA6C,IAAK3B,EAAiBnJ,EAAM,IAAM,EAAG+K,EAAQ,IACzS,CACT,EAAG,OAAAuU,CAAQC,EAAM3oB,EAAQgE,EAAKzO,EAAOqL,GACnC,IAAKV,GAAGC,OAAOH,EAAOnY,KAAK/K,MACzB,MAAM,IAAIojB,GAAGkB,WAAW,IAE1B,GAAY,EAAR7L,EACF,OAAO,EAET,IAAI3G,EAASikB,EAAO13B,MAAMwtC,EAAMA,EAAO3kB,GACvC9D,GAAG8b,MAAMhc,EAAQpR,EAAQgS,EAAQoD,EAAKzO,EACxC,EAAGqzB,aAAS,EAAQ,GAAA3xC,GAClB,IAAIoiB,EAAMuY,EAAgBsW,GAASU,SAAW,GAE9C,OADAV,GAASU,SAAW,EACbvvB,CACT,EAAGwvB,KAAI,IACEX,GAASjxC,MACf6xC,OAAOtX,GACEuG,GAAavG,GAEtB+W,gBAAgBzH,GACJ5gB,GAAG6gB,iBAAiBD,IA2H/BiI,GAAS,CAAEC,mBAAoB,KAAM5jB,MAAMA,GACtClF,GAAGkC,WAAW,KAAM,IAAK,MAAa,GAC5C,UAAA6mB,GACD,IAAIC,EAAO,CAAEC,QAAS,GAAIC,OAAQ,GAClCF,EAAKC,QAAQ1vC,KAAK,CAAEmV,OAAQ,IAAIU,WAAWy5B,GAAOC,oBAAqBpoB,OAAQ,EAAGyoB,QAAS,IAC3F,IAAIC,EAAQP,GAAOQ,WACfC,EAAQT,GAAOQ,WACfE,EAAQvpB,GAAGkC,WAAW2mB,GAAO7vB,KAAMowB,EAAO,KAAM,GAChDI,EAAQxpB,GAAGkC,WAAW2mB,GAAO7vB,KAAMswB,EAAO,KAAM,GACpDC,EAAMP,KAAOA,EACbQ,EAAMR,KAAOA,EACb,IAAIS,EAAiBzpB,GAAG+gB,aAAa,CAAE7lC,KAAMkuC,EAAOzhC,KAAM4hC,EAAOl0B,MAAO,EAAG4kB,UAAU,EAAOhV,WAAY4jB,GAAO5jB,aAC/GskB,EAAMzpB,OAAS2pB,EACf,IAAIC,EAAiB1pB,GAAG+gB,aAAa,CAAE7lC,KAAMouC,EAAO3hC,KAAM6hC,EAAOn0B,MAAO,EAAG4kB,UAAU,EAAOhV,WAAY4jB,GAAO5jB,aAE/G,OADAukB,EAAM1pB,OAAS4pB,EACR,CAAEC,YAAaF,EAAe7I,GAAIgJ,YAAaF,EAAe9I,GACvE,EAAG3b,WAAY,CAAE,IAAA4kB,CAAK/pB,GACpB,IAAIkpB,EAAOlpB,EAAOnY,KAAKqhC,KACvB,GAAiC,IAAb,QAAflpB,EAAOzK,OACV,OAAO,IAET,GAAI2zB,EAAKC,QAAQ9vC,OAAS,EACxB,IAAK,IAAIsP,EAAI,EAAGA,EAAIugC,EAAKC,QAAQ9vC,OAAQsP,IAAK,CAC5C,IAAIqhC,EAASd,EAAKC,QAAQxgC,GAC1B,GAAIqhC,EAAOppB,OAASopB,EAAOX,QAAU,EACnC,OAAO,EAEX,CAEF,OAAO,CACT,EAAG3E,MAAK,CAAC1kB,EAAQsD,EAASslB,IACjB,GACNxO,MAAMpa,GACA,GACN,IAAAW,CAAKX,EAAQpR,EAAQgS,EAAQvnB,EAAQwnB,GAGtC,IAFA,IAAIqoB,EAAOlpB,EAAOnY,KAAKqhC,KACnBe,EAAgB,EACXthC,EAAI,EAAGA,EAAIugC,EAAKC,QAAQ9vC,OAAQsP,IAAK,CAC5C,IAAIqhC,EAASd,EAAKC,QAAQxgC,GAC1BshC,GAAiBD,EAAOppB,OAASopB,EAAOX,OAC1C,CACA,IAAIp5B,EAAOrB,EAAOkS,SAASF,EAAQA,EAASvnB,GAC5C,GAAIA,GAAU,EACZ,OAAO,EAET,GAAqB,GAAjB4wC,EACF,MAAM,IAAI/pB,GAAGkB,WAAW,GAE1B,IAAI8oB,EAASvnC,KAAK0C,IAAI4kC,EAAe5wC,GACjC8wC,EAAYD,EACZE,EAAW,EACf,IAASzhC,EAAI,EAAGA,EAAIugC,EAAKC,QAAQ9vC,OAAQsP,IAAK,CAC5C,IAAI0hC,EAAanB,EAAKC,QAAQxgC,GAC1B2hC,EAAaD,EAAWzpB,OAASypB,EAAWhB,QAChD,GAAIa,GAAUI,EAAY,CACxB,IAAIC,EAAWF,EAAWz7B,OAAOkS,SAASupB,EAAWhB,QAASgB,EAAWzpB,QACrEspB,EAASI,GACXC,EAAWA,EAASzpB,SAAS,EAAGopB,GAChCG,EAAWhB,SAAWa,GAEtBE,IAEFn6B,EAAKhY,IAAIsyC,GACT,KACF,CACMA,EAAWF,EAAWz7B,OAAOkS,SAASupB,EAAWhB,QAASgB,EAAWzpB,QACzE3Q,EAAKhY,IAAIsyC,GACTt6B,EAAOA,EAAK6Q,SAASypB,EAASrmB,YAC9BgmB,GAAUK,EAASrmB,WACnBkmB,GAEJ,CAOA,OANIA,GAAYA,GAAYlB,EAAKC,QAAQ9vC,SACvC+wC,IACAlB,EAAKC,QAAQiB,GAAUxpB,OAAS,EAChCsoB,EAAKC,QAAQiB,GAAUf,QAAU,GAEnCH,EAAKC,QAAQj5B,OAAO,EAAGk6B,GAChBD,CACT,EAAG,KAAAppB,CAAMf,EAAQpR,EAAQgS,EAAQvnB,EAAQwnB,GACvC,IAAIqoB,EAAOlpB,EAAOnY,KAAKqhC,KACnBj5B,EAAOrB,EAAOkS,SAASF,EAAQA,EAASvnB,GACxCmxC,EAAUv6B,EAAKiU,WACnB,GAAIsmB,GAAW,EACb,OAAO,EAET,IAAIH,EAAa,KACU,GAAvBnB,EAAKC,QAAQ9vC,QACfgxC,EAAa,CAAEz7B,OAAQ,IAAIU,WAAWy5B,GAAOC,oBAAqBpoB,OAAQ,EAAGyoB,QAAS,GACtFH,EAAKC,QAAQ1vC,KAAK4wC,IAElBA,EAAanB,EAAKC,QAAQD,EAAKC,QAAQ9vC,OAAS,GAElD45B,EAAOoX,EAAWzpB,QAAUmoB,GAAOC,oBACnC,IAAIyB,EAAwB1B,GAAOC,mBAAqBqB,EAAWzpB,OACnE,GAAI6pB,GAAyBD,EAG3B,OAFAH,EAAWz7B,OAAO3W,IAAIgY,EAAMo6B,EAAWzpB,QACvCypB,EAAWzpB,QAAU4pB,EACdA,EACEC,EAAwB,IACjCJ,EAAWz7B,OAAO3W,IAAIgY,EAAK6Q,SAAS,EAAG2pB,GAAwBJ,EAAWzpB,QAC1EypB,EAAWzpB,QAAU6pB,EACrBx6B,EAAOA,EAAK6Q,SAAS2pB,EAAuBx6B,EAAKiU,aAInD,IAFA,IAAIwmB,EAAaz6B,EAAKiU,WAAa6kB,GAAOC,mBAAqB,EAC3D2B,EAAc16B,EAAKiU,WAAa6kB,GAAOC,mBAClCrgC,EAAI,EAAGA,EAAI+hC,EAAY/hC,IAAK,CACnC,IAAIiiC,EAAY,CAAEh8B,OAAQ,IAAIU,WAAWy5B,GAAOC,oBAAqBpoB,OAAQmoB,GAAOC,mBAAoBK,QAAS,GACjHH,EAAKC,QAAQ1vC,KAAKmxC,GAClBA,EAAUh8B,OAAO3W,IAAIgY,EAAK6Q,SAAS,EAAGioB,GAAOC,qBAC7C/4B,EAAOA,EAAK6Q,SAASioB,GAAOC,mBAAoB/4B,EAAKiU,WACvD,CAMA,OALIymB,EAAc,IACZC,EAAY,CAAEh8B,OAAQ,IAAIU,WAAWy5B,GAAOC,oBAAqBpoB,OAAQ3Q,EAAKiU,WAAYmlB,QAAS,GACvGH,EAAKC,QAAQ1vC,KAAKmxC,GAClBA,EAAUh8B,OAAO3W,IAAIgY,IAEhBu6B,CACT,EAAG,KAAAlqB,CAAMN,GACP,IAAIkpB,EAAOlpB,EAAOnY,KAAKqhC,KACvBA,EAAKE,SACe,IAAhBF,EAAKE,SACPF,EAAKC,QAAU,KAEnB,GAAKI,SAAQ,KACNR,GAAOQ,SAASvK,UACnB+J,GAAOQ,SAASvK,QAAU,GAErB,QAAU+J,GAAOQ,SAASvK,UAAY,MAoD3C6L,GAAqBpC,IACvB,IAAIqC,OAAgC,IAAXC,GAAyBA,QAAU,EACxDC,OAAoC,IAAbC,GAA2BA,QAAY,EAC9DC,OAA4B,IAATC,GAAuBA,QAAQ,EACtDJ,GAAUK,GACVH,GAAYzP,GACZ2P,GAAQE,GACR,IACE,OAAO5C,GACT,CAAE,QACAsC,GAAUD,EACVG,GAAYD,EACZG,GAAQD,CACV,GAEEI,GAAe,CAACxqC,EAAKyqC,EAAQrS,IAAoBH,GAAkBj4B,EAAK+xB,EAAQ0Y,EAAQrS,GACxFsS,GAAmB1qC,IACrB,IAAIlJ,EAAOkhC,GAAgBh4B,GAAO,EAC9BuY,EAAM0xB,GAAQnzC,GAElB,OADIyhB,GAAKiyB,GAAaxqC,EAAKuY,EAAKzhB,GACzByhB,CAAG,EAWRoyB,GAA6B,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAChFC,GAAgC,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnFC,GAAgBC,IAClB,IAJgBC,EAOhB,QAPgBA,EAIMD,EAAKE,eAJK,GAAM,GAAMD,EAAO,KAAQ,GAAKA,EAAO,KAAQ,EAKjBH,GAA7BD,IACFG,EAAKG,YAAcH,EAAKI,UAAY,CACxD,EAETC,GAA6B,CAACjiB,EAAID,IAAOA,EAAK,UAAY,EAAI,UAAYC,GAAMA,IAAO,GAAU,WAALD,EAAkBrP,IA2HlH+e,GAAsB,IAAMvT,YAAY1jB,MACxC,IAAI0pC,GAAe,CAAC,EAChBC,GAAoBC,IACtB,IAAInrC,EACJ,OAAIA,EAAQ,uCAAuC8Y,KAAKqyB,KAC9CnrC,EAAM,IACLA,EAAQ,iCAAiC8Y,KAAKqyB,IAChDnY,EAAoB2C,SAAS31B,EAAM,IAAKA,EAAM,KAC5CA,EAAQ,qBAAqB8Y,KAAKqyB,IACpC,YAAcnrC,EAAM,GAEtB,CAAC,EAENorC,GAA6BC,IAC/B,GAAIJ,GAAaK,oBAAsBD,EAAI,OAAOJ,GAAaM,YAC/D,IAAIvrC,EACA2J,EACJ,IAAKA,EAAQ,CACX,IAAIwhC,EAAQF,GAAaI,GACzB,IAAKF,EAAO,OAAO,OACfnrC,EAAQ,wBAAwB8Y,KAAKqyB,MAE9BnrC,EAAQ,oBAAoB8Y,KAAKqyB,OAD1CxhC,EAAS,CAAEwV,KAAMnf,EAAM,GAAI3H,KAAM2H,EAAM,GAAIwrC,OAAQxrC,EAAM,IAI7D,CAGA,OAFAirC,GAAaK,mBAAqBD,EAClCJ,GAAaM,YAAc5hC,EACpBA,CAAM,EAMX8hC,GAA2BJ,GAAOzB,IAAkB,KACtD,IAAIvlC,EAAS+mC,GAA0BC,GACvC,OAAKhnC,GACDonC,GAAwBrzB,KAAK8xB,GAAMuB,GAAwBrzB,KAC/DqzB,GAAwBrzB,IAAMmyB,GAAgBlmC,EAAO8a,MAC9CssB,GAAwBrzB,KAHX,CAGc,IAEhCszB,GAA+BL,GAAOzB,IAAkB,KAC1D,IAAIxwC,EACJ,GAAS,WAALiyC,EAAiB,CACnB,IAEIrrC,EAFAmrC,EAAQF,GAAaI,GACzB,IAAKF,EAAO,OAAO,EAEnB,GAAInrC,EAAQ,sBAAsB8Y,KAAKqyB,GACrC/xC,EAAO4G,EAAM,OACR,MAAIA,EAAQ,UAAU8Y,KAAKqyB,IAGhC,OAAO,EAFP/xC,EAAO4G,EAAM,EAGf,CACF,MACE5G,EAAO45B,EAAoBiD,QAAQoV,GAIrC,OAFIK,GAA4BtzB,KAAK8xB,GAAMwB,GAA4BtzB,KACvEszB,GAA4BtzB,IAAMmyB,GAAgBnxC,GAC3CsyC,GAA4BtzB,GAAG,IAMpCuzB,GAAch1C,IAChB,IACIi1C,GAASj1C,EADLy5B,EAAWziB,OACGsV,WAAa,OAAS,MAC5C,IAGE,OAFAmN,EAAWyb,KAAKD,GAChB1Z,IACO,CACT,CAAE,MAAO13B,GACT,GAqBF,SAASsxC,KACP,IAAIpxC,EAAQ,IAAIgO,MAChB,IAAKhO,EAAMgqC,MAAO,CAChB,IACE,MAAM,IAAIh8B,KACZ,CAAE,MAAOlO,GACPE,EAAQF,CACV,CACA,IAAKE,EAAMgqC,MACT,MAAO,4BAEX,CACA,OAAOhqC,EAAMgqC,MAAM7hC,UACrB,CACA,IAQIkpC,GAAqBC,IACvBA,EAAU7+B,SAASg+B,IACjB,IAAIE,EAAKH,GAAiBC,GACtBE,IACFJ,GAAaI,GAAMF,EACrB,GACA,EAgCAc,GAAM,CAAC,EAEPC,GAAgB,KAClB,IAAKA,GAAc13B,QAAS,CAC1B,IACI23B,EAAO,CAAE,KAAQ,WAAY,QAAW,WAAY,KAAQ,IAAK,IAAO,IAAK,KAAQ,iBAAkB,MAD3E,iBAAbC,WAAyBA,UAAUC,WAAaD,UAAUC,UAAU,IAAM,KAAKtsC,QAAQ,IAAK,KAAO,SACG,EAJ/F4vB,GAAe,kBAKzC,IAAK,IAAI1b,KAAKg4B,QACG,IAAXA,GAAIh4B,UAAsBk4B,EAAKl4B,GAC9Bk4B,EAAKl4B,GAAKg4B,GAAIh4B,GAErB,IAAIO,EAAU,GACd,IAAK,IAAIP,KAAKk4B,EACZ33B,EAAQhc,KAAK,GAAGyb,KAAKk4B,EAAKl4B,MAE5Bi4B,GAAc13B,QAAUA,CAC1B,CACA,OAAO03B,GAAc13B,OAAO,EA0B1B83B,GAAc90C,IAEXq7B,MACCvD,EAAgB,QAAGA,EAAgB,OAAE93B,GACzCu6B,GAAQ,GAEVnC,EAAMp4B,EAAM,IAAIi+B,GAAWj+B,GAAM,EA0G/B+0C,GAAYC,GACHld,EAAQ,IAAMkd,GAYvBC,GAAQ,CAACD,EAAOE,EAAYC,EAAU93C,EAAMwf,KAC9C,IAAIu4B,EAAM,CAAE,OAAW/sC,IACrB,IAAIgtC,EAAO,EAIX,OAHIhtC,SAA0C,IAARA,IACpCgtC,EAVoB,CAAChtC,IACzB,IAAIlJ,EAAOkhC,GAAgBh4B,GAAO,EAC9BuY,EAAM00B,GAAWn2C,GAErB,OADA0zC,GAAaxqC,EAAKuY,EAAKzhB,GAChByhB,CAAG,EAMC20B,CAAoBltC,IAEtBgtC,CAAI,EACV,MAAU9kB,IACX,IAjBsBxgB,EAAOoG,EAiBzBk/B,EAAOC,GAAW/kB,EAAI3vB,QAE1B,OAnBsBmP,EAkBHwgB,EAlBUpa,EAkBLk/B,EAjB1B1b,EAAMn6B,IAAIuQ,EAAOoG,GAkBRk/B,CAAI,GASTrF,EAAO+E,GAASC,GAChBQ,EAAQ,GACRtI,EAAQ,EACZ,GAAI7vC,EACF,IAAK,IAAI6S,EAAI,EAAGA,EAAI7S,EAAKuD,OAAQsP,IAAK,CACpC,IAAIulC,EAAYL,EAAID,EAASjlC,IACzBulC,GACY,IAAVvI,IAAaA,EAAQwI,MACzBF,EAAMtlC,GAAKulC,EAAUp4C,EAAK6S,KAE1BslC,EAAMtlC,GAAK7S,EAAK6S,EAEpB,CAEF,IACgBmlC,EADZz0B,EAAMovB,EAAK52B,MAAM,KAAMo8B,GAM3B,OALgBH,EAIHz0B,EAHG,IAAVssB,GAAayI,GAAazI,GAGhCtsB,EA1BA,SAA4By0B,GAC1B,MAAmB,WAAfH,EACK5V,GAAa+V,GAEH,YAAfH,EAAiC53B,QAAQ+3B,GACtCA,CACT,CAkBSO,CAAmBP,GAGrBz0B,CAAG,EAYR2mB,GAAS,SAASje,EAAQ1nB,EAAMyC,EAAMo9B,GACnCnY,IACHA,EAAShtB,MAEXA,KAAKgtB,OAASA,EACdhtB,KAAKqwB,MAAQrD,EAAOqD,MACpBrwB,KAAKqqC,QAAU,KACfrqC,KAAK4J,GAAKuhB,GAAGoe,YACbvpC,KAAKsF,KAAOA,EACZtF,KAAK+H,KAAOA,EACZ/H,KAAKmwB,SAAW,CAAC,EACjBnwB,KAAKowB,WAAa,CAAC,EACnBpwB,KAAKmlC,KAAOA,CACd,EAGA3lC,OAAO6sC,iBAAiBpB,GAAO5oC,UAAW,CAAEupB,KAAM,CAAE1pB,IAAK,WACvD,QAHa,KAGLlC,KAAK+H,KACf,EAAG7E,IAAK,SAASiG,GACfA,EAAMnJ,KAAK+H,MALE,IAKiB/H,KAAK+H,OAAQ,GAC7C,GAAKikB,MAAO,CAAE9pB,IAAK,WACjB,QANc,KAMNlC,KAAK+H,KACf,EAAG7E,IAAK,SAASiG,GACfA,EAAMnJ,KAAK+H,MARG,IAQiB/H,KAAK+H,OAAQ,GAC9C,GAAK6pC,SAAU,CAAE1vC,IAAK,WACpB,OAAOipB,GAAGmF,MAAMtwB,KAAK+H,KACvB,GAAK4pC,SAAU,CAAEzvC,IAAK,WACpB,OAAOipB,GAAGqc,SAASxnC,KAAK+H,KAC1B,KACAojB,GAAG8f,OAASA,GACZ9f,GAAGouB,oBAlmE0B,CAACvsB,EAAQ1nB,EAAMuD,EAAKqgC,EAASC,EAAUlN,EAAQC,EAASsd,EAAgB5Q,EAAQ6Q,KAC3G,IAAIC,EAAWp0C,EAAOk+B,GAAQj9B,QAAQ0mB,GAAKC,MAAMF,EAAQ1nB,IAAS0nB,EAElE,SAAS2sB,EAAY9kB,GACnB,SAAS+kB,EAAOC,GACVJ,GAAWA,IACVD,GACHruB,GAAGsmB,eAAezkB,EAAQ1nB,EAAMu0C,EAAY3Q,EAASC,EAAUP,GAE7D3M,GAAQA,IACZwD,GACF,CAvB4B,EAAC5K,EAAW6kB,EAAUE,EAAQ1d,KACtC,oBAAX4d,SAAwBA,QAAQjV,OAC3C,IAAIkV,GAAU,EAQd,OAPA/Q,GAAe3vB,SAAS9B,IAClBwiC,GACAxiC,EAAkB,UAAEmiC,KACtBniC,EAAe,OAAEsd,EAAW6kB,EAAUE,EAAQ1d,GAC9C6d,GAAU,EACZ,IAEKA,CAAO,EAcRC,CAA0BnlB,EAAW6kB,EAAUE,GAAQ,KACrD1d,GAASA,IACbuD,GAAwB,KAI1Bma,EAAO/kB,EACT,CACA2K,IACkB,iBAAP32B,EAjDG,EAACA,EAAKozB,EAAQC,KAC5B,IAAInjB,EAAyC,MAAMlQ,IACnD6yB,EAAU7yB,GAAMoxC,IACd/b,EAAO+b,EAAa,sBAAsBpxC,+BA+CZ8wC,EA9CvB,IAAIp/B,WAAW0/B,IAClBlhC,GAAK0mB,GAAwB,IAC/B1W,IACF,IAAImT,EAGF,KAAM,sBAAsBrzB,aAF5BqzB,GAGF,IAEEnjB,GAAKymB,GAAqB,EAqC5B0a,CAAUrxC,EAAK,EAAuCqzB,GAEtDyd,EAAY9wC,EACd,EA0kEFsiB,GAAG0lB,aACH,IAwCIsJ,GAxCAC,GAAc,CAAEC,EAnoFC,CAAClc,EAAW2B,EAAUv7B,EAAMmvC,KAC/C7V,EAAM,qBAAqBmF,GAAa7E,WAAqB,CAAC2B,EAAWkD,GAAalD,GAAY,mBAAoBv7B,EAAMmvC,EAAO1Q,GAAa0Q,GAAQ,oBAAoB,EAkoFvItxC,EAl2BvC,SAAwB2pC,GACtB,IACE,IAAIvtB,EAAM20B,GAASK,gBAAgBzH,GACnC,OAAO5gB,GAAG+gB,aAAa1tB,GAAKutB,EAC9B,CAAE,MAAOrlC,GACP,QAAiB,IAANykB,IAAkC,eAAXzkB,EAAEpB,KAAwB,MAAMoB,EAClE,OAAQA,EAAEilC,KACZ,CACF,EA01B0D5W,EAr1B1D,SAA4BgX,EAAI6D,EAAKiE,GACnCV,GAASU,QAAUA,EACnB,IACE,IAAI5oB,EAASkoB,GAASK,gBAAgBzH,GACtC,OAAQ6D,GACN,KAAK,EAEH,IADIjuB,EAAMwxB,GAASjxC,OACT,EACR,OAAQ,GAEV,KAAOipB,GAAGme,QAAQ3nB,IAChBA,IAIF,OADYwJ,GAAG+gB,aAAajhB,EAAQtJ,GACnBoqB,GAEnB,KAAK,EACL,KAAK,EAeL,KAAK,EACL,KAAK,EACH,OAAO,EAfT,KAAK,EACH,OAAO9gB,EAAOzK,MAChB,KAAK,EACH,IAAImB,EAAMwxB,GAASjxC,MAEnB,OADA+oB,EAAOzK,OAASmB,EACT,EAET,KAAK,EAIH,OADA2b,GAFI3b,EAAMwxB,GAASW,QACN,GACoB,EAAG,GAC7B,EAKT,KAAK,GACL,KAAK,EAKL,QACE,OAAQ,GAJV,KAAK,EAEH,OA5CNtW,EAAiB8c,MAAuB,EA2CzB,KACD,EAKd,CAAE,MAAO5zC,GACP,QAAiB,IAANykB,IAAkC,eAAXzkB,EAAEpB,KAAwB,MAAMoB,EAClE,OAAQA,EAAEilC,KACZ,CACF,EAmyBiF4O,EAlyBjF,SAA4BxO,EAAI1X,GAC9B,IACE,IAAIpJ,EAASkoB,GAASK,gBAAgBzH,GACtC,OAAOoH,GAASM,OAAOtoB,GAAGmjB,KAAMrjB,EAAO5kB,KAAMguB,EAC/C,CAAE,MAAO3tB,GACP,QAAiB,IAANykB,IAAkC,eAAXzkB,EAAEpB,KAAwB,MAAMoB,EAClE,OAAQA,EAAEilC,KACZ,CACF,EA0xBwG6O,EAzxBxG,SAA4Bn0C,EAAMguB,GAChC,IAEE,OADAhuB,EAAO8sC,GAASY,OAAO1tC,GAChB8sC,GAASM,OAAOtoB,GAAGqjB,MAAOnoC,EAAMguB,EACzC,CAAE,MAAO3tB,GACP,QAAiB,IAANykB,IAAkC,eAAXzkB,EAAEpB,KAAwB,MAAMoB,EAClE,OAAQA,EAAEilC,KACZ,CACF,EAixB+H8O,EAhxB/H,SAA4BnH,EAAOjtC,EAAM0B,GACvC,IAME,OALA1B,EAAO8sC,GAASY,OAAO1tC,GACvBA,EAAO8sC,GAASE,YAAYC,EAAOjtC,GAEL,OAD9BA,EAAO4mB,GAAK7lB,UAAUf,IACbA,EAAK/B,OAAS,KAAY+B,EAAOA,EAAKuuB,OAAO,EAAGvuB,EAAK/B,OAAS,IACvE6mB,GAAGwiB,MAAMtnC,EAAM0B,EAAM,GACd,CACT,CAAE,MAAOrB,GACP,QAAiB,IAANykB,IAAkC,eAAXzkB,EAAEpB,KAAwB,MAAMoB,EAClE,OAAQA,EAAEilC,KACZ,CACF,EAowBsJ+O,EAnwBtJ,SAA+BpH,EAAOjtC,EAAMguB,EAAK7T,GAC/C,IACEna,EAAO8sC,GAASY,OAAO1tC,GACvB,IAAIs0C,EAAmB,IAARn6B,EACX+yB,EAAqB,KAAR/yB,EAGjB,OAFAA,IAAgB,KAChBna,EAAO8sC,GAASE,YAAYC,EAAOjtC,EAAMktC,GAClCJ,GAASM,OAAOkH,EAAWxvB,GAAGqjB,MAAQrjB,GAAGmjB,KAAMjoC,EAAMguB,EAC9D,CAAE,MAAO3tB,GACP,QAAiB,IAANykB,IAAkC,eAAXzkB,EAAEpB,KAAwB,MAAMoB,EAClE,OAAQA,EAAEilC,KACZ,CACF,EAuvBgL7V,EAtvBhL,SAA2Bwd,EAAOjtC,EAAMma,EAAOqzB,GAC7CV,GAASU,QAAUA,EACnB,IACExtC,EAAO8sC,GAASY,OAAO1tC,GACvBA,EAAO8sC,GAASE,YAAYC,EAAOjtC,GACnC,IAAI0B,EAAO8rC,EAAUV,GAASjxC,MAAQ,EACtC,OAAOipB,GAAGH,KAAK3kB,EAAMma,EAAOzY,GAAMgkC,EACpC,CAAE,MAAOrlC,GACP,QAAiB,IAANykB,IAAkC,eAAXzkB,EAAEpB,KAAwB,MAAMoB,EAClE,OAAQA,EAAEilC,KACZ,CACF,EA2uBsMiP,EAxmBtM,SAAyBC,GACvB,IACE,GAAa,GAATA,EACF,MAAM,IAAI1vB,GAAGkB,WAAW,IAE1B,IAAIjK,EAAM4xB,GAAOE,aAGjB,OAFA1W,EAAiBqd,GAAS,EAAGz4B,EAAI0yB,aACjCtX,EAAiBqd,EAAQ,GAAK,EAAGz4B,EAAI2yB,aAC9B,CACT,CAAE,MAAOruC,GACP,QAAiB,IAANykB,IAAkC,eAAXzkB,EAAEpB,KAAwB,MAAMoB,EAClE,OAAQA,EAAEilC,KACZ,CACF,EA2lB0NmP,EA1lB1N,SAAyBC,EAAKC,EAAMv6C,GAClC,IAEE,IADA,IAAIw6C,EAAU,EACLrnC,EAAI,EAAGA,EAAIonC,EAAMpnC,IAAK,CAC7B,IAAIsnC,EAASH,EAAM,EAAInnC,EACnBm4B,EAAKlP,EAAgBqe,GAAU,GAC/BC,EAAS3e,EAAgB0e,EAAS,GAAK,GACvCE,EAAO,GACPnwB,EAASE,GAAG8gB,UAAUF,GACtB9gB,IACFmwB,EAAOjI,GAASC,iBACZnoB,EAAOmF,WAAW4kB,OACpBoG,EAAOnwB,EAAOmF,WAAW4kB,KAAK/pB,GAAS,MAG3CmwB,GAAiB,GAATD,IACEF,IACV3d,EAAiB4d,EAAS,GAAK,EAAGE,EACpC,CACA,OAAOH,CACT,CAAE,MAAOv0C,GACP,QAAiB,IAANykB,IAAkC,eAAXzkB,EAAEpB,KAAwB,MAAMoB,EAClE,OAAQA,EAAEilC,KACZ,CACF,EAkkB8O/3B,EAjkB9O,SAA2BvN,EAAMguB,GAC/B,IAEE,OADAhuB,EAAO8sC,GAASY,OAAO1tC,GAChB8sC,GAASM,OAAOtoB,GAAGmjB,KAAMjoC,EAAMguB,EACxC,CAAE,MAAO3tB,GACP,QAAiB,IAANykB,IAAkC,eAAXzkB,EAAEpB,KAAwB,MAAMoB,EAClE,OAAQA,EAAEilC,KACZ,CACF,EAyjBoQ3V,EAvjB5N,KADnB,EAwjBqR/P,EAhiBjQ3gB,GAASwwC,IAAkB,IAAMW,GAAgBjb,EAAQwH,GAAa19B,KAAU,MAgiBuNoB,EA/hBxS,KACtC,IAAI20C,EAAU7f,EAAyB,gBACvC,YAAgB,IAAZ6f,GACKA,CAEyC,EA0hBkU7+B,EA9gBtX,SAAwB8+B,EAAUC,EAAWC,GAC3C,IAAIC,EAAOvE,GAA2BoE,EAAUC,GAC5C1E,EAAO,IAAItpC,KAAY,IAAPkuC,GACpBje,EAAiBge,GAAS,EAAG3E,EAAK6E,cAClCle,EAAiBge,EAAQ,GAAK,EAAG3E,EAAK8E,cACtCne,EAAiBge,EAAQ,GAAK,EAAG3E,EAAK+E,YACtCpe,EAAiBge,EAAQ,IAAM,EAAG3E,EAAKI,WACvCzZ,EAAiBge,EAAQ,IAAM,EAAG3E,EAAKG,YACvCxZ,EAAiBge,EAAQ,IAAM,EAAG3E,EAAKE,cAAgB,MACvDvZ,EAAiBge,EAAQ,IAAM,EAAG3E,EAAKgF,UAEvCre,EAAiBge,EAAQ,IAAM,EADC,EAArB5E,GAAaC,IAExBrZ,EAAiBge,EAAQ,IAAM,GAAgC,GAA3B3E,EAAKiF,qBACzC,IAAI7rC,EAAQ,IAAI1C,KAAKspC,EAAKE,cAAe,EAAG,GACxCgF,EAAe,IAAIxuC,KAAKspC,EAAKE,cAAe,EAAG,GAAG+E,oBAClDE,EAAe/rC,EAAM6rC,oBAEzBte,EAAiBge,EAAQ,IAAM,EADgF,GAApGO,GAAgBC,GAAgBnF,EAAKiF,qBAAuBluC,KAAK0C,IAAI0rC,EAAcD,IAEhG,EA4fyY1tC,EA3fvX,SAASmtC,GACzB,IAAIl3B,EAAM,MACR,IAAIuyB,EAAO,IAAItpC,KAAKsvB,EAAgB2e,EAAQ,IAAM,GAAK,KAAM3e,EAAgB2e,EAAQ,IAAM,GAAI3e,EAAgB2e,EAAQ,IAAM,GAAI3e,EAAgB2e,EAAQ,GAAK,GAAI3e,EAAgB2e,EAAQ,GAAK,GAAI3e,EAAgB2e,GAAS,GAAI,GAC5NrlB,EAAM0G,EAAgB2e,EAAQ,IAAM,GACpCS,EAAgBpF,EAAKiF,oBACrB7rC,EAAQ,IAAI1C,KAAKspC,EAAKE,cAAe,EAAG,GACxCgF,EAAe,IAAIxuC,KAAKspC,EAAKE,cAAe,EAAG,GAAG+E,oBAClDE,EAAe/rC,EAAM6rC,oBACrBI,EAAYtuC,KAAK0C,IAAI0rC,EAAcD,GACvC,GAAI5lB,EAAM,EACRqH,EAAiBge,EAAQ,IAAM,EAAGh6B,OAAOu6B,GAAgBC,GAAgBE,GAAaD,SACjF,GAAI9lB,EAAM,IAAM+lB,GAAaD,GAAgB,CAClD,IAAIE,EAAevuC,KAAK4C,IAAIwrC,EAAcD,GACtCK,EAAajmB,EAAM,EAAI+lB,EAAYC,EACvCtF,EAAKwF,QAAQxF,EAAKrpC,UAA2C,KAA9B4uC,EAAaH,GAC9C,CACAze,EAAiBge,EAAQ,IAAM,EAAG3E,EAAKgF,UACvC,IAAIS,EAA4B,EAArB1F,GAAaC,GAQxB,OAPArZ,EAAiBge,EAAQ,IAAM,EAAGc,GAClC9e,EAAiBge,GAAS,EAAG3E,EAAK6E,cAClCle,EAAiBge,EAAQ,GAAK,EAAG3E,EAAK8E,cACtCne,EAAiBge,EAAQ,GAAK,EAAG3E,EAAK+E,YACtCpe,EAAiBge,EAAQ,IAAM,EAAG3E,EAAKI,WACvCzZ,EAAiBge,EAAQ,IAAM,EAAG3E,EAAKG,YACvCxZ,EAAiBge,EAAQ,IAAM,EAAG3E,EAAK0F,WAChC1F,EAAKrpC,UAAY,GACzB,EAzBS,GA0BV,OAAOgvC,IAAard,EAAa7a,GAAM1W,KAAKmpB,IAAIoI,IAAe,EAAIA,EAAa,GAAKvxB,KAAKiH,MAAMsqB,EAAa,cAAgB,KAAOvxB,KAAKC,MAAMsxB,MAAiBA,IAAe,IAAM,cAAgB,EAAI,IAAK7a,IAAQ,CACxN,EA+dyZ4D,EA9dzZ,SAAmB+G,EAAK4Z,EAAMroB,EAAOurB,EAAI0Q,EAAYC,EAAa5T,EAAW8K,GAC3E,IAAI/nB,EAASqrB,GAA2BuF,EAAYC,GACpD,IACE,GAAI73B,MAAMgH,GAAS,OAAO,GAC1B,IAAIZ,EAASkoB,GAASK,gBAAgBzH,GAClC3pB,EAAM+I,GAAG6b,KAAK/b,EAAQgE,EAAKpD,EAAQgd,EAAMroB,GACzCic,EAAMra,EAAIqa,IAGd,OAFAe,EAAiBsL,GAAa,EAAG1mB,EAAI0mB,WACrCpL,EAAkBkW,GAAQ,EAAGnX,GACtB,CACT,CAAE,MAAO/1B,GACP,QAAiB,IAANykB,IAAkC,eAAXzkB,EAAEpB,KAAwB,MAAMoB,EAClE,OAAQA,EAAEilC,KACZ,CACF,EAgduavzB,EA/cva,SAAqBw7B,EAAM3kB,EAAK4Z,EAAMroB,EAAOurB,EAAI0Q,EAAYC,GAC3D,IAAI7wB,EAASqrB,GAA2BuF,EAAYC,GACpD,IACE,GAAI73B,MAAMgH,GAAS,OAAO,GAC1B,IAAIZ,EAASkoB,GAASK,gBAAgBzH,GAC3B,EAAPlD,GACFsK,GAASQ,QAAQC,EAAM3oB,EAAQgE,EAAKzO,EAAOqL,GAE7CV,GAAGukB,OAAOzkB,EACZ,CAAE,MAAOvkB,GACP,QAAiB,IAANykB,IAAkC,eAAXzkB,EAAEpB,KAAwB,MAAMoB,EAClE,OAAQA,EAAEilC,KACZ,CACF,EAkcub/vB,EAjcra,SAAS4/B,GACzB,IAAIl3B,EAAM,MACR,IAAIm3B,EAAOluC,KAAKovC,IAAI9f,EAAgB2e,EAAQ,IAAM,GAAK,KAAM3e,EAAgB2e,EAAQ,IAAM,GAAI3e,EAAgB2e,EAAQ,IAAM,GAAI3e,EAAgB2e,EAAQ,GAAK,GAAI3e,EAAgB2e,EAAQ,GAAK,GAAI3e,EAAgB2e,GAAS,GAAI,GAC5N3E,EAAO,IAAItpC,KAAKkuC,GACpBje,EAAiBge,EAAQ,IAAM,EAAG3E,EAAK+F,aACvC,IAAI3sC,EAAQ1C,KAAKovC,IAAI9F,EAAKgG,iBAAkB,EAAG,EAAG,EAAG,EAAG,EAAG,GACvDP,GAAQzF,EAAKrpC,UAAYyC,GAAS,MAAuB,EAE7D,OADAutB,EAAiBge,EAAQ,IAAM,EAAGc,GAC3BzF,EAAKrpC,UAAY,GACzB,EARS,GASV,OAAOgvC,IAAard,EAAa7a,GAAM1W,KAAKmpB,IAAIoI,IAAe,EAAIA,EAAa,GAAKvxB,KAAKiH,MAAMsqB,EAAa,cAAgB,KAAOvxB,KAAKC,MAAMsxB,MAAiBA,IAAe,IAAM,cAAgB,EAAI,IAAK7a,IAAQ,CACxN,EAsbucw4B,EArbtb,CAACC,EAAUC,EAAUC,KACpC,IAAIC,GAAc,IAAqB3vC,MAAQwpC,cAC3CoG,EAAS,IAAI5vC,KAAK2vC,EAAa,EAAG,GAClCE,EAAS,IAAI7vC,KAAK2vC,EAAa,EAAG,GAClClB,EAAemB,EAAOrB,oBACtBC,EAAeqB,EAAOtB,oBAI1B,SAASuB,EAAYxG,GACnB,IAAI3qC,EAAQ2qC,EAAKyG,eAAepxC,MAAM,qBACtC,OAAOA,EAAQA,EAAM,GAAK,KAC5B,CALAwxB,EAAkBqf,GAAY,EAAuB,GAD7BnvC,KAAK4C,IAAIwrC,EAAcD,IAE/Cve,EAAiBwf,GAAY,EAAGx7B,OAAOw6B,GAAgBD,IAKvD,IAAIwB,EAAaF,EAAYF,GACzBK,EAAaH,EAAYD,GACzBK,EAAgBhH,GAAgB8G,GAChCG,EAAgBjH,GAAgB+G,GAChCzB,EAAeC,GACjBte,EAAkBuf,GAAU,EAAGQ,GAC/B/f,EAAkBuf,EAAS,GAAK,EAAGS,KAEnChgB,EAAkBuf,GAAU,EAAGS,GAC/BhgB,EAAkBuf,EAAS,GAAK,EAAGQ,GACrC,EA8ZodvvC,EA5Zzc,KACX2vB,EAAM,GAAG,EA2Zsd8f,EAzZtc,IAAMpwC,KAAKE,MAyZodmwC,EAvZ3d,IADR,WAwZggBn8C,EAtZrf,CAAC4yB,EAAK/vB,IAAWiyC,GAAatX,EAAgB5K,EAAK/vB,GAsZkeu5C,EAAGnZ,GAAqBvkB,EAtX9iBo3B,IAC/B,IAAIhnC,EAAS+mC,GAA0BC,GACvC,OAAOhnC,GAASA,EAAOmnC,QAAc,CAAC,EAoXqkBoG,EAAGnG,GAAyBoG,EAAGnG,GAA6Bx2B,EAvV1oBm2B,IAC7B,IAAIhnC,EAAS+mC,GAA0BC,GACvC,OAAOhnC,EAASA,EAAOhM,KAAO,CAAC,EAqVoqBy5C,EAzUtqBC,IAC7B,IAAIhlC,EAAU6kB,EAAOx5B,OAEjB45C,EAlFiB,WAmFrB,IAFAD,KAAmB,GAECC,EAClB,OAAO,EAGT,IADA,IAAe/9B,EACNg+B,EAAU,EAAGA,GAAW,EAAGA,GAAW,EAAG,CAChD,IAAIC,EAAoBnlC,GAAW,EAAI,GAAMklC,GAC7CC,EAAoBxwC,KAAK0C,IAAI8tC,EAAmBH,EAAgB,WAChE,IAAIlW,EAAUn6B,KAAK0C,IAAI4tC,GAJV/9B,EAI+BvS,KAAK4C,IAAIytC,EAAeG,KAAoB,MAJ3Cj+B,EAI2C,cAExF,GADkB03B,GAAW9P,GAE3B,OAAO,CAEX,CACA,OAAO,CAAK,EAwTmtB7zB,EAxS/rBmqC,IAChC,IAAInG,EAAYF,KAAe9zC,MAAM,MACjB,SAAhBg0C,EAAU,IACZA,EAAUzX,QAEZ,IAAI6d,EAASpG,EAAUmG,EAAQ,GAC/B,OAAOjH,GAAiBkH,EAAO,EAkS+tBC,EAxRhwB,WACE,IAAIrG,EAAYF,KAAe9zC,MAAM,MAOrC,MANoB,SAAhBg0C,EAAU,IACZA,EAAUzX,QAEZwX,GAAkBC,GAClBf,GAAaqH,UAAYpH,GAAiBc,EAAU,IACpDf,GAAasH,WAAavG,EACnBf,GAAaqH,SACtB,EA+Q+xBE,EA9QzvB,CAAC9K,EAAM/5B,EAAQ9H,KACnD,IAAI6+B,EACAuG,GAAaqH,WAAa5K,EAC5BhD,EAAQuG,GAAasH,YAGL,UADhB7N,EAAQoH,KAAe9zC,MAAM,OACnB,IACR0sC,EAAMnQ,QAERwX,GAAkBrH,IAGpB,IADA,IAAI/kB,EAAS,EACN+kB,EAAM/kB,IAAWurB,GAAiBxG,EAAM/kB,KAAY+nB,KACvD/nB,EAEJ,IAAK,IAAIjY,EAAI,EAAGA,EAAI7B,GAAS6+B,EAAMh9B,EAAIiY,KAAWjY,EAChD4pB,EAAiB3jB,EAAa,EAAJjG,GAAS,EAAGwjC,GAAiBxG,EAAMh9B,EAAIiY,KAEnE,OAAOjY,CAAC,EA4PyzBD,EAlOhzB,CAACgrC,EAAWC,KAC7B,IAAIC,EAAU,EAOd,OANAzG,KAAgB/+B,SAAQ,CAACgI,EAAQzN,KAC/B,IAAI6oB,EAAMmiB,EAAcC,EACxBnhB,EAAkBihB,EAAgB,EAAJ/qC,GAAS,EAAG6oB,GAV1B,EAAC1wB,EAAK8N,KACxB,IAAK,IAAIjG,EAAI,EAAGA,EAAI7H,EAAIzH,SAAUsP,EAChCupB,EAA6B,EAAZtjB,IAAe9N,EAAIyW,WAAW5O,IAEjDupB,EAA2B,EAAVtjB,EAAa,EAAE,EAO9BilC,CAAcz9B,EAAQob,GACtBoiB,GAAWx9B,EAAO/c,OAAS,CAAC,IAEvB,CAAC,EA0N00B/C,EAxN3zB,CAACw9C,EAAgBC,KACxC,IAAIt+B,EAAU03B,KACd1a,EAAkBqhB,GAAkB,EAAGr+B,EAAQpc,QAC/C,IAAIu6C,EAAU,EAGd,OAFAn+B,EAAQrH,SAASgI,GAAWw9B,GAAWx9B,EAAO/c,OAAS,IACvDo5B,EAAkBshB,GAAqB,EAAGH,GACnC,CAAC,EAkNi2Br9C,EAxM91B,CAACwuB,EAAQivB,KAEflgB,MAvxFLmgB,KACApc,GAAqBjE,GACrB1T,GAAG2lB,OACHnM,GAAIG,YAuxFJ0T,GAAWxoB,EAAO,EAmMi2BmvB,EAhMr3B,SAAmBpT,GACjB,IACE,IAAI9gB,EAASkoB,GAASK,gBAAgBzH,GAEtC,OADA5gB,GAAGI,MAAMN,GACF,CACT,CAAE,MAAOvkB,GACP,QAAiB,IAANykB,IAAkC,eAAXzkB,EAAEpB,KAAwB,MAAMoB,EAClE,OAAOA,EAAEilC,KACX,CACF,EAuLm4ByT,EAtLn4B,SAAwBrT,EAAIsT,GAC1B,IACE,IAIMp0B,EAASkoB,GAASK,gBAAgBzH,GAOxC,OAJA5O,EAAyB,EAARkiB,EAFJp0B,EAAOia,IAAM,EAAI/Z,GAAGmF,MAAMrF,EAAOljB,MAAQ,EAAIojB,GAAGoc,OAAOtc,EAAOljB,MAAQ,EAAI,GAGvFu1B,EAAiB+hB,EAAO,GAAK,EANjB,GAOmN7hB,EAAiB6hB,EAAO,GAAK,GAA5PjgB,EAAU,CAACkgB,GAAmBngB,EATb,GASuCvxB,KAAKmpB,IAAIoI,IAAe,EAAIA,EAAa,GAAKvxB,KAAKiH,MAAMsqB,EAAa,cAAgB,KAAOvxB,KAAKC,MAAMsxB,MAAiBA,IAAe,IAAM,cAAgB,EAAI,KAA6C,IAAK3B,EAAiB6hB,EAAO,IAAM,EAAGjgB,EAAQ,IAC1E5B,EAAiB6hB,EAAO,IAAM,GAAzQjgB,EAAU,CAACmgB,GAAyBpgB,EATb,GAS6CvxB,KAAKmpB,IAAIoI,IAAe,EAAIA,EAAa,GAAKvxB,KAAKiH,MAAMsqB,EAAa,cAAgB,KAAOvxB,KAAKC,MAAMsxB,MAAiBA,IAAe,IAAM,cAAgB,EAAI,KAA8C,IAAK3B,EAAiB6hB,EAAO,IAAM,EAAGjgB,EAAQ,IAC3T,CACT,CAAE,MAAO14B,GACP,QAAiB,IAANykB,IAAkC,eAAXzkB,EAAEpB,KAAwB,MAAMoB,EAClE,OAAOA,EAAEilC,KACX,CACF,EAoKs5B93B,EAnJt5B,SAAkBk4B,EAAIyT,EAAKC,EAAQC,GACjC,IACE,IACI3sB,EAnBM,EAAC9H,EAAQu0B,EAAKC,EAAQ5zB,KAElC,IADA,IAAIvH,EAAM,EACD1Q,EAAI,EAAGA,EAAI6rC,EAAQ7rC,IAAK,CAC/B,IAAI6oB,EAAMO,EAAiBwiB,GAAO,GAC9BvwB,EAAM+N,EAAiBwiB,EAAM,GAAK,GACtCA,GAAO,EACP,IAAIG,EAAOx0B,GAAGS,KAAKX,EAAQoS,EAAOZ,EAAKxN,EAAKpD,GAC5C,GAAI8zB,EAAO,EAAG,OAAQ,EAEtB,GADAr7B,GAAOq7B,EACHA,EAAO1wB,EAAK,WACM,IAAXpD,IACTA,GAAU8zB,EAEd,CACA,OAAOr7B,CAAG,EAKEs7B,CADGzM,GAASK,gBAAgBzH,GACZyT,EAAKC,GAE/B,OADA/hB,EAAkBgiB,GAAQ,EAAG3sB,GACtB,CACT,CAAE,MAAOrsB,GACP,QAAiB,IAANykB,IAAkC,eAAXzkB,EAAEpB,KAAwB,MAAMoB,EAClE,OAAOA,EAAEilC,KACX,CACF,EAyIm6BnjB,EAxIn6B,SAAkBujB,EAAI0Q,EAAYC,EAAatwB,EAAQyzB,GACrD,IAAIh0B,EAASqrB,GAA2BuF,EAAYC,GACpD,IACE,GAAI73B,MAAMgH,GAAS,OAAO,GAC1B,IAAIZ,EAASkoB,GAASK,gBAAgBzH,GAItC,OAHA5gB,GAAGgB,OAAOlB,EAAQY,EAAQO,GAC+MoR,EAAiBqiB,GAAa,GAAvQzgB,EAAU,CAACnU,EAAOa,WAAa,GAAIqT,EAAalU,EAAOa,UAAWle,KAAKmpB,IAAIoI,IAAe,EAAIA,EAAa,GAAKvxB,KAAKiH,MAAMsqB,EAAa,cAAgB,KAAOvxB,KAAKC,MAAMsxB,MAAiBA,IAAe,IAAM,cAAgB,EAAI,KAA8C,IAAK3B,EAAiBqiB,EAAY,GAAK,EAAGzgB,EAAQ,IAChUnU,EAAOskB,UAAuB,IAAX1jB,GAA2B,IAAXO,IAAcnB,EAAOskB,SAAW,MAChE,CACT,CAAE,MAAO7oC,GACP,QAAiB,IAANykB,IAAkC,eAAXzkB,EAAEpB,KAAwB,MAAMoB,EAClE,OAAOA,EAAEilC,KACX,CACF,EA2Hg7B33B,EA3Gh7B,SAAmB+3B,EAAIyT,EAAKC,EAAQC,GAClC,IACE,IACI3sB,EAlBO,EAAC9H,EAAQu0B,EAAKC,EAAQ5zB,KAEnC,IADA,IAAIvH,EAAM,EACD1Q,EAAI,EAAGA,EAAI6rC,EAAQ7rC,IAAK,CAC/B,IAAI6oB,EAAMO,EAAiBwiB,GAAO,GAC9BvwB,EAAM+N,EAAiBwiB,EAAM,GAAK,GACtCA,GAAO,EACP,IAAIG,EAAOx0B,GAAGa,MAAMf,EAAQoS,EAAOZ,EAAKxN,EAAKpD,GAC7C,GAAI8zB,EAAO,EAAG,OAAQ,EACtBr7B,GAAOq7B,OACe,IAAX9zB,IACTA,GAAU8zB,EAEd,CACA,OAAOr7B,CAAG,EAKEw7B,CADG3M,GAASK,gBAAgBzH,GACXyT,EAAKC,GAEhC,OADA/hB,EAAkBgiB,GAAQ,EAAG3sB,GACtB,CACT,CAAE,MAAOrsB,GACP,QAAiB,IAANykB,IAAkC,eAAXzkB,EAAEpB,KAAwB,MAAMoB,EAClE,OAAOA,EAAEilC,KACX,CACF,EAiG87BoU,EAAGvH,IAC77BwH,GAvuFJ,WACE,IApBwB9wB,EAAQiS,EAAYC,EAAS1W,EAoBjDhP,EAAO,CAAE,EAAK0+B,IAClB,SAAS6F,EAAgBve,EAAUwe,GACjC,IAxOehpB,EAwOXipB,EAAWze,EAAShiC,QAQxB,OANA48B,GADA0jB,GAAcG,GACc,EAC5B3kB,EAAoB,WAAIc,EACxB8B,IACY4hB,GAAe,EA7OZ9oB,EA8OL8oB,GAAe,EA7O3BphB,EAAW5X,QAAQkQ,GA8OjBuI,IACO0gB,CACT,CAKA,GAJA3gB,IAIIhE,EAAyB,gBAC3B,IACE,OAAOA,EAAyB,gBAAE9f,EAAMukC,EAC1C,CAAE,MAAOv5C,GACP4Y,EAAI,sDAAsD5Y,KAC1D60B,EAAmB70B,EACrB,CAGF,OA7CwBwoB,EA4CPkN,EA5Ce+E,EA4CHlC,EA5CemC,EA4CC1lB,EA5CQgP,EAiCrD,SAAoCna,GAClC0vC,EAAgB1vC,EAAiB,SACnC,EAlCK2e,GAAqD,mBAApC0O,YAAYwiB,sBAAuCvgB,EAAUsB,IAA+B,mBAATG,MAgBlGJ,EAAuBC,EAAYC,EAAS1W,GAf1C4W,MAAMH,EAAY,CAAEI,YAAa,gBAAiB1kB,MAAMgS,IAC7D,IAAIte,EAASqtB,YAAYwiB,qBAAqBvxB,EAAUuS,GACpDif,EAAwBxxB,EAASyxB,QAAQrG,cAC7C,OAAO1pC,EAAOsM,MAAK,SAAS0jC,GAC1BF,EAAsBxjC,MAAM2jC,IAC1BthB,EAAsB,IAAIc,EAAoB,IAAIzlB,WAAWimC,GAAoBD,EAAoBjgC,QACrGoK,EAAS61B,EAAoB,IAC3B/iC,GAAW8B,EAAI,0CAA0C9B,MAC/D,IAAG,SAASA,GAGV,OAFA8B,EAAI,kCAAkC9B,KACtC8B,EAAI,6CACG4hB,EAAuBC,EAAYC,EAAS1W,EACrD,GAAE,KA8ByE3N,MAAMwe,GAC9E,CAAC,CACV,CA4sFkBklB,GAGdzK,IADmBxa,EAA0B,iBAAI,CAACklB,EAAIjqC,EAAIC,KAA2B8kB,EAA0B,iBAAIwkB,GAAe,GAAGU,EAAIjqC,EAAIC,GACnI8kB,EAAiB,QAAKklB,IAAQ1K,GAAUxa,EAAiB,QAAIwkB,GAAe,GAAGU,IACzFtK,GAAQ5a,EAAe,MAAKklB,IAAQtK,GAAQ5a,EAAe,MAAIwkB,GAAe,GAAGU,GAEjFpG,IAD0B9e,EAAiC,wBAAKklB,IAAkCllB,EAAiC,wBAAIwkB,GAAe,GAAGU,GACrI,KAAOpG,GAAoB0F,GAAe,MAC9Dd,GAAmB,KAAOA,GAAmBc,GAAe,KAC5D3J,GAA8BqK,IAAQrK,GAA6B2J,GAAe,GAAGU,GACrFxK,GAAY,CAACwK,EAAIjqC,KAAQy/B,GAAY8J,GAAe,GAAGU,EAAIjqC,GAC3D6/B,GAA4BoK,IAAQpK,GAA2B0J,GAAe,GAAGU,GACjFja,GAA+B,CAACia,EAAIjqC,KAAQgwB,GAA+BuZ,GAAgB,IAAGU,EAAIjqC,GAClG+lC,GAAekE,IAAQlE,GAAcwD,GAAgB,IAAGU,GACxDtH,GAAY,KAAOA,GAAY4G,GAAgB,MAC/C3G,GAAgBqH,IAAQrH,GAAe2G,GAAgB,IAAGU,GAC1D1H,GAAc0H,IAAQ1H,GAAagH,GAAgB,IAAGU,GAGtDC,IAF6CnlB,EAAoD,2CAAI,CAACklB,EAAIjqC,KAAqD+kB,EAAoD,2CAAIwkB,GAAgB,IAAGU,EAAIjqC,GACzM+kB,EAA4C,mCAAI,CAACklB,EAAIjqC,EAAIC,EAAIkqC,KAA6CplB,EAA4C,mCAAIwkB,GAAgB,IAAGU,EAAIjqC,EAAIC,EAAIkqC,GAC3MF,IAAQC,GAAkBX,GAAgB,IAAGU,IAEhE/jB,GAAmB+jB,IAAQ/jB,GAAkBqjB,GAAgB,IAAGU,GAEhE5jB,GAAmB4jB,IAAQ5jB,GAAkBkjB,GAAgB,IAAGU,GAChEzjB,GAAoByjB,IAAQzjB,GAAmB+iB,GAAgB,IAAGU,GAClEG,GAAmBH,IAAQG,GAAkBb,GAAgB,IAAGU,GAChEI,GAAmBJ,IAAQI,GAAkBd,GAAgB,IAAGU,GAChEtjB,GAAmB,CAACsjB,EAAIjqC,KAAQ2mB,GAAmB4iB,GAAgB,IAAGU,EAAIjqC,GAE1E8mB,GAAmB,CAACmjB,EAAIjqC,KAAQ8mB,GAAmByiB,GAAgB,IAAGU,EAAIjqC,GAE1EgnB,GAAmB,CAACijB,EAAIjqC,KAAQgnB,GAAmBuiB,GAAgB,IAAGU,EAAIjqC,GAC1EknB,GAAoB,CAAC+iB,EAAIjqC,KAAQknB,GAAoBqiB,GAAgB,IAAGU,EAAIjqC,GAahF,SAASoa,KAQP,SAASkwB,IACH5G,KACJA,IAAY,EACZ3e,EAAmB,WAAI,EACnByC,IA9hGNvB,GAAqB,EAChBlB,EAAkB,UAAMrQ,GAAG0Z,KAAK6E,aAAave,GAAG0Z,OACrD1Z,GAAGwe,mBAAoB,EACvBhF,GAAIE,OACJmP,GAAO7vB,KAAOgH,GAAGkF,MAAM2jB,GAAQ,CAAC,EAAG,MACnClR,GAAqBlE,GA2hGnBtD,EAAoBE,GAChBA,EAA8B,sBAAGA,EAA8B,uBAnhGvE,WACE,GAAIA,EAAiB,QAEnB,IADiC,mBAAtBA,EAAiB,UAAiBA,EAAiB,QAAI,CAACA,EAAiB,UAC7EA,EAAiB,QAAEl3B,QAYR4yB,EAXHsE,EAAiB,QAAEiF,QAYpC3B,EAAc9X,QAAQkQ,GADxB,IAAsBA,EARpB4L,GAAqBhE,EACvB,CA4gGIkiB,IACF,CAhBI3hB,EAAkB,IA7hGxB,WACE,GAAI7D,EAAgB,OAElB,IADgC,mBAArBA,EAAgB,SAAiBA,EAAgB,OAAI,CAACA,EAAgB,SAC1EA,EAAgB,OAAEl3B,QA8BR4yB,EA7BHsE,EAAgB,OAAEiF,QA8BlC9B,EAAa3X,QAAQkQ,GADvB,IAAqBA,EA1BnB4L,GAAqBnE,EACvB,CAwhGEsiB,GACI5hB,EAAkB,IAalB7D,EAAmB,WACrBA,EAAmB,UAAE,cACrBr6B,YAAW,WACTA,YAAW,WACTq6B,EAAmB,UAAE,GACvB,GAAG,GACHulB,GACF,GAAG,IAEHA,KAEJ,CACA,GAxCAvlB,EAAoB,WAAIc,EACxBd,EAAe,MAAImd,GACnBnd,EAAe,MA/EH,CAACkd,EAAOE,EAAYC,EAAUt4B,KACxC,IAAI2gC,GAAerI,GAAYA,EAAS7nC,OAAOoV,GAAkB,WAATA,GAA8B,YAATA,IAE7E,MADgC,WAAfwyB,GACCsI,IAAgB3gC,EACzBk4B,GAASC,GAEX,WACL,OAAOC,GAAMD,EAAOE,EAAYC,EAAUl6B,UAC5C,CAAC,EAwEH6c,EAAkB,SAjsFlB,SAAkBiB,EAAKrW,EAAO,MAE5B,OADIA,EAAK+6B,SAAS,OAAM/6B,EAAO,KACvBA,GACN,IAAK,KAEL,IAAK,KACH,OAjaN,SAAyBqW,GACvB,OAAIC,EAA2BikB,GAAgBlkB,GACxCY,EAAMZ,EACf,CA8Za2kB,CAAuB,EAAP3kB,GACzB,IAAK,MACH,OAAOD,EAAgBC,GAAO,GAChC,IAAK,MACH,OAAOI,EAAgBJ,GAAO,GAChC,IAAK,MACHoB,EAAM,uCACR,IAAK,QACH,OAzZN,SAAyBpB,GACvB,OAAIC,EAA2BmkB,GAAgBpkB,GACxCsB,EAAQtB,EACjB,CAsZa4kB,CAAgB5kB,GAAO,GAChC,IAAK,SACH,OAvZN,SAAyBA,GACvB,OAAIC,EAA2BokB,GAAgBrkB,GACxCuB,EAAQvB,EACjB,CAoZa6kB,CAAgB7kB,GAAO,GAChC,IAAK,IACH,OAAOO,EAAiBP,GAAO,GACjC,QACEoB,EAAM,8BAA8BzX,KAE1C,EA4qFAoV,EAAsB,aAAIwH,GAE1BzD,EAAwB,SAASgiB,IAC1BpH,IAAWtpB,KACXspB,KAAW5a,EAAwBgiB,EAC1C,EA+BI/lB,EAAiB,QAEnB,IADiC,mBAAtBA,EAAiB,UAAiBA,EAAiB,QAAI,CAACA,EAAiB,UAC7EA,EAAiB,QAAEl3B,OAAS,GACjCk3B,EAAiB,QAAE5iB,KAAnB4iB,GAIJ,OADA3K,KACOwK,EAAUmmB,KACnB,GAEqB,iBAAZ9hD,GAA0C,iBAAX4gB,EACxCA,EAAO5gB,QAAUy7B,EACQ,mBAAXsmB,QAAyB,0BACvCA,OAAO,IAAI,IAAMtmB,GACrB,GAh+J4B,WAC5B,OAAOn2B,KAAO,EAAIkyB,GAAG,GAAkBA,IAAI,MAAMlyB,GAAM,CAAEtF,QAAS,CAAC,IAAKA,QAASsF,IAAMA,GAAItF,OAC7F,GAk+JA,KACA,KAGA,KACA,KAGA,KACA,KACA,IAAI,GAn+JU,EAACsF,EAAK08C,EAAY/uB,KAAYA,EAAgB,MAAP3tB,EAAc,GAAS,GAAaA,IAAQ,CAAC,EARhF,EAAC+F,EAAI04B,EAAOke,EAAQ//C,KACpC,GAAI6hC,GAA0B,iBAAVA,GAAuC,mBAAVA,EAC/C,IAAK,IAAI1gC,KAAO,GAAkB0gC,GAC3B,GAAalhC,KAAKwI,EAAIhI,IAKoE,YAL5DA,GACjC,GAAUgI,EAAIhI,EAAK,CAAEb,IAAK,IAAMuhC,EAAM1gC,GAAMd,aAAcL,EAAO,GAAiB6hC,EAAO1gC,KAASnB,EAAKK,aAE7G,OAAO8I,CAAE,EAE0F,CAKpF/F,GAAQA,EAAIlD,WAA8E6wB,EAAjE,GAAUA,EAAQ,UAAW,CAAEhzB,MAAOqF,EAAK/C,YAAY,IAC/F+C,IA69JkB,CAAQ,MAoB5B,KACA,KAGA,IAQI,GAAcoY,UAChB,MAAM8iB,OA3Ba9iB,gBACM,EAAI,GAAcjX,SAAS,CAClDy7C,WAAWv7C,GACLA,EAAK86C,SAAS,SANH,yBASR96C,IAqBc,GACnBw7C,EAAczkC,MAAOlC,IACzB,IAAI4mC,EAAW5hB,EAAW8V,QAAQ96B,EAAK5W,QACvC47B,EAAWpC,OAAO56B,IAAIgY,EAAM4mC,GAC5B,IAAIC,EAAe7hB,EAAW8V,QAAQ,GAClCgM,EAAY9hB,EAAW+hB,iBAAiBH,EAAU5mC,EAAK5W,OAAQy9C,GAC/DG,EAAYhiB,EAAWiiB,SAASH,EAAY,EAAG,OAC/CI,EAAkBJ,EAAY,GAClC,GAAkB,IAAdE,EAAiB,CACnB,MAAMG,EAAeniB,EAAW8C,aAAaof,GAS7C,MARAz7C,QAAQC,MAAM,iCAAkCs7C,EAAW,SAAUG,GACrEniB,EAAWkW,MAAM0L,GACjB5hB,EAAWkW,MAAM2L,GACjB7hB,EAAWoiB,wBAAwBN,GACnCF,EAAW,KACXC,EAAe,KACfC,EAAY,KACZI,EAAkB,KACZ,IAAIxtC,MAAMytC,EAClB,CACA,MAAME,EAAWriB,EAAWiiB,SAASH,EAAW,OAC1CQ,EAAYtiB,EAAWiiB,SAASH,EAAY,EAAG,OAC/CS,EAAQ,CAAC,EACf,IAAK,IAAI7uC,EAAI,EAAGA,EAAI4uC,EAAW5uC,IAAK,CAClC,MAAM8uC,EAAcH,EAAe,GAAJ3uC,EACzB+uC,EAAcziB,EAAWiiB,SAASO,EAAa,OAC/CE,EAAW1iB,EAAWiiB,SAASO,EAAc,EAAG,OAChDG,EAAU3iB,EAAWiiB,SAASO,EAAc,EAAG,OAC/C5iB,EAAWI,EAAW8C,aAAa2f,GAEnCG,EADW,IAAIvoC,WAAW2lB,EAAWpC,OAAOjkB,OAAQgpC,EAASD,GACrCx8C,MAAM,GACpCq8C,EAAM3iB,GAAYgjB,CACpB,CAQA,OAPA5iB,EAAWkW,MAAM0L,GACjB5hB,EAAWkW,MAAM2L,GACjB7hB,EAAWoiB,wBAAwBN,GACnCF,EAAW,KACXC,EAAe,KACfC,EAAY,KACZI,EAAkB,KACXK,CAAK,EAMd,MAAO,CACLM,QALc3lC,MAAOvU,IACrB,MAAMqS,OApDWkC,OAAOvU,IAC1B,MAAMgmB,QAAiByS,MAAMz4B,GAC7B,IAAKgmB,EAAS1B,GACZ,MAAM,IAAIvY,MAAM,uBAAuBia,EAASmB,UAElD,MAAMiqB,QAAoBprB,EAASorB,cACnC,OAAO,IAAI1/B,WAAW0/B,EAAY,EA8Cb,CAAepxC,GAClC,OAAOg5C,EAAY3mC,EAAK,EAIxB2mC,cACD,EA2CH,SAAS,GAAsBpzC,EAAQu0C,GACrC,GAAIA,EAAQ14B,WAAW,KAAM,CAC3B,MAAM7f,EAAUu4C,EAAQl+C,UAAU,EAAGk+C,EAAQn+C,YAAY,MACzD,MAAc,KAAV4J,EACgB,QAAXhE,EAEAA,GAAW,GAAGgE,OAEzB,CACE,OAAO,CAEX,CAlDA,KACA,KAWA,KACA,KAgIA,IAAI,GAlHJ,WACE,IAAIw0C,EAAQtmC,QAAQpW,UASpB,OARA6W,iBACE,MAAM8lC,EAAWD,EACjB,IAAIE,EAAc,OAIlB,OAFAF,EAAQ,IAAItmC,SAASpW,GAAY48C,EAAc58C,UACzC28C,EACCC,CACT,CAEF,CAuGwB,GACxB/lC,eAAe,GAAW3O,EAAQ20C,EAAKC,EAASC,EAAYC,EAAcpoB,QACrD,IAAfmoB,IACFA,EAAa,IAEf,MAAME,QAA0B,KAChC,IACE,MAAMz4B,EAzDV,SAAwBtc,EAAQ20C,EAAKE,EAAYC,EAAcpoB,GAC7D,MAAM1wB,EAAU24C,EAAIt+C,UAAU,EAAGs+C,EAAIv+C,YAAY,MACjD,IAAI4+C,EAAcH,GAAc,GAE9BG,EADY,KAAVh1C,EACYg1C,EAAY1iC,OAAO,CAACtW,GAAU,CAAC,SAE/Bg5C,EAAY1iC,OAAO,CAACtW,GAAU,CAAC,GAAGgE,UAElD,MAAMi1C,EAAer9C,IACf80B,EAAOlO,KAAK1iB,SAASlE,GAAU80B,EAAOlO,KAAK1iB,SAAS64C,GAExD,IAAK,MAAM14C,KAAO+4C,EAAa,CAC7B,MAAMn9C,EAAW60B,EAAOlO,KAAKC,MAAMxiB,EAAKrE,GACxC,GAAuC,OAAnC80B,EAAOhQ,GAAG4lB,WAAWzqC,GACvB,OAAOA,CAEX,CACA,OAAOD,CAAI,EAEb,IAAIwpC,EAAYxpC,GAAS80B,EAAOhQ,GAAG0kB,SAAS6T,EAAYr9C,IAcxD,YAbqB,IAAjBk9C,IACF1T,EAAYxpC,GAASk9C,EAAaG,EAAYr9C,KAErC,CACT0qC,WAAY,CAAC1qC,EAAM2qC,KACjB,IAAI19B,EAAM6nB,EAAOhQ,GAAG4lB,WAAW2S,EAAYr9C,GAAO2qC,GAIlD,OAHY,OAAR19B,GACF3M,QAAQg9C,MAAM,6BAA6BD,EAAYr9C,MAElDiN,CAAG,EAEZu8B,WAGJ,CAuBe,CAAephC,EAAQ20C,EAAKE,EAAYC,EAAcpoB,GAC3DyoB,EAAUzoB,EAAOlO,KAAK1iB,SAAS64C,SAC/BjoB,EAAO0oB,mBAAmBD,EAAS,CACvCE,WAAW,EACXC,UAAU,EACVC,gBAAgB,EAChBC,OAAQZ,EACRt4B,OAEF,MAAMm5B,EAAiB/oB,EAAOgpB,KAAKC,iBAAiBR,GAC9CS,EAAalpB,EAAOgpB,KAAKC,iBAAiBhB,GAC3Cc,GAAmBG,GACtB19C,QAAQ29C,UAAU,kBAAkBV,UAAgBR,oBAEjDc,IACH/oB,EAAOgpB,KAAKC,iBAAiBR,GAAWS,GAErCA,IACHlpB,EAAOgpB,KAAKC,iBAAiBhB,GAAOc,EAExC,CAAE,MAAOt9C,GACP,MAAM,IAAIgO,MAAMhO,GAAOg7B,QACzB,CAAE,QACA4hB,GACF,CACF,CAGA,IA+BI,GAAsBpmC,MAAO3O,EAAQ5F,EAAKsiB,EAAIo5B,EAASC,KACzD,IAAI/B,QAAc8B,EAAQxB,QAAQl6C,GAC9B47C,EAAYh2C,EAChB,GAAkC,IAA9BjP,OAAO2D,KAAKs/C,GAAOn+C,OAAc,CAInC,GAHe,MAAXmK,IACFg2C,EAAY,IAEV57C,EAAIyD,cAAc60C,SAAS,UAAW,CACxC,IAAIuD,EAAe,IAAInqC,WACnBoqC,EAAc,IAAIpqC,WAQtB,GAPA/a,OAAO2D,KAAKs/C,GAAOj2C,KAAK6e,IAClBA,EAAKf,WAAW,QAClBo6B,EAAejC,EAAMp3B,GACZA,EAAKf,WAAW,WACzBq6B,EAAclC,EAAMp3B,GACtB,IAEEq5B,GAA4C,IAA5BA,EAAav1B,YAAoBw1B,GAA0C,IAA3BA,EAAYx1B,WAC9E,MAAM,IAAIva,MAAM,0BAA0B/L,KAE5C,MAAM+7C,QAAmBL,EAAQ1C,YAAY6C,GACvCG,QAAyBN,EAAQ1C,YAAY8C,GAGnD,OAFA,GAAkBE,EAAkBJ,EAAWt5B,EAAIq5B,GACnD,GAAUr5B,EAAI,IAAKy5B,KAAeC,GAAoBJ,GAC/CG,CACT,CAGE,OAFA,GAAkBnC,EAAOgC,EAAWt5B,EAAIq5B,GACxC,GAAUr5B,EAAIs3B,EAAOgC,GACdhC,CAEX,CACA,MAAM,IAAI7tC,MAAM,uBAAuB/L,IAAM,EAc3C,GAAY,CAACsiB,EAAIs3B,EAAOh0C,KAC1B,IACEjP,OAAO2D,KAAKs/C,GAAOppC,SAASymB,IAC1B,MAAMp1B,GANco6C,EAMWhlB,GALnBh7B,UAAU,EAAGggD,EAASjgD,YAAY,MAD3B,IAACigD,EAOf35B,EAAG8lB,YAAYvmC,GAAKwmC,QACvB/lB,EAAGyiB,UAAUljC,GAEfygB,EAAG2kB,UAAU,GAAGrhC,KAAUqxB,IAAY2iB,EAAM3iB,GAAU,GAE1D,CAAE,MAAOl5B,GACP,MAAM,IAAIgO,MAAMhO,GAAOg7B,QACzB,GAEE,GAAoB,CAAC6gB,EAAOh0C,EAAQ0c,EAAIq5B,KAC1C,IAAIO,EAAW,IAAIxqC,WAEnB,GADsB,GAAmBkoC,GAwClC,CACL,IAAIuC,EAAoB,IAAIzqC,WACxBlU,EAAO,GACX7G,OAAO2D,KAAKs/C,GAAOppC,SAASymB,IAEtBA,EAAS5zB,MADA,gBAEX84C,EAAoBvC,EAAM3iB,GAC1Bz5B,EAAOy5B,EACT,IAEF,IAAImlB,EAAe,GAAGx2C,eACjB0c,EAAG8lB,YAAY,GAAGgU,KAAgB/T,QACrC/lB,EAAGyiB,UAAU,GAAGqX,KAEdT,GACF79C,QAAQqwB,IAAI,0BAA0B3wB,KAExC,MAAM6+C,EAAOr/C,KAAKkB,UAAUi+C,GACtBG,GAAgB,IAAIr6B,aAAcnG,OAAOugC,GAC/C/5B,EAAG2kB,UAAU,GAAGrhC,KAAUpI,IAAQ8+C,EACpC,MAjDE,GATIX,GACF79C,QAAQqwB,IAAI,uCAEdx3B,OAAO2D,KAAKs/C,GAAOj2C,KAAKszB,IAElBA,EAAS5zB,MADA,gBAEX64C,EAAWtC,EAAM3iB,GACnB,IAE0B,IAAxBilB,EAAS51B,WAAkB,CAC7B,IAAIzT,EAAO,IAAIsO,YAAY,SAASvF,OAAOsgC,GAC3C,IACE,IAAIK,EAAmBv/C,KAAKC,MAAM4V,GAClC,MAAMupC,EAAe,GAAGx2C,eAClBpI,EAAO,GAAG4+C,KAAgBG,EAAiB9/C,QAAQ8/C,EAAiBzzB,WAAWyzB,EAAiBC,aAChGC,EAAe,CACnBhgD,KAAM8/C,EAAiB9/C,KACvBqsB,QAASyzB,EAAiBzzB,QAC1B0zB,MAAOD,EAAiBC,MACxBE,aAAcH,EAAiBG,cAE5Bp6B,EAAG8lB,YAAY,GAAGgU,KAAgB/T,QACrC/lB,EAAGyiB,UAAU,GAAGqX,KAEdT,GACF79C,QAAQqwB,IACN,gCAAgCouB,EAAiB9/C,QAAQ8/C,EAAiBzzB,WAAWyzB,EAAiBC,iBAG1Gl6B,EAAG2kB,UAAUzpC,EAAMR,KAAKkB,UAAUu+C,GACpC,CAAE,MAAO1+C,GACP,MAAM,IAAIgO,MAAMhO,GAAOg7B,QACzB,CACF,MAAW4iB,GACT79C,QAAQqwB,IACN,sEAuBN,EAEE,GAAsByrB,IACxB,IAAI+C,GAAkB,EAOtB,OANAhmD,OAAO2D,KAAKs/C,GAAOppC,SAASymB,IAEtBA,EAAS5zB,MADA,gBAEXs5C,GAAkB,EACpB,IAEKA,CAAe,EAUpB,GAAuCpoC,MAAOqoC,EAAiBjB,GAAU,EAAMkB,GAAwB,EAAOvqB,EAAQwqB,EAAYC,GAAkB,KAClJpB,GACF79C,QAAQqwB,IAAI,8BAA+ByuB,GAE7C,IAAII,OA7VUzoC,OAAOvU,IACrB,IAAIgmB,QAAiByS,MAAMz4B,GAC3B,IAAKgmB,EAAS1B,GACZ,MAAM,IAAIvY,MAAM,uBAAuBia,EAASmB,UAGlD,aADiBnB,EAASq2B,MACf,EAuVe,CAAUO,GAChCK,EAAcD,EAAcE,SAC5Bt3C,EAASo3C,EAAcp3C,QACvB,cAAEu3C,EAAa,cAAEC,EAAa,SAAEF,GAlLlB,CAACA,IACnB,IAAIC,EACJ,IAAK,IAAIpyC,EAAI,EAAGA,EAAImyC,EAASzhD,OAAQsP,IACnC,GAAwB,UAApBmyC,EAASnyC,GAAGtO,KAAkB,CAChC0gD,EAAgBD,EAASnyC,GACzBmyC,EAAS5qC,OAAOvH,EAAG,GACnB,KACF,CAEF,GAAIoyC,EAAe,CACjB,IAAIC,EAAgBD,EAAcr0B,QAAQztB,MAAM,KAAKsI,KAAK2T,GAAMsL,SAAStL,KACzE,MAAO,CAAE6lC,gBAAeC,gBAAeF,WACzC,CACE,MAAO,CAAEA,WACX,EAoKiD,CAAcD,GAC3DI,EAAe,CAAEz3C,SAAQw3C,iBAC7B,MAAME,EAAe,KACf5B,QAAgB4B,EAYtB,GAXIP,GAAmBI,GAAiBC,QAnBnB7oC,OAAO4oC,EAAeC,EAAezB,EAASD,EAASppB,EAAQwqB,EAAYl3C,KAChG,IAAI5F,EAAMm9C,EAAcn9C,IAAMm9C,EAAcn9C,IAAM,GAAG88C,KAAcK,EAAclmB,WAC7E0kB,GACF79C,QAAQqwB,IAAI,oCAAoCnuB,WAE5C,GAAoB4F,EAAQ5F,EAAKsyB,EAAOhQ,GAAIo5B,EAASC,SACrDrpB,EAAOirB,aAAa33C,EAAQw3C,EAAezB,EAAQ,EAcjD,CACJwB,EACAC,EACAzB,EACAD,EACAppB,EACAwqB,EACAl3C,GAGAs3C,GAAUzhD,OAAQ,CACpB,IAAI+hD,QAAmB1pC,QAAQC,IAC7BmpC,EAASv5C,KAAK85C,IACZ,MAAMC,EAAaD,GAAKz9C,KAAO,GAAG88C,KAAcW,EAAIxmB,WAIpD,OAHI0kB,GACF79C,QAAQqwB,IAAI,WAAWsvB,EAAIxmB,uBAAuBymB,KAtLjCnpC,OAAO3O,EAAQ5F,EAAKsiB,EAAIo5B,EAASC,KAC1D,IAAI6B,EAAa,CAAC,EACd5B,EAAYh2C,EAChB,IAAK5F,EACH,MAAM,IAAI+L,MAAM,uBAAuB/L,KAEzC,IAAI45C,QAAc,GAAoBh0C,EAAQ5F,EAAKsiB,EAAIo5B,EAASC,GAOhE,MANe,MAAX/1C,IACFg2C,EAAY,IAEoB,IAA9BjlD,OAAO2D,KAAKs/C,GAAOn+C,SACrB+hD,EAqCgB,EAAC5D,EAAOh0C,KAC1B,IAAI43C,EAAa,CAAC,EAMlB,OALA7mD,OAAO2D,KAAKs/C,GAAOj2C,KAAK6e,KAClBA,EAAK81B,SAAS,QAAU91B,EAAK/R,SAAS,WACxC+sC,EAAW,GAAG53C,KAAU4c,KAAUo3B,EAAMp3B,GAC1C,IAEKg7B,CAAU,EA5CF,CAAc5D,EAAOgC,IAE7B4B,CAAU,EA2KJ,CACL53C,EACA83C,EACAprB,EAAOhQ,GACPo5B,EACAC,EACD,WAGC,GAAoBrpB,GACrBuqB,SACG,GAAcK,EAAUM,EAAY53C,EAAQ0sB,EAEtD,CAIA,OAHIyqB,GAAmBI,GAAiBC,GACtCl+B,WAAWoT,OAAOqrB,aAAa/3C,EAAQw3C,EAAezB,GAEjD0B,CAAY,EAEjB,GAAgB,CAACH,EAAUM,EAAY53C,EAAQ0sB,IAC1Cxe,QAAQC,IAAImpC,EAASv5C,KAAI4Q,MAAOkpC,EAAK1yC,KAC1C,IAAI6yC,EAAmBJ,EAAWzyC,GAClC,GAAIpU,OAAO2D,KAAKsjD,GAAkBniD,OAAQ,CACxC,IAAIoiD,EAAyB,CAAC,EAO9B,GANAlnD,OAAO2D,KAAKsjD,GAAkBj6C,KAAKnG,IACb,GAAqBogD,EAAiBpgD,MAExDqgD,EAAuBrgD,GAAQogD,EAAiBpgD,GAClD,IAEE7G,OAAO2D,KAAKujD,GAAwBpiD,OACtC,aApWR8Y,eAAsC3O,EAAQk4C,EAAeC,EAAuBC,EAAa1rB,GAC/F,GAAc,KAAV1sB,EACF,IAAIq4C,EAAe,qCAEfA,EAAe,GAAGr4C,iCAExB,MAAMs4C,EAAmB,GAAGD,KAAgBH,EAAcziD,MAAM,KAAK,UAC/D8iD,EA5CM,CAAC92C,IACb,IAAI+2C,EAAQ,CAAC,EACb,MAAO,IAAIlmD,KACT,IAAI4S,EAAI5S,EAAK,GACb,GAAI4S,KAAKszC,EACP,OAAOA,EAAMtzC,GACR,CACL,IAAIpD,EAASL,EAAGyD,GAEhB,OADAszC,EAAMtzC,GAAKpD,EACJA,CACT,EACD,EAiCwB,CAAQ4qB,EAAOhQ,GAAG0kB,UAE3C,IAAIqX,EAAU,GACd,GAFsBN,EAGpBM,EAAU1nD,OAAO2D,KAAK0jD,GAAar6C,KAAKnG,IAC/B,CACLA,OACA49C,QAAQ,UAGP,CACL,MAAMkD,EAyDV,SAA6BC,EAAM7D,EAAcpoB,GAC/C,IAAI0U,EAAW1U,EAAOhQ,GAAG0kB,cACJ,IAAjB0T,IACF1T,EAAW0T,GAEb,MAAM4D,EAA6B,IAAI70C,IAQvC,OAPA9S,OAAO2D,KAAKikD,GAAM56C,KAAK42C,IACrB,MAAMl0B,EAAS2gB,EAASuT,GACTjoB,EAAOksB,kBAAkBn4B,GAAQo4B,cACzCjuC,SAASkuC,IACdJ,EAAWn0C,IAAIu0C,EAAK,GACpB,IAEGJ,CACT,CAvEuB,CACjBN,EACAG,EACA7rB,GAEF+rB,EAAU1nD,OAAO2D,KAAK0jD,GAAar6C,KAAKnG,IAE/B,CACLA,OACA49C,OAHckD,EAAWp0C,IAAIooB,EAAOlO,KAAK1iB,SAASlE,OAG7BugD,GAAyB,GAAsBn4C,EAAQpI,IAASA,EAAKikB,WAAWy8B,MAG3G,CACAG,EAAQM,MAAK,CAACC,EAAMF,IAAS/lC,OAAO+lC,EAAKtD,QAAUziC,OAAOimC,EAAKxD,UAC/D,IAAK,MAAM,KAAE59C,EAAM49C,OAAQZ,KAAa6D,EACtC,UACQ,GAAWz4C,EAAQpI,EAAMg9C,EAAS,CAAC0D,GAAmBC,EAAkB7rB,EAChF,CAAE,MAAOz0B,GACPC,QAAQC,MAAMF,EAChB,CAEJ,CA6TqB,CACX+H,EACA63C,EAAIhhD,MACJ,EACAohD,EACAvrB,EAGN,MAGA,GAAuBA,IACzB,MAAM3vB,EAAU,IAAImR,SAASuL,IAC3BiT,EAAOusB,uBAA0B/zC,IACrB,IAANA,GACFuU,GACF,CACD,IAIH,OAFAiT,EAAOqE,iBAAiB,SACxBrE,EAAOsE,oBAAoB,SACpBj0B,CAAO,EAEZ,GAAwBm8C,IAC1B,MAAMC,EAAoB,CAAC,EAAG,GAAI,IAAK,KACvC,OAAOD,EAAW,KAAOC,EAAkB,IAAMD,EAAW,KAAOC,EAAkB,IAAMD,EAAW,KAAOC,EAAkB,IAAMD,EAAW,KAAOC,EAAkB,EAAE,EC7+K7K,IAAI,GACA,GACA,GACA,GAQJxqC,eAAe,KACX,MAAM5R,EAAU,IAAImR,SAAQpW,IACxBwhB,WAAWoT,OAAOusB,uBAA0B/zC,IAC9B,IAANA,GACApN,GACJ,CACH,IAOL,OAFAwhB,WAAWoT,OAAOqE,iBAAiB,SACnCzX,WAAWoT,OAAOsE,oBAAoB,SAC/Bj0B,CACX,CApCAuc,WAAWoT,OAAS,CAAC,EASrBpT,WAAW8/B,iBAAmB,KAC9B9/B,WAAW+/B,0BAA4B,KAWvC5hC,KAAK6hC,UANL3qC,iBAII,OAHqB,IAAIT,SAAQpW,IAC7B,GAAoBA,CAAO,GAGnC,EAiBAwhB,WAAWy5B,MAAQ,IAAI7kC,SAAQpW,IAC3B,GAAcA,CAAO,IAElB,MAAM,GACT,WAAAzG,CAAYC,EAAU,CAAC,GACnBC,KAAKgoD,mBAAqB,MAC9B,CACA,WAAMxG,GACF,aAAaz5B,WAAWy5B,KAC5B,CACA,QAAMyG,CAAG5hD,GACAA,GAAS0hB,WAAWoT,OAAOhQ,IAGhCpD,WAAWoT,OAAOhQ,GAAGgH,MAAM9rB,EAC/B,CACA,WAAMiqB,CAAMjqB,GACR,IACI,MAAM0mB,EAAShF,WAAWoT,OAAOhQ,GAAG2e,WAAWzjC,GAC/C,OAAO0hB,WAAWoT,OAAOhQ,GAAGmF,MAAMvD,EAAOja,KAAK/K,KAClD,CACA,MAAOrB,GACH,OAAO,CACX,CACJ,CACA,oBAAMwhD,CAAen/B,GACjB,MAAMo/B,EAAWp/B,EAAMq/B,IAAI9V,OAAO6V,eAC5BpgC,WAAWy5B,MACmB,OAAhCz5B,WAAW8/B,kBAC8B,OAAzC9/B,WAAW+/B,kCACL//B,WAAW8/B,iBACjB9/B,WAAW+/B,0BAA0B7kD,SACrC8kB,WAAW+/B,0BAA4B,KACvC//B,WAAW8/B,iBAAmB,MAEjB,gBAAbM,EACA,GAAkBp/B,EAAMq/B,KAGxB,GAAWC,gBAAgBt/B,EAAMq/B,IAEzC,CACA,gBAAME,CAAWvoD,GACb,MAAM,QAAEwI,EAAO,WAAEggD,EAAU,kBAAEC,GAAsBzoD,EAE7C0oD,EAAY,GAAAthD,OAAOG,KAAKiB,EAASggD,EAAWtiD,KAAK,IACjDyiD,EAAcD,EAAUx8C,QAAQ,MAAO,SACvC08C,EAAcF,EAAUx8C,QAAQ,MAAO,SACvC28C,EAAkB,GAAAzhD,OAAOG,KAAKiB,EAAS,OAAQ,UAAWggD,EAAW79C,KACrE27C,EAAakC,EAAWM,UAAYN,EAAWM,SAASzc,OACxDmc,EAAWM,SAASzc,OACpB,CAAC,EACP0c,cAAcL,GACd1gC,WAAWoT,aAAe4tB,iBAAiB,CACvCnH,WAAav2B,GACLA,KAAQg7B,EACD,GAAAl/C,OAAOG,KAAKshD,EAAiBv9B,GAEpCA,EAAK81B,SAAS,SACPuH,EAEFr9B,EAAK81B,SAAS,SAEZwH,EAEJt9B,IAGf,IAEI,SADM,UACuB1pB,IAAzBomB,WAAWoT,OAAOhQ,SACuBxpB,IAAzComB,WAAWoT,OAAO0oB,mBAAkC,CACpD,MACMW,GAAU,EACViB,EAAkB,GAFM+C,GAAqBI,yBAG7CjD,EAAa,GAAAx+C,OAAOG,KAAKiB,EAAS,wBAClCq9C,EAAsC,YAApB2C,EAAWjjD,WAC7B,GAAqCmgD,EAAiBjB,GAAS,EAAOz8B,WAAWoT,OAAQwqB,EAAYC,EAC/G,OACM,KACN,GAAa,IAAI79B,WAAWoT,OAAO6tB,QACnC,GAAa,GAAWC,aACnB,IACDtiD,QAAQC,MAAM,2BAElB,GAAWqJ,OACf,CACA,MAAOvJ,GACH,GAAiB,iBAANA,EAAgB,CACvB,MAAM0hD,EAAMrgC,WAAWoT,OAAO+tB,sBAAsBxiD,GACpD,MAAM,IAAIkO,MAAMwzC,EACpB,CAEI,MAAM1hD,CAEd,CACA,GAAY,EAChB,CAKA,gBAAAyiD,CAAiBz+B,GACb1qB,KAAKgoD,mBAAqBt9B,CAC9B,EC5IJ,MAAM,GAAY,EAAWxE,MAItB,MAAM,WAAgC,EACzC,OAAAqI,CAAQrT,GACJ,OAAO,GAAUkuC,oBAAoBluC,EACzC,EAKJ,MAAM,WAAoB,EACtB,SAAAgV,CAAUnwB,GACN,OAAO,IAAI,GAAwBA,EAAQouB,UAAWpuB,EAAQquB,WAAYruB,EAAQorB,GAAIprB,EAAQusB,YAClG,EAEG,MAAM,WAA6B,GAItC,WAAM+D,CAAMlC,EAAWC,EAAY7lB,GAC/B,MAAM,GAAE4iB,EAAE,KAAE8B,EAAI,YAAEX,GAAgBvE,WAAWoT,OAC7C,IAAKhQ,EACD,OAEJ,MAAMk+B,EAAQ,IAAI,GAAY,CAC1Bl+B,KACA8B,OACAX,cACA/jB,UACA4lB,YACAC,eAEJjD,EAAGwiB,MAAMvf,GACTjD,EAAGkF,MAAMg5B,EAAO,CAAC,EAAGj7B,GACpBjD,EAAGgH,MAAM/D,EACb,EAEJ,MAAM,GAAS,IAAI,GACnB,GAAUk6B,WAAa,GAAOA,WAAWjsB,KAAK,IAC9C,GAAUhM,MAAQ,GAAOA,MAAMgM,KAAK,IACpC,GAAUmlB,MAAQ,GAAOA,MAAMnlB,KAAK,IACpC,GAAU4rB,GAAK,GAAOA,GAAG5rB,KAAK,IAC9B,GAAU/L,MAAQ,GAAOA,MAAM+L,KAAK,IACpC,GAAU6rB,eAAiB,GAAOA,eAAe7rB,KAAK","sources":["webpack://@jupyterlite/xeus/../../node_modules/@jupyterlab/coreutils/lib/activitymonitor.js","webpack://@jupyterlite/xeus/../../node_modules/@jupyterlab/coreutils/lib/index.js","webpack://@jupyterlite/xeus/../../node_modules/@jupyterlab/coreutils/lib/interfaces.js","webpack://@jupyterlite/xeus/../../node_modules/@jupyterlab/coreutils/lib/lru.js","webpack://@jupyterlite/xeus/../../node_modules/@jupyterlab/coreutils/lib/markdowncodeblocks.js","webpack://@jupyterlite/xeus/../../node_modules/@jupyterlab/coreutils/lib/pageconfig.js","webpack://@jupyterlite/xeus/../../node_modules/@jupyterlab/coreutils/lib/path.js","webpack://@jupyterlite/xeus/../../node_modules/@jupyterlab/coreutils/lib/signal.js","webpack://@jupyterlite/xeus/../../node_modules/@jupyterlab/coreutils/lib/text.js","webpack://@jupyterlite/xeus/../../node_modules/@jupyterlab/coreutils/lib/time.js","webpack://@jupyterlite/xeus/../../node_modules/@jupyterlab/coreutils/lib/url.js","webpack://@jupyterlite/xeus/../../node_modules/@lumino/algorithm/dist/index.es6.js","webpack://@jupyterlite/xeus/../../node_modules/@lumino/coreutils/dist/index.js","webpack://@jupyterlite/xeus/../../node_modules/@lumino/signaling/dist/index.es6.js","webpack://@jupyterlite/xeus/../../node_modules/minimist/index.js","webpack://@jupyterlite/xeus/../../node_modules/path-browserify/index.js","webpack://@jupyterlite/xeus/../../node_modules/querystringify/index.js","webpack://@jupyterlite/xeus/../../node_modules/requires-port/index.js","webpack://@jupyterlite/xeus/../../node_modules/url-parse/index.js","webpack://@jupyterlite/xeus/webpack/bootstrap","webpack://@jupyterlite/xeus/webpack/runtime/amd options","webpack://@jupyterlite/xeus/webpack/runtime/compat get default export","webpack://@jupyterlite/xeus/webpack/runtime/define property getters","webpack://@jupyterlite/xeus/webpack/runtime/global","webpack://@jupyterlite/xeus/webpack/runtime/hasOwnProperty shorthand","webpack://@jupyterlite/xeus/webpack/runtime/make namespace object","webpack://@jupyterlite/xeus/../../node_modules/proxy-target/esm/types.js","webpack://@jupyterlite/xeus/../../node_modules/coincident/esm/channel.js","webpack://@jupyterlite/xeus/../../node_modules/proxy-target/esm/traps.js","webpack://@jupyterlite/xeus/../../node_modules/coincident/esm/bridge.js","webpack://@jupyterlite/xeus/../../node_modules/coincident/esm/index.js","webpack://@jupyterlite/xeus/../../node_modules/@jupyterlite/contents/lib/drivefs.js","webpack://@jupyterlite/xeus/../../node_modules/@jupyterlite/contents/lib/emscripten.js","webpack://@jupyterlite/xeus/../../node_modules/@emscripten-forge/mambajs/lib/index.js","webpack://@jupyterlite/xeus/./lib/worker.js","webpack://@jupyterlite/xeus/./lib/coincident.worker.js"],"sourcesContent":["\"use strict\";\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActivityMonitor = void 0;\nconst signaling_1 = require(\"@lumino/signaling\");\n/**\n * A class that monitors activity on a signal.\n */\nclass ActivityMonitor {\n /**\n * Construct a new activity monitor.\n */\n constructor(options) {\n this._timer = -1;\n this._timeout = -1;\n this._isDisposed = false;\n this._activityStopped = new signaling_1.Signal(this);\n options.signal.connect(this._onSignalFired, this);\n this._timeout = options.timeout || 1000;\n }\n /**\n * A signal emitted when activity has ceased.\n */\n get activityStopped() {\n return this._activityStopped;\n }\n /**\n * The timeout associated with the monitor, in milliseconds.\n */\n get timeout() {\n return this._timeout;\n }\n set timeout(value) {\n this._timeout = value;\n }\n /**\n * Test whether the monitor has been disposed.\n *\n * #### Notes\n * This is a read-only property.\n */\n get isDisposed() {\n return this._isDisposed;\n }\n /**\n * Dispose of the resources used by the activity monitor.\n */\n dispose() {\n if (this._isDisposed) {\n return;\n }\n this._isDisposed = true;\n signaling_1.Signal.clearData(this);\n }\n /**\n * A signal handler for the monitored signal.\n */\n _onSignalFired(sender, args) {\n clearTimeout(this._timer);\n this._sender = sender;\n this._args = args;\n this._timer = setTimeout(() => {\n this._activityStopped.emit({\n sender: this._sender,\n args: this._args\n });\n }, this._timeout);\n }\n}\nexports.ActivityMonitor = ActivityMonitor;\n//# sourceMappingURL=activitymonitor.js.map","\"use strict\";\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/**\n * @packageDocumentation\n * @module coreutils\n */\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./activitymonitor\"), exports);\n__exportStar(require(\"./interfaces\"), exports);\n__exportStar(require(\"./lru\"), exports);\n__exportStar(require(\"./markdowncodeblocks\"), exports);\n__exportStar(require(\"./pageconfig\"), exports);\n__exportStar(require(\"./path\"), exports);\n__exportStar(require(\"./signal\"), exports);\n__exportStar(require(\"./text\"), exports);\n__exportStar(require(\"./time\"), exports);\n__exportStar(require(\"./url\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=interfaces.js.map","\"use strict\";\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LruCache = void 0;\nconst DEFAULT_MAX_SIZE = 128;\n/** A least-recently-used cache. */\nclass LruCache {\n constructor(options = {}) {\n this._map = new Map();\n this._maxSize = (options === null || options === void 0 ? void 0 : options.maxSize) || DEFAULT_MAX_SIZE;\n }\n /**\n * Return the current size of the cache.\n */\n get size() {\n return this._map.size;\n }\n /**\n * Clear the values in the cache.\n */\n clear() {\n this._map.clear();\n }\n /**\n * Get a value (or null) from the cache, pushing the item to the front of the cache.\n */\n get(key) {\n const item = this._map.get(key) || null;\n if (item != null) {\n this._map.delete(key);\n this._map.set(key, item);\n }\n return item;\n }\n /**\n * Set a value in the cache, potentially evicting an old item.\n */\n set(key, value) {\n if (this._map.size >= this._maxSize) {\n this._map.delete(this._map.keys().next().value);\n }\n this._map.set(key, value);\n }\n}\nexports.LruCache = LruCache;\n//# sourceMappingURL=lru.js.map","\"use strict\";\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MarkdownCodeBlocks = void 0;\n/**\n * The namespace for code block functions which help\n * in extract code from markdown text\n */\nvar MarkdownCodeBlocks;\n(function (MarkdownCodeBlocks) {\n MarkdownCodeBlocks.CODE_BLOCK_MARKER = '```';\n const markdownExtensions = [\n '.markdown',\n '.mdown',\n '.mkdn',\n '.md',\n '.mkd',\n '.mdwn',\n '.mdtxt',\n '.mdtext',\n '.text',\n '.txt',\n '.Rmd'\n ];\n class MarkdownCodeBlock {\n constructor(startLine) {\n this.startLine = startLine;\n this.code = '';\n this.endLine = -1;\n }\n }\n MarkdownCodeBlocks.MarkdownCodeBlock = MarkdownCodeBlock;\n /**\n * Check whether the given file extension is a markdown extension\n * @param extension - A file extension\n *\n * @returns true/false depending on whether this is a supported markdown extension\n */\n function isMarkdown(extension) {\n return markdownExtensions.indexOf(extension) > -1;\n }\n MarkdownCodeBlocks.isMarkdown = isMarkdown;\n /**\n * Construct all code snippets from current text\n * (this could be potentially optimized if we can cache and detect differences)\n * @param text - A string to parse codeblocks from\n *\n * @returns An array of MarkdownCodeBlocks.\n */\n function findMarkdownCodeBlocks(text) {\n if (!text || text === '') {\n return [];\n }\n const lines = text.split('\\n');\n const codeBlocks = [];\n let currentBlock = null;\n for (let lineIndex = 0; lineIndex < lines.length; lineIndex++) {\n const line = lines[lineIndex];\n const lineContainsMarker = line.indexOf(MarkdownCodeBlocks.CODE_BLOCK_MARKER) === 0;\n const constructingBlock = currentBlock != null;\n // Skip this line if it is not part of any code block and doesn't contain a marker.\n if (!lineContainsMarker && !constructingBlock) {\n continue;\n }\n // Check if we are already constructing a code block.\n if (!constructingBlock) {\n // Start constructing a new code block.\n currentBlock = new MarkdownCodeBlock(lineIndex);\n // Check whether this is a single line code block of the form ```a = 10```.\n const firstIndex = line.indexOf(MarkdownCodeBlocks.CODE_BLOCK_MARKER);\n const lastIndex = line.lastIndexOf(MarkdownCodeBlocks.CODE_BLOCK_MARKER);\n const isSingleLine = firstIndex !== lastIndex;\n if (isSingleLine) {\n currentBlock.code = line.substring(firstIndex + MarkdownCodeBlocks.CODE_BLOCK_MARKER.length, lastIndex);\n currentBlock.endLine = lineIndex;\n codeBlocks.push(currentBlock);\n currentBlock = null;\n }\n }\n else if (currentBlock) {\n if (lineContainsMarker) {\n // End of block, finish it up.\n currentBlock.endLine = lineIndex - 1;\n codeBlocks.push(currentBlock);\n currentBlock = null;\n }\n else {\n // Append the current line.\n currentBlock.code += line + '\\n';\n }\n }\n }\n return codeBlocks;\n }\n MarkdownCodeBlocks.findMarkdownCodeBlocks = findMarkdownCodeBlocks;\n})(MarkdownCodeBlocks || (exports.MarkdownCodeBlocks = MarkdownCodeBlocks = {}));\n//# sourceMappingURL=markdowncodeblocks.js.map","\"use strict\";\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PageConfig = void 0;\nconst coreutils_1 = require(\"@lumino/coreutils\");\nconst minimist_1 = __importDefault(require(\"minimist\"));\nconst url_1 = require(\"./url\");\n/**\n * The namespace for `PageConfig` functions.\n */\nvar PageConfig;\n(function (PageConfig) {\n /**\n * Get global configuration data for the Jupyter application.\n *\n * @param name - The name of the configuration option.\n *\n * @returns The config value or an empty string if not found.\n *\n * #### Notes\n * All values are treated as strings.\n * For browser based applications, it is assumed that the page HTML\n * includes a script tag with the id `jupyter-config-data` containing the\n * configuration as valid JSON. In order to support the classic Notebook,\n * we fall back on checking for `body` data of the given `name`.\n *\n * For node applications, it is assumed that the process was launched\n * with a `--jupyter-config-data` option pointing to a JSON settings\n * file.\n */\n function getOption(name) {\n if (configData) {\n return configData[name] || getBodyData(name);\n }\n configData = Object.create(null);\n let found = false;\n // Use script tag if available.\n if (typeof document !== 'undefined' && document) {\n const el = document.getElementById('jupyter-config-data');\n if (el) {\n configData = JSON.parse(el.textContent || '');\n found = true;\n }\n }\n // Otherwise use CLI if given.\n if (!found && typeof process !== 'undefined' && process.argv) {\n try {\n const cli = (0, minimist_1.default)(process.argv.slice(2));\n const path = require('path');\n let fullPath = '';\n if ('jupyter-config-data' in cli) {\n fullPath = path.resolve(cli['jupyter-config-data']);\n }\n else if ('JUPYTER_CONFIG_DATA' in process.env) {\n fullPath = path.resolve(process.env['JUPYTER_CONFIG_DATA']);\n }\n if (fullPath) {\n // Force Webpack to ignore this require.\n // eslint-disable-next-line\n configData = eval('require')(fullPath);\n }\n }\n catch (e) {\n console.error(e);\n }\n }\n if (!coreutils_1.JSONExt.isObject(configData)) {\n configData = Object.create(null);\n }\n else {\n for (const key in configData) {\n // PageConfig expects strings\n if (typeof configData[key] !== 'string') {\n configData[key] = JSON.stringify(configData[key]);\n }\n }\n }\n return configData[name] || getBodyData(name);\n }\n PageConfig.getOption = getOption;\n /**\n * Set global configuration data for the Jupyter application.\n *\n * @param name - The name of the configuration option.\n * @param value - The value to set the option to.\n *\n * @returns The last config value or an empty string if it doesn't exist.\n */\n function setOption(name, value) {\n const last = getOption(name);\n configData[name] = value;\n return last;\n }\n PageConfig.setOption = setOption;\n /**\n * Get the base url for a Jupyter application, or the base url of the page.\n */\n function getBaseUrl() {\n return url_1.URLExt.normalize(getOption('baseUrl') || '/');\n }\n PageConfig.getBaseUrl = getBaseUrl;\n /**\n * Get the tree url for a JupyterLab application.\n */\n function getTreeUrl() {\n return url_1.URLExt.join(getBaseUrl(), getOption('treeUrl'));\n }\n PageConfig.getTreeUrl = getTreeUrl;\n /**\n * Get the base url for sharing links (usually baseUrl)\n */\n function getShareUrl() {\n return url_1.URLExt.normalize(getOption('shareUrl') || getBaseUrl());\n }\n PageConfig.getShareUrl = getShareUrl;\n /**\n * Get the tree url for shareable links.\n * Usually the same as treeUrl,\n * but overridable e.g. when sharing with JupyterHub.\n */\n function getTreeShareUrl() {\n return url_1.URLExt.normalize(url_1.URLExt.join(getShareUrl(), getOption('treeUrl')));\n }\n PageConfig.getTreeShareUrl = getTreeShareUrl;\n /**\n * Create a new URL given an optional mode and tree path.\n *\n * This is used to create URLS when the mode or tree path change as the user\n * changes mode or the current document in the main area. If fields in\n * options are omitted, the value in PageConfig will be used.\n *\n * @param options - IGetUrlOptions for the new path.\n */\n function getUrl(options) {\n var _a, _b, _c, _d;\n let path = options.toShare ? getShareUrl() : getBaseUrl();\n const mode = (_a = options.mode) !== null && _a !== void 0 ? _a : getOption('mode');\n const workspace = (_b = options.workspace) !== null && _b !== void 0 ? _b : getOption('workspace');\n const labOrDoc = mode === 'single-document' ? 'doc' : 'lab';\n path = url_1.URLExt.join(path, labOrDoc);\n if (workspace !== PageConfig.defaultWorkspace) {\n path = url_1.URLExt.join(path, 'workspaces', encodeURIComponent((_c = getOption('workspace')) !== null && _c !== void 0 ? _c : PageConfig.defaultWorkspace));\n }\n const treePath = (_d = options.treePath) !== null && _d !== void 0 ? _d : getOption('treePath');\n if (treePath) {\n path = url_1.URLExt.join(path, 'tree', url_1.URLExt.encodeParts(treePath));\n }\n return path;\n }\n PageConfig.getUrl = getUrl;\n PageConfig.defaultWorkspace = 'default';\n /**\n * Get the base websocket url for a Jupyter application, or an empty string.\n */\n function getWsUrl(baseUrl) {\n let wsUrl = getOption('wsUrl');\n if (!wsUrl) {\n baseUrl = baseUrl ? url_1.URLExt.normalize(baseUrl) : getBaseUrl();\n if (baseUrl.indexOf('http') !== 0) {\n return '';\n }\n wsUrl = 'ws' + baseUrl.slice(4);\n }\n return url_1.URLExt.normalize(wsUrl);\n }\n PageConfig.getWsUrl = getWsUrl;\n /**\n * Returns the URL converting this notebook to a certain\n * format with nbconvert.\n */\n function getNBConvertURL({ path, format, download }) {\n const notebookPath = url_1.URLExt.encodeParts(path);\n const url = url_1.URLExt.join(getBaseUrl(), 'nbconvert', format, notebookPath);\n if (download) {\n return url + '?download=true';\n }\n return url;\n }\n PageConfig.getNBConvertURL = getNBConvertURL;\n /**\n * Get the authorization token for a Jupyter application.\n */\n function getToken() {\n return getOption('token') || getBodyData('jupyterApiToken');\n }\n PageConfig.getToken = getToken;\n /**\n * Get the Notebook version info [major, minor, patch].\n */\n function getNotebookVersion() {\n const notebookVersion = getOption('notebookVersion');\n if (notebookVersion === '') {\n return [0, 0, 0];\n }\n return JSON.parse(notebookVersion);\n }\n PageConfig.getNotebookVersion = getNotebookVersion;\n /**\n * Private page config data for the Jupyter application.\n */\n let configData = null;\n /**\n * Get a url-encoded item from `body.data` and decode it\n * We should never have any encoded URLs anywhere else in code\n * until we are building an actual request.\n */\n function getBodyData(key) {\n if (typeof document === 'undefined' || !document.body) {\n return '';\n }\n const val = document.body.dataset[key];\n if (typeof val === 'undefined') {\n return '';\n }\n return decodeURIComponent(val);\n }\n /**\n * The namespace for page config `Extension` functions.\n */\n let Extension;\n (function (Extension) {\n /**\n * Populate an array from page config.\n *\n * @param key - The page config key (e.g., `deferredExtensions`).\n *\n * #### Notes\n * This is intended for `deferredExtensions` and `disabledExtensions`.\n */\n function populate(key) {\n try {\n const raw = getOption(key);\n if (raw) {\n return JSON.parse(raw);\n }\n }\n catch (error) {\n console.warn(`Unable to parse ${key}.`, error);\n }\n return [];\n }\n /**\n * The collection of deferred extensions in page config.\n */\n Extension.deferred = populate('deferredExtensions');\n /**\n * The collection of disabled extensions in page config.\n */\n Extension.disabled = populate('disabledExtensions');\n /**\n * Returns whether a plugin is deferred.\n *\n * @param id - The plugin ID.\n */\n function isDeferred(id) {\n // Check for either a full plugin id match or an extension\n // name match.\n const separatorIndex = id.indexOf(':');\n let extName = '';\n if (separatorIndex !== -1) {\n extName = id.slice(0, separatorIndex);\n }\n return Extension.deferred.some(val => val === id || (extName && val === extName));\n }\n Extension.isDeferred = isDeferred;\n /**\n * Returns whether a plugin is disabled.\n *\n * @param id - The plugin ID.\n */\n function isDisabled(id) {\n // Check for either a full plugin id match or an extension\n // name match.\n const separatorIndex = id.indexOf(':');\n let extName = '';\n if (separatorIndex !== -1) {\n extName = id.slice(0, separatorIndex);\n }\n return Extension.disabled.some(val => val === id || (extName && val === extName));\n }\n Extension.isDisabled = isDisabled;\n })(Extension = PageConfig.Extension || (PageConfig.Extension = {}));\n})(PageConfig || (exports.PageConfig = PageConfig = {}));\n//# sourceMappingURL=pageconfig.js.map","\"use strict\";\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PathExt = void 0;\nconst path_1 = require(\"path\");\n/**\n * The namespace for path-related functions.\n *\n * Note that Jupyter server paths do not start with a leading slash.\n */\nvar PathExt;\n(function (PathExt) {\n /**\n * Join all arguments together and normalize the resulting path.\n * Arguments must be strings. In v0.8, non-string arguments were silently ignored. In v0.10 and up, an exception is thrown.\n *\n * @param paths - The string paths to join.\n */\n function join(...paths) {\n const path = path_1.posix.join(...paths);\n return path === '.' ? '' : removeSlash(path);\n }\n PathExt.join = join;\n /**\n * Join all arguments together and normalize the resulting path and preserve the leading slash.\n *\n * @param paths - The string paths to join.\n */\n function joinWithLeadingSlash(...paths) {\n const path = path_1.posix.join(...paths);\n return path === '.' ? '' : path;\n }\n PathExt.joinWithLeadingSlash = joinWithLeadingSlash;\n /**\n * Return the last portion of a path. Similar to the Unix basename command.\n * Often used to extract the file name from a fully qualified path.\n *\n * @param path - The path to evaluate.\n *\n * @param ext - An extension to remove from the result.\n */\n function basename(path, ext) {\n return path_1.posix.basename(path, ext);\n }\n PathExt.basename = basename;\n /**\n * Get the directory name of a path, similar to the Unix dirname command.\n * When an empty path is given, returns the root path.\n *\n * @param path - The file path.\n */\n function dirname(path) {\n const dir = removeSlash(path_1.posix.dirname(path));\n return dir === '.' ? '' : dir;\n }\n PathExt.dirname = dirname;\n /**\n * Get the extension of the path.\n *\n * @param path - The file path.\n *\n * @returns the extension of the file.\n *\n * #### Notes\n * The extension is the string from the last occurrence of the `.`\n * character to end of string in the last portion of the path, inclusive.\n * If there is no `.` in the last portion of the path, or if the first\n * character of the basename of path [[basename]] is `.`, then an\n * empty string is returned.\n */\n function extname(path) {\n return path_1.posix.extname(path);\n }\n PathExt.extname = extname;\n /**\n * Normalize a string path, reducing '..' and '.' parts.\n * When multiple slashes are found, they're replaced by a single one; when the path contains a trailing slash, it is preserved. On Windows backslashes are used.\n * When an empty path is given, returns the root path.\n *\n * @param path - The string path to normalize.\n */\n function normalize(path) {\n if (path === '') {\n return '';\n }\n return removeSlash(path_1.posix.normalize(path));\n }\n PathExt.normalize = normalize;\n /**\n * Resolve a sequence of paths or path segments into an absolute path.\n * The root path in the application has no leading slash, so it is removed.\n *\n * @param parts - The paths to join.\n *\n * #### Notes\n * The right-most parameter is considered \\{to\\}. Other parameters are considered an array of \\{from\\}.\n *\n * Starting from leftmost \\{from\\} parameter, resolves \\{to\\} to an absolute path.\n *\n * If \\{to\\} isn't already absolute, \\{from\\} arguments are prepended in right to left order, until an absolute path is found. If after using all \\{from\\} paths still no absolute path is found, the current working directory is used as well. The resulting path is normalized, and trailing slashes are removed unless the path gets resolved to the root directory.\n */\n function resolve(...parts) {\n return removeSlash(path_1.posix.resolve(...parts));\n }\n PathExt.resolve = resolve;\n /**\n * Solve the relative path from \\{from\\} to \\{to\\}.\n *\n * @param from - The source path.\n *\n * @param to - The target path.\n *\n * #### Notes\n * If from and to each resolve to the same path (after calling\n * path.resolve() on each), a zero-length string is returned.\n * If a zero-length string is passed as from or to, `/`\n * will be used instead of the zero-length strings.\n */\n function relative(from, to) {\n return removeSlash(path_1.posix.relative(from, to));\n }\n PathExt.relative = relative;\n /**\n * Normalize a file extension to be of the type `'.foo'`.\n *\n * @param extension - the file extension.\n *\n * #### Notes\n * Adds a leading dot if not present and converts to lower case.\n */\n function normalizeExtension(extension) {\n if (extension.length > 0 && extension.indexOf('.') !== 0) {\n extension = `.${extension}`;\n }\n return extension;\n }\n PathExt.normalizeExtension = normalizeExtension;\n /**\n * Remove the leading slash from a path.\n *\n * @param path the path from which to remove a leading slash.\n */\n function removeSlash(path) {\n if (path.indexOf('/') === 0) {\n path = path.slice(1);\n }\n return path;\n }\n PathExt.removeSlash = removeSlash;\n})(PathExt || (exports.PathExt = PathExt = {}));\n//# sourceMappingURL=path.js.map","\"use strict\";\n/*\n * Copyright (c) Jupyter Development Team.\n * Distributed under the terms of the Modified BSD License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.signalToPromise = void 0;\nconst coreutils_1 = require(\"@lumino/coreutils\");\n/**\n * Convert a signal into a promise for the first emitted value.\n *\n * @param signal - The signal we are listening to.\n * @param timeout - Timeout to wait for signal in ms (not timeout if not defined or 0)\n *\n * @returns a Promise that resolves with a `(sender, args)` pair.\n */\nfunction signalToPromise(signal, timeout) {\n const waitForSignal = new coreutils_1.PromiseDelegate();\n function cleanup() {\n signal.disconnect(slot);\n }\n function slot(sender, args) {\n cleanup();\n waitForSignal.resolve([sender, args]);\n }\n signal.connect(slot);\n if ((timeout !== null && timeout !== void 0 ? timeout : 0) > 0) {\n setTimeout(() => {\n cleanup();\n waitForSignal.reject(`Signal not emitted within ${timeout} ms.`);\n }, timeout);\n }\n return waitForSignal.promise;\n}\nexports.signalToPromise = signalToPromise;\n//# sourceMappingURL=signal.js.map","\"use strict\";\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Text = void 0;\n/**\n * The namespace for text-related functions.\n */\nvar Text;\n(function (Text) {\n // javascript stores text as utf16 and string indices use \"code units\",\n // which stores high-codepoint characters as \"surrogate pairs\",\n // which occupy two indices in the javascript string.\n // We need to translate cursor_pos in the Jupyter protocol (in characters)\n // to js offset (with surrogate pairs taking two spots).\n const HAS_SURROGATES = '𝐚'.length > 1;\n /**\n * Convert a javascript string index into a unicode character offset\n *\n * @param jsIdx - The javascript string index (counting surrogate pairs)\n *\n * @param text - The text in which the offset is calculated\n *\n * @returns The unicode character offset\n */\n function jsIndexToCharIndex(jsIdx, text) {\n if (HAS_SURROGATES) {\n // not using surrogates, nothing to do\n return jsIdx;\n }\n let charIdx = jsIdx;\n for (let i = 0; i + 1 < text.length && i < jsIdx; i++) {\n const charCode = text.charCodeAt(i);\n // check for surrogate pair\n if (charCode >= 0xd800 && charCode <= 0xdbff) {\n const nextCharCode = text.charCodeAt(i + 1);\n if (nextCharCode >= 0xdc00 && nextCharCode <= 0xdfff) {\n charIdx--;\n i++;\n }\n }\n }\n return charIdx;\n }\n Text.jsIndexToCharIndex = jsIndexToCharIndex;\n /**\n * Convert a unicode character offset to a javascript string index.\n *\n * @param charIdx - The index in unicode characters\n *\n * @param text - The text in which the offset is calculated\n *\n * @returns The js-native index\n */\n function charIndexToJsIndex(charIdx, text) {\n if (HAS_SURROGATES) {\n // not using surrogates, nothing to do\n return charIdx;\n }\n let jsIdx = charIdx;\n for (let i = 0; i + 1 < text.length && i < jsIdx; i++) {\n const charCode = text.charCodeAt(i);\n // check for surrogate pair\n if (charCode >= 0xd800 && charCode <= 0xdbff) {\n const nextCharCode = text.charCodeAt(i + 1);\n if (nextCharCode >= 0xdc00 && nextCharCode <= 0xdfff) {\n jsIdx++;\n i++;\n }\n }\n }\n return jsIdx;\n }\n Text.charIndexToJsIndex = charIndexToJsIndex;\n /**\n * Given a 'snake-case', 'snake_case', 'snake:case', or\n * 'snake case' string, will return the camel case version: 'snakeCase'.\n *\n * @param str the snake-case input string.\n *\n * @param upper default = false. If true, the first letter of the\n * returned string will be capitalized.\n *\n * @returns the camel case version of the input string.\n */\n function camelCase(str, upper = false) {\n return str.replace(/^(\\w)|[\\s-_:]+(\\w)/g, function (match, p1, p2) {\n if (p2) {\n return p2.toUpperCase();\n }\n else {\n return upper ? p1.toUpperCase() : p1.toLowerCase();\n }\n });\n }\n Text.camelCase = camelCase;\n /**\n * Given a string, title case the words in the string.\n *\n * @param str the string to title case.\n *\n * @returns the same string, but with each word capitalized.\n */\n function titleCase(str) {\n return (str || '')\n .toLowerCase()\n .split(' ')\n .map(word => word.charAt(0).toUpperCase() + word.slice(1))\n .join(' ');\n }\n Text.titleCase = titleCase;\n})(Text || (exports.Text = Text = {}));\n//# sourceMappingURL=text.js.map","\"use strict\";\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Time = void 0;\n/**\n * A list of time units with their associated value in milliseconds.\n */\nconst UNITS = [\n { name: 'years', milliseconds: 365 * 24 * 60 * 60 * 1000 },\n { name: 'months', milliseconds: 30 * 24 * 60 * 60 * 1000 },\n { name: 'days', milliseconds: 24 * 60 * 60 * 1000 },\n { name: 'hours', milliseconds: 60 * 60 * 1000 },\n { name: 'minutes', milliseconds: 60 * 1000 },\n { name: 'seconds', milliseconds: 1000 }\n];\n/**\n * The namespace for date functions.\n */\nvar Time;\n(function (Time) {\n /**\n * Convert a timestring to a human readable string (e.g. 'two minutes ago').\n *\n * @param value - The date timestring or date object.\n *\n * @returns A formatted date.\n */\n function formatHuman(value, format = 'long') {\n const lang = document.documentElement.lang || 'en';\n const formatter = new Intl.RelativeTimeFormat(lang, {\n numeric: 'auto',\n style: format\n });\n const delta = new Date(value).getTime() - Date.now();\n for (let unit of UNITS) {\n const amount = Math.ceil(delta / unit.milliseconds);\n if (amount === 0) {\n continue;\n }\n return formatter.format(amount, unit.name);\n }\n return formatter.format(0, 'seconds');\n }\n Time.formatHuman = formatHuman;\n /**\n * Convenient helper to convert a timestring to a date format.\n *\n * @param value - The date timestring or date object.\n *\n * @returns A formatted date.\n */\n function format(value) {\n const lang = document.documentElement.lang || 'en';\n const formatter = new Intl.DateTimeFormat(lang, {\n dateStyle: 'short',\n timeStyle: 'short'\n });\n return formatter.format(new Date(value));\n }\n Time.format = format;\n})(Time || (exports.Time = Time = {}));\n//# sourceMappingURL=time.js.map","\"use strict\";\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.URLExt = void 0;\nconst path_1 = require(\"path\");\nconst url_parse_1 = __importDefault(require(\"url-parse\"));\n/**\n * The namespace for URL-related functions.\n */\nvar URLExt;\n(function (URLExt) {\n /**\n * Parse a url into a URL object.\n *\n * @param url - The URL string to parse.\n *\n * @returns A URL object.\n */\n function parse(url) {\n if (typeof document !== 'undefined' && document) {\n const a = document.createElement('a');\n a.href = url;\n return a;\n }\n return (0, url_parse_1.default)(url);\n }\n URLExt.parse = parse;\n /**\n * Parse URL and retrieve hostname\n *\n * @param url - The URL string to parse\n *\n * @returns a hostname string value\n */\n function getHostName(url) {\n return (0, url_parse_1.default)(url).hostname;\n }\n URLExt.getHostName = getHostName;\n function normalize(url) {\n return url && parse(url).toString();\n }\n URLExt.normalize = normalize;\n /**\n * Join a sequence of url components and normalizes as in node `path.join`.\n *\n * @param parts - The url components.\n *\n * @returns the joined url.\n */\n function join(...parts) {\n let u = (0, url_parse_1.default)(parts[0], {});\n // Schema-less URL can be only parsed as relative to a base URL\n // see https://github.com/unshiftio/url-parse/issues/219#issuecomment-1002219326\n const isSchemaLess = u.protocol === '' && u.slashes;\n if (isSchemaLess) {\n u = (0, url_parse_1.default)(parts[0], 'https:' + parts[0]);\n }\n const prefix = `${isSchemaLess ? '' : u.protocol}${u.slashes ? '//' : ''}${u.auth}${u.auth ? '@' : ''}${u.host}`;\n // If there was a prefix, then the first path must start at the root.\n const path = path_1.posix.join(`${!!prefix && u.pathname[0] !== '/' ? '/' : ''}${u.pathname}`, ...parts.slice(1));\n return `${prefix}${path === '.' ? '' : path}`;\n }\n URLExt.join = join;\n /**\n * Encode the components of a multi-segment url.\n *\n * @param url - The url to encode.\n *\n * @returns the encoded url.\n *\n * #### Notes\n * Preserves the `'/'` separators.\n * Should not include the base url, since all parts are escaped.\n */\n function encodeParts(url) {\n return join(...url.split('/').map(encodeURIComponent));\n }\n URLExt.encodeParts = encodeParts;\n /**\n * Return a serialized object string suitable for a query.\n *\n * @param value The source object.\n *\n * @returns an encoded url query.\n *\n * #### Notes\n * Modified version of [stackoverflow](http://stackoverflow.com/a/30707423).\n */\n function objectToQueryString(value) {\n const keys = Object.keys(value).filter(key => key.length > 0);\n if (!keys.length) {\n return '';\n }\n return ('?' +\n keys\n .map(key => {\n const content = encodeURIComponent(String(value[key]));\n return key + (content ? '=' + content : '');\n })\n .join('&'));\n }\n URLExt.objectToQueryString = objectToQueryString;\n /**\n * Return a parsed object that represents the values in a query string.\n */\n function queryStringToObject(value) {\n return value\n .replace(/^\\?/, '')\n .split('&')\n .reduce((acc, val) => {\n const [key, value] = val.split('=');\n if (key.length > 0) {\n acc[key] = decodeURIComponent(value || '');\n }\n return acc;\n }, {});\n }\n URLExt.queryStringToObject = queryStringToObject;\n /**\n * Test whether the url is a local url.\n *\n * @param allowRoot - Whether the paths starting at Unix-style filesystem root (`/`) are permitted.\n *\n * #### Notes\n * This function returns `false` for any fully qualified url, including\n * `data:`, `file:`, and `//` protocol URLs.\n */\n function isLocal(url, allowRoot = false) {\n const { protocol } = parse(url);\n return ((!protocol || url.toLowerCase().indexOf(protocol) !== 0) &&\n (allowRoot ? url.indexOf('//') !== 0 : url.indexOf('/') !== 0));\n }\n URLExt.isLocal = isLocal;\n})(URLExt || (exports.URLExt = URLExt = {}));\n//# sourceMappingURL=url.js.map","// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n/**\n * The namespace for array-specific algorithms.\n */\nvar ArrayExt;\n(function (ArrayExt) {\n /**\n * Find the index of the first occurrence of a value in an array.\n *\n * @param array - The array-like object to search.\n *\n * @param value - The value to locate in the array. Values are\n * compared using strict `===` equality.\n *\n * @param start - The index of the first element in the range to be\n * searched, inclusive. The default value is `0`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @param stop - The index of the last element in the range to be\n * searched, inclusive. The default value is `-1`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @returns The index of the first occurrence of the value, or `-1`\n * if the value is not found.\n *\n * #### Notes\n * If `stop < start` the search will wrap at the end of the array.\n *\n * #### Complexity\n * Linear.\n *\n * #### Undefined Behavior\n * A `start` or `stop` which is non-integral.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * let data = ['one', 'two', 'three', 'four', 'one'];\n * ArrayExt.firstIndexOf(data, 'red'); // -1\n * ArrayExt.firstIndexOf(data, 'one'); // 0\n * ArrayExt.firstIndexOf(data, 'one', 1); // 4\n * ArrayExt.firstIndexOf(data, 'two', 2); // -1\n * ArrayExt.firstIndexOf(data, 'two', 2, 1); // 1\n * ```\n */\n function firstIndexOf(array, value, start = 0, stop = -1) {\n let n = array.length;\n if (n === 0) {\n return -1;\n }\n if (start < 0) {\n start = Math.max(0, start + n);\n }\n else {\n start = Math.min(start, n - 1);\n }\n if (stop < 0) {\n stop = Math.max(0, stop + n);\n }\n else {\n stop = Math.min(stop, n - 1);\n }\n let span;\n if (stop < start) {\n span = stop + 1 + (n - start);\n }\n else {\n span = stop - start + 1;\n }\n for (let i = 0; i < span; ++i) {\n let j = (start + i) % n;\n if (array[j] === value) {\n return j;\n }\n }\n return -1;\n }\n ArrayExt.firstIndexOf = firstIndexOf;\n /**\n * Find the index of the last occurrence of a value in an array.\n *\n * @param array - The array-like object to search.\n *\n * @param value - The value to locate in the array. Values are\n * compared using strict `===` equality.\n *\n * @param start - The index of the first element in the range to be\n * searched, inclusive. The default value is `-1`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @param stop - The index of the last element in the range to be\n * searched, inclusive. The default value is `0`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @returns The index of the last occurrence of the value, or `-1`\n * if the value is not found.\n *\n * #### Notes\n * If `start < stop` the search will wrap at the front of the array.\n *\n * #### Complexity\n * Linear.\n *\n * #### Undefined Behavior\n * A `start` or `stop` which is non-integral.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * let data = ['one', 'two', 'three', 'four', 'one'];\n * ArrayExt.lastIndexOf(data, 'red'); // -1\n * ArrayExt.lastIndexOf(data, 'one'); // 4\n * ArrayExt.lastIndexOf(data, 'one', 1); // 0\n * ArrayExt.lastIndexOf(data, 'two', 0); // -1\n * ArrayExt.lastIndexOf(data, 'two', 0, 1); // 1\n * ```\n */\n function lastIndexOf(array, value, start = -1, stop = 0) {\n let n = array.length;\n if (n === 0) {\n return -1;\n }\n if (start < 0) {\n start = Math.max(0, start + n);\n }\n else {\n start = Math.min(start, n - 1);\n }\n if (stop < 0) {\n stop = Math.max(0, stop + n);\n }\n else {\n stop = Math.min(stop, n - 1);\n }\n let span;\n if (start < stop) {\n span = start + 1 + (n - stop);\n }\n else {\n span = start - stop + 1;\n }\n for (let i = 0; i < span; ++i) {\n let j = (start - i + n) % n;\n if (array[j] === value) {\n return j;\n }\n }\n return -1;\n }\n ArrayExt.lastIndexOf = lastIndexOf;\n /**\n * Find the index of the first value which matches a predicate.\n *\n * @param array - The array-like object to search.\n *\n * @param fn - The predicate function to apply to the values.\n *\n * @param start - The index of the first element in the range to be\n * searched, inclusive. The default value is `0`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @param stop - The index of the last element in the range to be\n * searched, inclusive. The default value is `-1`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @returns The index of the first matching value, or `-1` if no\n * matching value is found.\n *\n * #### Notes\n * If `stop < start` the search will wrap at the end of the array.\n *\n * #### Complexity\n * Linear.\n *\n * #### Undefined Behavior\n * A `start` or `stop` which is non-integral.\n *\n * Modifying the length of the array while searching.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * function isEven(value: number): boolean {\n * return value % 2 === 0;\n * }\n *\n * let data = [1, 2, 3, 4, 3, 2, 1];\n * ArrayExt.findFirstIndex(data, isEven); // 1\n * ArrayExt.findFirstIndex(data, isEven, 4); // 5\n * ArrayExt.findFirstIndex(data, isEven, 6); // -1\n * ArrayExt.findFirstIndex(data, isEven, 6, 5); // 1\n * ```\n */\n function findFirstIndex(array, fn, start = 0, stop = -1) {\n let n = array.length;\n if (n === 0) {\n return -1;\n }\n if (start < 0) {\n start = Math.max(0, start + n);\n }\n else {\n start = Math.min(start, n - 1);\n }\n if (stop < 0) {\n stop = Math.max(0, stop + n);\n }\n else {\n stop = Math.min(stop, n - 1);\n }\n let span;\n if (stop < start) {\n span = stop + 1 + (n - start);\n }\n else {\n span = stop - start + 1;\n }\n for (let i = 0; i < span; ++i) {\n let j = (start + i) % n;\n if (fn(array[j], j)) {\n return j;\n }\n }\n return -1;\n }\n ArrayExt.findFirstIndex = findFirstIndex;\n /**\n * Find the index of the last value which matches a predicate.\n *\n * @param array - The array-like object to search.\n *\n * @param fn - The predicate function to apply to the values.\n *\n * @param start - The index of the first element in the range to be\n * searched, inclusive. The default value is `-1`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @param stop - The index of the last element in the range to be\n * searched, inclusive. The default value is `0`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @returns The index of the last matching value, or `-1` if no\n * matching value is found.\n *\n * #### Notes\n * If `start < stop` the search will wrap at the front of the array.\n *\n * #### Complexity\n * Linear.\n *\n * #### Undefined Behavior\n * A `start` or `stop` which is non-integral.\n *\n * Modifying the length of the array while searching.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * function isEven(value: number): boolean {\n * return value % 2 === 0;\n * }\n *\n * let data = [1, 2, 3, 4, 3, 2, 1];\n * ArrayExt.findLastIndex(data, isEven); // 5\n * ArrayExt.findLastIndex(data, isEven, 4); // 3\n * ArrayExt.findLastIndex(data, isEven, 0); // -1\n * ArrayExt.findLastIndex(data, isEven, 0, 1); // 5\n * ```\n */\n function findLastIndex(array, fn, start = -1, stop = 0) {\n let n = array.length;\n if (n === 0) {\n return -1;\n }\n if (start < 0) {\n start = Math.max(0, start + n);\n }\n else {\n start = Math.min(start, n - 1);\n }\n if (stop < 0) {\n stop = Math.max(0, stop + n);\n }\n else {\n stop = Math.min(stop, n - 1);\n }\n let d;\n if (start < stop) {\n d = start + 1 + (n - stop);\n }\n else {\n d = start - stop + 1;\n }\n for (let i = 0; i < d; ++i) {\n let j = (start - i + n) % n;\n if (fn(array[j], j)) {\n return j;\n }\n }\n return -1;\n }\n ArrayExt.findLastIndex = findLastIndex;\n /**\n * Find the first value which matches a predicate.\n *\n * @param array - The array-like object to search.\n *\n * @param fn - The predicate function to apply to the values.\n *\n * @param start - The index of the first element in the range to be\n * searched, inclusive. The default value is `0`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @param stop - The index of the last element in the range to be\n * searched, inclusive. The default value is `-1`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @returns The first matching value, or `undefined` if no matching\n * value is found.\n *\n * #### Notes\n * If `stop < start` the search will wrap at the end of the array.\n *\n * #### Complexity\n * Linear.\n *\n * #### Undefined Behavior\n * A `start` or `stop` which is non-integral.\n *\n * Modifying the length of the array while searching.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * function isEven(value: number): boolean {\n * return value % 2 === 0;\n * }\n *\n * let data = [1, 2, 3, 4, 3, 2, 1];\n * ArrayExt.findFirstValue(data, isEven); // 2\n * ArrayExt.findFirstValue(data, isEven, 2); // 4\n * ArrayExt.findFirstValue(data, isEven, 6); // undefined\n * ArrayExt.findFirstValue(data, isEven, 6, 5); // 2\n * ```\n */\n function findFirstValue(array, fn, start = 0, stop = -1) {\n let index = findFirstIndex(array, fn, start, stop);\n return index !== -1 ? array[index] : undefined;\n }\n ArrayExt.findFirstValue = findFirstValue;\n /**\n * Find the last value which matches a predicate.\n *\n * @param object - The array-like object to search.\n *\n * @param fn - The predicate function to apply to the values.\n *\n * @param start - The index of the first element in the range to be\n * searched, inclusive. The default value is `-1`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @param stop - The index of the last element in the range to be\n * searched, inclusive. The default value is `0`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @returns The last matching value, or `undefined` if no matching\n * value is found.\n *\n * #### Notes\n * If `start < stop` the search will wrap at the front of the array.\n *\n * #### Complexity\n * Linear.\n *\n * #### Undefined Behavior\n * A `start` or `stop` which is non-integral.\n *\n * Modifying the length of the array while searching.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * function isEven(value: number): boolean {\n * return value % 2 === 0;\n * }\n *\n * let data = [1, 2, 3, 4, 3, 2, 1];\n * ArrayExt.findLastValue(data, isEven); // 2\n * ArrayExt.findLastValue(data, isEven, 4); // 4\n * ArrayExt.findLastValue(data, isEven, 0); // undefined\n * ArrayExt.findLastValue(data, isEven, 0, 1); // 2\n * ```\n */\n function findLastValue(array, fn, start = -1, stop = 0) {\n let index = findLastIndex(array, fn, start, stop);\n return index !== -1 ? array[index] : undefined;\n }\n ArrayExt.findLastValue = findLastValue;\n /**\n * Find the index of the first element which compares `>=` to a value.\n *\n * @param array - The sorted array-like object to search.\n *\n * @param value - The value to locate in the array.\n *\n * @param fn - The 3-way comparison function to apply to the values.\n * It should return `< 0` if an element is less than a value, `0` if\n * an element is equal to a value, or `> 0` if an element is greater\n * than a value.\n *\n * @param start - The index of the first element in the range to be\n * searched, inclusive. The default value is `0`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @param stop - The index of the last element in the range to be\n * searched, inclusive. The default value is `-1`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @returns The index of the first element which compares `>=` to the\n * value, or `length` if there is no such element. If the computed\n * index for `stop` is less than `start`, then the computed index\n * for `start` is returned.\n *\n * #### Notes\n * The array must already be sorted in ascending order according to\n * the comparison function.\n *\n * #### Complexity\n * Logarithmic.\n *\n * #### Undefined Behavior\n * Searching a range which is not sorted in ascending order.\n *\n * A `start` or `stop` which is non-integral.\n *\n * Modifying the length of the array while searching.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * function numberCmp(a: number, b: number): number {\n * return a - b;\n * }\n *\n * let data = [0, 3, 4, 7, 7, 9];\n * ArrayExt.lowerBound(data, 0, numberCmp); // 0\n * ArrayExt.lowerBound(data, 6, numberCmp); // 3\n * ArrayExt.lowerBound(data, 7, numberCmp); // 3\n * ArrayExt.lowerBound(data, -1, numberCmp); // 0\n * ArrayExt.lowerBound(data, 10, numberCmp); // 6\n * ```\n */\n function lowerBound(array, value, fn, start = 0, stop = -1) {\n let n = array.length;\n if (n === 0) {\n return 0;\n }\n if (start < 0) {\n start = Math.max(0, start + n);\n }\n else {\n start = Math.min(start, n - 1);\n }\n if (stop < 0) {\n stop = Math.max(0, stop + n);\n }\n else {\n stop = Math.min(stop, n - 1);\n }\n let begin = start;\n let span = stop - start + 1;\n while (span > 0) {\n let half = span >> 1;\n let middle = begin + half;\n if (fn(array[middle], value) < 0) {\n begin = middle + 1;\n span -= half + 1;\n }\n else {\n span = half;\n }\n }\n return begin;\n }\n ArrayExt.lowerBound = lowerBound;\n /**\n * Find the index of the first element which compares `>` than a value.\n *\n * @param array - The sorted array-like object to search.\n *\n * @param value - The value to locate in the array.\n *\n * @param fn - The 3-way comparison function to apply to the values.\n * It should return `< 0` if an element is less than a value, `0` if\n * an element is equal to a value, or `> 0` if an element is greater\n * than a value.\n *\n * @param start - The index of the first element in the range to be\n * searched, inclusive. The default value is `0`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @param stop - The index of the last element in the range to be\n * searched, inclusive. The default value is `-1`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @returns The index of the first element which compares `>` than the\n * value, or `length` if there is no such element. If the computed\n * index for `stop` is less than `start`, then the computed index\n * for `start` is returned.\n *\n * #### Notes\n * The array must already be sorted in ascending order according to\n * the comparison function.\n *\n * #### Complexity\n * Logarithmic.\n *\n * #### Undefined Behavior\n * Searching a range which is not sorted in ascending order.\n *\n * A `start` or `stop` which is non-integral.\n *\n * Modifying the length of the array while searching.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * function numberCmp(a: number, b: number): number {\n * return a - b;\n * }\n *\n * let data = [0, 3, 4, 7, 7, 9];\n * ArrayExt.upperBound(data, 0, numberCmp); // 1\n * ArrayExt.upperBound(data, 6, numberCmp); // 3\n * ArrayExt.upperBound(data, 7, numberCmp); // 5\n * ArrayExt.upperBound(data, -1, numberCmp); // 0\n * ArrayExt.upperBound(data, 10, numberCmp); // 6\n * ```\n */\n function upperBound(array, value, fn, start = 0, stop = -1) {\n let n = array.length;\n if (n === 0) {\n return 0;\n }\n if (start < 0) {\n start = Math.max(0, start + n);\n }\n else {\n start = Math.min(start, n - 1);\n }\n if (stop < 0) {\n stop = Math.max(0, stop + n);\n }\n else {\n stop = Math.min(stop, n - 1);\n }\n let begin = start;\n let span = stop - start + 1;\n while (span > 0) {\n let half = span >> 1;\n let middle = begin + half;\n if (fn(array[middle], value) > 0) {\n span = half;\n }\n else {\n begin = middle + 1;\n span -= half + 1;\n }\n }\n return begin;\n }\n ArrayExt.upperBound = upperBound;\n /**\n * Test whether two arrays are shallowly equal.\n *\n * @param a - The first array-like object to compare.\n *\n * @param b - The second array-like object to compare.\n *\n * @param fn - The comparison function to apply to the elements. It\n * should return `true` if the elements are \"equal\". The default\n * compares elements using strict `===` equality.\n *\n * @returns Whether the two arrays are shallowly equal.\n *\n * #### Complexity\n * Linear.\n *\n * #### Undefined Behavior\n * Modifying the length of the arrays while comparing.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * let d1 = [0, 3, 4, 7, 7, 9];\n * let d2 = [0, 3, 4, 7, 7, 9];\n * let d3 = [42];\n * ArrayExt.shallowEqual(d1, d2); // true\n * ArrayExt.shallowEqual(d2, d3); // false\n * ```\n */\n function shallowEqual(a, b, fn) {\n // Check for object identity first.\n if (a === b) {\n return true;\n }\n // Bail early if the lengths are different.\n if (a.length !== b.length) {\n return false;\n }\n // Compare each element for equality.\n for (let i = 0, n = a.length; i < n; ++i) {\n if (fn ? !fn(a[i], b[i]) : a[i] !== b[i]) {\n return false;\n }\n }\n // The array are shallowly equal.\n return true;\n }\n ArrayExt.shallowEqual = shallowEqual;\n /**\n * Create a slice of an array subject to an optional step.\n *\n * @param array - The array-like object of interest.\n *\n * @param options - The options for configuring the slice.\n *\n * @returns A new array with the specified values.\n *\n * @throws An exception if the slice `step` is `0`.\n *\n * #### Complexity\n * Linear.\n *\n * #### Undefined Behavior\n * A `start`, `stop`, or `step` which is non-integral.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * let data = [0, 3, 4, 7, 7, 9];\n * ArrayExt.slice(data); // [0, 3, 4, 7, 7, 9]\n * ArrayExt.slice(data, { start: 2 }); // [4, 7, 7, 9]\n * ArrayExt.slice(data, { start: 0, stop: 4 }); // [0, 3, 4, 7]\n * ArrayExt.slice(data, { step: 2 }); // [0, 4, 7]\n * ArrayExt.slice(data, { step: -1 }); // [9, 7, 7, 4, 3, 0]\n * ```\n */\n function slice(array, options = {}) {\n // Extract the options.\n let { start, stop, step } = options;\n // Set up the `step` value.\n if (step === undefined) {\n step = 1;\n }\n // Validate the step size.\n if (step === 0) {\n throw new Error('Slice `step` cannot be zero.');\n }\n // Look up the length of the array.\n let n = array.length;\n // Set up the `start` value.\n if (start === undefined) {\n start = step < 0 ? n - 1 : 0;\n }\n else if (start < 0) {\n start = Math.max(start + n, step < 0 ? -1 : 0);\n }\n else if (start >= n) {\n start = step < 0 ? n - 1 : n;\n }\n // Set up the `stop` value.\n if (stop === undefined) {\n stop = step < 0 ? -1 : n;\n }\n else if (stop < 0) {\n stop = Math.max(stop + n, step < 0 ? -1 : 0);\n }\n else if (stop >= n) {\n stop = step < 0 ? n - 1 : n;\n }\n // Compute the slice length.\n let length;\n if ((step < 0 && stop >= start) || (step > 0 && start >= stop)) {\n length = 0;\n }\n else if (step < 0) {\n length = Math.floor((stop - start + 1) / step + 1);\n }\n else {\n length = Math.floor((stop - start - 1) / step + 1);\n }\n // Compute the sliced result.\n let result = [];\n for (let i = 0; i < length; ++i) {\n result[i] = array[start + i * step];\n }\n // Return the result.\n return result;\n }\n ArrayExt.slice = slice;\n /**\n * Move an element in an array from one index to another.\n *\n * @param array - The mutable array-like object of interest.\n *\n * @param fromIndex - The index of the element to move. Negative\n * values are taken as an offset from the end of the array.\n *\n * @param toIndex - The target index of the element. Negative\n * values are taken as an offset from the end of the array.\n *\n * #### Complexity\n * Linear.\n *\n * #### Undefined Behavior\n * A `fromIndex` or `toIndex` which is non-integral.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from from '@lumino/algorithm';\n *\n * let data = [0, 1, 2, 3, 4];\n * ArrayExt.move(data, 1, 2); // [0, 2, 1, 3, 4]\n * ArrayExt.move(data, 4, 2); // [0, 2, 4, 1, 3]\n * ```\n */\n function move(array, fromIndex, toIndex) {\n let n = array.length;\n if (n <= 1) {\n return;\n }\n if (fromIndex < 0) {\n fromIndex = Math.max(0, fromIndex + n);\n }\n else {\n fromIndex = Math.min(fromIndex, n - 1);\n }\n if (toIndex < 0) {\n toIndex = Math.max(0, toIndex + n);\n }\n else {\n toIndex = Math.min(toIndex, n - 1);\n }\n if (fromIndex === toIndex) {\n return;\n }\n let value = array[fromIndex];\n let d = fromIndex < toIndex ? 1 : -1;\n for (let i = fromIndex; i !== toIndex; i += d) {\n array[i] = array[i + d];\n }\n array[toIndex] = value;\n }\n ArrayExt.move = move;\n /**\n * Reverse an array in-place.\n *\n * @param array - The mutable array-like object of interest.\n *\n * @param start - The index of the first element in the range to be\n * reversed, inclusive. The default value is `0`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @param stop - The index of the last element in the range to be\n * reversed, inclusive. The default value is `-1`. Negative values\n * are taken as an offset from the end of the array.\n *\n * #### Complexity\n * Linear.\n *\n * #### Undefined Behavior\n * A `start` or `stop` index which is non-integral.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * let data = [0, 1, 2, 3, 4];\n * ArrayExt.reverse(data, 1, 3); // [0, 3, 2, 1, 4]\n * ArrayExt.reverse(data, 3); // [0, 3, 2, 4, 1]\n * ArrayExt.reverse(data); // [1, 4, 2, 3, 0]\n * ```\n */\n function reverse(array, start = 0, stop = -1) {\n let n = array.length;\n if (n <= 1) {\n return;\n }\n if (start < 0) {\n start = Math.max(0, start + n);\n }\n else {\n start = Math.min(start, n - 1);\n }\n if (stop < 0) {\n stop = Math.max(0, stop + n);\n }\n else {\n stop = Math.min(stop, n - 1);\n }\n while (start < stop) {\n let a = array[start];\n let b = array[stop];\n array[start++] = b;\n array[stop--] = a;\n }\n }\n ArrayExt.reverse = reverse;\n /**\n * Rotate the elements of an array in-place.\n *\n * @param array - The mutable array-like object of interest.\n *\n * @param delta - The amount of rotation to apply to the elements. A\n * positive value will rotate the elements to the left. A negative\n * value will rotate the elements to the right.\n *\n * @param start - The index of the first element in the range to be\n * rotated, inclusive. The default value is `0`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @param stop - The index of the last element in the range to be\n * rotated, inclusive. The default value is `-1`. Negative values\n * are taken as an offset from the end of the array.\n *\n * #### Complexity\n * Linear.\n *\n * #### Undefined Behavior\n * A `delta`, `start`, or `stop` which is non-integral.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * let data = [0, 1, 2, 3, 4];\n * ArrayExt.rotate(data, 2); // [2, 3, 4, 0, 1]\n * ArrayExt.rotate(data, -2); // [0, 1, 2, 3, 4]\n * ArrayExt.rotate(data, 10); // [0, 1, 2, 3, 4]\n * ArrayExt.rotate(data, 9); // [4, 0, 1, 2, 3]\n * ArrayExt.rotate(data, 2, 1, 3); // [4, 2, 0, 1, 3]\n * ```\n */\n function rotate(array, delta, start = 0, stop = -1) {\n let n = array.length;\n if (n <= 1) {\n return;\n }\n if (start < 0) {\n start = Math.max(0, start + n);\n }\n else {\n start = Math.min(start, n - 1);\n }\n if (stop < 0) {\n stop = Math.max(0, stop + n);\n }\n else {\n stop = Math.min(stop, n - 1);\n }\n if (start >= stop) {\n return;\n }\n let length = stop - start + 1;\n if (delta > 0) {\n delta = delta % length;\n }\n else if (delta < 0) {\n delta = ((delta % length) + length) % length;\n }\n if (delta === 0) {\n return;\n }\n let pivot = start + delta;\n reverse(array, start, pivot - 1);\n reverse(array, pivot, stop);\n reverse(array, start, stop);\n }\n ArrayExt.rotate = rotate;\n /**\n * Fill an array with a static value.\n *\n * @param array - The mutable array-like object to fill.\n *\n * @param value - The static value to use to fill the array.\n *\n * @param start - The index of the first element in the range to be\n * filled, inclusive. The default value is `0`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @param stop - The index of the last element in the range to be\n * filled, inclusive. The default value is `-1`. Negative values\n * are taken as an offset from the end of the array.\n *\n * #### Notes\n * If `stop < start` the fill will wrap at the end of the array.\n *\n * #### Complexity\n * Linear.\n *\n * #### Undefined Behavior\n * A `start` or `stop` which is non-integral.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * let data = ['one', 'two', 'three', 'four'];\n * ArrayExt.fill(data, 'r'); // ['r', 'r', 'r', 'r']\n * ArrayExt.fill(data, 'g', 1); // ['r', 'g', 'g', 'g']\n * ArrayExt.fill(data, 'b', 2, 3); // ['r', 'g', 'b', 'b']\n * ArrayExt.fill(data, 'z', 3, 1); // ['z', 'z', 'b', 'z']\n * ```\n */\n function fill(array, value, start = 0, stop = -1) {\n let n = array.length;\n if (n === 0) {\n return;\n }\n if (start < 0) {\n start = Math.max(0, start + n);\n }\n else {\n start = Math.min(start, n - 1);\n }\n if (stop < 0) {\n stop = Math.max(0, stop + n);\n }\n else {\n stop = Math.min(stop, n - 1);\n }\n let span;\n if (stop < start) {\n span = stop + 1 + (n - start);\n }\n else {\n span = stop - start + 1;\n }\n for (let i = 0; i < span; ++i) {\n array[(start + i) % n] = value;\n }\n }\n ArrayExt.fill = fill;\n /**\n * Insert a value into an array at a specific index.\n *\n * @param array - The array of interest.\n *\n * @param index - The index at which to insert the value. Negative\n * values are taken as an offset from the end of the array.\n *\n * @param value - The value to set at the specified index.\n *\n * #### Complexity\n * Linear.\n *\n * #### Undefined Behavior\n * An `index` which is non-integral.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * let data = [0, 1, 2];\n * ArrayExt.insert(data, 0, -1); // [-1, 0, 1, 2]\n * ArrayExt.insert(data, 2, 12); // [-1, 0, 12, 1, 2]\n * ArrayExt.insert(data, -1, 7); // [-1, 0, 12, 1, 7, 2]\n * ArrayExt.insert(data, 6, 19); // [-1, 0, 12, 1, 7, 2, 19]\n * ```\n */\n function insert(array, index, value) {\n let n = array.length;\n if (index < 0) {\n index = Math.max(0, index + n);\n }\n else {\n index = Math.min(index, n);\n }\n for (let i = n; i > index; --i) {\n array[i] = array[i - 1];\n }\n array[index] = value;\n }\n ArrayExt.insert = insert;\n /**\n * Remove and return a value at a specific index in an array.\n *\n * @param array - The array of interest.\n *\n * @param index - The index of the value to remove. Negative values\n * are taken as an offset from the end of the array.\n *\n * @returns The value at the specified index, or `undefined` if the\n * index is out of range.\n *\n * #### Complexity\n * Linear.\n *\n * #### Undefined Behavior\n * An `index` which is non-integral.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * let data = [0, 12, 23, 39, 14, 12, 75];\n * ArrayExt.removeAt(data, 2); // 23\n * ArrayExt.removeAt(data, -2); // 12\n * ArrayExt.removeAt(data, 10); // undefined;\n * ```\n */\n function removeAt(array, index) {\n let n = array.length;\n if (index < 0) {\n index += n;\n }\n if (index < 0 || index >= n) {\n return undefined;\n }\n let value = array[index];\n for (let i = index + 1; i < n; ++i) {\n array[i - 1] = array[i];\n }\n array.length = n - 1;\n return value;\n }\n ArrayExt.removeAt = removeAt;\n /**\n * Remove the first occurrence of a value from an array.\n *\n * @param array - The array of interest.\n *\n * @param value - The value to remove from the array. Values are\n * compared using strict `===` equality.\n *\n * @param start - The index of the first element in the range to be\n * searched, inclusive. The default value is `0`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @param stop - The index of the last element in the range to be\n * searched, inclusive. The default value is `-1`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @returns The index of the removed value, or `-1` if the value\n * is not contained in the array.\n *\n * #### Notes\n * If `stop < start` the search will wrap at the end of the array.\n *\n * #### Complexity\n * Linear.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * let data = [0, 12, 23, 39, 14, 12, 75];\n * ArrayExt.removeFirstOf(data, 12); // 1\n * ArrayExt.removeFirstOf(data, 17); // -1\n * ArrayExt.removeFirstOf(data, 39, 3); // -1\n * ArrayExt.removeFirstOf(data, 39, 3, 2); // 2\n * ```\n */\n function removeFirstOf(array, value, start = 0, stop = -1) {\n let index = firstIndexOf(array, value, start, stop);\n if (index !== -1) {\n removeAt(array, index);\n }\n return index;\n }\n ArrayExt.removeFirstOf = removeFirstOf;\n /**\n * Remove the last occurrence of a value from an array.\n *\n * @param array - The array of interest.\n *\n * @param value - The value to remove from the array. Values are\n * compared using strict `===` equality.\n *\n * @param start - The index of the first element in the range to be\n * searched, inclusive. The default value is `-1`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @param stop - The index of the last element in the range to be\n * searched, inclusive. The default value is `0`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @returns The index of the removed value, or `-1` if the value\n * is not contained in the array.\n *\n * #### Notes\n * If `start < stop` the search will wrap at the end of the array.\n *\n * #### Complexity\n * Linear.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * let data = [0, 12, 23, 39, 14, 12, 75];\n * ArrayExt.removeLastOf(data, 12); // 5\n * ArrayExt.removeLastOf(data, 17); // -1\n * ArrayExt.removeLastOf(data, 39, 2); // -1\n * ArrayExt.removeLastOf(data, 39, 2, 3); // 3\n * ```\n */\n function removeLastOf(array, value, start = -1, stop = 0) {\n let index = lastIndexOf(array, value, start, stop);\n if (index !== -1) {\n removeAt(array, index);\n }\n return index;\n }\n ArrayExt.removeLastOf = removeLastOf;\n /**\n * Remove all occurrences of a value from an array.\n *\n * @param array - The array of interest.\n *\n * @param value - The value to remove from the array. Values are\n * compared using strict `===` equality.\n *\n * @param start - The index of the first element in the range to be\n * searched, inclusive. The default value is `0`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @param stop - The index of the last element in the range to be\n * searched, inclusive. The default value is `-1`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @returns The number of elements removed from the array.\n *\n * #### Notes\n * If `stop < start` the search will conceptually wrap at the end of\n * the array, however the array will be traversed front-to-back.\n *\n * #### Complexity\n * Linear.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * let data = [14, 12, 23, 39, 14, 12, 19, 14];\n * ArrayExt.removeAllOf(data, 12); // 2\n * ArrayExt.removeAllOf(data, 17); // 0\n * ArrayExt.removeAllOf(data, 14, 1, 4); // 1\n * ```\n */\n function removeAllOf(array, value, start = 0, stop = -1) {\n let n = array.length;\n if (n === 0) {\n return 0;\n }\n if (start < 0) {\n start = Math.max(0, start + n);\n }\n else {\n start = Math.min(start, n - 1);\n }\n if (stop < 0) {\n stop = Math.max(0, stop + n);\n }\n else {\n stop = Math.min(stop, n - 1);\n }\n let count = 0;\n for (let i = 0; i < n; ++i) {\n if (start <= stop && i >= start && i <= stop && array[i] === value) {\n count++;\n }\n else if (stop < start &&\n (i <= stop || i >= start) &&\n array[i] === value) {\n count++;\n }\n else if (count > 0) {\n array[i - count] = array[i];\n }\n }\n if (count > 0) {\n array.length = n - count;\n }\n return count;\n }\n ArrayExt.removeAllOf = removeAllOf;\n /**\n * Remove the first occurrence of a value which matches a predicate.\n *\n * @param array - The array of interest.\n *\n * @param fn - The predicate function to apply to the values.\n *\n * @param start - The index of the first element in the range to be\n * searched, inclusive. The default value is `0`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @param stop - The index of the last element in the range to be\n * searched, inclusive. The default value is `-1`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @returns The removed `{ index, value }`, which will be `-1` and\n * `undefined` if the value is not contained in the array.\n *\n * #### Notes\n * If `stop < start` the search will wrap at the end of the array.\n *\n * #### Complexity\n * Linear.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * function isEven(value: number): boolean {\n * return value % 2 === 0;\n * }\n *\n * let data = [0, 12, 23, 39, 14, 12, 75];\n * ArrayExt.removeFirstWhere(data, isEven); // { index: 0, value: 0 }\n * ArrayExt.removeFirstWhere(data, isEven, 2); // { index: 3, value: 14 }\n * ArrayExt.removeFirstWhere(data, isEven, 4); // { index: -1, value: undefined }\n * ```\n */\n function removeFirstWhere(array, fn, start = 0, stop = -1) {\n let value;\n let index = findFirstIndex(array, fn, start, stop);\n if (index !== -1) {\n value = removeAt(array, index);\n }\n return { index, value };\n }\n ArrayExt.removeFirstWhere = removeFirstWhere;\n /**\n * Remove the last occurrence of a value which matches a predicate.\n *\n * @param array - The array of interest.\n *\n * @param fn - The predicate function to apply to the values.\n *\n * @param start - The index of the first element in the range to be\n * searched, inclusive. The default value is `-1`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @param stop - The index of the last element in the range to be\n * searched, inclusive. The default value is `0`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @returns The removed `{ index, value }`, which will be `-1` and\n * `undefined` if the value is not contained in the array.\n *\n * #### Notes\n * If `start < stop` the search will wrap at the end of the array.\n *\n * #### Complexity\n * Linear.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * function isEven(value: number): boolean {\n * return value % 2 === 0;\n * }\n *\n * let data = [0, 12, 23, 39, 14, 12, 75];\n * ArrayExt.removeLastWhere(data, isEven); // { index: 5, value: 12 }\n * ArrayExt.removeLastWhere(data, isEven, 2); // { index: 1, value: 12 }\n * ArrayExt.removeLastWhere(data, isEven, 2, 1); // { index: -1, value: undefined }\n * ```\n */\n function removeLastWhere(array, fn, start = -1, stop = 0) {\n let value;\n let index = findLastIndex(array, fn, start, stop);\n if (index !== -1) {\n value = removeAt(array, index);\n }\n return { index, value };\n }\n ArrayExt.removeLastWhere = removeLastWhere;\n /**\n * Remove all occurrences of values which match a predicate.\n *\n * @param array - The array of interest.\n *\n * @param fn - The predicate function to apply to the values.\n *\n * @param start - The index of the first element in the range to be\n * searched, inclusive. The default value is `0`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @param stop - The index of the last element in the range to be\n * searched, inclusive. The default value is `-1`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @returns The number of elements removed from the array.\n *\n * #### Notes\n * If `stop < start` the search will conceptually wrap at the end of\n * the array, however the array will be traversed front-to-back.\n *\n * #### Complexity\n * Linear.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * function isEven(value: number): boolean {\n * return value % 2 === 0;\n * }\n *\n * function isNegative(value: number): boolean {\n * return value < 0;\n * }\n *\n * let data = [0, 12, -13, -9, 23, 39, 14, -15, 12, 75];\n * ArrayExt.removeAllWhere(data, isEven); // 4\n * ArrayExt.removeAllWhere(data, isNegative, 0, 3); // 2\n * ```\n */\n function removeAllWhere(array, fn, start = 0, stop = -1) {\n let n = array.length;\n if (n === 0) {\n return 0;\n }\n if (start < 0) {\n start = Math.max(0, start + n);\n }\n else {\n start = Math.min(start, n - 1);\n }\n if (stop < 0) {\n stop = Math.max(0, stop + n);\n }\n else {\n stop = Math.min(stop, n - 1);\n }\n let count = 0;\n for (let i = 0; i < n; ++i) {\n if (start <= stop && i >= start && i <= stop && fn(array[i], i)) {\n count++;\n }\n else if (stop < start && (i <= stop || i >= start) && fn(array[i], i)) {\n count++;\n }\n else if (count > 0) {\n array[i - count] = array[i];\n }\n }\n if (count > 0) {\n array.length = n - count;\n }\n return count;\n }\n ArrayExt.removeAllWhere = removeAllWhere;\n})(ArrayExt || (ArrayExt = {}));\n\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n/**\n * Chain together several iterables.\n *\n * @deprecated\n *\n * @param objects - The iterable objects of interest.\n *\n * @returns An iterator which yields the values of the iterables\n * in the order in which they are supplied.\n *\n * #### Example\n * ```typescript\n * import { chain } from '@lumino/algorithm';\n *\n * let data1 = [1, 2, 3];\n * let data2 = [4, 5, 6];\n *\n * let stream = chain(data1, data2);\n *\n * Array.from(stream); // [1, 2, 3, 4, 5, 6]\n * ```\n */\nfunction* chain(...objects) {\n for (const object of objects) {\n yield* object;\n }\n}\n\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n/**\n * Create an empty iterator.\n *\n * @returns A new iterator which yields nothing.\n *\n * #### Example\n * ```typescript\n * import { empty } from '@lumino/algorithm';\n *\n * let stream = empty<number>();\n *\n * Array.from(stream); // []\n * ```\n */\n// eslint-disable-next-line require-yield\nfunction* empty() {\n return;\n}\n\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n/**\n * Enumerate an iterable object.\n *\n * @param object - The iterable object of interest.\n *\n * @param start - The starting enum value. The default is `0`.\n *\n * @returns An iterator which yields the enumerated values.\n *\n * #### Example\n * ```typescript\n * import { enumerate } from '@lumino/algorithm';\n *\n * let data = ['foo', 'bar', 'baz'];\n *\n * let stream = enumerate(data, 1);\n *\n * Array.from(stream); // [[1, 'foo'], [2, 'bar'], [3, 'baz']]\n * ```\n */\nfunction* enumerate(object, start = 0) {\n for (const value of object) {\n yield [start++, value];\n }\n}\n\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n/**\n * Filter an iterable for values which pass a test.\n *\n * @param object - The iterable object of interest.\n *\n * @param fn - The predicate function to invoke for each value.\n *\n * @returns An iterator which yields the values which pass the test.\n *\n * #### Example\n * ```typescript\n * import { filter } from '@lumino/algorithm';\n *\n * let data = [1, 2, 3, 4, 5, 6];\n *\n * let stream = filter(data, value => value % 2 === 0);\n *\n * Array.from(stream); // [2, 4, 6]\n * ```\n */\nfunction* filter(object, fn) {\n let index = 0;\n for (const value of object) {\n if (fn(value, index++)) {\n yield value;\n }\n }\n}\n\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n/**\n * Find the first value in an iterable which matches a predicate.\n *\n * @param object - The iterable object to search.\n *\n * @param fn - The predicate function to apply to the values.\n *\n * @returns The first matching value, or `undefined` if no matching\n * value is found.\n *\n * #### Complexity\n * Linear.\n *\n * #### Example\n * ```typescript\n * import { find } from '@lumino/algorithm';\n *\n * interface IAnimal { species: string, name: string };\n *\n * function isCat(value: IAnimal): boolean {\n * return value.species === 'cat';\n * }\n *\n * let data: IAnimal[] = [\n * { species: 'dog', name: 'spot' },\n * { species: 'cat', name: 'fluffy' },\n * { species: 'alligator', name: 'pocho' }\n * ];\n *\n * find(data, isCat).name; // 'fluffy'\n * ```\n */\nfunction find(object, fn) {\n let index = 0;\n for (const value of object) {\n if (fn(value, index++)) {\n return value;\n }\n }\n return undefined;\n}\n/**\n * Find the index of the first value which matches a predicate.\n *\n * @param object - The iterable object to search.\n *\n * @param fn - The predicate function to apply to the values.\n *\n * @returns The index of the first matching value, or `-1` if no\n * matching value is found.\n *\n * #### Complexity\n * Linear.\n *\n * #### Example\n * ```typescript\n * import { findIndex } from '@lumino/algorithm';\n *\n * interface IAnimal { species: string, name: string };\n *\n * function isCat(value: IAnimal): boolean {\n * return value.species === 'cat';\n * }\n *\n * let data: IAnimal[] = [\n * { species: 'dog', name: 'spot' },\n * { species: 'cat', name: 'fluffy' },\n * { species: 'alligator', name: 'pocho' }\n * ];\n *\n * findIndex(data, isCat); // 1\n * ```\n */\nfunction findIndex(object, fn) {\n let index = 0;\n for (const value of object) {\n if (fn(value, index++)) {\n return index - 1;\n }\n }\n return -1;\n}\n/**\n * Find the minimum value in an iterable.\n *\n * @param object - The iterable object to search.\n *\n * @param fn - The 3-way comparison function to apply to the values.\n * It should return `< 0` if the first value is less than the second.\n * `0` if the values are equivalent, or `> 0` if the first value is\n * greater than the second.\n *\n * @returns The minimum value in the iterable. If multiple values are\n * equivalent to the minimum, the left-most value is returned. If\n * the iterable is empty, this returns `undefined`.\n *\n * #### Complexity\n * Linear.\n *\n * #### Example\n * ```typescript\n * import { min } from '@lumino/algorithm';\n *\n * function numberCmp(a: number, b: number): number {\n * return a - b;\n * }\n *\n * min([7, 4, 0, 3, 9, 4], numberCmp); // 0\n * ```\n */\nfunction min(object, fn) {\n let result = undefined;\n for (const value of object) {\n if (result === undefined) {\n result = value;\n continue;\n }\n if (fn(value, result) < 0) {\n result = value;\n }\n }\n return result;\n}\n/**\n * Find the maximum value in an iterable.\n *\n * @param object - The iterable object to search.\n *\n * @param fn - The 3-way comparison function to apply to the values.\n * It should return `< 0` if the first value is less than the second.\n * `0` if the values are equivalent, or `> 0` if the first value is\n * greater than the second.\n *\n * @returns The maximum value in the iterable. If multiple values are\n * equivalent to the maximum, the left-most value is returned. If\n * the iterable is empty, this returns `undefined`.\n *\n * #### Complexity\n * Linear.\n *\n * #### Example\n * ```typescript\n * import { max } from '@lumino/algorithm';\n *\n * function numberCmp(a: number, b: number): number {\n * return a - b;\n * }\n *\n * max([7, 4, 0, 3, 9, 4], numberCmp); // 9\n * ```\n */\nfunction max(object, fn) {\n let result = undefined;\n for (const value of object) {\n if (result === undefined) {\n result = value;\n continue;\n }\n if (fn(value, result) > 0) {\n result = value;\n }\n }\n return result;\n}\n/**\n * Find the minimum and maximum values in an iterable.\n *\n * @param object - The iterable object to search.\n *\n * @param fn - The 3-way comparison function to apply to the values.\n * It should return `< 0` if the first value is less than the second.\n * `0` if the values are equivalent, or `> 0` if the first value is\n * greater than the second.\n *\n * @returns A 2-tuple of the `[min, max]` values in the iterable. If\n * multiple values are equivalent, the left-most values are returned.\n * If the iterable is empty, this returns `undefined`.\n *\n * #### Complexity\n * Linear.\n *\n * #### Example\n * ```typescript\n * import { minmax } from '@lumino/algorithm';\n *\n * function numberCmp(a: number, b: number): number {\n * return a - b;\n * }\n *\n * minmax([7, 4, 0, 3, 9, 4], numberCmp); // [0, 9]\n * ```\n */\nfunction minmax(object, fn) {\n let empty = true;\n let vmin;\n let vmax;\n for (const value of object) {\n if (empty) {\n vmin = value;\n vmax = value;\n empty = false;\n }\n else if (fn(value, vmin) < 0) {\n vmin = value;\n }\n else if (fn(value, vmax) > 0) {\n vmax = value;\n }\n }\n return empty ? undefined : [vmin, vmax];\n}\n\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n/**\n * Create an array from an iterable of values.\n *\n * @deprecated\n *\n * @param object - The iterable object of interest.\n *\n * @returns A new array of values from the given object.\n *\n * #### Example\n * ```typescript\n * import { toArray } from '@lumino/algorithm';\n *\n * let stream = [1, 2, 3, 4, 5, 6][Symbol.iterator]();\n *\n * toArray(stream); // [1, 2, 3, 4, 5, 6];\n * ```\n */\nfunction toArray(object) {\n return Array.from(object);\n}\n/**\n * Create an object from an iterable of key/value pairs.\n *\n * @param object - The iterable object of interest.\n *\n * @returns A new object mapping keys to values.\n *\n * #### Example\n * ```typescript\n * import { toObject } from '@lumino/algorithm';\n *\n * let data: [string, number][] = [['one', 1], ['two', 2], ['three', 3]];\n *\n * toObject(data); // { one: 1, two: 2, three: 3 }\n * ```\n */\nfunction toObject(object) {\n const result = {};\n for (const [key, value] of object) {\n result[key] = value;\n }\n return result;\n}\n/**\n * Invoke a function for each value in an iterable.\n *\n * @deprecated\n *\n * @param object - The iterable object of interest.\n *\n * @param fn - The callback function to invoke for each value.\n *\n * #### Notes\n * Iteration can be terminated early by returning `false` from the\n * callback function.\n *\n * #### Complexity\n * Linear.\n *\n * #### Example\n * ```typescript\n * import { each } from '@lumino/algorithm';\n *\n * let data = [5, 7, 0, -2, 9];\n *\n * each(data, value => { console.log(value); });\n * ```\n */\nfunction each(object, fn) {\n let index = 0;\n for (const value of object) {\n if (false === fn(value, index++)) {\n return;\n }\n }\n}\n/**\n * Test whether all values in an iterable satisfy a predicate.\n *\n * @param object - The iterable object of interest.\n *\n * @param fn - The predicate function to invoke for each value.\n *\n * @returns `true` if all values pass the test, `false` otherwise.\n *\n * #### Notes\n * Iteration terminates on the first `false` predicate result.\n *\n * #### Complexity\n * Linear.\n *\n * #### Example\n * ```typescript\n * import { every } from '@lumino/algorithm';\n *\n * let data = [5, 7, 1];\n *\n * every(data, value => value % 2 === 0); // false\n * every(data, value => value % 2 === 1); // true\n * ```\n */\nfunction every(object, fn) {\n let index = 0;\n for (const value of object) {\n if (false === fn(value, index++)) {\n return false;\n }\n }\n return true;\n}\n/**\n * Test whether any value in an iterable satisfies a predicate.\n *\n * @param object - The iterable object of interest.\n *\n * @param fn - The predicate function to invoke for each value.\n *\n * @returns `true` if any value passes the test, `false` otherwise.\n *\n * #### Notes\n * Iteration terminates on the first `true` predicate result.\n *\n * #### Complexity\n * Linear.\n *\n * #### Example\n * ```typescript\n * import { some } from '@lumino/algorithm';\n *\n * let data = [5, 7, 1];\n *\n * some(data, value => value === 7); // true\n * some(data, value => value === 3); // false\n * ```\n */\nfunction some(object, fn) {\n let index = 0;\n for (const value of object) {\n if (fn(value, index++)) {\n return true;\n }\n }\n return false;\n}\n\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n/**\n * Transform the values of an iterable with a mapping function.\n *\n * @param object - The iterable object of interest.\n *\n * @param fn - The mapping function to invoke for each value.\n *\n * @returns An iterator which yields the transformed values.\n *\n * #### Example\n * ```typescript\n * import { map } from '@lumino/algorithm';\n *\n * let data = [1, 2, 3];\n *\n * let stream = map(data, value => value * 2);\n *\n * Array.from(stream); // [2, 4, 6]\n * ```\n */\nfunction* map(object, fn) {\n let index = 0;\n for (const value of object) {\n yield fn(value, index++);\n }\n}\n\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n/**\n * Create an iterator of evenly spaced values.\n *\n * @param start - The starting value for the range, inclusive.\n *\n * @param stop - The stopping value for the range, exclusive.\n *\n * @param step - The distance between each value.\n *\n * @returns An iterator which produces evenly spaced values.\n *\n * #### Notes\n * In the single argument form of `range(stop)`, `start` defaults to\n * `0` and `step` defaults to `1`.\n *\n * In the two argument form of `range(start, stop)`, `step` defaults\n * to `1`.\n *\n * #### Example\n * ```typescript\n * import { range } from '@lumino/algorithm';\n *\n * let stream = range(2, 4);\n *\n * Array.from(stream); // [2, 3]\n * ```\n */\nfunction* range(start, stop, step) {\n if (stop === undefined) {\n stop = start;\n start = 0;\n step = 1;\n }\n else if (step === undefined) {\n step = 1;\n }\n const length = Private.rangeLength(start, stop, step);\n for (let index = 0; index < length; index++) {\n yield start + step * index;\n }\n}\n/**\n * The namespace for the module implementation details.\n */\nvar Private;\n(function (Private) {\n /**\n * Compute the effective length of a range.\n *\n * @param start - The starting value for the range, inclusive.\n *\n * @param stop - The stopping value for the range, exclusive.\n *\n * @param step - The distance between each value.\n *\n * @returns The number of steps need to traverse the range.\n */\n function rangeLength(start, stop, step) {\n if (step === 0) {\n return Infinity;\n }\n if (start > stop && step > 0) {\n return 0;\n }\n if (start < stop && step < 0) {\n return 0;\n }\n return Math.ceil((stop - start) / step);\n }\n Private.rangeLength = rangeLength;\n})(Private || (Private = {}));\n\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\nfunction reduce(object, fn, initial) {\n // Setup the iterator and fetch the first value.\n const it = object[Symbol.iterator]();\n let index = 0;\n let first = it.next();\n // An empty iterator and no initial value is an error.\n if (first.done && initial === undefined) {\n throw new TypeError('Reduce of empty iterable with no initial value.');\n }\n // If the iterator is empty, return the initial value.\n if (first.done) {\n return initial;\n }\n // If the iterator has a single item and no initial value, the\n // reducer is not invoked and the first item is the return value.\n let second = it.next();\n if (second.done && initial === undefined) {\n return first.value;\n }\n // If iterator has a single item and an initial value is provided,\n // the reducer is invoked and that result is the return value.\n if (second.done) {\n return fn(initial, first.value, index++);\n }\n // Setup the initial accumlated value.\n let accumulator;\n if (initial === undefined) {\n accumulator = fn(first.value, second.value, index++);\n }\n else {\n accumulator = fn(fn(initial, first.value, index++), second.value, index++);\n }\n // Iterate the rest of the values, updating the accumulator.\n let next;\n while (!(next = it.next()).done) {\n accumulator = fn(accumulator, next.value, index++);\n }\n // Return the final accumulated value.\n return accumulator;\n}\n\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n/**\n * Create an iterator which repeats a value a number of times.\n *\n * @deprecated\n *\n * @param value - The value to repeat.\n *\n * @param count - The number of times to repeat the value.\n *\n * @returns A new iterator which repeats the specified value.\n *\n * #### Example\n * ```typescript\n * import { repeat } from '@lumino/algorithm';\n *\n * let stream = repeat(7, 3);\n *\n * Array.from(stream); // [7, 7, 7]\n * ```\n */\nfunction* repeat(value, count) {\n while (0 < count--) {\n yield value;\n }\n}\n/**\n * Create an iterator which yields a value a single time.\n *\n * @deprecated\n *\n * @param value - The value to wrap in an iterator.\n *\n * @returns A new iterator which yields the value a single time.\n *\n * #### Example\n * ```typescript\n * import { once } from '@lumino/algorithm';\n *\n * let stream = once(7);\n *\n * Array.from(stream); // [7]\n * ```\n */\nfunction* once(value) {\n yield value;\n}\n\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n/**\n * Create an iterator for a retroable object.\n *\n * @param object - The retroable or array-like object of interest.\n *\n * @returns An iterator which traverses the object's values in reverse.\n *\n * #### Example\n * ```typescript\n * import { retro } from '@lumino/algorithm';\n *\n * let data = [1, 2, 3, 4, 5, 6];\n *\n * let stream = retro(data);\n *\n * Array.from(stream); // [6, 5, 4, 3, 2, 1]\n * ```\n */\nfunction* retro(object) {\n if (typeof object.retro === 'function') {\n yield* object.retro();\n }\n else {\n for (let index = object.length - 1; index > -1; index--) {\n yield object[index];\n }\n }\n}\n\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n/**\n * Topologically sort an iterable of edges.\n *\n * @param edges - The iterable object of edges to sort.\n * An edge is represented as a 2-tuple of `[fromNode, toNode]`.\n *\n * @returns The topologically sorted array of nodes.\n *\n * #### Notes\n * If a cycle is present in the graph, the cycle will be ignored and\n * the return value will be only approximately sorted.\n *\n * #### Example\n * ```typescript\n * import { topologicSort } from '@lumino/algorithm';\n *\n * let data = [\n * ['d', 'e'],\n * ['c', 'd'],\n * ['a', 'b'],\n * ['b', 'c']\n * ];\n *\n * topologicSort(data); // ['a', 'b', 'c', 'd', 'e']\n * ```\n */\nfunction topologicSort(edges) {\n // Setup the shared sorting state.\n let sorted = [];\n let visited = new Set();\n let graph = new Map();\n // Add the edges to the graph.\n for (const edge of edges) {\n addEdge(edge);\n }\n // Visit each node in the graph.\n for (const [k] of graph) {\n visit(k);\n }\n // Return the sorted results.\n return sorted;\n // Add an edge to the graph.\n function addEdge(edge) {\n let [fromNode, toNode] = edge;\n let children = graph.get(toNode);\n if (children) {\n children.push(fromNode);\n }\n else {\n graph.set(toNode, [fromNode]);\n }\n }\n // Recursively visit the node.\n function visit(node) {\n if (visited.has(node)) {\n return;\n }\n visited.add(node);\n let children = graph.get(node);\n if (children) {\n for (const child of children) {\n visit(child);\n }\n }\n sorted.push(node);\n }\n}\n\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n/**\n * Iterate over an iterable using a stepped increment.\n *\n * @param object - The iterable object of interest.\n *\n * @param step - The distance to step on each iteration. A value\n * of less than `1` will behave the same as a value of `1`.\n *\n * @returns An iterator which traverses the iterable step-wise.\n *\n * #### Example\n * ```typescript\n * import { stride } from '@lumino/algorithm';\n *\n * let data = [1, 2, 3, 4, 5, 6];\n *\n * let stream = stride(data, 2);\n *\n * Array.from(stream); // [1, 3, 5];\n * ```\n */\nfunction* stride(object, step) {\n let count = 0;\n for (const value of object) {\n if (0 === count++ % step) {\n yield value;\n }\n }\n}\n\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n/**\n * The namespace for string-specific algorithms.\n */\nvar StringExt;\n(function (StringExt) {\n /**\n * Find the indices of characters in a source text.\n *\n * @param source - The source text which should be searched.\n *\n * @param query - The characters to locate in the source text.\n *\n * @param start - The index to start the search.\n *\n * @returns The matched indices, or `null` if there is no match.\n *\n * #### Complexity\n * Linear on `sourceText`.\n *\n * #### Notes\n * In order for there to be a match, all of the characters in `query`\n * **must** appear in `source` in the order given by `query`.\n *\n * Characters are matched using strict `===` equality.\n */\n function findIndices(source, query, start = 0) {\n let indices = new Array(query.length);\n for (let i = 0, j = start, n = query.length; i < n; ++i, ++j) {\n j = source.indexOf(query[i], j);\n if (j === -1) {\n return null;\n }\n indices[i] = j;\n }\n return indices;\n }\n StringExt.findIndices = findIndices;\n /**\n * A string matcher which uses a sum-of-squares algorithm.\n *\n * @param source - The source text which should be searched.\n *\n * @param query - The characters to locate in the source text.\n *\n * @param start - The index to start the search.\n *\n * @returns The match result, or `null` if there is no match.\n * A lower `score` represents a stronger match.\n *\n * #### Complexity\n * Linear on `sourceText`.\n *\n * #### Notes\n * This scoring algorithm uses a sum-of-squares approach to determine\n * the score. In order for there to be a match, all of the characters\n * in `query` **must** appear in `source` in order. The index of each\n * matching character is squared and added to the score. This means\n * that early and consecutive character matches are preferred, while\n * late matches are heavily penalized.\n */\n function matchSumOfSquares(source, query, start = 0) {\n let indices = findIndices(source, query, start);\n if (!indices) {\n return null;\n }\n let score = 0;\n for (let i = 0, n = indices.length; i < n; ++i) {\n let j = indices[i] - start;\n score += j * j;\n }\n return { score, indices };\n }\n StringExt.matchSumOfSquares = matchSumOfSquares;\n /**\n * A string matcher which uses a sum-of-deltas algorithm.\n *\n * @param source - The source text which should be searched.\n *\n * @param query - The characters to locate in the source text.\n *\n * @param start - The index to start the search.\n *\n * @returns The match result, or `null` if there is no match.\n * A lower `score` represents a stronger match.\n *\n * #### Complexity\n * Linear on `sourceText`.\n *\n * #### Notes\n * This scoring algorithm uses a sum-of-deltas approach to determine\n * the score. In order for there to be a match, all of the characters\n * in `query` **must** appear in `source` in order. The delta between\n * the indices are summed to create the score. This means that groups\n * of matched characters are preferred, while fragmented matches are\n * penalized.\n */\n function matchSumOfDeltas(source, query, start = 0) {\n let indices = findIndices(source, query, start);\n if (!indices) {\n return null;\n }\n let score = 0;\n let last = start - 1;\n for (let i = 0, n = indices.length; i < n; ++i) {\n let j = indices[i];\n score += j - last - 1;\n last = j;\n }\n return { score, indices };\n }\n StringExt.matchSumOfDeltas = matchSumOfDeltas;\n /**\n * Highlight the matched characters of a source text.\n *\n * @param source - The text which should be highlighted.\n *\n * @param indices - The indices of the matched characters. They must\n * appear in increasing order and must be in bounds of the source.\n *\n * @param fn - The function to apply to the matched chunks.\n *\n * @returns An array of unmatched and highlighted chunks.\n */\n function highlight(source, indices, fn) {\n // Set up the result array.\n let result = [];\n // Set up the counter variables.\n let k = 0;\n let last = 0;\n let n = indices.length;\n // Iterator over each index.\n while (k < n) {\n // Set up the chunk indices.\n let i = indices[k];\n let j = indices[k];\n // Advance the right chunk index until it's non-contiguous.\n while (++k < n && indices[k] === j + 1) {\n j++;\n }\n // Extract the unmatched text.\n if (last < i) {\n result.push(source.slice(last, i));\n }\n // Extract and highlight the matched text.\n if (i < j + 1) {\n result.push(fn(source.slice(i, j + 1)));\n }\n // Update the last visited index.\n last = j + 1;\n }\n // Extract any remaining unmatched text.\n if (last < source.length) {\n result.push(source.slice(last));\n }\n // Return the highlighted result.\n return result;\n }\n StringExt.highlight = highlight;\n /**\n * A 3-way string comparison function.\n *\n * @param a - The first string of interest.\n *\n * @param b - The second string of interest.\n *\n * @returns `-1` if `a < b`, else `1` if `a > b`, else `0`.\n */\n function cmp(a, b) {\n return a < b ? -1 : a > b ? 1 : 0;\n }\n StringExt.cmp = cmp;\n})(StringExt || (StringExt = {}));\n\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n/**\n * Take a fixed number of items from an iterable.\n *\n * @param object - The iterable object of interest.\n *\n * @param count - The number of items to take from the iterable.\n *\n * @returns An iterator which yields the specified number of items\n * from the source iterable.\n *\n * #### Notes\n * The returned iterator will exhaust early if the source iterable\n * contains an insufficient number of items.\n *\n * #### Example\n * ```typescript\n * import { take } from '@lumino/algorithm';\n *\n * let stream = take([5, 4, 3, 2, 1, 0, -1], 3);\n *\n * Array.from(stream); // [5, 4, 3]\n * ```\n */\nfunction* take(object, count) {\n if (count < 1) {\n return;\n }\n const it = object[Symbol.iterator]();\n let item;\n while (0 < count-- && !(item = it.next()).done) {\n yield item.value;\n }\n}\n\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n/**\n * Iterate several iterables in lockstep.\n *\n * @param objects - The iterable objects of interest.\n *\n * @returns An iterator which yields successive tuples of values where\n * each value is taken in turn from the provided iterables. It will\n * be as long as the shortest provided iterable.\n *\n * #### Example\n * ```typescript\n * import { zip } from '@lumino/algorithm';\n *\n * let data1 = [1, 2, 3];\n * let data2 = [4, 5, 6];\n *\n * let stream = zip(data1, data2);\n *\n * Array.from(stream); // [[1, 4], [2, 5], [3, 6]]\n * ```\n */\nfunction* zip(...objects) {\n const iters = objects.map(obj => obj[Symbol.iterator]());\n let tuple = iters.map(it => it.next());\n for (; every(tuple, item => !item.done); tuple = iters.map(it => it.next())) {\n yield tuple.map(item => item.value);\n }\n}\n\nexport { ArrayExt, StringExt, chain, each, empty, enumerate, every, filter, find, findIndex, map, max, min, minmax, once, range, reduce, repeat, retro, some, stride, take, toArray, toObject, topologicSort, zip };\n//# sourceMappingURL=index.es6.js.map\n","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@lumino/algorithm')) :\n typeof define === 'function' && define.amd ? define(['exports', '@lumino/algorithm'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.lumino_coreutils = {}, global.lumino_algorithm));\n})(this, (function (exports, algorithm) { 'use strict';\n\n // Copyright (c) Jupyter Development Team.\n // Distributed under the terms of the Modified BSD License.\n /*-----------------------------------------------------------------------------\n | Copyright (c) 2014-2017, PhosphorJS Contributors\n |\n | Distributed under the terms of the BSD 3-Clause License.\n |\n | The full license is in the file LICENSE, distributed with this software.\n |----------------------------------------------------------------------------*/\n /**\n * The namespace for JSON-specific functions.\n */\n exports.JSONExt = void 0;\n (function (JSONExt) {\n /**\n * A shared frozen empty JSONObject\n */\n JSONExt.emptyObject = Object.freeze({});\n /**\n * A shared frozen empty JSONArray\n */\n JSONExt.emptyArray = Object.freeze([]);\n /**\n * Test whether a JSON value is a primitive.\n *\n * @param value - The JSON value of interest.\n *\n * @returns `true` if the value is a primitive,`false` otherwise.\n */\n function isPrimitive(value) {\n return (value === null ||\n typeof value === 'boolean' ||\n typeof value === 'number' ||\n typeof value === 'string');\n }\n JSONExt.isPrimitive = isPrimitive;\n function isArray(value) {\n return Array.isArray(value);\n }\n JSONExt.isArray = isArray;\n function isObject(value) {\n return !isPrimitive(value) && !isArray(value);\n }\n JSONExt.isObject = isObject;\n /**\n * Compare two JSON values for deep equality.\n *\n * @param first - The first JSON value of interest.\n *\n * @param second - The second JSON value of interest.\n *\n * @returns `true` if the values are equivalent, `false` otherwise.\n */\n function deepEqual(first, second) {\n // Check referential and primitive equality first.\n if (first === second) {\n return true;\n }\n // If one is a primitive, the `===` check ruled out the other.\n if (isPrimitive(first) || isPrimitive(second)) {\n return false;\n }\n // Test whether they are arrays.\n let a1 = isArray(first);\n let a2 = isArray(second);\n // Bail if the types are different.\n if (a1 !== a2) {\n return false;\n }\n // If they are both arrays, compare them.\n if (a1 && a2) {\n return deepArrayEqual(first, second);\n }\n // At this point, they must both be objects.\n return deepObjectEqual(first, second);\n }\n JSONExt.deepEqual = deepEqual;\n /**\n * Create a deep copy of a JSON value.\n *\n * @param value - The JSON value to copy.\n *\n * @returns A deep copy of the given JSON value.\n */\n function deepCopy(value) {\n // Do nothing for primitive values.\n if (isPrimitive(value)) {\n return value;\n }\n // Deep copy an array.\n if (isArray(value)) {\n return deepArrayCopy(value);\n }\n // Deep copy an object.\n return deepObjectCopy(value);\n }\n JSONExt.deepCopy = deepCopy;\n /**\n * Compare two JSON arrays for deep equality.\n */\n function deepArrayEqual(first, second) {\n // Check referential equality first.\n if (first === second) {\n return true;\n }\n // Test the arrays for equal length.\n if (first.length !== second.length) {\n return false;\n }\n // Compare the values for equality.\n for (let i = 0, n = first.length; i < n; ++i) {\n if (!deepEqual(first[i], second[i])) {\n return false;\n }\n }\n // At this point, the arrays are equal.\n return true;\n }\n /**\n * Compare two JSON objects for deep equality.\n */\n function deepObjectEqual(first, second) {\n // Check referential equality first.\n if (first === second) {\n return true;\n }\n // Check for the first object's keys in the second object.\n for (let key in first) {\n if (first[key] !== undefined && !(key in second)) {\n return false;\n }\n }\n // Check for the second object's keys in the first object.\n for (let key in second) {\n if (second[key] !== undefined && !(key in first)) {\n return false;\n }\n }\n // Compare the values for equality.\n for (let key in first) {\n // Get the values.\n let firstValue = first[key];\n let secondValue = second[key];\n // If both are undefined, ignore the key.\n if (firstValue === undefined && secondValue === undefined) {\n continue;\n }\n // If only one value is undefined, the objects are not equal.\n if (firstValue === undefined || secondValue === undefined) {\n return false;\n }\n // Compare the values.\n if (!deepEqual(firstValue, secondValue)) {\n return false;\n }\n }\n // At this point, the objects are equal.\n return true;\n }\n /**\n * Create a deep copy of a JSON array.\n */\n function deepArrayCopy(value) {\n let result = new Array(value.length);\n for (let i = 0, n = value.length; i < n; ++i) {\n result[i] = deepCopy(value[i]);\n }\n return result;\n }\n /**\n * Create a deep copy of a JSON object.\n */\n function deepObjectCopy(value) {\n let result = {};\n for (let key in value) {\n // Ignore undefined values.\n let subvalue = value[key];\n if (subvalue === undefined) {\n continue;\n }\n result[key] = deepCopy(subvalue);\n }\n return result;\n }\n })(exports.JSONExt || (exports.JSONExt = {}));\n\n // Copyright (c) Jupyter Development Team.\n // Distributed under the terms of the Modified BSD License.\n /*-----------------------------------------------------------------------------\n | Copyright (c) 2014-2017, PhosphorJS Contributors\n |\n | Distributed under the terms of the BSD 3-Clause License.\n |\n | The full license is in the file LICENSE, distributed with this software.\n |----------------------------------------------------------------------------*/\n /**\n * An object which stores MIME data for general application use.\n *\n * #### Notes\n * This class does not attempt to enforce \"correctness\" of MIME types\n * and their associated data. Since this class is designed to transfer\n * arbitrary data and objects within the same application, it assumes\n * that the user provides correct and accurate data.\n */\n class MimeData {\n constructor() {\n this._types = [];\n this._values = [];\n }\n /**\n * Get an array of the MIME types contained within the dataset.\n *\n * @returns A new array of the MIME types, in order of insertion.\n */\n types() {\n return this._types.slice();\n }\n /**\n * Test whether the dataset has an entry for the given type.\n *\n * @param mime - The MIME type of interest.\n *\n * @returns `true` if the dataset contains a value for the given\n * MIME type, `false` otherwise.\n */\n hasData(mime) {\n return this._types.indexOf(mime) !== -1;\n }\n /**\n * Get the data value for the given MIME type.\n *\n * @param mime - The MIME type of interest.\n *\n * @returns The value for the given MIME type, or `undefined` if\n * the dataset does not contain a value for the type.\n */\n getData(mime) {\n let i = this._types.indexOf(mime);\n return i !== -1 ? this._values[i] : undefined;\n }\n /**\n * Set the data value for the given MIME type.\n *\n * @param mime - The MIME type of interest.\n *\n * @param data - The data value for the given MIME type.\n *\n * #### Notes\n * This will overwrite any previous entry for the MIME type.\n */\n setData(mime, data) {\n this.clearData(mime);\n this._types.push(mime);\n this._values.push(data);\n }\n /**\n * Remove the data entry for the given MIME type.\n *\n * @param mime - The MIME type of interest.\n *\n * #### Notes\n * This is a no-op if there is no entry for the given MIME type.\n */\n clearData(mime) {\n let i = this._types.indexOf(mime);\n if (i !== -1) {\n this._types.splice(i, 1);\n this._values.splice(i, 1);\n }\n }\n /**\n * Remove all data entries from the dataset.\n */\n clear() {\n this._types.length = 0;\n this._values.length = 0;\n }\n }\n\n // Copyright (c) Jupyter Development Team.\n // Distributed under the terms of the Modified BSD License.\n /**\n * Plugin registry.\n */\n class PluginRegistry {\n constructor(options = {}) {\n this._application = null;\n this._validatePlugin = () => true;\n this._plugins = new Map();\n this._services = new Map();\n if (options.validatePlugin) {\n console.info('Plugins may be rejected by the custom validation plugin method.');\n this._validatePlugin = options.validatePlugin;\n }\n }\n /**\n * The application object.\n *\n * It will be provided as first argument to the\n * plugins activation and deactivation functions.\n *\n * It can only be set once.\n *\n * By default, it is `null`.\n */\n get application() {\n return this._application;\n }\n set application(v) {\n if (this._application !== null) {\n throw Error('PluginRegistry.application is already set. It cannot be overridden.');\n }\n this._application = v;\n }\n /**\n * The list of all the deferred plugins.\n */\n get deferredPlugins() {\n return Array.from(this._plugins)\n .filter(([id, plugin]) => plugin.autoStart === 'defer')\n .map(([id, plugin]) => id);\n }\n /**\n * Get a plugin description.\n *\n * @param id - The ID of the plugin of interest.\n *\n * @returns The plugin description.\n */\n getPluginDescription(id) {\n var _a, _b;\n return (_b = (_a = this._plugins.get(id)) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : '';\n }\n /**\n * Test whether a plugin is registered with the application.\n *\n * @param id - The ID of the plugin of interest.\n *\n * @returns `true` if the plugin is registered, `false` otherwise.\n */\n hasPlugin(id) {\n return this._plugins.has(id);\n }\n /**\n * Test whether a plugin is activated with the application.\n *\n * @param id - The ID of the plugin of interest.\n *\n * @returns `true` if the plugin is activated, `false` otherwise.\n */\n isPluginActivated(id) {\n var _a, _b;\n return (_b = (_a = this._plugins.get(id)) === null || _a === void 0 ? void 0 : _a.activated) !== null && _b !== void 0 ? _b : false;\n }\n /**\n * List the IDs of the plugins registered with the application.\n *\n * @returns A new array of the registered plugin IDs.\n */\n listPlugins() {\n return Array.from(this._plugins.keys());\n }\n /**\n * Register a plugin with the application.\n *\n * @param plugin - The plugin to register.\n *\n * #### Notes\n * An error will be thrown if a plugin with the same ID is already\n * registered, or if the plugin has a circular dependency.\n *\n * If the plugin provides a service which has already been provided\n * by another plugin, the new service will override the old service.\n */\n registerPlugin(plugin) {\n // Throw an error if the plugin ID is already registered.\n if (this._plugins.has(plugin.id)) {\n throw new TypeError(`Plugin '${plugin.id}' is already registered.`);\n }\n if (!this._validatePlugin(plugin)) {\n throw new Error(`Plugin '${plugin.id}' is not valid.`);\n }\n // Create the normalized plugin data.\n const data = Private.createPluginData(plugin);\n // Ensure the plugin does not cause a cyclic dependency.\n Private.ensureNoCycle(data, this._plugins, this._services);\n // Add the service token to the service map.\n if (data.provides) {\n this._services.set(data.provides, data.id);\n }\n // Add the plugin to the plugin map.\n this._plugins.set(data.id, data);\n }\n /**\n * Register multiple plugins with the application.\n *\n * @param plugins - The plugins to register.\n *\n * #### Notes\n * This calls `registerPlugin()` for each of the given plugins.\n */\n registerPlugins(plugins) {\n for (const plugin of plugins) {\n this.registerPlugin(plugin);\n }\n }\n /**\n * Deregister a plugin with the application.\n *\n * @param id - The ID of the plugin of interest.\n *\n * @param force - Whether to deregister the plugin even if it is active.\n */\n deregisterPlugin(id, force) {\n const plugin = this._plugins.get(id);\n if (!plugin) {\n return;\n }\n if (plugin.activated && !force) {\n throw new Error(`Plugin '${id}' is still active.`);\n }\n this._plugins.delete(id);\n }\n /**\n * Activate the plugin with the given ID.\n *\n * @param id - The ID of the plugin of interest.\n *\n * @returns A promise which resolves when the plugin is activated\n * or rejects with an error if it cannot be activated.\n */\n async activatePlugin(id) {\n // Reject the promise if the plugin is not registered.\n const plugin = this._plugins.get(id);\n if (!plugin) {\n throw new ReferenceError(`Plugin '${id}' is not registered.`);\n }\n // Resolve immediately if the plugin is already activated.\n if (plugin.activated) {\n return;\n }\n // Return the pending resolver promise if it exists.\n if (plugin.promise) {\n return plugin.promise;\n }\n // Resolve the required services for the plugin.\n const required = plugin.requires.map(t => this.resolveRequiredService(t));\n // Resolve the optional services for the plugin.\n const optional = plugin.optional.map(t => this.resolveOptionalService(t));\n // Setup the resolver promise for the plugin.\n plugin.promise = Promise.all([...required, ...optional])\n .then(services => plugin.activate.apply(undefined, [this.application, ...services]))\n .then(service => {\n plugin.service = service;\n plugin.activated = true;\n plugin.promise = null;\n })\n .catch(error => {\n plugin.promise = null;\n throw error;\n });\n // Return the pending resolver promise.\n return plugin.promise;\n }\n /**\n * Activate all the deferred plugins.\n *\n * @returns A promise which will resolve when each plugin is activated\n * or rejects with an error if one cannot be activated.\n */\n async activatePlugins(kind, options = {}) {\n switch (kind) {\n case 'defer': {\n const promises = this.deferredPlugins\n .filter(pluginId => this._plugins.get(pluginId).autoStart)\n .map(pluginId => {\n return this.activatePlugin(pluginId);\n });\n await Promise.all(promises);\n break;\n }\n case 'startUp': {\n // Collect the ids of the startup plugins.\n const startups = Private.collectStartupPlugins(this._plugins, options);\n // Generate the activation promises.\n const promises = startups.map(async (id) => {\n try {\n return await this.activatePlugin(id);\n }\n catch (error) {\n console.error(`Plugin '${id}' failed to activate.`, error);\n }\n });\n await Promise.all(promises);\n break;\n }\n }\n }\n /**\n * Deactivate the plugin and its downstream dependents if and only if the\n * plugin and its dependents all support `deactivate`.\n *\n * @param id - The ID of the plugin of interest.\n *\n * @returns A list of IDs of downstream plugins deactivated with this one.\n */\n async deactivatePlugin(id) {\n // Reject the promise if the plugin is not registered.\n const plugin = this._plugins.get(id);\n if (!plugin) {\n throw new ReferenceError(`Plugin '${id}' is not registered.`);\n }\n // Bail early if the plugin is not activated.\n if (!plugin.activated) {\n return [];\n }\n // Check that this plugin can deactivate.\n if (!plugin.deactivate) {\n throw new TypeError(`Plugin '${id}'#deactivate() method missing`);\n }\n // Find the optimal deactivation order for plugins downstream of this one.\n const manifest = Private.findDependents(id, this._plugins, this._services);\n const downstream = manifest.map(id => this._plugins.get(id));\n // Check that all downstream plugins can deactivate.\n for (const plugin of downstream) {\n if (!plugin.deactivate) {\n throw new TypeError(`Plugin ${plugin.id}#deactivate() method missing (depends on ${id})`);\n }\n }\n // Deactivate all downstream plugins.\n for (const plugin of downstream) {\n const services = [...plugin.requires, ...plugin.optional].map(service => {\n const id = this._services.get(service);\n return id ? this._plugins.get(id).service : null;\n });\n // Await deactivation so the next plugins only receive active services.\n await plugin.deactivate(this.application, ...services);\n plugin.service = null;\n plugin.activated = false;\n }\n // Remove plugin ID and return manifest of deactivated plugins.\n manifest.pop();\n return manifest;\n }\n /**\n * Resolve a required service of a given type.\n *\n * @param token - The token for the service type of interest.\n *\n * @returns A promise which resolves to an instance of the requested\n * service, or rejects with an error if it cannot be resolved.\n *\n * #### Notes\n * Services are singletons. The same instance will be returned each\n * time a given service token is resolved.\n *\n * If the plugin which provides the service has not been activated,\n * resolving the service will automatically activate the plugin.\n *\n * User code will not typically call this method directly. Instead,\n * the required services for the user's plugins will be resolved\n * automatically when the plugin is activated.\n */\n async resolveRequiredService(token) {\n // Reject the promise if there is no provider for the type.\n const id = this._services.get(token);\n if (!id) {\n throw new TypeError(`No provider for: ${token.name}.`);\n }\n // Activate the plugin if necessary.\n const plugin = this._plugins.get(id);\n if (!plugin.activated) {\n await this.activatePlugin(id);\n }\n return plugin.service;\n }\n /**\n * Resolve an optional service of a given type.\n *\n * @param token - The token for the service type of interest.\n *\n * @returns A promise which resolves to an instance of the requested\n * service, or `null` if it cannot be resolved.\n *\n * #### Notes\n * Services are singletons. The same instance will be returned each\n * time a given service token is resolved.\n *\n * If the plugin which provides the service has not been activated,\n * resolving the service will automatically activate the plugin.\n *\n * User code will not typically call this method directly. Instead,\n * the optional services for the user's plugins will be resolved\n * automatically when the plugin is activated.\n */\n async resolveOptionalService(token) {\n // Resolve with `null` if there is no provider for the type.\n const id = this._services.get(token);\n if (!id) {\n return null;\n }\n // Activate the plugin if necessary.\n const plugin = this._plugins.get(id);\n if (!plugin.activated) {\n try {\n await this.activatePlugin(id);\n }\n catch (reason) {\n console.error(reason);\n return null;\n }\n }\n return plugin.service;\n }\n }\n /**\n * The namespace for the module implementation details.\n */\n var Private;\n (function (Private) {\n class PluginData {\n constructor(plugin) {\n var _a, _b, _c, _d;\n this._activated = false;\n this._promise = null;\n this._service = null;\n this.id = plugin.id;\n this.description = (_a = plugin.description) !== null && _a !== void 0 ? _a : '';\n this.activate = plugin.activate;\n this.deactivate = (_b = plugin.deactivate) !== null && _b !== void 0 ? _b : null;\n this.provides = (_c = plugin.provides) !== null && _c !== void 0 ? _c : null;\n this.autoStart = (_d = plugin.autoStart) !== null && _d !== void 0 ? _d : false;\n this.requires = plugin.requires ? plugin.requires.slice() : [];\n this.optional = plugin.optional ? plugin.optional.slice() : [];\n }\n /**\n * Whether the plugin has been activated.\n */\n get activated() {\n return this._activated;\n }\n set activated(a) {\n this._activated = a;\n }\n /**\n * The resolved service for the plugin, or `null`.\n */\n get service() {\n return this._service;\n }\n set service(s) {\n this._service = s;\n }\n /**\n * The pending resolver promise, or `null`.\n */\n get promise() {\n return this._promise;\n }\n set promise(p) {\n this._promise = p;\n }\n }\n /**\n * Create a normalized plugin data object for the given plugin.\n */\n function createPluginData(plugin) {\n return new PluginData(plugin);\n }\n Private.createPluginData = createPluginData;\n /**\n * Ensure no cycle is present in the plugin resolution graph.\n *\n * If a cycle is detected, an error will be thrown.\n */\n function ensureNoCycle(plugin, plugins, services) {\n const dependencies = [...plugin.requires, ...plugin.optional];\n const visit = (token) => {\n if (token === plugin.provides) {\n return true;\n }\n const id = services.get(token);\n if (!id) {\n return false;\n }\n const visited = plugins.get(id);\n const dependencies = [...visited.requires, ...visited.optional];\n if (dependencies.length === 0) {\n return false;\n }\n trace.push(id);\n if (dependencies.some(visit)) {\n return true;\n }\n trace.pop();\n return false;\n };\n // Bail early if there cannot be a cycle.\n if (!plugin.provides || dependencies.length === 0) {\n return;\n }\n // Setup a stack to trace service resolution.\n const trace = [plugin.id];\n // Throw an exception if a cycle is present.\n if (dependencies.some(visit)) {\n throw new ReferenceError(`Cycle detected: ${trace.join(' -> ')}.`);\n }\n }\n Private.ensureNoCycle = ensureNoCycle;\n /**\n * Find dependents in deactivation order.\n *\n * @param id - The ID of the plugin of interest.\n *\n * @param plugins - The map containing all plugins.\n *\n * @param services - The map containing all services.\n *\n * @returns A list of dependent plugin IDs in order of deactivation\n *\n * #### Notes\n * The final item of the returned list is always the plugin of interest.\n */\n function findDependents(id, plugins, services) {\n const edges = new Array();\n const add = (id) => {\n const plugin = plugins.get(id);\n // FIXME In the case of missing optional dependencies, we may consider\n // deactivating and reactivating the plugin without the missing service.\n const dependencies = [...plugin.requires, ...plugin.optional];\n edges.push(...dependencies.reduce((acc, dep) => {\n const service = services.get(dep);\n if (service) {\n // An edge is oriented from dependent to provider.\n acc.push([id, service]);\n }\n return acc;\n }, []));\n };\n for (const id of plugins.keys()) {\n add(id);\n }\n // Filter edges\n // - Get all packages that dependent on the package to be deactivated\n const newEdges = edges.filter(edge => edge[1] === id);\n let oldSize = 0;\n while (newEdges.length > oldSize) {\n const previousSize = newEdges.length;\n // Get all packages that dependent on packages that will be deactivated\n const packagesOfInterest = new Set(newEdges.map(edge => edge[0]));\n for (const poi of packagesOfInterest) {\n edges\n .filter(edge => edge[1] === poi)\n .forEach(edge => {\n // We check it is not already included to deal with circular dependencies\n if (!newEdges.includes(edge)) {\n newEdges.push(edge);\n }\n });\n }\n oldSize = previousSize;\n }\n const sorted = algorithm.topologicSort(newEdges);\n const index = sorted.findIndex(candidate => candidate === id);\n if (index === -1) {\n return [id];\n }\n return sorted.slice(0, index + 1);\n }\n Private.findDependents = findDependents;\n /**\n * Collect the IDs of the plugins to activate on startup.\n */\n function collectStartupPlugins(plugins, options) {\n // Create a set to hold the plugin IDs.\n const collection = new Set();\n // Collect the auto-start (non deferred) plugins.\n for (const id of plugins.keys()) {\n if (plugins.get(id).autoStart === true) {\n collection.add(id);\n }\n }\n // Add the startup plugins.\n if (options.startPlugins) {\n for (const id of options.startPlugins) {\n collection.add(id);\n }\n }\n // Remove the ignored plugins.\n if (options.ignorePlugins) {\n for (const id of options.ignorePlugins) {\n collection.delete(id);\n }\n }\n // Return the collected startup plugins.\n return Array.from(collection);\n }\n Private.collectStartupPlugins = collectStartupPlugins;\n })(Private || (Private = {}));\n\n // Copyright (c) Jupyter Development Team.\n // Distributed under the terms of the Modified BSD License.\n /*-----------------------------------------------------------------------------\n | Copyright (c) 2014-2017, PhosphorJS Contributors\n |\n | Distributed under the terms of the BSD 3-Clause License.\n |\n | The full license is in the file LICENSE, distributed with this software.\n |----------------------------------------------------------------------------*/\n /**\n * A class which wraps a promise into a delegate object.\n *\n * #### Notes\n * This class is useful when the logic to resolve or reject a promise\n * cannot be defined at the point where the promise is created.\n */\n class PromiseDelegate {\n /**\n * Construct a new promise delegate.\n */\n constructor() {\n this.promise = new Promise((resolve, reject) => {\n this._resolve = resolve;\n this._reject = reject;\n });\n }\n /**\n * Resolve the wrapped promise with the given value.\n *\n * @param value - The value to use for resolving the promise.\n */\n resolve(value) {\n let resolve = this._resolve;\n resolve(value);\n }\n /**\n * Reject the wrapped promise with the given value.\n *\n * @reason - The reason for rejecting the promise.\n */\n reject(reason) {\n let reject = this._reject;\n reject(reason);\n }\n }\n\n // Copyright (c) Jupyter Development Team.\n // Distributed under the terms of the Modified BSD License.\n /*-----------------------------------------------------------------------------\n | Copyright (c) 2014-2017, PhosphorJS Contributors\n |\n | Distributed under the terms of the BSD 3-Clause License.\n |\n | The full license is in the file LICENSE, distributed with this software.\n |----------------------------------------------------------------------------*/\n /**\n * A runtime object which captures compile-time type information.\n *\n * #### Notes\n * A token captures the compile-time type of an interface or class in\n * an object which can be used at runtime in a type-safe fashion.\n */\n class Token {\n /**\n * Construct a new token.\n *\n * @param name - A human readable name for the token.\n * @param description - Token purpose description for documentation.\n */\n constructor(name, description) {\n this.name = name;\n this.description = description !== null && description !== void 0 ? description : '';\n this._tokenStructuralPropertyT = null;\n }\n }\n\n // Copyright (c) Jupyter Development Team.\n // Distributed under the terms of the Modified BSD License.\n /*-----------------------------------------------------------------------------\n | Copyright (c) 2014-2017, PhosphorJS Contributors\n |\n | Distributed under the terms of the BSD 3-Clause License.\n |\n | The full license is in the file LICENSE, distributed with this software.\n |----------------------------------------------------------------------------*/\n // Fallback\n function fallbackRandomValues(buffer) {\n let value = 0;\n for (let i = 0, n = buffer.length; i < n; ++i) {\n if (i % 4 === 0) {\n value = (Math.random() * 0xffffffff) >>> 0;\n }\n buffer[i] = value & 0xff;\n value >>>= 8;\n }\n }\n\n // Copyright (c) Jupyter Development Team.\n // Distributed under the terms of the Modified BSD License.\n /*-----------------------------------------------------------------------------\n | Copyright (c) 2014-2017, PhosphorJS Contributors\n |\n | Distributed under the terms of the BSD 3-Clause License.\n |\n | The full license is in the file LICENSE, distributed with this software.\n |----------------------------------------------------------------------------*/\n /**\n * The namespace for random number related functionality.\n */\n exports.Random = void 0;\n (function (Random) {\n /**\n * A function which generates random bytes.\n *\n * @param buffer - The `Uint8Array` to fill with random bytes.\n *\n * #### Notes\n * A cryptographically strong random number generator will be used if\n * available. Otherwise, `Math.random` will be used as a fallback for\n * randomness.\n *\n * The following RNGs are supported, listed in order of precedence:\n * - `window.crypto.getRandomValues`\n * - `window.msCrypto.getRandomValues`\n * - `require('crypto').randomFillSync\n * - `require('crypto').randomBytes\n * - `Math.random`\n */\n Random.getRandomValues = (() => {\n // Look up the crypto module if available.\n const crypto = (typeof window !== 'undefined' && (window.crypto || window.msCrypto)) ||\n null;\n // Modern browsers and IE 11\n if (crypto && typeof crypto.getRandomValues === 'function') {\n return function getRandomValues(buffer) {\n return crypto.getRandomValues(buffer);\n };\n }\n // Fallback\n return fallbackRandomValues;\n })();\n })(exports.Random || (exports.Random = {}));\n\n // Copyright (c) Jupyter Development Team.\n // Distributed under the terms of the Modified BSD License.\n /*-----------------------------------------------------------------------------\n | Copyright (c) 2014-2017, PhosphorJS Contributors\n |\n | Distributed under the terms of the BSD 3-Clause License.\n |\n | The full license is in the file LICENSE, distributed with this software.\n |----------------------------------------------------------------------------*/\n /**\n * A function which creates a function that generates UUID v4 identifiers.\n *\n * @returns A new function that creates a UUID v4 string.\n *\n * #### Notes\n * This implementation complies with RFC 4122.\n *\n * This uses `Random.getRandomValues()` for random bytes, which in\n * turn will use the underlying `crypto` module of the platform if\n * it is available. The fallback for randomness is `Math.random`.\n */\n function uuid4Factory(getRandomValues) {\n // Create a 16 byte array to hold the random values.\n const bytes = new Uint8Array(16);\n // Create a look up table from bytes to hex strings.\n const lut = new Array(256);\n // Pad the single character hex digits with a leading zero.\n for (let i = 0; i < 16; ++i) {\n lut[i] = '0' + i.toString(16);\n }\n // Populate the rest of the hex digits.\n for (let i = 16; i < 256; ++i) {\n lut[i] = i.toString(16);\n }\n // Return a function which generates the UUID.\n return function uuid4() {\n // Get a new batch of random values.\n getRandomValues(bytes);\n // Set the UUID version number to 4.\n bytes[6] = 0x40 | (bytes[6] & 0x0f);\n // Set the clock sequence bit to the RFC spec.\n bytes[8] = 0x80 | (bytes[8] & 0x3f);\n // Assemble the UUID string.\n return (lut[bytes[0]] +\n lut[bytes[1]] +\n lut[bytes[2]] +\n lut[bytes[3]] +\n '-' +\n lut[bytes[4]] +\n lut[bytes[5]] +\n '-' +\n lut[bytes[6]] +\n lut[bytes[7]] +\n '-' +\n lut[bytes[8]] +\n lut[bytes[9]] +\n '-' +\n lut[bytes[10]] +\n lut[bytes[11]] +\n lut[bytes[12]] +\n lut[bytes[13]] +\n lut[bytes[14]] +\n lut[bytes[15]]);\n };\n }\n\n // Copyright (c) Jupyter Development Team.\n // Distributed under the terms of the Modified BSD License.\n /*-----------------------------------------------------------------------------\n | Copyright (c) 2014-2017, PhosphorJS Contributors\n |\n | Distributed under the terms of the BSD 3-Clause License.\n |\n | The full license is in the file LICENSE, distributed with this software.\n |----------------------------------------------------------------------------*/\n /**\n * The namespace for UUID related functionality.\n */\n exports.UUID = void 0;\n (function (UUID) {\n /**\n * A function which generates UUID v4 identifiers.\n *\n * @returns A new UUID v4 string.\n *\n * #### Notes\n * This implementation complies with RFC 4122.\n *\n * This uses `Random.getRandomValues()` for random bytes, which in\n * turn will use the underlying `crypto` module of the platform if\n * it is available. The fallback for randomness is `Math.random`.\n */\n UUID.uuid4 = uuid4Factory(exports.Random.getRandomValues);\n })(exports.UUID || (exports.UUID = {}));\n\n exports.MimeData = MimeData;\n exports.PluginRegistry = PluginRegistry;\n exports.PromiseDelegate = PromiseDelegate;\n exports.Token = Token;\n\n}));\n//# sourceMappingURL=index.js.map\n","import { find, ArrayExt } from '@lumino/algorithm';\nimport { PromiseDelegate } from '@lumino/coreutils';\n\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n/**\n * @packageDocumentation\n * @module signaling\n */\n/**\n * A concrete implementation of `ISignal`.\n *\n * #### Example\n * ```typescript\n * import { ISignal, Signal } from '@lumino/signaling';\n *\n * class SomeClass {\n *\n * constructor(name: string) {\n * this.name = name;\n * }\n *\n * readonly name: string;\n *\n * get valueChanged: ISignal<this, number> {\n * return this._valueChanged;\n * }\n *\n * get value(): number {\n * return this._value;\n * }\n *\n * set value(value: number) {\n * if (value === this._value) {\n * return;\n * }\n * this._value = value;\n * this._valueChanged.emit(value);\n * }\n *\n * private _value = 0;\n * private _valueChanged = new Signal<this, number>(this);\n * }\n *\n * function logger(sender: SomeClass, value: number): void {\n * console.log(sender.name, value);\n * }\n *\n * let m1 = new SomeClass('foo');\n * let m2 = new SomeClass('bar');\n *\n * m1.valueChanged.connect(logger);\n * m2.valueChanged.connect(logger);\n *\n * m1.value = 42; // logs: foo 42\n * m2.value = 17; // logs: bar 17\n * ```\n */\nclass Signal {\n /**\n * Construct a new signal.\n *\n * @param sender - The sender which owns the signal.\n */\n constructor(sender) {\n this.sender = sender;\n }\n /**\n * Connect a slot to the signal.\n *\n * @param slot - The slot to invoke when the signal is emitted.\n *\n * @param thisArg - The `this` context for the slot. If provided,\n * this must be a non-primitive object.\n *\n * @returns `true` if the connection succeeds, `false` otherwise.\n */\n connect(slot, thisArg) {\n return Private.connect(this, slot, thisArg);\n }\n /**\n * Disconnect a slot from the signal.\n *\n * @param slot - The slot to disconnect from the signal.\n *\n * @param thisArg - The `this` context for the slot. If provided,\n * this must be a non-primitive object.\n *\n * @returns `true` if the connection is removed, `false` otherwise.\n */\n disconnect(slot, thisArg) {\n return Private.disconnect(this, slot, thisArg);\n }\n /**\n * Emit the signal and invoke the connected slots.\n *\n * @param args - The args to pass to the connected slots.\n *\n * #### Notes\n * Slots are invoked synchronously in connection order.\n *\n * Exceptions thrown by connected slots will be caught and logged.\n */\n emit(args) {\n Private.emit(this, args);\n }\n}\n/**\n * The namespace for the `Signal` class statics.\n */\n(function (Signal) {\n /**\n * Remove all connections between a sender and receiver.\n *\n * @param sender - The sender object of interest.\n *\n * @param receiver - The receiver object of interest.\n *\n * #### Notes\n * If a `thisArg` is provided when connecting a signal, that object\n * is considered the receiver. Otherwise, the `slot` is considered\n * the receiver.\n */\n function disconnectBetween(sender, receiver) {\n Private.disconnectBetween(sender, receiver);\n }\n Signal.disconnectBetween = disconnectBetween;\n /**\n * Remove all connections where the given object is the sender.\n *\n * @param sender - The sender object of interest.\n */\n function disconnectSender(sender) {\n Private.disconnectSender(sender);\n }\n Signal.disconnectSender = disconnectSender;\n /**\n * Remove all connections where the given object is the receiver.\n *\n * @param receiver - The receiver object of interest.\n *\n * #### Notes\n * If a `thisArg` is provided when connecting a signal, that object\n * is considered the receiver. Otherwise, the `slot` is considered\n * the receiver.\n */\n function disconnectReceiver(receiver) {\n Private.disconnectReceiver(receiver);\n }\n Signal.disconnectReceiver = disconnectReceiver;\n /**\n * Remove all connections where an object is the sender or receiver.\n *\n * @param object - The object of interest.\n *\n * #### Notes\n * If a `thisArg` is provided when connecting a signal, that object\n * is considered the receiver. Otherwise, the `slot` is considered\n * the receiver.\n */\n function disconnectAll(object) {\n Private.disconnectAll(object);\n }\n Signal.disconnectAll = disconnectAll;\n /**\n * Clear all signal data associated with the given object.\n *\n * @param object - The object for which the data should be cleared.\n *\n * #### Notes\n * This removes all signal connections and any other signal data\n * associated with the object.\n */\n function clearData(object) {\n Private.disconnectAll(object);\n }\n Signal.clearData = clearData;\n /**\n * Get the signal exception handler.\n *\n * @returns The current exception handler.\n *\n * #### Notes\n * The default exception handler is `console.error`.\n */\n function getExceptionHandler() {\n return Private.exceptionHandler;\n }\n Signal.getExceptionHandler = getExceptionHandler;\n /**\n * Set the signal exception handler.\n *\n * @param handler - The function to use as the exception handler.\n *\n * @returns The old exception handler.\n *\n * #### Notes\n * The exception handler is invoked when a slot throws an exception.\n */\n function setExceptionHandler(handler) {\n let old = Private.exceptionHandler;\n Private.exceptionHandler = handler;\n return old;\n }\n Signal.setExceptionHandler = setExceptionHandler;\n})(Signal || (Signal = {}));\n/**\n * A concrete implementation of `IStream`.\n *\n * #### Example\n * ```typescript\n * import { IStream, Stream } from '@lumino/signaling';\n *\n * class SomeClass {\n *\n * constructor(name: string) {\n * this.name = name;\n * }\n *\n * readonly name: string;\n *\n * get pings(): IStream<this, string> {\n * return this._pings;\n * }\n *\n * ping(value: string) {\n * this._pings.emit(value);\n * }\n *\n * private _pings = new Stream<this, string>(this);\n * }\n *\n * let m1 = new SomeClass('foo');\n *\n * m1.pings.connect((_, value: string) => {\n * console.log('connect', value);\n * });\n *\n * void (async () => {\n * for await (const ping of m1.pings) {\n * console.log('iterator', ping);\n * }\n * })();\n *\n * m1.ping('alpha'); // logs: connect alpha\n * // logs: iterator alpha\n * m1.ping('beta'); // logs: connect beta\n * // logs: iterator beta\n * ```\n */\nclass Stream extends Signal {\n constructor() {\n super(...arguments);\n this._pending = new PromiseDelegate();\n }\n /**\n * Return an async iterator that yields every emission.\n */\n async *[Symbol.asyncIterator]() {\n let pending = this._pending;\n while (true) {\n try {\n const { args, next } = await pending.promise;\n pending = next;\n yield args;\n }\n catch (_) {\n return; // Any promise rejection stops the iterator.\n }\n }\n }\n /**\n * Emit the signal, invoke the connected slots, and yield the emission.\n *\n * @param args - The args to pass to the connected slots.\n */\n emit(args) {\n const pending = this._pending;\n const next = (this._pending = new PromiseDelegate());\n pending.resolve({ args, next });\n super.emit(args);\n }\n /**\n * Stop the stream's async iteration.\n */\n stop() {\n this._pending.promise.catch(() => undefined);\n this._pending.reject('stop');\n this._pending = new PromiseDelegate();\n }\n}\n/**\n * The namespace for the module implementation details.\n */\nvar Private;\n(function (Private) {\n /**\n * The signal exception handler function.\n */\n Private.exceptionHandler = (err) => {\n console.error(err);\n };\n /**\n * Connect a slot to a signal.\n *\n * @param signal - The signal of interest.\n *\n * @param slot - The slot to invoke when the signal is emitted.\n *\n * @param thisArg - The `this` context for the slot. If provided,\n * this must be a non-primitive object.\n *\n * @returns `true` if the connection succeeds, `false` otherwise.\n */\n function connect(signal, slot, thisArg) {\n // Coerce a `null` `thisArg` to `undefined`.\n thisArg = thisArg || undefined;\n // Ensure the sender's array of receivers is created.\n let receivers = receiversForSender.get(signal.sender);\n if (!receivers) {\n receivers = [];\n receiversForSender.set(signal.sender, receivers);\n }\n // Bail if a matching connection already exists.\n if (findConnection(receivers, signal, slot, thisArg)) {\n return false;\n }\n // Choose the best object for the receiver.\n let receiver = thisArg || slot;\n // Ensure the receiver's array of senders is created.\n let senders = sendersForReceiver.get(receiver);\n if (!senders) {\n senders = [];\n sendersForReceiver.set(receiver, senders);\n }\n // Create a new connection and add it to the end of each array.\n let connection = { signal, slot, thisArg };\n receivers.push(connection);\n senders.push(connection);\n // Indicate a successful connection.\n return true;\n }\n Private.connect = connect;\n /**\n * Disconnect a slot from a signal.\n *\n * @param signal - The signal of interest.\n *\n * @param slot - The slot to disconnect from the signal.\n *\n * @param thisArg - The `this` context for the slot. If provided,\n * this must be a non-primitive object.\n *\n * @returns `true` if the connection is removed, `false` otherwise.\n */\n function disconnect(signal, slot, thisArg) {\n // Coerce a `null` `thisArg` to `undefined`.\n thisArg = thisArg || undefined;\n // Lookup the list of receivers, and bail if none exist.\n let receivers = receiversForSender.get(signal.sender);\n if (!receivers || receivers.length === 0) {\n return false;\n }\n // Bail if no matching connection exits.\n let connection = findConnection(receivers, signal, slot, thisArg);\n if (!connection) {\n return false;\n }\n // Choose the best object for the receiver.\n let receiver = thisArg || slot;\n // Lookup the array of senders, which is now known to exist.\n let senders = sendersForReceiver.get(receiver);\n // Clear the connection and schedule cleanup of the arrays.\n connection.signal = null;\n scheduleCleanup(receivers);\n scheduleCleanup(senders);\n // Indicate a successful disconnection.\n return true;\n }\n Private.disconnect = disconnect;\n /**\n * Remove all connections between a sender and receiver.\n *\n * @param sender - The sender object of interest.\n *\n * @param receiver - The receiver object of interest.\n */\n function disconnectBetween(sender, receiver) {\n // If there are no receivers, there is nothing to do.\n let receivers = receiversForSender.get(sender);\n if (!receivers || receivers.length === 0) {\n return;\n }\n // If there are no senders, there is nothing to do.\n let senders = sendersForReceiver.get(receiver);\n if (!senders || senders.length === 0) {\n return;\n }\n // Clear each connection between the sender and receiver.\n for (const connection of senders) {\n // Skip connections which have already been cleared.\n if (!connection.signal) {\n continue;\n }\n // Clear the connection if it matches the sender.\n if (connection.signal.sender === sender) {\n connection.signal = null;\n }\n }\n // Schedule a cleanup of the senders and receivers.\n scheduleCleanup(receivers);\n scheduleCleanup(senders);\n }\n Private.disconnectBetween = disconnectBetween;\n /**\n * Remove all connections where the given object is the sender.\n *\n * @param sender - The sender object of interest.\n */\n function disconnectSender(sender) {\n // If there are no receivers, there is nothing to do.\n let receivers = receiversForSender.get(sender);\n if (!receivers || receivers.length === 0) {\n return;\n }\n // Clear each receiver connection.\n for (const connection of receivers) {\n // Skip connections which have already been cleared.\n if (!connection.signal) {\n continue;\n }\n // Choose the best object for the receiver.\n let receiver = connection.thisArg || connection.slot;\n // Clear the connection.\n connection.signal = null;\n // Cleanup the array of senders, which is now known to exist.\n scheduleCleanup(sendersForReceiver.get(receiver));\n }\n // Schedule a cleanup of the receivers.\n scheduleCleanup(receivers);\n }\n Private.disconnectSender = disconnectSender;\n /**\n * Remove all connections where the given object is the receiver.\n *\n * @param receiver - The receiver object of interest.\n */\n function disconnectReceiver(receiver) {\n // If there are no senders, there is nothing to do.\n let senders = sendersForReceiver.get(receiver);\n if (!senders || senders.length === 0) {\n return;\n }\n // Clear each sender connection.\n for (const connection of senders) {\n // Skip connections which have already been cleared.\n if (!connection.signal) {\n continue;\n }\n // Lookup the sender for the connection.\n let sender = connection.signal.sender;\n // Clear the connection.\n connection.signal = null;\n // Cleanup the array of receivers, which is now known to exist.\n scheduleCleanup(receiversForSender.get(sender));\n }\n // Schedule a cleanup of the list of senders.\n scheduleCleanup(senders);\n }\n Private.disconnectReceiver = disconnectReceiver;\n /**\n * Remove all connections where an object is the sender or receiver.\n *\n * @param object - The object of interest.\n */\n function disconnectAll(object) {\n // Remove all connections where the given object is the sender.\n disconnectSender(object);\n // Remove all connections where the given object is the receiver.\n disconnectReceiver(object);\n }\n Private.disconnectAll = disconnectAll;\n /**\n * Emit a signal and invoke its connected slots.\n *\n * @param signal - The signal of interest.\n *\n * @param args - The args to pass to the connected slots.\n *\n * #### Notes\n * Slots are invoked synchronously in connection order.\n *\n * Exceptions thrown by connected slots will be caught and logged.\n */\n function emit(signal, args) {\n // If there are no receivers, there is nothing to do.\n let receivers = receiversForSender.get(signal.sender);\n if (!receivers || receivers.length === 0) {\n return;\n }\n // Invoke the slots for connections with a matching signal.\n // Any connections added during emission are not invoked.\n for (let i = 0, n = receivers.length; i < n; ++i) {\n let connection = receivers[i];\n if (connection.signal === signal) {\n invokeSlot(connection, args);\n }\n }\n }\n Private.emit = emit;\n /**\n * A weak mapping of sender to array of receiver connections.\n */\n const receiversForSender = new WeakMap();\n /**\n * A weak mapping of receiver to array of sender connections.\n */\n const sendersForReceiver = new WeakMap();\n /**\n * A set of connection arrays which are pending cleanup.\n */\n const dirtySet = new Set();\n /**\n * A function to schedule an event loop callback.\n */\n const schedule = (() => {\n let ok = typeof requestAnimationFrame === 'function';\n return ok ? requestAnimationFrame : setImmediate;\n })();\n /**\n * Find a connection which matches the given parameters.\n */\n function findConnection(connections, signal, slot, thisArg) {\n return find(connections, connection => connection.signal === signal &&\n connection.slot === slot &&\n connection.thisArg === thisArg);\n }\n /**\n * Invoke a slot with the given parameters.\n *\n * The connection is assumed to be valid.\n *\n * Exceptions in the slot will be caught and logged.\n */\n function invokeSlot(connection, args) {\n let { signal, slot, thisArg } = connection;\n try {\n slot.call(thisArg, signal.sender, args);\n }\n catch (err) {\n Private.exceptionHandler(err);\n }\n }\n /**\n * Schedule a cleanup of a connection array.\n *\n * This will add the array to the dirty set and schedule a deferred\n * cleanup of the array contents. On cleanup, any connection with a\n * `null` signal will be removed from the array.\n */\n function scheduleCleanup(array) {\n if (dirtySet.size === 0) {\n schedule(cleanupDirtySet);\n }\n dirtySet.add(array);\n }\n /**\n * Cleanup the connection lists in the dirty set.\n *\n * This function should only be invoked asynchronously, when the\n * stack frame is guaranteed to not be on the path of user code.\n */\n function cleanupDirtySet() {\n dirtySet.forEach(cleanupConnections);\n dirtySet.clear();\n }\n /**\n * Cleanup the dirty connections in a connections array.\n *\n * This will remove any connection with a `null` signal.\n *\n * This function should only be invoked asynchronously, when the\n * stack frame is guaranteed to not be on the path of user code.\n */\n function cleanupConnections(connections) {\n ArrayExt.removeAllWhere(connections, isDeadConnection);\n }\n /**\n * Test whether a connection is dead.\n *\n * A dead connection has a `null` signal.\n */\n function isDeadConnection(connection) {\n return connection.signal === null;\n }\n})(Private || (Private = {}));\n\nexport { Signal, Stream };\n//# sourceMappingURL=index.es6.js.map\n","'use strict';\n\nfunction hasKey(obj, keys) {\n\tvar o = obj;\n\tkeys.slice(0, -1).forEach(function (key) {\n\t\to = o[key] || {};\n\t});\n\n\tvar key = keys[keys.length - 1];\n\treturn key in o;\n}\n\nfunction isNumber(x) {\n\tif (typeof x === 'number') { return true; }\n\tif ((/^0x[0-9a-f]+$/i).test(x)) { return true; }\n\treturn (/^[-+]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(e[-+]?\\d+)?$/).test(x);\n}\n\nfunction isConstructorOrProto(obj, key) {\n\treturn (key === 'constructor' && typeof obj[key] === 'function') || key === '__proto__';\n}\n\nmodule.exports = function (args, opts) {\n\tif (!opts) { opts = {}; }\n\n\tvar flags = {\n\t\tbools: {},\n\t\tstrings: {},\n\t\tunknownFn: null,\n\t};\n\n\tif (typeof opts.unknown === 'function') {\n\t\tflags.unknownFn = opts.unknown;\n\t}\n\n\tif (typeof opts.boolean === 'boolean' && opts.boolean) {\n\t\tflags.allBools = true;\n\t} else {\n\t\t[].concat(opts.boolean).filter(Boolean).forEach(function (key) {\n\t\t\tflags.bools[key] = true;\n\t\t});\n\t}\n\n\tvar aliases = {};\n\n\tfunction aliasIsBoolean(key) {\n\t\treturn aliases[key].some(function (x) {\n\t\t\treturn flags.bools[x];\n\t\t});\n\t}\n\n\tObject.keys(opts.alias || {}).forEach(function (key) {\n\t\taliases[key] = [].concat(opts.alias[key]);\n\t\taliases[key].forEach(function (x) {\n\t\t\taliases[x] = [key].concat(aliases[key].filter(function (y) {\n\t\t\t\treturn x !== y;\n\t\t\t}));\n\t\t});\n\t});\n\n\t[].concat(opts.string).filter(Boolean).forEach(function (key) {\n\t\tflags.strings[key] = true;\n\t\tif (aliases[key]) {\n\t\t\t[].concat(aliases[key]).forEach(function (k) {\n\t\t\t\tflags.strings[k] = true;\n\t\t\t});\n\t\t}\n\t});\n\n\tvar defaults = opts.default || {};\n\n\tvar argv = { _: [] };\n\n\tfunction argDefined(key, arg) {\n\t\treturn (flags.allBools && (/^--[^=]+$/).test(arg))\n\t\t\t|| flags.strings[key]\n\t\t\t|| flags.bools[key]\n\t\t\t|| aliases[key];\n\t}\n\n\tfunction setKey(obj, keys, value) {\n\t\tvar o = obj;\n\t\tfor (var i = 0; i < keys.length - 1; i++) {\n\t\t\tvar key = keys[i];\n\t\t\tif (isConstructorOrProto(o, key)) { return; }\n\t\t\tif (o[key] === undefined) { o[key] = {}; }\n\t\t\tif (\n\t\t\t\to[key] === Object.prototype\n\t\t\t\t|| o[key] === Number.prototype\n\t\t\t\t|| o[key] === String.prototype\n\t\t\t) {\n\t\t\t\to[key] = {};\n\t\t\t}\n\t\t\tif (o[key] === Array.prototype) { o[key] = []; }\n\t\t\to = o[key];\n\t\t}\n\n\t\tvar lastKey = keys[keys.length - 1];\n\t\tif (isConstructorOrProto(o, lastKey)) { return; }\n\t\tif (\n\t\t\to === Object.prototype\n\t\t\t|| o === Number.prototype\n\t\t\t|| o === String.prototype\n\t\t) {\n\t\t\to = {};\n\t\t}\n\t\tif (o === Array.prototype) { o = []; }\n\t\tif (o[lastKey] === undefined || flags.bools[lastKey] || typeof o[lastKey] === 'boolean') {\n\t\t\to[lastKey] = value;\n\t\t} else if (Array.isArray(o[lastKey])) {\n\t\t\to[lastKey].push(value);\n\t\t} else {\n\t\t\to[lastKey] = [o[lastKey], value];\n\t\t}\n\t}\n\n\tfunction setArg(key, val, arg) {\n\t\tif (arg && flags.unknownFn && !argDefined(key, arg)) {\n\t\t\tif (flags.unknownFn(arg) === false) { return; }\n\t\t}\n\n\t\tvar value = !flags.strings[key] && isNumber(val)\n\t\t\t? Number(val)\n\t\t\t: val;\n\t\tsetKey(argv, key.split('.'), value);\n\n\t\t(aliases[key] || []).forEach(function (x) {\n\t\t\tsetKey(argv, x.split('.'), value);\n\t\t});\n\t}\n\n\tObject.keys(flags.bools).forEach(function (key) {\n\t\tsetArg(key, defaults[key] === undefined ? false : defaults[key]);\n\t});\n\n\tvar notFlags = [];\n\n\tif (args.indexOf('--') !== -1) {\n\t\tnotFlags = args.slice(args.indexOf('--') + 1);\n\t\targs = args.slice(0, args.indexOf('--'));\n\t}\n\n\tfor (var i = 0; i < args.length; i++) {\n\t\tvar arg = args[i];\n\t\tvar key;\n\t\tvar next;\n\n\t\tif ((/^--.+=/).test(arg)) {\n\t\t\t// Using [\\s\\S] instead of . because js doesn't support the\n\t\t\t// 'dotall' regex modifier. See:\n\t\t\t// http://stackoverflow.com/a/1068308/13216\n\t\t\tvar m = arg.match(/^--([^=]+)=([\\s\\S]*)$/);\n\t\t\tkey = m[1];\n\t\t\tvar value = m[2];\n\t\t\tif (flags.bools[key]) {\n\t\t\t\tvalue = value !== 'false';\n\t\t\t}\n\t\t\tsetArg(key, value, arg);\n\t\t} else if ((/^--no-.+/).test(arg)) {\n\t\t\tkey = arg.match(/^--no-(.+)/)[1];\n\t\t\tsetArg(key, false, arg);\n\t\t} else if ((/^--.+/).test(arg)) {\n\t\t\tkey = arg.match(/^--(.+)/)[1];\n\t\t\tnext = args[i + 1];\n\t\t\tif (\n\t\t\t\tnext !== undefined\n\t\t\t\t&& !(/^(-|--)[^-]/).test(next)\n\t\t\t\t&& !flags.bools[key]\n\t\t\t\t&& !flags.allBools\n\t\t\t\t&& (aliases[key] ? !aliasIsBoolean(key) : true)\n\t\t\t) {\n\t\t\t\tsetArg(key, next, arg);\n\t\t\t\ti += 1;\n\t\t\t} else if ((/^(true|false)$/).test(next)) {\n\t\t\t\tsetArg(key, next === 'true', arg);\n\t\t\t\ti += 1;\n\t\t\t} else {\n\t\t\t\tsetArg(key, flags.strings[key] ? '' : true, arg);\n\t\t\t}\n\t\t} else if ((/^-[^-]+/).test(arg)) {\n\t\t\tvar letters = arg.slice(1, -1).split('');\n\n\t\t\tvar broken = false;\n\t\t\tfor (var j = 0; j < letters.length; j++) {\n\t\t\t\tnext = arg.slice(j + 2);\n\n\t\t\t\tif (next === '-') {\n\t\t\t\t\tsetArg(letters[j], next, arg);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif ((/[A-Za-z]/).test(letters[j]) && next[0] === '=') {\n\t\t\t\t\tsetArg(letters[j], next.slice(1), arg);\n\t\t\t\t\tbroken = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t(/[A-Za-z]/).test(letters[j])\n\t\t\t\t\t&& (/-?\\d+(\\.\\d*)?(e-?\\d+)?$/).test(next)\n\t\t\t\t) {\n\t\t\t\t\tsetArg(letters[j], next, arg);\n\t\t\t\t\tbroken = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif (letters[j + 1] && letters[j + 1].match(/\\W/)) {\n\t\t\t\t\tsetArg(letters[j], arg.slice(j + 2), arg);\n\t\t\t\t\tbroken = true;\n\t\t\t\t\tbreak;\n\t\t\t\t} else {\n\t\t\t\t\tsetArg(letters[j], flags.strings[letters[j]] ? '' : true, arg);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tkey = arg.slice(-1)[0];\n\t\t\tif (!broken && key !== '-') {\n\t\t\t\tif (\n\t\t\t\t\targs[i + 1]\n\t\t\t\t\t&& !(/^(-|--)[^-]/).test(args[i + 1])\n\t\t\t\t\t&& !flags.bools[key]\n\t\t\t\t\t&& (aliases[key] ? !aliasIsBoolean(key) : true)\n\t\t\t\t) {\n\t\t\t\t\tsetArg(key, args[i + 1], arg);\n\t\t\t\t\ti += 1;\n\t\t\t\t} else if (args[i + 1] && (/^(true|false)$/).test(args[i + 1])) {\n\t\t\t\t\tsetArg(key, args[i + 1] === 'true', arg);\n\t\t\t\t\ti += 1;\n\t\t\t\t} else {\n\t\t\t\t\tsetArg(key, flags.strings[key] ? '' : true, arg);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif (!flags.unknownFn || flags.unknownFn(arg) !== false) {\n\t\t\t\targv._.push(flags.strings._ || !isNumber(arg) ? arg : Number(arg));\n\t\t\t}\n\t\t\tif (opts.stopEarly) {\n\t\t\t\targv._.push.apply(argv._, args.slice(i + 1));\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tObject.keys(defaults).forEach(function (k) {\n\t\tif (!hasKey(argv, k.split('.'))) {\n\t\t\tsetKey(argv, k.split('.'), defaults[k]);\n\n\t\t\t(aliases[k] || []).forEach(function (x) {\n\t\t\t\tsetKey(argv, x.split('.'), defaults[k]);\n\t\t\t});\n\t\t}\n\t});\n\n\tif (opts['--']) {\n\t\targv['--'] = notFlags.slice();\n\t} else {\n\t\tnotFlags.forEach(function (k) {\n\t\t\targv._.push(k);\n\t\t});\n\t}\n\n\treturn argv;\n};\n","// 'path' module extracted from Node.js v8.11.1 (only the posix part)\n// transplited with Babel\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nfunction assertPath(path) {\n if (typeof path !== 'string') {\n throw new TypeError('Path must be a string. Received ' + JSON.stringify(path));\n }\n}\n\n// Resolves . and .. elements in a path with directory names\nfunction normalizeStringPosix(path, allowAboveRoot) {\n var res = '';\n var lastSegmentLength = 0;\n var lastSlash = -1;\n var dots = 0;\n var code;\n for (var i = 0; i <= path.length; ++i) {\n if (i < path.length)\n code = path.charCodeAt(i);\n else if (code === 47 /*/*/)\n break;\n else\n code = 47 /*/*/;\n if (code === 47 /*/*/) {\n if (lastSlash === i - 1 || dots === 1) {\n // NOOP\n } else if (lastSlash !== i - 1 && dots === 2) {\n if (res.length < 2 || lastSegmentLength !== 2 || res.charCodeAt(res.length - 1) !== 46 /*.*/ || res.charCodeAt(res.length - 2) !== 46 /*.*/) {\n if (res.length > 2) {\n var lastSlashIndex = res.lastIndexOf('/');\n if (lastSlashIndex !== res.length - 1) {\n if (lastSlashIndex === -1) {\n res = '';\n lastSegmentLength = 0;\n } else {\n res = res.slice(0, lastSlashIndex);\n lastSegmentLength = res.length - 1 - res.lastIndexOf('/');\n }\n lastSlash = i;\n dots = 0;\n continue;\n }\n } else if (res.length === 2 || res.length === 1) {\n res = '';\n lastSegmentLength = 0;\n lastSlash = i;\n dots = 0;\n continue;\n }\n }\n if (allowAboveRoot) {\n if (res.length > 0)\n res += '/..';\n else\n res = '..';\n lastSegmentLength = 2;\n }\n } else {\n if (res.length > 0)\n res += '/' + path.slice(lastSlash + 1, i);\n else\n res = path.slice(lastSlash + 1, i);\n lastSegmentLength = i - lastSlash - 1;\n }\n lastSlash = i;\n dots = 0;\n } else if (code === 46 /*.*/ && dots !== -1) {\n ++dots;\n } else {\n dots = -1;\n }\n }\n return res;\n}\n\nfunction _format(sep, pathObject) {\n var dir = pathObject.dir || pathObject.root;\n var base = pathObject.base || (pathObject.name || '') + (pathObject.ext || '');\n if (!dir) {\n return base;\n }\n if (dir === pathObject.root) {\n return dir + base;\n }\n return dir + sep + base;\n}\n\nvar posix = {\n // path.resolve([from ...], to)\n resolve: function resolve() {\n var resolvedPath = '';\n var resolvedAbsolute = false;\n var cwd;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path;\n if (i >= 0)\n path = arguments[i];\n else {\n if (cwd === undefined)\n cwd = process.cwd();\n path = cwd;\n }\n\n assertPath(path);\n\n // Skip empty entries\n if (path.length === 0) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charCodeAt(0) === 47 /*/*/;\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeStringPosix(resolvedPath, !resolvedAbsolute);\n\n if (resolvedAbsolute) {\n if (resolvedPath.length > 0)\n return '/' + resolvedPath;\n else\n return '/';\n } else if (resolvedPath.length > 0) {\n return resolvedPath;\n } else {\n return '.';\n }\n },\n\n normalize: function normalize(path) {\n assertPath(path);\n\n if (path.length === 0) return '.';\n\n var isAbsolute = path.charCodeAt(0) === 47 /*/*/;\n var trailingSeparator = path.charCodeAt(path.length - 1) === 47 /*/*/;\n\n // Normalize the path\n path = normalizeStringPosix(path, !isAbsolute);\n\n if (path.length === 0 && !isAbsolute) path = '.';\n if (path.length > 0 && trailingSeparator) path += '/';\n\n if (isAbsolute) return '/' + path;\n return path;\n },\n\n isAbsolute: function isAbsolute(path) {\n assertPath(path);\n return path.length > 0 && path.charCodeAt(0) === 47 /*/*/;\n },\n\n join: function join() {\n if (arguments.length === 0)\n return '.';\n var joined;\n for (var i = 0; i < arguments.length; ++i) {\n var arg = arguments[i];\n assertPath(arg);\n if (arg.length > 0) {\n if (joined === undefined)\n joined = arg;\n else\n joined += '/' + arg;\n }\n }\n if (joined === undefined)\n return '.';\n return posix.normalize(joined);\n },\n\n relative: function relative(from, to) {\n assertPath(from);\n assertPath(to);\n\n if (from === to) return '';\n\n from = posix.resolve(from);\n to = posix.resolve(to);\n\n if (from === to) return '';\n\n // Trim any leading backslashes\n var fromStart = 1;\n for (; fromStart < from.length; ++fromStart) {\n if (from.charCodeAt(fromStart) !== 47 /*/*/)\n break;\n }\n var fromEnd = from.length;\n var fromLen = fromEnd - fromStart;\n\n // Trim any leading backslashes\n var toStart = 1;\n for (; toStart < to.length; ++toStart) {\n if (to.charCodeAt(toStart) !== 47 /*/*/)\n break;\n }\n var toEnd = to.length;\n var toLen = toEnd - toStart;\n\n // Compare paths to find the longest common path from root\n var length = fromLen < toLen ? fromLen : toLen;\n var lastCommonSep = -1;\n var i = 0;\n for (; i <= length; ++i) {\n if (i === length) {\n if (toLen > length) {\n if (to.charCodeAt(toStart + i) === 47 /*/*/) {\n // We get here if `from` is the exact base path for `to`.\n // For example: from='/foo/bar'; to='/foo/bar/baz'\n return to.slice(toStart + i + 1);\n } else if (i === 0) {\n // We get here if `from` is the root\n // For example: from='/'; to='/foo'\n return to.slice(toStart + i);\n }\n } else if (fromLen > length) {\n if (from.charCodeAt(fromStart + i) === 47 /*/*/) {\n // We get here if `to` is the exact base path for `from`.\n // For example: from='/foo/bar/baz'; to='/foo/bar'\n lastCommonSep = i;\n } else if (i === 0) {\n // We get here if `to` is the root.\n // For example: from='/foo'; to='/'\n lastCommonSep = 0;\n }\n }\n break;\n }\n var fromCode = from.charCodeAt(fromStart + i);\n var toCode = to.charCodeAt(toStart + i);\n if (fromCode !== toCode)\n break;\n else if (fromCode === 47 /*/*/)\n lastCommonSep = i;\n }\n\n var out = '';\n // Generate the relative path based on the path difference between `to`\n // and `from`\n for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) {\n if (i === fromEnd || from.charCodeAt(i) === 47 /*/*/) {\n if (out.length === 0)\n out += '..';\n else\n out += '/..';\n }\n }\n\n // Lastly, append the rest of the destination (`to`) path that comes after\n // the common path parts\n if (out.length > 0)\n return out + to.slice(toStart + lastCommonSep);\n else {\n toStart += lastCommonSep;\n if (to.charCodeAt(toStart) === 47 /*/*/)\n ++toStart;\n return to.slice(toStart);\n }\n },\n\n _makeLong: function _makeLong(path) {\n return path;\n },\n\n dirname: function dirname(path) {\n assertPath(path);\n if (path.length === 0) return '.';\n var code = path.charCodeAt(0);\n var hasRoot = code === 47 /*/*/;\n var end = -1;\n var matchedSlash = true;\n for (var i = path.length - 1; i >= 1; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n\n if (end === -1) return hasRoot ? '/' : '.';\n if (hasRoot && end === 1) return '//';\n return path.slice(0, end);\n },\n\n basename: function basename(path, ext) {\n if (ext !== undefined && typeof ext !== 'string') throw new TypeError('\"ext\" argument must be a string');\n assertPath(path);\n\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n\n if (ext !== undefined && ext.length > 0 && ext.length <= path.length) {\n if (ext.length === path.length && ext === path) return '';\n var extIdx = ext.length - 1;\n var firstNonSlashEnd = -1;\n for (i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else {\n if (firstNonSlashEnd === -1) {\n // We saw the first non-path separator, remember this index in case\n // we need it if the extension ends up not matching\n matchedSlash = false;\n firstNonSlashEnd = i + 1;\n }\n if (extIdx >= 0) {\n // Try to match the explicit extension\n if (code === ext.charCodeAt(extIdx)) {\n if (--extIdx === -1) {\n // We matched the extension, so mark this as the end of our path\n // component\n end = i;\n }\n } else {\n // Extension does not match, so our result is the entire path\n // component\n extIdx = -1;\n end = firstNonSlashEnd;\n }\n }\n }\n }\n\n if (start === end) end = firstNonSlashEnd;else if (end === -1) end = path.length;\n return path.slice(start, end);\n } else {\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n\n if (end === -1) return '';\n return path.slice(start, end);\n }\n },\n\n extname: function extname(path) {\n assertPath(path);\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n for (var i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return '';\n }\n return path.slice(startDot, end);\n },\n\n format: function format(pathObject) {\n if (pathObject === null || typeof pathObject !== 'object') {\n throw new TypeError('The \"pathObject\" argument must be of type Object. Received type ' + typeof pathObject);\n }\n return _format('/', pathObject);\n },\n\n parse: function parse(path) {\n assertPath(path);\n\n var ret = { root: '', dir: '', base: '', ext: '', name: '' };\n if (path.length === 0) return ret;\n var code = path.charCodeAt(0);\n var isAbsolute = code === 47 /*/*/;\n var start;\n if (isAbsolute) {\n ret.root = '/';\n start = 1;\n } else {\n start = 0;\n }\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n var i = path.length - 1;\n\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n\n // Get non-dir info\n for (; i >= start; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1) startDot = i;else if (preDotState !== 1) preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n if (end !== -1) {\n if (startPart === 0 && isAbsolute) ret.base = ret.name = path.slice(1, end);else ret.base = ret.name = path.slice(startPart, end);\n }\n } else {\n if (startPart === 0 && isAbsolute) {\n ret.name = path.slice(1, startDot);\n ret.base = path.slice(1, end);\n } else {\n ret.name = path.slice(startPart, startDot);\n ret.base = path.slice(startPart, end);\n }\n ret.ext = path.slice(startDot, end);\n }\n\n if (startPart > 0) ret.dir = path.slice(0, startPart - 1);else if (isAbsolute) ret.dir = '/';\n\n return ret;\n },\n\n sep: '/',\n delimiter: ':',\n win32: null,\n posix: null\n};\n\nposix.posix = posix;\n\nmodule.exports = posix;\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , undef;\n\n/**\n * Decode a URI encoded string.\n *\n * @param {String} input The URI encoded string.\n * @returns {String|Null} The decoded string.\n * @api private\n */\nfunction decode(input) {\n try {\n return decodeURIComponent(input.replace(/\\+/g, ' '));\n } catch (e) {\n return null;\n }\n}\n\n/**\n * Attempts to encode a given input.\n *\n * @param {String} input The string that needs to be encoded.\n * @returns {String|Null} The encoded string.\n * @api private\n */\nfunction encode(input) {\n try {\n return encodeURIComponent(input);\n } catch (e) {\n return null;\n }\n}\n\n/**\n * Simple query string parser.\n *\n * @param {String} query The query string that needs to be parsed.\n * @returns {Object}\n * @api public\n */\nfunction querystring(query) {\n var parser = /([^=?#&]+)=?([^&]*)/g\n , result = {}\n , part;\n\n while (part = parser.exec(query)) {\n var key = decode(part[1])\n , value = decode(part[2]);\n\n //\n // Prevent overriding of existing properties. This ensures that build-in\n // methods like `toString` or __proto__ are not overriden by malicious\n // querystrings.\n //\n // In the case if failed decoding, we want to omit the key/value pairs\n // from the result.\n //\n if (key === null || value === null || key in result) continue;\n result[key] = value;\n }\n\n return result;\n}\n\n/**\n * Transform a query string to an object.\n *\n * @param {Object} obj Object that should be transformed.\n * @param {String} prefix Optional prefix.\n * @returns {String}\n * @api public\n */\nfunction querystringify(obj, prefix) {\n prefix = prefix || '';\n\n var pairs = []\n , value\n , key;\n\n //\n // Optionally prefix with a '?' if needed\n //\n if ('string' !== typeof prefix) prefix = '?';\n\n for (key in obj) {\n if (has.call(obj, key)) {\n value = obj[key];\n\n //\n // Edge cases where we actually want to encode the value to an empty\n // string instead of the stringified value.\n //\n if (!value && (value === null || value === undef || isNaN(value))) {\n value = '';\n }\n\n key = encode(key);\n value = encode(value);\n\n //\n // If we failed to encode the strings, we should bail out as we don't\n // want to add invalid strings to the query.\n //\n if (key === null || value === null) continue;\n pairs.push(key +'='+ value);\n }\n }\n\n return pairs.length ? prefix + pairs.join('&') : '';\n}\n\n//\n// Expose the module.\n//\nexports.stringify = querystringify;\nexports.parse = querystring;\n","'use strict';\n\n/**\n * Check if we're required to add a port number.\n *\n * @see https://url.spec.whatwg.org/#default-port\n * @param {Number|String} port Port number we need to check\n * @param {String} protocol Protocol we need to check against.\n * @returns {Boolean} Is it a default port for the given protocol\n * @api private\n */\nmodule.exports = function required(port, protocol) {\n protocol = protocol.split(':')[0];\n port = +port;\n\n if (!port) return false;\n\n switch (protocol) {\n case 'http':\n case 'ws':\n return port !== 80;\n\n case 'https':\n case 'wss':\n return port !== 443;\n\n case 'ftp':\n return port !== 21;\n\n case 'gopher':\n return port !== 70;\n\n case 'file':\n return false;\n }\n\n return port !== 0;\n};\n","'use strict';\n\nvar required = require('requires-port')\n , qs = require('querystringify')\n , controlOrWhitespace = /^[\\x00-\\x20\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff]+/\n , CRHTLF = /[\\n\\r\\t]/g\n , slashes = /^[A-Za-z][A-Za-z0-9+-.]*:\\/\\//\n , port = /:\\d+$/\n , protocolre = /^([a-z][a-z0-9.+-]*:)?(\\/\\/)?([\\\\/]+)?([\\S\\s]*)/i\n , windowsDriveLetter = /^[a-zA-Z]:/;\n\n/**\n * Remove control characters and whitespace from the beginning of a string.\n *\n * @param {Object|String} str String to trim.\n * @returns {String} A new string representing `str` stripped of control\n * characters and whitespace from its beginning.\n * @public\n */\nfunction trimLeft(str) {\n return (str ? str : '').toString().replace(controlOrWhitespace, '');\n}\n\n/**\n * These are the parse rules for the URL parser, it informs the parser\n * about:\n *\n * 0. The char it Needs to parse, if it's a string it should be done using\n * indexOf, RegExp using exec and NaN means set as current value.\n * 1. The property we should set when parsing this value.\n * 2. Indication if it's backwards or forward parsing, when set as number it's\n * the value of extra chars that should be split off.\n * 3. Inherit from location if non existing in the parser.\n * 4. `toLowerCase` the resulting value.\n */\nvar rules = [\n ['#', 'hash'], // Extract from the back.\n ['?', 'query'], // Extract from the back.\n function sanitize(address, url) { // Sanitize what is left of the address\n return isSpecial(url.protocol) ? address.replace(/\\\\/g, '/') : address;\n },\n ['/', 'pathname'], // Extract from the back.\n ['@', 'auth', 1], // Extract from the front.\n [NaN, 'host', undefined, 1, 1], // Set left over value.\n [/:(\\d*)$/, 'port', undefined, 1], // RegExp the back.\n [NaN, 'hostname', undefined, 1, 1] // Set left over.\n];\n\n/**\n * These properties should not be copied or inherited from. This is only needed\n * for all non blob URL's as a blob URL does not include a hash, only the\n * origin.\n *\n * @type {Object}\n * @private\n */\nvar ignore = { hash: 1, query: 1 };\n\n/**\n * The location object differs when your code is loaded through a normal page,\n * Worker or through a worker using a blob. And with the blobble begins the\n * trouble as the location object will contain the URL of the blob, not the\n * location of the page where our code is loaded in. The actual origin is\n * encoded in the `pathname` so we can thankfully generate a good \"default\"\n * location from it so we can generate proper relative URL's again.\n *\n * @param {Object|String} loc Optional default location object.\n * @returns {Object} lolcation object.\n * @public\n */\nfunction lolcation(loc) {\n var globalVar;\n\n if (typeof window !== 'undefined') globalVar = window;\n else if (typeof global !== 'undefined') globalVar = global;\n else if (typeof self !== 'undefined') globalVar = self;\n else globalVar = {};\n\n var location = globalVar.location || {};\n loc = loc || location;\n\n var finaldestination = {}\n , type = typeof loc\n , key;\n\n if ('blob:' === loc.protocol) {\n finaldestination = new Url(unescape(loc.pathname), {});\n } else if ('string' === type) {\n finaldestination = new Url(loc, {});\n for (key in ignore) delete finaldestination[key];\n } else if ('object' === type) {\n for (key in loc) {\n if (key in ignore) continue;\n finaldestination[key] = loc[key];\n }\n\n if (finaldestination.slashes === undefined) {\n finaldestination.slashes = slashes.test(loc.href);\n }\n }\n\n return finaldestination;\n}\n\n/**\n * Check whether a protocol scheme is special.\n *\n * @param {String} The protocol scheme of the URL\n * @return {Boolean} `true` if the protocol scheme is special, else `false`\n * @private\n */\nfunction isSpecial(scheme) {\n return (\n scheme === 'file:' ||\n scheme === 'ftp:' ||\n scheme === 'http:' ||\n scheme === 'https:' ||\n scheme === 'ws:' ||\n scheme === 'wss:'\n );\n}\n\n/**\n * @typedef ProtocolExtract\n * @type Object\n * @property {String} protocol Protocol matched in the URL, in lowercase.\n * @property {Boolean} slashes `true` if protocol is followed by \"//\", else `false`.\n * @property {String} rest Rest of the URL that is not part of the protocol.\n */\n\n/**\n * Extract protocol information from a URL with/without double slash (\"//\").\n *\n * @param {String} address URL we want to extract from.\n * @param {Object} location\n * @return {ProtocolExtract} Extracted information.\n * @private\n */\nfunction extractProtocol(address, location) {\n address = trimLeft(address);\n address = address.replace(CRHTLF, '');\n location = location || {};\n\n var match = protocolre.exec(address);\n var protocol = match[1] ? match[1].toLowerCase() : '';\n var forwardSlashes = !!match[2];\n var otherSlashes = !!match[3];\n var slashesCount = 0;\n var rest;\n\n if (forwardSlashes) {\n if (otherSlashes) {\n rest = match[2] + match[3] + match[4];\n slashesCount = match[2].length + match[3].length;\n } else {\n rest = match[2] + match[4];\n slashesCount = match[2].length;\n }\n } else {\n if (otherSlashes) {\n rest = match[3] + match[4];\n slashesCount = match[3].length;\n } else {\n rest = match[4]\n }\n }\n\n if (protocol === 'file:') {\n if (slashesCount >= 2) {\n rest = rest.slice(2);\n }\n } else if (isSpecial(protocol)) {\n rest = match[4];\n } else if (protocol) {\n if (forwardSlashes) {\n rest = rest.slice(2);\n }\n } else if (slashesCount >= 2 && isSpecial(location.protocol)) {\n rest = match[4];\n }\n\n return {\n protocol: protocol,\n slashes: forwardSlashes || isSpecial(protocol),\n slashesCount: slashesCount,\n rest: rest\n };\n}\n\n/**\n * Resolve a relative URL pathname against a base URL pathname.\n *\n * @param {String} relative Pathname of the relative URL.\n * @param {String} base Pathname of the base URL.\n * @return {String} Resolved pathname.\n * @private\n */\nfunction resolve(relative, base) {\n if (relative === '') return base;\n\n var path = (base || '/').split('/').slice(0, -1).concat(relative.split('/'))\n , i = path.length\n , last = path[i - 1]\n , unshift = false\n , up = 0;\n\n while (i--) {\n if (path[i] === '.') {\n path.splice(i, 1);\n } else if (path[i] === '..') {\n path.splice(i, 1);\n up++;\n } else if (up) {\n if (i === 0) unshift = true;\n path.splice(i, 1);\n up--;\n }\n }\n\n if (unshift) path.unshift('');\n if (last === '.' || last === '..') path.push('');\n\n return path.join('/');\n}\n\n/**\n * The actual URL instance. Instead of returning an object we've opted-in to\n * create an actual constructor as it's much more memory efficient and\n * faster and it pleases my OCD.\n *\n * It is worth noting that we should not use `URL` as class name to prevent\n * clashes with the global URL instance that got introduced in browsers.\n *\n * @constructor\n * @param {String} address URL we want to parse.\n * @param {Object|String} [location] Location defaults for relative paths.\n * @param {Boolean|Function} [parser] Parser for the query string.\n * @private\n */\nfunction Url(address, location, parser) {\n address = trimLeft(address);\n address = address.replace(CRHTLF, '');\n\n if (!(this instanceof Url)) {\n return new Url(address, location, parser);\n }\n\n var relative, extracted, parse, instruction, index, key\n , instructions = rules.slice()\n , type = typeof location\n , url = this\n , i = 0;\n\n //\n // The following if statements allows this module two have compatibility with\n // 2 different API:\n //\n // 1. Node.js's `url.parse` api which accepts a URL, boolean as arguments\n // where the boolean indicates that the query string should also be parsed.\n //\n // 2. The `URL` interface of the browser which accepts a URL, object as\n // arguments. The supplied object will be used as default values / fall-back\n // for relative paths.\n //\n if ('object' !== type && 'string' !== type) {\n parser = location;\n location = null;\n }\n\n if (parser && 'function' !== typeof parser) parser = qs.parse;\n\n location = lolcation(location);\n\n //\n // Extract protocol information before running the instructions.\n //\n extracted = extractProtocol(address || '', location);\n relative = !extracted.protocol && !extracted.slashes;\n url.slashes = extracted.slashes || relative && location.slashes;\n url.protocol = extracted.protocol || location.protocol || '';\n address = extracted.rest;\n\n //\n // When the authority component is absent the URL starts with a path\n // component.\n //\n if (\n extracted.protocol === 'file:' && (\n extracted.slashesCount !== 2 || windowsDriveLetter.test(address)) ||\n (!extracted.slashes &&\n (extracted.protocol ||\n extracted.slashesCount < 2 ||\n !isSpecial(url.protocol)))\n ) {\n instructions[3] = [/(.*)/, 'pathname'];\n }\n\n for (; i < instructions.length; i++) {\n instruction = instructions[i];\n\n if (typeof instruction === 'function') {\n address = instruction(address, url);\n continue;\n }\n\n parse = instruction[0];\n key = instruction[1];\n\n if (parse !== parse) {\n url[key] = address;\n } else if ('string' === typeof parse) {\n index = parse === '@'\n ? address.lastIndexOf(parse)\n : address.indexOf(parse);\n\n if (~index) {\n if ('number' === typeof instruction[2]) {\n url[key] = address.slice(0, index);\n address = address.slice(index + instruction[2]);\n } else {\n url[key] = address.slice(index);\n address = address.slice(0, index);\n }\n }\n } else if ((index = parse.exec(address))) {\n url[key] = index[1];\n address = address.slice(0, index.index);\n }\n\n url[key] = url[key] || (\n relative && instruction[3] ? location[key] || '' : ''\n );\n\n //\n // Hostname, host and protocol should be lowercased so they can be used to\n // create a proper `origin`.\n //\n if (instruction[4]) url[key] = url[key].toLowerCase();\n }\n\n //\n // Also parse the supplied query string in to an object. If we're supplied\n // with a custom parser as function use that instead of the default build-in\n // parser.\n //\n if (parser) url.query = parser(url.query);\n\n //\n // If the URL is relative, resolve the pathname against the base URL.\n //\n if (\n relative\n && location.slashes\n && url.pathname.charAt(0) !== '/'\n && (url.pathname !== '' || location.pathname !== '')\n ) {\n url.pathname = resolve(url.pathname, location.pathname);\n }\n\n //\n // Default to a / for pathname if none exists. This normalizes the URL\n // to always have a /\n //\n if (url.pathname.charAt(0) !== '/' && isSpecial(url.protocol)) {\n url.pathname = '/' + url.pathname;\n }\n\n //\n // We should not add port numbers if they are already the default port number\n // for a given protocol. As the host also contains the port number we're going\n // override it with the hostname which contains no port number.\n //\n if (!required(url.port, url.protocol)) {\n url.host = url.hostname;\n url.port = '';\n }\n\n //\n // Parse down the `auth` for the username and password.\n //\n url.username = url.password = '';\n\n if (url.auth) {\n index = url.auth.indexOf(':');\n\n if (~index) {\n url.username = url.auth.slice(0, index);\n url.username = encodeURIComponent(decodeURIComponent(url.username));\n\n url.password = url.auth.slice(index + 1);\n url.password = encodeURIComponent(decodeURIComponent(url.password))\n } else {\n url.username = encodeURIComponent(decodeURIComponent(url.auth));\n }\n\n url.auth = url.password ? url.username +':'+ url.password : url.username;\n }\n\n url.origin = url.protocol !== 'file:' && isSpecial(url.protocol) && url.host\n ? url.protocol +'//'+ url.host\n : 'null';\n\n //\n // The href is just the compiled result.\n //\n url.href = url.toString();\n}\n\n/**\n * This is convenience method for changing properties in the URL instance to\n * insure that they all propagate correctly.\n *\n * @param {String} part Property we need to adjust.\n * @param {Mixed} value The newly assigned value.\n * @param {Boolean|Function} fn When setting the query, it will be the function\n * used to parse the query.\n * When setting the protocol, double slash will be\n * removed from the final url if it is true.\n * @returns {URL} URL instance for chaining.\n * @public\n */\nfunction set(part, value, fn) {\n var url = this;\n\n switch (part) {\n case 'query':\n if ('string' === typeof value && value.length) {\n value = (fn || qs.parse)(value);\n }\n\n url[part] = value;\n break;\n\n case 'port':\n url[part] = value;\n\n if (!required(value, url.protocol)) {\n url.host = url.hostname;\n url[part] = '';\n } else if (value) {\n url.host = url.hostname +':'+ value;\n }\n\n break;\n\n case 'hostname':\n url[part] = value;\n\n if (url.port) value += ':'+ url.port;\n url.host = value;\n break;\n\n case 'host':\n url[part] = value;\n\n if (port.test(value)) {\n value = value.split(':');\n url.port = value.pop();\n url.hostname = value.join(':');\n } else {\n url.hostname = value;\n url.port = '';\n }\n\n break;\n\n case 'protocol':\n url.protocol = value.toLowerCase();\n url.slashes = !fn;\n break;\n\n case 'pathname':\n case 'hash':\n if (value) {\n var char = part === 'pathname' ? '/' : '#';\n url[part] = value.charAt(0) !== char ? char + value : value;\n } else {\n url[part] = value;\n }\n break;\n\n case 'username':\n case 'password':\n url[part] = encodeURIComponent(value);\n break;\n\n case 'auth':\n var index = value.indexOf(':');\n\n if (~index) {\n url.username = value.slice(0, index);\n url.username = encodeURIComponent(decodeURIComponent(url.username));\n\n url.password = value.slice(index + 1);\n url.password = encodeURIComponent(decodeURIComponent(url.password));\n } else {\n url.username = encodeURIComponent(decodeURIComponent(value));\n }\n }\n\n for (var i = 0; i < rules.length; i++) {\n var ins = rules[i];\n\n if (ins[4]) url[ins[1]] = url[ins[1]].toLowerCase();\n }\n\n url.auth = url.password ? url.username +':'+ url.password : url.username;\n\n url.origin = url.protocol !== 'file:' && isSpecial(url.protocol) && url.host\n ? url.protocol +'//'+ url.host\n : 'null';\n\n url.href = url.toString();\n\n return url;\n}\n\n/**\n * Transform the properties back in to a valid and full URL string.\n *\n * @param {Function} stringify Optional query stringify function.\n * @returns {String} Compiled version of the URL.\n * @public\n */\nfunction toString(stringify) {\n if (!stringify || 'function' !== typeof stringify) stringify = qs.stringify;\n\n var query\n , url = this\n , host = url.host\n , protocol = url.protocol;\n\n if (protocol && protocol.charAt(protocol.length - 1) !== ':') protocol += ':';\n\n var result =\n protocol +\n ((url.protocol && url.slashes) || isSpecial(url.protocol) ? '//' : '');\n\n if (url.username) {\n result += url.username;\n if (url.password) result += ':'+ url.password;\n result += '@';\n } else if (url.password) {\n result += ':'+ url.password;\n result += '@';\n } else if (\n url.protocol !== 'file:' &&\n isSpecial(url.protocol) &&\n !host &&\n url.pathname !== '/'\n ) {\n //\n // Add back the empty userinfo, otherwise the original invalid URL\n // might be transformed into a valid one with `url.pathname` as host.\n //\n result += '@';\n }\n\n //\n // Trailing colon is removed from `url.host` when it is parsed. If it still\n // ends with a colon, then add back the trailing colon that was removed. This\n // prevents an invalid URL from being transformed into a valid one.\n //\n if (host[host.length - 1] === ':' || (port.test(url.hostname) && !url.port)) {\n host += ':';\n }\n\n result += host + url.pathname;\n\n query = 'object' === typeof url.query ? stringify(url.query) : url.query;\n if (query) result += '?' !== query.charAt(0) ? '?'+ query : query;\n\n if (url.hash) result += url.hash;\n\n return result;\n}\n\nUrl.prototype = { set: set, toString: toString };\n\n//\n// Expose the URL parser and some additional properties that might be useful for\n// others or testing.\n//\nUrl.extractProtocol = extractProtocol;\nUrl.location = lolcation;\nUrl.trimLeft = trimLeft;\nUrl.qs = qs;\n\nmodule.exports = Url;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","export const ARRAY = 'array';\nexport const BIGINT = 'bigint';\nexport const BOOLEAN = 'boolean';\nexport const FUNCTION = 'function';\nexport const NULL = 'null';\nexport const NUMBER = 'number';\nexport const OBJECT = 'object';\nexport const STRING = 'string';\nexport const SYMBOL = 'symbol';\nexport const UNDEFINED = 'undefined';\n","// ⚠️ AUTOMATICALLY GENERATED - DO NOT CHANGE\nexport const CHANNEL = '64e10b34-2bf7-4616-9668-f99de5aa046e';\n\nexport const MAIN = 'M' + CHANNEL;\nexport const THREAD = 'T' + CHANNEL;\n","export const APPLY = 'apply';\nexport const CONSTRUCT = 'construct';\nexport const DEFINE_PROPERTY = 'defineProperty';\nexport const DELETE_PROPERTY = 'deleteProperty';\nexport const GET = 'get';\nexport const GET_OWN_PROPERTY_DESCRIPTOR = 'getOwnPropertyDescriptor';\nexport const GET_PROTOTYPE_OF = 'getPrototypeOf';\nexport const HAS = 'has';\nexport const IS_EXTENSIBLE = 'isExtensible';\nexport const OWN_KEYS = 'ownKeys';\nexport const PREVENT_EXTENSION = 'preventExtensions';\nexport const SET = 'set';\nexport const SET_PROTOTYPE_OF = 'setPrototypeOf';\n","// The goal of this file is to normalize SAB\n// at least in main -> worker() use cases.\n// This still cannot possibly solve the sync\n// worker -> main() use case if SharedArrayBuffer\n// is not available or usable.\n\nimport {CHANNEL} from './channel.js';\n\nconst {isArray} = Array;\n\nlet {SharedArrayBuffer, window} = globalThis;\nlet {notify, wait, waitAsync} = Atomics;\nlet postPatched = null;\n\n// This is needed for some version of Firefox\nif (!waitAsync) {\n waitAsync = buffer => ({\n value: new Promise(onmessage => {\n // encodeURIComponent('onmessage=({data:b})=>(Atomics.wait(b,0),postMessage(0))')\n let w = new Worker('data:application/javascript,onmessage%3D(%7Bdata%3Ab%7D)%3D%3E(Atomics.wait(b%2C0)%2CpostMessage(0))');\n w.onmessage = onmessage;\n w.postMessage(buffer);\n })\n });\n}\n\n// Monkey-patch SharedArrayBuffer if needed\ntry {\n new SharedArrayBuffer(4);\n}\ncatch (_) {\n SharedArrayBuffer = ArrayBuffer;\n\n const ids = new WeakMap;\n // patch only main -> worker():async use case\n if (window) {\n const resolvers = new Map;\n const {prototype: {postMessage}} = Worker;\n\n const listener = event => {\n const details = event.data?.[CHANNEL];\n if (!isArray(details)) {\n event.stopImmediatePropagation();\n const { id, sb } = details;\n resolvers.get(id)(sb);\n }\n };\n\n postPatched = function (data, ...rest) {\n const details = data?.[CHANNEL];\n if (isArray(details)) {\n const [id, sb] = details;\n ids.set(sb, id);\n this.addEventListener('message', listener);\n }\n return postMessage.call(this, data, ...rest);\n };\n\n waitAsync = sb => ({\n value: new Promise(resolve => {\n resolvers.set(ids.get(sb), resolve);\n }).then(buff => {\n resolvers.delete(ids.get(sb));\n ids.delete(sb);\n for (let i = 0; i < buff.length; i++) sb[i] = buff[i];\n return 'ok';\n })\n });\n }\n else {\n const as = (id, sb) => ({[CHANNEL]: { id, sb }});\n\n notify = sb => {\n postMessage(as(ids.get(sb), sb));\n };\n\n addEventListener('message', event => {\n const details = event.data?.[CHANNEL];\n if (isArray(details)) {\n const [id, sb] = details;\n ids.set(sb, id);\n }\n });\n }\n}\n\nexport {SharedArrayBuffer, isArray, notify, postPatched, wait, waitAsync};\n","/*! (c) Andrea Giammarchi - ISC */\n\nimport {FUNCTION} from 'proxy-target/types';\n\nimport {CHANNEL} from './channel.js';\nimport {GET, HAS, SET} from './shared/traps.js';\n\nimport {SharedArrayBuffer, isArray, notify, postPatched, wait, waitAsync} from './bridge.js';\n\n// just minifier friendly for Blob Workers' cases\nconst {Int32Array, Map, Uint16Array} = globalThis;\n\n// common constants / utilities for repeated operations\nconst {BYTES_PER_ELEMENT: I32_BYTES} = Int32Array;\nconst {BYTES_PER_ELEMENT: UI16_BYTES} = Uint16Array;\n\nconst waitInterrupt = (sb, delay, handler) => {\n while (wait(sb, 0, 0, delay) === 'timed-out')\n handler();\n};\n\n// retain buffers to transfer\nconst buffers = new WeakSet;\n\n// retain either main threads or workers global context\nconst context = new WeakMap;\n\nconst syncResult = {value: {then: fn => fn()}};\n\n// used to generate a unique `id` per each worker `postMessage` \"transaction\"\nlet uid = 0;\n\n/**\n * @typedef {Object} Interrupt used to sanity-check interrupts while waiting synchronously.\n * @prop {function} [handler] a callback invoked every `delay` milliseconds.\n * @prop {number} [delay=42] define `handler` invokes in terms of milliseconds.\n */\n\n/**\n * Create once a `Proxy` able to orchestrate synchronous `postMessage` out of the box.\n * @param {globalThis | Worker} self the context in which code should run\n * @param {{parse: (serialized: string) => any, stringify: (serializable: any) => string, transform?: (value:any) => any, interrupt?: () => void | Interrupt}} [JSON] an optional `JSON` like interface to `parse` or `stringify` content with extra `transform` ability.\n * @returns {ProxyHandler<globalThis> | ProxyHandler<Worker>}\n */\nconst coincident = (self, {parse = JSON.parse, stringify = JSON.stringify, transform, interrupt} = JSON) => {\n // create a Proxy once for the given context (globalThis or Worker instance)\n if (!context.has(self)) {\n // ensure no SAB gets a chance to pass through this call\n const sendMessage = postPatched || self.postMessage;\n // ensure the CHANNEL and data are posted correctly\n const post = (transfer, ...args) => sendMessage.call(self, {[CHANNEL]: args}, {transfer});\n\n const handler = typeof interrupt === FUNCTION ? interrupt : interrupt?.handler;\n const delay = interrupt?.delay || 42;\n const decoder = new TextDecoder('utf-16');\n\n // automatically uses sync wait (worker -> main)\n // or fallback to async wait (main -> worker)\n const waitFor = (isAsync, sb) => isAsync ?\n waitAsync(sb, 0) :\n ((handler ? waitInterrupt(sb, delay, handler) : wait(sb, 0)), syncResult);\n\n // prevent Harakiri https://github.com/WebReflection/coincident/issues/18\n let seppuku = false;\n\n context.set(self, new Proxy(new Map, {\n // there is very little point in checking prop in proxy for this very specific case\n // and I don't want to orchestrate a whole roundtrip neither, as stuff would fail\n // regardless if from Worker we access non existent Main callback, and vice-versa.\n // This is here mostly to guarantee that if such check is performed, at least the\n // get trap goes through and then it's up to developers guarantee they are accessing\n // stuff that actually exists elsewhere.\n [HAS]: (_, action) => typeof action === 'string' && !action.startsWith('_'),\n\n // worker related: get any utility that should be available on the main thread\n [GET]: (_, action) => action === 'then' ? null : ((...args) => {\n // transaction id\n const id = uid++;\n\n // first contact: just ask for how big the buffer should be\n // the value would be stored at index [1] while [0] is just control\n let sb = new Int32Array(new SharedArrayBuffer(I32_BYTES * 2));\n\n // if a transfer list has been passed, drop it from args\n let transfer = [];\n if (buffers.has(args.at(-1) || transfer))\n buffers.delete(transfer = args.pop());\n\n // ask for invoke with arguments and wait for it\n post(transfer, id, sb, action, transform ? args.map(transform) : args);\n\n // helps deciding how to wait for results\n const isAsync = self !== globalThis;\n\n // warn users about possible deadlock still allowing them\n // to explicitly `proxy.invoke().then(...)` without blocking\n let deadlock = 0;\n if (seppuku && isAsync)\n deadlock = setTimeout(console.warn, 1000, `💀🔒 - Possible deadlock if proxy.${action}(...args) is awaited`);\n\n return waitFor(isAsync, sb).value.then(() => {\n clearTimeout(deadlock);\n\n // commit transaction using the returned / needed buffer length\n const length = sb[1];\n\n // filter undefined results\n if (!length) return;\n\n // calculate the needed ui16 bytes length to store the result string\n const bytes = UI16_BYTES * length;\n\n // round up to the next amount of bytes divided by 4 to allow i32 operations\n sb = new Int32Array(new SharedArrayBuffer(bytes + (bytes % I32_BYTES)));\n\n // ask for results and wait for it\n post([], id, sb);\n return waitFor(isAsync, sb).value.then(() => parse(\n decoder.decode(new Uint16Array(sb.buffer).slice(0, length)))\n );\n });\n }),\n\n // main thread related: react to any utility a worker is asking for\n [SET](actions, action, callback) {\n const type = typeof callback;\n if (type !== FUNCTION)\n throw new Error(`Unable to assign ${action} as ${type}`);\n // lazy event listener and logic handling, triggered once by setters actions\n if (!actions.size) {\n // maps results by `id` as they are asked for\n const results = new Map;\n // add the event listener once (first defined setter, all others work the same)\n self.addEventListener('message', async (event) => {\n // grub the very same library CHANNEL; ignore otherwise\n const details = event.data?.[CHANNEL];\n if (isArray(details)) {\n // if early enough, avoid leaking data to other listeners\n event.stopImmediatePropagation();\n const [id, sb, ...rest] = details;\n let error;\n // action available: it must be defined/known on the main thread\n if (rest.length) {\n const [action, args] = rest;\n if (actions.has(action)) {\n seppuku = true;\n try {\n // await for result either sync or async and serialize it\n const result = await actions.get(action)(...args);\n if (result !== void 0) {\n const serialized = stringify(transform ? transform(result) : result);\n // store the result for \"the very next\" event listener call\n results.set(id, serialized);\n // communicate the required SharedArrayBuffer length out of the\n // resulting serialized string\n sb[1] = serialized.length;\n }\n }\n catch (_) {\n error = _;\n }\n finally {\n seppuku = false;\n }\n }\n // unknown action should be notified as missing on the main thread\n else {\n error = new Error(`Unsupported action: ${action}`);\n }\n // unlock the wait lock later on\n sb[0] = 1;\n }\n // no action means: get results out of the well known `id`\n // wait lock automatically unlocked here as no `0` value would\n // possibly ever land at index `0`\n else {\n const result = results.get(id);\n results.delete(id);\n // populate the SharedArrayBuffer with utf-16 chars code\n for (let ui16a = new Uint16Array(sb.buffer), i = 0; i < result.length; i++)\n ui16a[i] = result.charCodeAt(i);\n }\n // release te worker waiting either the length or the result\n notify(sb, 0);\n if (error) throw error;\n }\n });\n }\n // store this action callback allowing the setter in the process\n return !!actions.set(action, callback);\n }\n }));\n }\n return context.get(self);\n};\n\ncoincident.transfer = (...args) => (buffers.add(args), args);\n\nexport default coincident;\n","// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\nimport { DIR_MODE, SEEK_CUR, SEEK_END, instanceOfStream, } from './emscripten';\nexport const DRIVE_SEPARATOR = ':';\nexport const DRIVE_API_PATH = '/api/drive.v1';\nexport const BLOCK_SIZE = 4096;\nconst encoder = new TextEncoder();\nconst decoder = new TextDecoder('utf-8');\n// Mapping flag -> do we need to overwrite the file upon closing it\nconst flagNeedsWrite = {\n 0 /*O_RDONLY*/: false,\n 1 /*O_WRONLY*/: true,\n 2 /*O_RDWR*/: true,\n 64 /*O_CREAT*/: true,\n 65 /*O_WRONLY|O_CREAT*/: true,\n 66 /*O_RDWR|O_CREAT*/: true,\n 129 /*O_WRONLY|O_EXCL*/: true,\n 193 /*O_WRONLY|O_CREAT|O_EXCL*/: true,\n 514 /*O_RDWR|O_TRUNC*/: true,\n 577 /*O_WRONLY|O_CREAT|O_TRUNC*/: true,\n 578 /*O_CREAT|O_RDWR|O_TRUNC*/: true,\n 705 /*O_WRONLY|O_CREAT|O_EXCL|O_TRUNC*/: true,\n 706 /*O_RDWR|O_CREAT|O_EXCL|O_TRUNC*/: true,\n 1024 /*O_APPEND*/: true,\n 1025 /*O_WRONLY|O_APPEND*/: true,\n 1026 /*O_RDWR|O_APPEND*/: true,\n 1089 /*O_WRONLY|O_CREAT|O_APPEND*/: true,\n 1090 /*O_RDWR|O_CREAT|O_APPEND*/: true,\n 1153 /*O_WRONLY|O_EXCL|O_APPEND*/: true,\n 1154 /*O_RDWR|O_EXCL|O_APPEND*/: true,\n 1217 /*O_WRONLY|O_CREAT|O_EXCL|O_APPEND*/: true,\n 1218 /*O_RDWR|O_CREAT|O_EXCL|O_APPEND*/: true,\n 4096 /*O_RDONLY|O_DSYNC*/: true,\n 4098 /*O_RDWR|O_DSYNC*/: true,\n};\nexport class DriveFSEmscriptenStreamOps {\n constructor(fs) {\n this.fs = fs;\n }\n open(stream) {\n const path = this.fs.realPath(stream.node);\n if (this.fs.FS.isFile(stream.node.mode)) {\n stream.file = this.fs.API.get(path);\n }\n }\n close(stream) {\n if (!this.fs.FS.isFile(stream.node.mode) || !stream.file) {\n return;\n }\n const path = this.fs.realPath(stream.node);\n const flags = stream.flags;\n let parsedFlags = typeof flags === 'string' ? parseInt(flags, 10) : flags;\n parsedFlags &= 0x1fff;\n let needsWrite = true;\n if (parsedFlags in flagNeedsWrite) {\n needsWrite = flagNeedsWrite[parsedFlags];\n }\n if (needsWrite) {\n this.fs.API.put(path, stream.file);\n }\n stream.file = undefined;\n }\n read(stream, buffer, offset, length, position) {\n if (length <= 0 ||\n stream.file === undefined ||\n position >= (stream.file.data.length || 0)) {\n return 0;\n }\n const size = Math.min(stream.file.data.length - position, length);\n buffer.set(stream.file.data.subarray(position, position + size), offset);\n return size;\n }\n write(stream, buffer, offset, length, position) {\n var _a;\n if (length <= 0 || stream.file === undefined) {\n return 0;\n }\n stream.node.timestamp = Date.now();\n if (position + length > (((_a = stream.file) === null || _a === void 0 ? void 0 : _a.data.length) || 0)) {\n const oldData = stream.file.data ? stream.file.data : new Uint8Array();\n stream.file.data = new Uint8Array(position + length);\n stream.file.data.set(oldData);\n }\n stream.file.data.set(buffer.subarray(offset, offset + length), position);\n return length;\n }\n llseek(stream, offset, whence) {\n let position = offset;\n if (whence === SEEK_CUR) {\n position += stream.position;\n }\n else if (whence === SEEK_END) {\n if (this.fs.FS.isFile(stream.node.mode)) {\n if (stream.file !== undefined) {\n position += stream.file.data.length;\n }\n else {\n throw new this.fs.FS.ErrnoError(this.fs.ERRNO_CODES.EPERM);\n }\n }\n }\n if (position < 0) {\n throw new this.fs.FS.ErrnoError(this.fs.ERRNO_CODES.EINVAL);\n }\n return position;\n }\n}\nexport class DriveFSEmscriptenNodeOps {\n constructor(fs) {\n this.fs = fs;\n }\n node(nodeOrStream) {\n if (instanceOfStream(nodeOrStream)) {\n return nodeOrStream.node;\n }\n return nodeOrStream;\n }\n getattr(value) {\n const node = this.node(value);\n return {\n ...this.fs.API.getattr(this.fs.realPath(node)),\n mode: node.mode,\n ino: node.id,\n };\n }\n setattr(value, attr) {\n const node = this.node(value);\n for (const [key, value] of Object.entries(attr)) {\n switch (key) {\n case 'mode':\n node.mode = value;\n break;\n case 'timestamp':\n node.timestamp = value;\n break;\n case 'size': {\n const size = value;\n const path = this.fs.realPath(node);\n if (this.fs.FS.isFile(node.mode) && size >= 0) {\n const file = this.fs.API.get(path);\n const oldData = file.data ? file.data : new Uint8Array();\n if (size !== oldData.length) {\n if (size < oldData.length) {\n file.data = file.data.slice(0, size);\n }\n else {\n file.data = new Uint8Array(size);\n file.data.set(oldData);\n }\n this.fs.API.put(path, file);\n }\n }\n else {\n console.warn('setattr size of', size, 'on', node, 'not yet implemented');\n }\n break;\n }\n default:\n console.warn('setattr', key, 'of', value, 'on', node, 'not yet implemented');\n break;\n }\n }\n }\n lookup(parent, name) {\n const node = this.node(parent);\n const path = this.fs.PATH.join2(this.fs.realPath(node), name);\n const result = this.fs.API.lookup(path);\n if (!result.ok) {\n throw this.fs.FS.genericErrors[this.fs.ERRNO_CODES['ENOENT']];\n }\n return this.fs.createNode(node, name, result.mode, 0);\n }\n mknod(parent, name, mode, dev) {\n const node = this.node(parent);\n const path = this.fs.PATH.join2(this.fs.realPath(node), name);\n this.fs.API.mknod(path, mode);\n return this.fs.createNode(node, name, mode, dev);\n }\n rename(value, newDir, newName) {\n const oldNode = this.node(value);\n const newDirNode = this.node(newDir);\n this.fs.API.rename(oldNode.parent\n ? this.fs.PATH.join2(this.fs.realPath(oldNode.parent), oldNode.name)\n : oldNode.name, this.fs.PATH.join2(this.fs.realPath(newDirNode), newName));\n // Updating the in-memory node\n oldNode.name = newName;\n oldNode.parent = newDirNode;\n }\n unlink(parent, name) {\n this.fs.API.rmdir(this.fs.PATH.join2(this.fs.realPath(this.node(parent)), name));\n }\n rmdir(parent, name) {\n this.fs.API.rmdir(this.fs.PATH.join2(this.fs.realPath(this.node(parent)), name));\n }\n readdir(value) {\n return this.fs.API.readdir(this.fs.realPath(this.node(value)));\n }\n symlink(parent, newName, oldPath) {\n throw new this.fs.FS.ErrnoError(this.fs.ERRNO_CODES['EPERM']);\n }\n readlink(node) {\n throw new this.fs.FS.ErrnoError(this.fs.ERRNO_CODES['EPERM']);\n }\n}\n/**\n * ContentsAPI base class\n */\nexport class ContentsAPI {\n constructor(driveName, mountpoint, FS, ERRNO_CODES) {\n this._driveName = driveName;\n this._mountpoint = mountpoint;\n this.FS = FS;\n this.ERRNO_CODES = ERRNO_CODES;\n }\n lookup(path) {\n return this.request({ method: 'lookup', path: this.normalizePath(path) });\n }\n getmode(path) {\n return this.request({ method: 'getmode', path: this.normalizePath(path) });\n }\n mknod(path, mode) {\n return this.request({\n method: 'mknod',\n path: this.normalizePath(path),\n data: { mode },\n });\n }\n rename(oldPath, newPath) {\n return this.request({\n method: 'rename',\n path: this.normalizePath(oldPath),\n data: { newPath: this.normalizePath(newPath) },\n });\n }\n readdir(path) {\n const dirlist = this.request({\n method: 'readdir',\n path: this.normalizePath(path),\n });\n dirlist.push('.');\n dirlist.push('..');\n return dirlist;\n }\n rmdir(path) {\n return this.request({ method: 'rmdir', path: this.normalizePath(path) });\n }\n get(path) {\n const response = this.request({\n method: 'get',\n path: this.normalizePath(path),\n });\n if (!response) {\n throw new this.FS.ErrnoError(this.ERRNO_CODES['ENOENT']);\n }\n const serializedContent = response.content;\n const format = response.format;\n switch (format) {\n case 'json':\n case 'text':\n return {\n data: encoder.encode(serializedContent),\n format,\n };\n case 'base64': {\n const binString = atob(serializedContent);\n const len = binString.length;\n const data = new Uint8Array(len);\n for (let i = 0; i < len; i++) {\n data[i] = binString.charCodeAt(i);\n }\n return {\n data,\n format,\n };\n }\n default:\n throw new this.FS.ErrnoError(this.ERRNO_CODES['ENOENT']);\n }\n }\n put(path, value) {\n switch (value.format) {\n case 'json':\n case 'text':\n return this.request({\n method: 'put',\n path: this.normalizePath(path),\n data: {\n format: value.format,\n data: decoder.decode(value.data),\n },\n });\n case 'base64': {\n let binary = '';\n for (let i = 0; i < value.data.byteLength; i++) {\n binary += String.fromCharCode(value.data[i]);\n }\n return this.request({\n method: 'put',\n path: this.normalizePath(path),\n data: {\n format: value.format,\n data: btoa(binary),\n },\n });\n }\n }\n }\n getattr(path) {\n const stats = this.request({\n method: 'getattr',\n path: this.normalizePath(path),\n });\n // Turn datetimes into proper objects\n if (stats.atime) {\n stats.atime = new Date(stats.atime);\n }\n if (stats.mtime) {\n stats.mtime = new Date(stats.mtime);\n }\n if (stats.ctime) {\n stats.ctime = new Date(stats.ctime);\n }\n // ensure a non-undefined size (0 isn't great, though)\n stats.size = stats.size || 0;\n return stats;\n }\n /**\n * Normalize a Path by making it compliant for the content manager\n *\n * @param path: the path relatively to the Emscripten drive\n */\n normalizePath(path) {\n // Remove mountpoint prefix\n if (path.startsWith(this._mountpoint)) {\n path = path.slice(this._mountpoint.length);\n }\n // Add JupyterLab drive name\n if (this._driveName) {\n path = `${this._driveName}${DRIVE_SEPARATOR}${path}`;\n }\n return path;\n }\n}\n/**\n * An Emscripten-compatible synchronous Contents API using the service worker.\n */\nexport class ServiceWorkerContentsAPI extends ContentsAPI {\n constructor(baseUrl, driveName, mountpoint, FS, ERRNO_CODES) {\n super(driveName, mountpoint, FS, ERRNO_CODES);\n this._baseUrl = baseUrl;\n }\n request(data) {\n const xhr = new XMLHttpRequest();\n xhr.open('POST', encodeURI(this.endpoint), false);\n try {\n xhr.send(JSON.stringify(data));\n }\n catch (e) {\n console.error(e);\n }\n if (xhr.status >= 400) {\n throw new this.FS.ErrnoError(this.ERRNO_CODES['EINVAL']);\n }\n return JSON.parse(xhr.responseText);\n }\n /**\n * Get the api/drive endpoint\n */\n get endpoint() {\n return `${this._baseUrl}api/drive`;\n }\n}\nexport class DriveFS {\n constructor(options) {\n this.FS = options.FS;\n this.PATH = options.PATH;\n this.ERRNO_CODES = options.ERRNO_CODES;\n this.API = this.createAPI(options);\n this.driveName = options.driveName;\n this.node_ops = new DriveFSEmscriptenNodeOps(this);\n this.stream_ops = new DriveFSEmscriptenStreamOps(this);\n }\n /**\n * Create the ContentsAPI.\n *\n * This is supposed to be overwritten if needed.\n */\n createAPI(options) {\n return new ServiceWorkerContentsAPI(options.baseUrl, options.driveName, options.mountpoint, options.FS, options.ERRNO_CODES);\n }\n mount(mount) {\n return this.createNode(null, mount.mountpoint, DIR_MODE | 511, 0);\n }\n createNode(parent, name, mode, dev) {\n const FS = this.FS;\n if (!FS.isDir(mode) && !FS.isFile(mode)) {\n throw new FS.ErrnoError(this.ERRNO_CODES['EINVAL']);\n }\n const node = FS.createNode(parent, name, mode, dev);\n node.node_ops = this.node_ops;\n node.stream_ops = this.stream_ops;\n return node;\n }\n getMode(path) {\n return this.API.getmode(path);\n }\n realPath(node) {\n const parts = [];\n let currentNode = node;\n parts.push(currentNode.name);\n while (currentNode.parent !== currentNode) {\n currentNode = currentNode.parent;\n parts.push(currentNode.name);\n }\n parts.reverse();\n return this.PATH.join.apply(null, parts);\n }\n}\n//# sourceMappingURL=drivefs.js.map","// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/// <reference path=\"../../../node_modules/@types/emscripten/index.d.ts\" />\nexport const DIR_MODE = 16895; // 040777\nexport const FILE_MODE = 33206; // 100666\nexport const SEEK_CUR = 1;\nexport const SEEK_END = 2;\nexport function instanceOfStream(nodeOrStream) {\n return 'node' in nodeOrStream;\n}\n//# sourceMappingURL=emscripten.js.map","var __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __esm = (fn, res) => function __init() {\n return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;\n};\nvar __commonJS = (cb, mod) => function __require() {\n return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;\n};\nvar __copyProps = (to, from2, except, desc) => {\n if (from2 && typeof from2 === \"object\" || typeof from2 === \"function\") {\n for (let key of __getOwnPropNames(from2))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from2[key], enumerable: !(desc = __getOwnPropDesc(from2, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\n\n// node_modules/@esbuild-plugins/node-globals-polyfill/process.js\nfunction defaultSetTimout() {\n throw new Error(\"setTimeout has not been defined\");\n}\nfunction defaultClearTimeout() {\n throw new Error(\"clearTimeout has not been defined\");\n}\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n return setTimeout(fun, 0);\n }\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n return cachedSetTimeout(fun, 0);\n } catch (e) {\n try {\n return cachedSetTimeout.call(null, fun, 0);\n } catch (e2) {\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n return clearTimeout(marker);\n }\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n return cachedClearTimeout(marker);\n } catch (e) {\n try {\n return cachedClearTimeout.call(null, marker);\n } catch (e2) {\n return cachedClearTimeout.call(this, marker);\n }\n }\n}\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n var len = queue.length;\n while (len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\nfunction nextTick(fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n}\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nfunction noop() {\n}\nfunction binding(name) {\n throw new Error(\"process.binding is not supported\");\n}\nfunction cwd() {\n return \"/\";\n}\nfunction chdir(dir) {\n throw new Error(\"process.chdir is not supported\");\n}\nfunction umask() {\n return 0;\n}\nfunction hrtime(previousTimestamp) {\n var clocktime = performanceNow.call(performance2) * 1e-3;\n var seconds = Math.floor(clocktime);\n var nanoseconds = Math.floor(clocktime % 1 * 1e9);\n if (previousTimestamp) {\n seconds = seconds - previousTimestamp[0];\n nanoseconds = nanoseconds - previousTimestamp[1];\n if (nanoseconds < 0) {\n seconds--;\n nanoseconds += 1e9;\n }\n }\n return [seconds, nanoseconds];\n}\nfunction uptime() {\n var currentTime = /* @__PURE__ */ new Date();\n var dif = currentTime - startTime;\n return dif / 1e3;\n}\nvar cachedSetTimeout, cachedClearTimeout, queue, draining, currentQueue, queueIndex, title, platform, browser, env, argv, version, versions, release, config, on, addListener, once, off, removeListener, removeAllListeners, emit, performance2, performanceNow, startTime, process, defines;\nvar init_process = __esm({\n \"node_modules/@esbuild-plugins/node-globals-polyfill/process.js\"() {\n cachedSetTimeout = defaultSetTimout;\n cachedClearTimeout = defaultClearTimeout;\n if (typeof globalThis.setTimeout === \"function\") {\n cachedSetTimeout = setTimeout;\n }\n if (typeof globalThis.clearTimeout === \"function\") {\n cachedClearTimeout = clearTimeout;\n }\n queue = [];\n draining = false;\n queueIndex = -1;\n Item.prototype.run = function() {\n this.fun.apply(null, this.array);\n };\n title = \"browser\";\n platform = \"browser\";\n browser = true;\n env = {};\n argv = [];\n version = \"\";\n versions = {};\n release = {};\n config = {};\n on = noop;\n addListener = noop;\n once = noop;\n off = noop;\n removeListener = noop;\n removeAllListeners = noop;\n emit = noop;\n performance2 = globalThis.performance || {};\n performanceNow = performance2.now || performance2.mozNow || performance2.msNow || performance2.oNow || performance2.webkitNow || function() {\n return (/* @__PURE__ */ new Date()).getTime();\n };\n startTime = /* @__PURE__ */ new Date();\n process = {\n nextTick,\n title,\n browser,\n env,\n argv,\n version,\n versions,\n on,\n addListener,\n once,\n off,\n removeListener,\n removeAllListeners,\n emit,\n binding,\n cwd,\n chdir,\n umask,\n hrtime,\n platform,\n release,\n config,\n uptime\n };\n defines = {};\n Object.keys(defines).forEach((key) => {\n const segs = key.split(\".\");\n let target = process;\n for (let i = 0; i < segs.length; i++) {\n const seg = segs[i];\n if (i === segs.length - 1) {\n target[seg] = defines[key];\n } else {\n target = target[seg] || (target[seg] = {});\n }\n }\n });\n }\n});\n\n// node_modules/@esbuild-plugins/node-globals-polyfill/Buffer.js\nfunction init() {\n inited = true;\n var code = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n for (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i];\n revLookup[code.charCodeAt(i)] = i;\n }\n revLookup[\"-\".charCodeAt(0)] = 62;\n revLookup[\"_\".charCodeAt(0)] = 63;\n}\nfunction base64toByteArray(b64) {\n if (!inited) {\n init();\n }\n var i, j, l, tmp, placeHolders, arr;\n var len = b64.length;\n if (len % 4 > 0) {\n throw new Error(\"Invalid string. Length must be a multiple of 4\");\n }\n placeHolders = b64[len - 2] === \"=\" ? 2 : b64[len - 1] === \"=\" ? 1 : 0;\n arr = new Arr(len * 3 / 4 - placeHolders);\n l = placeHolders > 0 ? len - 4 : len;\n var L = 0;\n for (i = 0, j = 0; i < l; i += 4, j += 3) {\n tmp = revLookup[b64.charCodeAt(i)] << 18 | revLookup[b64.charCodeAt(i + 1)] << 12 | revLookup[b64.charCodeAt(i + 2)] << 6 | revLookup[b64.charCodeAt(i + 3)];\n arr[L++] = tmp >> 16 & 255;\n arr[L++] = tmp >> 8 & 255;\n arr[L++] = tmp & 255;\n }\n if (placeHolders === 2) {\n tmp = revLookup[b64.charCodeAt(i)] << 2 | revLookup[b64.charCodeAt(i + 1)] >> 4;\n arr[L++] = tmp & 255;\n } else if (placeHolders === 1) {\n tmp = revLookup[b64.charCodeAt(i)] << 10 | revLookup[b64.charCodeAt(i + 1)] << 4 | revLookup[b64.charCodeAt(i + 2)] >> 2;\n arr[L++] = tmp >> 8 & 255;\n arr[L++] = tmp & 255;\n }\n return arr;\n}\nfunction tripletToBase64(num) {\n return lookup[num >> 18 & 63] + lookup[num >> 12 & 63] + lookup[num >> 6 & 63] + lookup[num & 63];\n}\nfunction encodeChunk(uint8, start, end) {\n var tmp;\n var output = [];\n for (var i = start; i < end; i += 3) {\n tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + uint8[i + 2];\n output.push(tripletToBase64(tmp));\n }\n return output.join(\"\");\n}\nfunction base64fromByteArray(uint8) {\n if (!inited) {\n init();\n }\n var tmp;\n var len = uint8.length;\n var extraBytes = len % 3;\n var output = \"\";\n var parts = [];\n var maxChunkLength = 16383;\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(\n encodeChunk(\n uint8,\n i,\n i + maxChunkLength > len2 ? len2 : i + maxChunkLength\n )\n );\n }\n if (extraBytes === 1) {\n tmp = uint8[len - 1];\n output += lookup[tmp >> 2];\n output += lookup[tmp << 4 & 63];\n output += \"==\";\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1];\n output += lookup[tmp >> 10];\n output += lookup[tmp >> 4 & 63];\n output += lookup[tmp << 2 & 63];\n output += \"=\";\n }\n parts.push(output);\n return parts.join(\"\");\n}\nfunction kMaxLength() {\n return Buffer2.TYPED_ARRAY_SUPPORT ? 2147483647 : 1073741823;\n}\nfunction createBuffer(that, length) {\n if (kMaxLength() < length) {\n throw new RangeError(\"Invalid typed array length\");\n }\n if (Buffer2.TYPED_ARRAY_SUPPORT) {\n that = new Uint8Array(length);\n that.__proto__ = Buffer2.prototype;\n } else {\n if (that === null) {\n that = new Buffer2(length);\n }\n that.length = length;\n }\n return that;\n}\nfunction Buffer2(arg, encodingOrOffset, length) {\n if (!Buffer2.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer2)) {\n return new Buffer2(arg, encodingOrOffset, length);\n }\n if (typeof arg === \"number\") {\n if (typeof encodingOrOffset === \"string\") {\n throw new Error(\n \"If encoding is specified then the first argument must be a string\"\n );\n }\n return allocUnsafe(this, arg);\n }\n return from(this, arg, encodingOrOffset, length);\n}\nfunction from(that, value, encodingOrOffset, length) {\n if (typeof value === \"number\") {\n throw new TypeError('\"value\" argument must not be a number');\n }\n if (typeof ArrayBuffer !== \"undefined\" && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length);\n }\n if (typeof value === \"string\") {\n return fromString(that, value, encodingOrOffset);\n }\n return fromObject(that, value);\n}\nfunction assertSize(size) {\n if (typeof size !== \"number\") {\n throw new TypeError('\"size\" argument must be a number');\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative');\n }\n}\nfunction alloc(that, size, fill2, encoding) {\n assertSize(size);\n if (size <= 0) {\n return createBuffer(that, size);\n }\n if (fill2 !== void 0) {\n return typeof encoding === \"string\" ? createBuffer(that, size).fill(fill2, encoding) : createBuffer(that, size).fill(fill2);\n }\n return createBuffer(that, size);\n}\nfunction allocUnsafe(that, size) {\n assertSize(size);\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0);\n if (!Buffer2.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0;\n }\n }\n return that;\n}\nfunction fromString(that, string, encoding) {\n if (typeof encoding !== \"string\" || encoding === \"\") {\n encoding = \"utf8\";\n }\n if (!Buffer2.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding');\n }\n var length = byteLength(string, encoding) | 0;\n that = createBuffer(that, length);\n var actual = that.write(string, encoding);\n if (actual !== length) {\n that = that.slice(0, actual);\n }\n return that;\n}\nfunction fromArrayLike(that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0;\n that = createBuffer(that, length);\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255;\n }\n return that;\n}\nfunction fromArrayBuffer(that, array, byteOffset, length) {\n array.byteLength;\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError(\"'offset' is out of bounds\");\n }\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError(\"'length' is out of bounds\");\n }\n if (byteOffset === void 0 && length === void 0) {\n array = new Uint8Array(array);\n } else if (length === void 0) {\n array = new Uint8Array(array, byteOffset);\n } else {\n array = new Uint8Array(array, byteOffset, length);\n }\n if (Buffer2.TYPED_ARRAY_SUPPORT) {\n that = array;\n that.__proto__ = Buffer2.prototype;\n } else {\n that = fromArrayLike(that, array);\n }\n return that;\n}\nfunction fromObject(that, obj) {\n if (internalIsBuffer(obj)) {\n var len = checked(obj.length) | 0;\n that = createBuffer(that, len);\n if (that.length === 0) {\n return that;\n }\n obj.copy(that, 0, 0, len);\n return that;\n }\n if (obj) {\n if (typeof ArrayBuffer !== \"undefined\" && obj.buffer instanceof ArrayBuffer || \"length\" in obj) {\n if (typeof obj.length !== \"number\" || isnan(obj.length)) {\n return createBuffer(that, 0);\n }\n return fromArrayLike(that, obj);\n }\n if (obj.type === \"Buffer\" && Array.isArray(obj.data)) {\n return fromArrayLike(that, obj.data);\n }\n }\n throw new TypeError(\n \"First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.\"\n );\n}\nfunction checked(length) {\n if (length >= kMaxLength()) {\n throw new RangeError(\n \"Attempt to allocate Buffer larger than maximum size: 0x\" + kMaxLength().toString(16) + \" bytes\"\n );\n }\n return length | 0;\n}\nfunction internalIsBuffer(b) {\n return !!(b != null && b._isBuffer);\n}\nfunction byteLength(string, encoding) {\n if (internalIsBuffer(string)) {\n return string.length;\n }\n if (typeof ArrayBuffer !== \"undefined\" && typeof ArrayBuffer.isView === \"function\" && (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength;\n }\n if (typeof string !== \"string\") {\n string = \"\" + string;\n }\n var len = string.length;\n if (len === 0) return 0;\n var loweredCase = false;\n for (; ; ) {\n switch (encoding) {\n case \"ascii\":\n case \"latin1\":\n case \"binary\":\n return len;\n case \"utf8\":\n case \"utf-8\":\n case void 0:\n return utf8ToBytes(string).length;\n case \"ucs2\":\n case \"ucs-2\":\n case \"utf16le\":\n case \"utf-16le\":\n return len * 2;\n case \"hex\":\n return len >>> 1;\n case \"base64\":\n return base64ToBytes(string).length;\n default:\n if (loweredCase) return utf8ToBytes(string).length;\n encoding = (\"\" + encoding).toLowerCase();\n loweredCase = true;\n }\n }\n}\nfunction slowToString(encoding, start, end) {\n var loweredCase = false;\n if (start === void 0 || start < 0) {\n start = 0;\n }\n if (start > this.length) {\n return \"\";\n }\n if (end === void 0 || end > this.length) {\n end = this.length;\n }\n if (end <= 0) {\n return \"\";\n }\n end >>>= 0;\n start >>>= 0;\n if (end <= start) {\n return \"\";\n }\n if (!encoding) encoding = \"utf8\";\n while (true) {\n switch (encoding) {\n case \"hex\":\n return hexSlice(this, start, end);\n case \"utf8\":\n case \"utf-8\":\n return utf8Slice(this, start, end);\n case \"ascii\":\n return asciiSlice(this, start, end);\n case \"latin1\":\n case \"binary\":\n return latin1Slice(this, start, end);\n case \"base64\":\n return base64Slice(this, start, end);\n case \"ucs2\":\n case \"ucs-2\":\n case \"utf16le\":\n case \"utf-16le\":\n return utf16leSlice(this, start, end);\n default:\n if (loweredCase)\n throw new TypeError(\"Unknown encoding: \" + encoding);\n encoding = (encoding + \"\").toLowerCase();\n loweredCase = true;\n }\n }\n}\nfunction swap(b, n, m) {\n var i = b[n];\n b[n] = b[m];\n b[m] = i;\n}\nfunction bidirectionalIndexOf(buffer, val, byteOffset, encoding, dir) {\n if (buffer.length === 0) return -1;\n if (typeof byteOffset === \"string\") {\n encoding = byteOffset;\n byteOffset = 0;\n } else if (byteOffset > 2147483647) {\n byteOffset = 2147483647;\n } else if (byteOffset < -2147483648) {\n byteOffset = -2147483648;\n }\n byteOffset = +byteOffset;\n if (isNaN(byteOffset)) {\n byteOffset = dir ? 0 : buffer.length - 1;\n }\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset;\n if (byteOffset >= buffer.length) {\n if (dir) return -1;\n else byteOffset = buffer.length - 1;\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0;\n else return -1;\n }\n if (typeof val === \"string\") {\n val = Buffer2.from(val, encoding);\n }\n if (internalIsBuffer(val)) {\n if (val.length === 0) {\n return -1;\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir);\n } else if (typeof val === \"number\") {\n val = val & 255;\n if (Buffer2.TYPED_ARRAY_SUPPORT && typeof Uint8Array.prototype.indexOf === \"function\") {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(\n buffer,\n val,\n byteOffset\n );\n } else {\n return Uint8Array.prototype.lastIndexOf.call(\n buffer,\n val,\n byteOffset\n );\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir);\n }\n throw new TypeError(\"val must be string, number or Buffer\");\n}\nfunction arrayIndexOf(arr, val, byteOffset, encoding, dir) {\n var indexSize = 1;\n var arrLength = arr.length;\n var valLength = val.length;\n if (encoding !== void 0) {\n encoding = String(encoding).toLowerCase();\n if (encoding === \"ucs2\" || encoding === \"ucs-2\" || encoding === \"utf16le\" || encoding === \"utf-16le\") {\n if (arr.length < 2 || val.length < 2) {\n return -1;\n }\n indexSize = 2;\n arrLength /= 2;\n valLength /= 2;\n byteOffset /= 2;\n }\n }\n function read(buf, i2) {\n if (indexSize === 1) {\n return buf[i2];\n } else {\n return buf.readUInt16BE(i2 * indexSize);\n }\n }\n var i;\n if (dir) {\n var foundIndex = -1;\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i;\n if (i - foundIndex + 1 === valLength)\n return foundIndex * indexSize;\n } else {\n if (foundIndex !== -1) i -= i - foundIndex;\n foundIndex = -1;\n }\n }\n } else {\n if (byteOffset + valLength > arrLength)\n byteOffset = arrLength - valLength;\n for (i = byteOffset; i >= 0; i--) {\n var found = true;\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false;\n break;\n }\n }\n if (found) return i;\n }\n }\n return -1;\n}\nfunction hexWrite(buf, string, offset, length) {\n offset = Number(offset) || 0;\n var remaining = buf.length - offset;\n if (!length) {\n length = remaining;\n } else {\n length = Number(length);\n if (length > remaining) {\n length = remaining;\n }\n }\n var strLen = string.length;\n if (strLen % 2 !== 0) throw new TypeError(\"Invalid hex string\");\n if (length > strLen / 2) {\n length = strLen / 2;\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16);\n if (isNaN(parsed)) return i;\n buf[offset + i] = parsed;\n }\n return i;\n}\nfunction utf8Write(buf, string, offset, length) {\n return blitBuffer(\n utf8ToBytes(string, buf.length - offset),\n buf,\n offset,\n length\n );\n}\nfunction asciiWrite(buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length);\n}\nfunction latin1Write(buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length);\n}\nfunction base64Write(buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length);\n}\nfunction ucs2Write(buf, string, offset, length) {\n return blitBuffer(\n utf16leToBytes(string, buf.length - offset),\n buf,\n offset,\n length\n );\n}\nfunction base64Slice(buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64fromByteArray(buf);\n } else {\n return base64fromByteArray(buf.slice(start, end));\n }\n}\nfunction utf8Slice(buf, start, end) {\n end = Math.min(buf.length, end);\n var res = [];\n var i = start;\n while (i < end) {\n var firstByte = buf[i];\n var codePoint = null;\n var bytesPerSequence = firstByte > 239 ? 4 : firstByte > 223 ? 3 : firstByte > 191 ? 2 : 1;\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint;\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 128) {\n codePoint = firstByte;\n }\n break;\n case 2:\n secondByte = buf[i + 1];\n if ((secondByte & 192) === 128) {\n tempCodePoint = (firstByte & 31) << 6 | secondByte & 63;\n if (tempCodePoint > 127) {\n codePoint = tempCodePoint;\n }\n }\n break;\n case 3:\n secondByte = buf[i + 1];\n thirdByte = buf[i + 2];\n if ((secondByte & 192) === 128 && (thirdByte & 192) === 128) {\n tempCodePoint = (firstByte & 15) << 12 | (secondByte & 63) << 6 | thirdByte & 63;\n if (tempCodePoint > 2047 && (tempCodePoint < 55296 || tempCodePoint > 57343)) {\n codePoint = tempCodePoint;\n }\n }\n break;\n case 4:\n secondByte = buf[i + 1];\n thirdByte = buf[i + 2];\n fourthByte = buf[i + 3];\n if ((secondByte & 192) === 128 && (thirdByte & 192) === 128 && (fourthByte & 192) === 128) {\n tempCodePoint = (firstByte & 15) << 18 | (secondByte & 63) << 12 | (thirdByte & 63) << 6 | fourthByte & 63;\n if (tempCodePoint > 65535 && tempCodePoint < 1114112) {\n codePoint = tempCodePoint;\n }\n }\n }\n }\n if (codePoint === null) {\n codePoint = 65533;\n bytesPerSequence = 1;\n } else if (codePoint > 65535) {\n codePoint -= 65536;\n res.push(codePoint >>> 10 & 1023 | 55296);\n codePoint = 56320 | codePoint & 1023;\n }\n res.push(codePoint);\n i += bytesPerSequence;\n }\n return decodeCodePointsArray(res);\n}\nfunction decodeCodePointsArray(codePoints) {\n var len = codePoints.length;\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints);\n }\n var res = \"\";\n var i = 0;\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n );\n }\n return res;\n}\nfunction asciiSlice(buf, start, end) {\n var ret = \"\";\n end = Math.min(buf.length, end);\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 127);\n }\n return ret;\n}\nfunction latin1Slice(buf, start, end) {\n var ret = \"\";\n end = Math.min(buf.length, end);\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i]);\n }\n return ret;\n}\nfunction hexSlice(buf, start, end) {\n var len = buf.length;\n if (!start || start < 0) start = 0;\n if (!end || end < 0 || end > len) end = len;\n var out = \"\";\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i]);\n }\n return out;\n}\nfunction utf16leSlice(buf, start, end) {\n var bytes = buf.slice(start, end);\n var res = \"\";\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256);\n }\n return res;\n}\nfunction checkOffset(offset, ext, length) {\n if (offset % 1 !== 0 || offset < 0)\n throw new RangeError(\"offset is not uint\");\n if (offset + ext > length)\n throw new RangeError(\"Trying to access beyond buffer length\");\n}\nfunction checkInt(buf, value, offset, ext, max, min) {\n if (!internalIsBuffer(buf))\n throw new TypeError('\"buffer\" argument must be a Buffer instance');\n if (value > max || value < min)\n throw new RangeError('\"value\" argument is out of bounds');\n if (offset + ext > buf.length) throw new RangeError(\"Index out of range\");\n}\nfunction objectWriteUInt16(buf, value, offset, littleEndian) {\n if (value < 0) value = 65535 + value + 1;\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & 255 << 8 * (littleEndian ? i : 1 - i)) >>> (littleEndian ? i : 1 - i) * 8;\n }\n}\nfunction objectWriteUInt32(buf, value, offset, littleEndian) {\n if (value < 0) value = 4294967295 + value + 1;\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = value >>> (littleEndian ? i : 3 - i) * 8 & 255;\n }\n}\nfunction checkIEEE754(buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError(\"Index out of range\");\n if (offset < 0) throw new RangeError(\"Index out of range\");\n}\nfunction writeFloat(buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(\n buf,\n value,\n offset,\n 4,\n 34028234663852886e22,\n -34028234663852886e22\n );\n }\n ieee754write(buf, value, offset, littleEndian, 23, 4);\n return offset + 4;\n}\nfunction writeDouble(buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(\n buf,\n value,\n offset,\n 8,\n 17976931348623157e292,\n -17976931348623157e292\n );\n }\n ieee754write(buf, value, offset, littleEndian, 52, 8);\n return offset + 8;\n}\nfunction base64clean(str) {\n str = stringtrim(str).replace(INVALID_BASE64_RE, \"\");\n if (str.length < 2) return \"\";\n while (str.length % 4 !== 0) {\n str = str + \"=\";\n }\n return str;\n}\nfunction stringtrim(str) {\n if (str.trim) return str.trim();\n return str.replace(/^\\s+|\\s+$/g, \"\");\n}\nfunction toHex(n) {\n if (n < 16) return \"0\" + n.toString(16);\n return n.toString(16);\n}\nfunction utf8ToBytes(string, units) {\n units = units || Infinity;\n var codePoint;\n var length = string.length;\n var leadSurrogate = null;\n var bytes = [];\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i);\n if (codePoint > 55295 && codePoint < 57344) {\n if (!leadSurrogate) {\n if (codePoint > 56319) {\n if ((units -= 3) > -1) bytes.push(239, 191, 189);\n continue;\n } else if (i + 1 === length) {\n if ((units -= 3) > -1) bytes.push(239, 191, 189);\n continue;\n }\n leadSurrogate = codePoint;\n continue;\n }\n if (codePoint < 56320) {\n if ((units -= 3) > -1) bytes.push(239, 191, 189);\n leadSurrogate = codePoint;\n continue;\n }\n codePoint = (leadSurrogate - 55296 << 10 | codePoint - 56320) + 65536;\n } else if (leadSurrogate) {\n if ((units -= 3) > -1) bytes.push(239, 191, 189);\n }\n leadSurrogate = null;\n if (codePoint < 128) {\n if ((units -= 1) < 0) break;\n bytes.push(codePoint);\n } else if (codePoint < 2048) {\n if ((units -= 2) < 0) break;\n bytes.push(codePoint >> 6 | 192, codePoint & 63 | 128);\n } else if (codePoint < 65536) {\n if ((units -= 3) < 0) break;\n bytes.push(\n codePoint >> 12 | 224,\n codePoint >> 6 & 63 | 128,\n codePoint & 63 | 128\n );\n } else if (codePoint < 1114112) {\n if ((units -= 4) < 0) break;\n bytes.push(\n codePoint >> 18 | 240,\n codePoint >> 12 & 63 | 128,\n codePoint >> 6 & 63 | 128,\n codePoint & 63 | 128\n );\n } else {\n throw new Error(\"Invalid code point\");\n }\n }\n return bytes;\n}\nfunction asciiToBytes(str) {\n var byteArray = [];\n for (var i = 0; i < str.length; ++i) {\n byteArray.push(str.charCodeAt(i) & 255);\n }\n return byteArray;\n}\nfunction utf16leToBytes(str, units) {\n var c, hi, lo;\n var byteArray = [];\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break;\n c = str.charCodeAt(i);\n hi = c >> 8;\n lo = c % 256;\n byteArray.push(lo);\n byteArray.push(hi);\n }\n return byteArray;\n}\nfunction base64ToBytes(str) {\n return base64toByteArray(base64clean(str));\n}\nfunction blitBuffer(src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if (i + offset >= dst.length || i >= src.length) break;\n dst[i + offset] = src[i];\n }\n return i;\n}\nfunction isnan(val) {\n return val !== val;\n}\nfunction isBuffer(obj) {\n return obj != null && (!!obj._isBuffer || isFastBuffer(obj) || isSlowBuffer(obj));\n}\nfunction isFastBuffer(obj) {\n return !!obj.constructor && typeof obj.constructor.isBuffer === \"function\" && obj.constructor.isBuffer(obj);\n}\nfunction isSlowBuffer(obj) {\n return typeof obj.readFloatLE === \"function\" && typeof obj.slice === \"function\" && isFastBuffer(obj.slice(0, 0));\n}\nfunction ieee754read(buffer, offset, isLE, mLen, nBytes) {\n var e, m;\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var nBits = -7;\n var i = isLE ? nBytes - 1 : 0;\n var d = isLE ? -1 : 1;\n var s = buffer[offset + i];\n i += d;\n e = s & (1 << -nBits) - 1;\n s >>= -nBits;\n nBits += eLen;\n for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {\n }\n m = e & (1 << -nBits) - 1;\n e >>= -nBits;\n nBits += mLen;\n for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {\n }\n if (e === 0) {\n e = 1 - eBias;\n } else if (e === eMax) {\n return m ? NaN : (s ? -1 : 1) * Infinity;\n } else {\n m = m + Math.pow(2, mLen);\n e = e - eBias;\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen);\n}\nfunction ieee754write(buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c;\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var rt = mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0;\n var i = isLE ? 0 : nBytes - 1;\n var d = isLE ? 1 : -1;\n var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;\n value = Math.abs(value);\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0;\n e = eMax;\n } else {\n e = Math.floor(Math.log(value) / Math.LN2);\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--;\n c *= 2;\n }\n if (e + eBias >= 1) {\n value += rt / c;\n } else {\n value += rt * Math.pow(2, 1 - eBias);\n }\n if (value * c >= 2) {\n e++;\n c /= 2;\n }\n if (e + eBias >= eMax) {\n m = 0;\n e = eMax;\n } else if (e + eBias >= 1) {\n m = (value * c - 1) * Math.pow(2, mLen);\n e = e + eBias;\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);\n e = 0;\n }\n }\n for (; mLen >= 8; buffer[offset + i] = m & 255, i += d, m /= 256, mLen -= 8) {\n }\n e = e << mLen | m;\n eLen += mLen;\n for (; eLen > 0; buffer[offset + i] = e & 255, i += d, e /= 256, eLen -= 8) {\n }\n buffer[offset + i - d] |= s * 128;\n}\nvar lookup, revLookup, Arr, inited, MAX_ARGUMENTS_LENGTH, INVALID_BASE64_RE;\nvar init_Buffer = __esm({\n \"node_modules/@esbuild-plugins/node-globals-polyfill/Buffer.js\"() {\n init_process();\n init_buffer();\n lookup = [];\n revLookup = [];\n Arr = typeof Uint8Array !== \"undefined\" ? Uint8Array : Array;\n inited = false;\n Buffer2.TYPED_ARRAY_SUPPORT = globalThis.TYPED_ARRAY_SUPPORT !== void 0 ? globalThis.TYPED_ARRAY_SUPPORT : true;\n Buffer2.poolSize = 8192;\n Buffer2._augment = function(arr) {\n arr.__proto__ = Buffer2.prototype;\n return arr;\n };\n Buffer2.from = function(value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length);\n };\n Buffer2.kMaxLength = kMaxLength();\n if (Buffer2.TYPED_ARRAY_SUPPORT) {\n Buffer2.prototype.__proto__ = Uint8Array.prototype;\n Buffer2.__proto__ = Uint8Array;\n if (typeof Symbol !== \"undefined\" && Symbol.species && Buffer2[Symbol.species] === Buffer2) {\n }\n }\n Buffer2.alloc = function(size, fill2, encoding) {\n return alloc(null, size, fill2, encoding);\n };\n Buffer2.allocUnsafe = function(size) {\n return allocUnsafe(null, size);\n };\n Buffer2.allocUnsafeSlow = function(size) {\n return allocUnsafe(null, size);\n };\n Buffer2.isBuffer = isBuffer;\n Buffer2.compare = function compare(a, b) {\n if (!internalIsBuffer(a) || !internalIsBuffer(b)) {\n throw new TypeError(\"Arguments must be Buffers\");\n }\n if (a === b) return 0;\n var x = a.length;\n var y = b.length;\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i];\n y = b[i];\n break;\n }\n }\n if (x < y) return -1;\n if (y < x) return 1;\n return 0;\n };\n Buffer2.isEncoding = function isEncoding(encoding) {\n switch (String(encoding).toLowerCase()) {\n case \"hex\":\n case \"utf8\":\n case \"utf-8\":\n case \"ascii\":\n case \"latin1\":\n case \"binary\":\n case \"base64\":\n case \"ucs2\":\n case \"ucs-2\":\n case \"utf16le\":\n case \"utf-16le\":\n return true;\n default:\n return false;\n }\n };\n Buffer2.concat = function concat(list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers');\n }\n if (list.length === 0) {\n return Buffer2.alloc(0);\n }\n var i;\n if (length === void 0) {\n length = 0;\n for (i = 0; i < list.length; ++i) {\n length += list[i].length;\n }\n }\n var buffer = Buffer2.allocUnsafe(length);\n var pos = 0;\n for (i = 0; i < list.length; ++i) {\n var buf = list[i];\n if (!internalIsBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers');\n }\n buf.copy(buffer, pos);\n pos += buf.length;\n }\n return buffer;\n };\n Buffer2.byteLength = byteLength;\n Buffer2.prototype._isBuffer = true;\n Buffer2.prototype.swap16 = function swap16() {\n var len = this.length;\n if (len % 2 !== 0) {\n throw new RangeError(\"Buffer size must be a multiple of 16-bits\");\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1);\n }\n return this;\n };\n Buffer2.prototype.swap32 = function swap32() {\n var len = this.length;\n if (len % 4 !== 0) {\n throw new RangeError(\"Buffer size must be a multiple of 32-bits\");\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3);\n swap(this, i + 1, i + 2);\n }\n return this;\n };\n Buffer2.prototype.swap64 = function swap64() {\n var len = this.length;\n if (len % 8 !== 0) {\n throw new RangeError(\"Buffer size must be a multiple of 64-bits\");\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7);\n swap(this, i + 1, i + 6);\n swap(this, i + 2, i + 5);\n swap(this, i + 3, i + 4);\n }\n return this;\n };\n Buffer2.prototype.toString = function toString() {\n var length = this.length | 0;\n if (length === 0) return \"\";\n if (arguments.length === 0) return utf8Slice(this, 0, length);\n return slowToString.apply(this, arguments);\n };\n Buffer2.prototype.equals = function equals(b) {\n if (!internalIsBuffer(b)) throw new TypeError(\"Argument must be a Buffer\");\n if (this === b) return true;\n return Buffer2.compare(this, b) === 0;\n };\n Buffer2.prototype.compare = function compare2(target, start, end, thisStart, thisEnd) {\n if (!internalIsBuffer(target)) {\n throw new TypeError(\"Argument must be a Buffer\");\n }\n if (start === void 0) {\n start = 0;\n }\n if (end === void 0) {\n end = target ? target.length : 0;\n }\n if (thisStart === void 0) {\n thisStart = 0;\n }\n if (thisEnd === void 0) {\n thisEnd = this.length;\n }\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError(\"out of range index\");\n }\n if (thisStart >= thisEnd && start >= end) {\n return 0;\n }\n if (thisStart >= thisEnd) {\n return -1;\n }\n if (start >= end) {\n return 1;\n }\n start >>>= 0;\n end >>>= 0;\n thisStart >>>= 0;\n thisEnd >>>= 0;\n if (this === target) return 0;\n var x = thisEnd - thisStart;\n var y = end - start;\n var len = Math.min(x, y);\n var thisCopy = this.slice(thisStart, thisEnd);\n var targetCopy = target.slice(start, end);\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i];\n y = targetCopy[i];\n break;\n }\n }\n if (x < y) return -1;\n if (y < x) return 1;\n return 0;\n };\n Buffer2.prototype.includes = function includes(val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1;\n };\n Buffer2.prototype.indexOf = function indexOf(val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true);\n };\n Buffer2.prototype.lastIndexOf = function lastIndexOf(val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false);\n };\n Buffer2.prototype.write = function write(string, offset, length, encoding) {\n if (offset === void 0) {\n encoding = \"utf8\";\n length = this.length;\n offset = 0;\n } else if (length === void 0 && typeof offset === \"string\") {\n encoding = offset;\n length = this.length;\n offset = 0;\n } else if (isFinite(offset)) {\n offset = offset | 0;\n if (isFinite(length)) {\n length = length | 0;\n if (encoding === void 0) encoding = \"utf8\";\n } else {\n encoding = length;\n length = void 0;\n }\n } else {\n throw new Error(\n \"Buffer.write(string, encoding, offset[, length]) is no longer supported\"\n );\n }\n var remaining = this.length - offset;\n if (length === void 0 || length > remaining) length = remaining;\n if (string.length > 0 && (length < 0 || offset < 0) || offset > this.length) {\n throw new RangeError(\"Attempt to write outside buffer bounds\");\n }\n if (!encoding) encoding = \"utf8\";\n var loweredCase = false;\n for (; ; ) {\n switch (encoding) {\n case \"hex\":\n return hexWrite(this, string, offset, length);\n case \"utf8\":\n case \"utf-8\":\n return utf8Write(this, string, offset, length);\n case \"ascii\":\n return asciiWrite(this, string, offset, length);\n case \"latin1\":\n case \"binary\":\n return latin1Write(this, string, offset, length);\n case \"base64\":\n return base64Write(this, string, offset, length);\n case \"ucs2\":\n case \"ucs-2\":\n case \"utf16le\":\n case \"utf-16le\":\n return ucs2Write(this, string, offset, length);\n default:\n if (loweredCase)\n throw new TypeError(\"Unknown encoding: \" + encoding);\n encoding = (\"\" + encoding).toLowerCase();\n loweredCase = true;\n }\n }\n };\n Buffer2.prototype.toJSON = function toJSON() {\n return {\n type: \"Buffer\",\n data: Array.prototype.slice.call(this._arr || this, 0)\n };\n };\n MAX_ARGUMENTS_LENGTH = 4096;\n Buffer2.prototype.slice = function slice(start, end) {\n var len = this.length;\n start = ~~start;\n end = end === void 0 ? len : ~~end;\n if (start < 0) {\n start += len;\n if (start < 0) start = 0;\n } else if (start > len) {\n start = len;\n }\n if (end < 0) {\n end += len;\n if (end < 0) end = 0;\n } else if (end > len) {\n end = len;\n }\n if (end < start) end = start;\n var newBuf;\n if (Buffer2.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end);\n newBuf.__proto__ = Buffer2.prototype;\n } else {\n var sliceLen = end - start;\n newBuf = new Buffer2(sliceLen, void 0);\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start];\n }\n }\n return newBuf;\n };\n Buffer2.prototype.readUIntLE = function readUIntLE(offset, byteLength2, noAssert) {\n offset = offset | 0;\n byteLength2 = byteLength2 | 0;\n if (!noAssert) checkOffset(offset, byteLength2, this.length);\n var val = this[offset];\n var mul = 1;\n var i = 0;\n while (++i < byteLength2 && (mul *= 256)) {\n val += this[offset + i] * mul;\n }\n return val;\n };\n Buffer2.prototype.readUIntBE = function readUIntBE(offset, byteLength2, noAssert) {\n offset = offset | 0;\n byteLength2 = byteLength2 | 0;\n if (!noAssert) {\n checkOffset(offset, byteLength2, this.length);\n }\n var val = this[offset + --byteLength2];\n var mul = 1;\n while (byteLength2 > 0 && (mul *= 256)) {\n val += this[offset + --byteLength2] * mul;\n }\n return val;\n };\n Buffer2.prototype.readUInt8 = function readUInt8(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length);\n return this[offset];\n };\n Buffer2.prototype.readUInt16LE = function readUInt16LE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n return this[offset] | this[offset + 1] << 8;\n };\n Buffer2.prototype.readUInt16BE = function readUInt16BE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n return this[offset] << 8 | this[offset + 1];\n };\n Buffer2.prototype.readUInt32LE = function readUInt32LE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return (this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16) + this[offset + 3] * 16777216;\n };\n Buffer2.prototype.readUInt32BE = function readUInt32BE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return this[offset] * 16777216 + (this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3]);\n };\n Buffer2.prototype.readIntLE = function readIntLE(offset, byteLength2, noAssert) {\n offset = offset | 0;\n byteLength2 = byteLength2 | 0;\n if (!noAssert) checkOffset(offset, byteLength2, this.length);\n var val = this[offset];\n var mul = 1;\n var i = 0;\n while (++i < byteLength2 && (mul *= 256)) {\n val += this[offset + i] * mul;\n }\n mul *= 128;\n if (val >= mul) val -= Math.pow(2, 8 * byteLength2);\n return val;\n };\n Buffer2.prototype.readIntBE = function readIntBE(offset, byteLength2, noAssert) {\n offset = offset | 0;\n byteLength2 = byteLength2 | 0;\n if (!noAssert) checkOffset(offset, byteLength2, this.length);\n var i = byteLength2;\n var mul = 1;\n var val = this[offset + --i];\n while (i > 0 && (mul *= 256)) {\n val += this[offset + --i] * mul;\n }\n mul *= 128;\n if (val >= mul) val -= Math.pow(2, 8 * byteLength2);\n return val;\n };\n Buffer2.prototype.readInt8 = function readInt8(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length);\n if (!(this[offset] & 128)) return this[offset];\n return (255 - this[offset] + 1) * -1;\n };\n Buffer2.prototype.readInt16LE = function readInt16LE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n var val = this[offset] | this[offset + 1] << 8;\n return val & 32768 ? val | 4294901760 : val;\n };\n Buffer2.prototype.readInt16BE = function readInt16BE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n var val = this[offset + 1] | this[offset] << 8;\n return val & 32768 ? val | 4294901760 : val;\n };\n Buffer2.prototype.readInt32LE = function readInt32LE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16 | this[offset + 3] << 24;\n };\n Buffer2.prototype.readInt32BE = function readInt32BE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return this[offset] << 24 | this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3];\n };\n Buffer2.prototype.readFloatLE = function readFloatLE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return ieee754read(this, offset, true, 23, 4);\n };\n Buffer2.prototype.readFloatBE = function readFloatBE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return ieee754read(this, offset, false, 23, 4);\n };\n Buffer2.prototype.readDoubleLE = function readDoubleLE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length);\n return ieee754read(this, offset, true, 52, 8);\n };\n Buffer2.prototype.readDoubleBE = function readDoubleBE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length);\n return ieee754read(this, offset, false, 52, 8);\n };\n Buffer2.prototype.writeUIntLE = function writeUIntLE(value, offset, byteLength2, noAssert) {\n value = +value;\n offset = offset | 0;\n byteLength2 = byteLength2 | 0;\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength2) - 1;\n checkInt(this, value, offset, byteLength2, maxBytes, 0);\n }\n var mul = 1;\n var i = 0;\n this[offset] = value & 255;\n while (++i < byteLength2 && (mul *= 256)) {\n this[offset + i] = value / mul & 255;\n }\n return offset + byteLength2;\n };\n Buffer2.prototype.writeUIntBE = function writeUIntBE(value, offset, byteLength2, noAssert) {\n value = +value;\n offset = offset | 0;\n byteLength2 = byteLength2 | 0;\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength2) - 1;\n checkInt(this, value, offset, byteLength2, maxBytes, 0);\n }\n var i = byteLength2 - 1;\n var mul = 1;\n this[offset + i] = value & 255;\n while (--i >= 0 && (mul *= 256)) {\n this[offset + i] = value / mul & 255;\n }\n return offset + byteLength2;\n };\n Buffer2.prototype.writeUInt8 = function writeUInt8(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 1, 255, 0);\n if (!Buffer2.TYPED_ARRAY_SUPPORT) value = Math.floor(value);\n this[offset] = value & 255;\n return offset + 1;\n };\n Buffer2.prototype.writeUInt16LE = function writeUInt16LE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 65535, 0);\n if (Buffer2.TYPED_ARRAY_SUPPORT) {\n this[offset] = value & 255;\n this[offset + 1] = value >>> 8;\n } else {\n objectWriteUInt16(this, value, offset, true);\n }\n return offset + 2;\n };\n Buffer2.prototype.writeUInt16BE = function writeUInt16BE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 65535, 0);\n if (Buffer2.TYPED_ARRAY_SUPPORT) {\n this[offset] = value >>> 8;\n this[offset + 1] = value & 255;\n } else {\n objectWriteUInt16(this, value, offset, false);\n }\n return offset + 2;\n };\n Buffer2.prototype.writeUInt32LE = function writeUInt32LE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 4294967295, 0);\n if (Buffer2.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = value >>> 24;\n this[offset + 2] = value >>> 16;\n this[offset + 1] = value >>> 8;\n this[offset] = value & 255;\n } else {\n objectWriteUInt32(this, value, offset, true);\n }\n return offset + 4;\n };\n Buffer2.prototype.writeUInt32BE = function writeUInt32BE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 4294967295, 0);\n if (Buffer2.TYPED_ARRAY_SUPPORT) {\n this[offset] = value >>> 24;\n this[offset + 1] = value >>> 16;\n this[offset + 2] = value >>> 8;\n this[offset + 3] = value & 255;\n } else {\n objectWriteUInt32(this, value, offset, false);\n }\n return offset + 4;\n };\n Buffer2.prototype.writeIntLE = function writeIntLE(value, offset, byteLength2, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength2 - 1);\n checkInt(this, value, offset, byteLength2, limit - 1, -limit);\n }\n var i = 0;\n var mul = 1;\n var sub = 0;\n this[offset] = value & 255;\n while (++i < byteLength2 && (mul *= 256)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1;\n }\n this[offset + i] = (value / mul >> 0) - sub & 255;\n }\n return offset + byteLength2;\n };\n Buffer2.prototype.writeIntBE = function writeIntBE(value, offset, byteLength2, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength2 - 1);\n checkInt(this, value, offset, byteLength2, limit - 1, -limit);\n }\n var i = byteLength2 - 1;\n var mul = 1;\n var sub = 0;\n this[offset + i] = value & 255;\n while (--i >= 0 && (mul *= 256)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1;\n }\n this[offset + i] = (value / mul >> 0) - sub & 255;\n }\n return offset + byteLength2;\n };\n Buffer2.prototype.writeInt8 = function writeInt8(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 1, 127, -128);\n if (!Buffer2.TYPED_ARRAY_SUPPORT) value = Math.floor(value);\n if (value < 0) value = 255 + value + 1;\n this[offset] = value & 255;\n return offset + 1;\n };\n Buffer2.prototype.writeInt16LE = function writeInt16LE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 32767, -32768);\n if (Buffer2.TYPED_ARRAY_SUPPORT) {\n this[offset] = value & 255;\n this[offset + 1] = value >>> 8;\n } else {\n objectWriteUInt16(this, value, offset, true);\n }\n return offset + 2;\n };\n Buffer2.prototype.writeInt16BE = function writeInt16BE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 32767, -32768);\n if (Buffer2.TYPED_ARRAY_SUPPORT) {\n this[offset] = value >>> 8;\n this[offset + 1] = value & 255;\n } else {\n objectWriteUInt16(this, value, offset, false);\n }\n return offset + 2;\n };\n Buffer2.prototype.writeInt32LE = function writeInt32LE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 2147483647, -2147483648);\n if (Buffer2.TYPED_ARRAY_SUPPORT) {\n this[offset] = value & 255;\n this[offset + 1] = value >>> 8;\n this[offset + 2] = value >>> 16;\n this[offset + 3] = value >>> 24;\n } else {\n objectWriteUInt32(this, value, offset, true);\n }\n return offset + 4;\n };\n Buffer2.prototype.writeInt32BE = function writeInt32BE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 2147483647, -2147483648);\n if (value < 0) value = 4294967295 + value + 1;\n if (Buffer2.TYPED_ARRAY_SUPPORT) {\n this[offset] = value >>> 24;\n this[offset + 1] = value >>> 16;\n this[offset + 2] = value >>> 8;\n this[offset + 3] = value & 255;\n } else {\n objectWriteUInt32(this, value, offset, false);\n }\n return offset + 4;\n };\n Buffer2.prototype.writeFloatLE = function writeFloatLE(value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert);\n };\n Buffer2.prototype.writeFloatBE = function writeFloatBE(value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert);\n };\n Buffer2.prototype.writeDoubleLE = function writeDoubleLE(value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert);\n };\n Buffer2.prototype.writeDoubleBE = function writeDoubleBE(value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert);\n };\n Buffer2.prototype.copy = function copy(target, targetStart, start, end) {\n if (!start) start = 0;\n if (!end && end !== 0) end = this.length;\n if (targetStart >= target.length) targetStart = target.length;\n if (!targetStart) targetStart = 0;\n if (end > 0 && end < start) end = start;\n if (end === start) return 0;\n if (target.length === 0 || this.length === 0) return 0;\n if (targetStart < 0) {\n throw new RangeError(\"targetStart out of bounds\");\n }\n if (start < 0 || start >= this.length)\n throw new RangeError(\"sourceStart out of bounds\");\n if (end < 0) throw new RangeError(\"sourceEnd out of bounds\");\n if (end > this.length) end = this.length;\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start;\n }\n var len = end - start;\n var i;\n if (this === target && start < targetStart && targetStart < end) {\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start];\n }\n } else if (len < 1e3 || !Buffer2.TYPED_ARRAY_SUPPORT) {\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start];\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n );\n }\n return len;\n };\n Buffer2.prototype.fill = function fill(val, start, end, encoding) {\n if (typeof val === \"string\") {\n if (typeof start === \"string\") {\n encoding = start;\n start = 0;\n end = this.length;\n } else if (typeof end === \"string\") {\n encoding = end;\n end = this.length;\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0);\n if (code < 256) {\n val = code;\n }\n }\n if (encoding !== void 0 && typeof encoding !== \"string\") {\n throw new TypeError(\"encoding must be a string\");\n }\n if (typeof encoding === \"string\" && !Buffer2.isEncoding(encoding)) {\n throw new TypeError(\"Unknown encoding: \" + encoding);\n }\n } else if (typeof val === \"number\") {\n val = val & 255;\n }\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError(\"Out of range index\");\n }\n if (end <= start) {\n return this;\n }\n start = start >>> 0;\n end = end === void 0 ? this.length : end >>> 0;\n if (!val) val = 0;\n var i;\n if (typeof val === \"number\") {\n for (i = start; i < end; ++i) {\n this[i] = val;\n }\n } else {\n var bytes = internalIsBuffer(val) ? val : utf8ToBytes(new Buffer2(val, encoding).toString());\n var len = bytes.length;\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len];\n }\n }\n return this;\n };\n INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g;\n }\n});\n\n// node_modules/@esbuild-plugins/node-globals-polyfill/_buffer.js\nvar init_buffer = __esm({\n \"node_modules/@esbuild-plugins/node-globals-polyfill/_buffer.js\"() {\n init_Buffer();\n }\n});\n\n// node_modules/@emscripten-forge/untarjs/lib/unpack.js\nvar require_unpack = __commonJS({\n \"node_modules/@emscripten-forge/untarjs/lib/unpack.js\"(exports, module) {\n init_process();\n init_buffer();\n var Module = (() => {\n var _scriptDir = typeof document !== \"undefined\" && document.currentScript ? document.currentScript.src : void 0;\n return function(moduleArg = {}) {\n var Module2 = moduleArg;\n var readyPromiseResolve, readyPromiseReject;\n Module2[\"ready\"] = new Promise((resolve, reject) => {\n readyPromiseResolve = resolve;\n readyPromiseReject = reject;\n });\n var moduleOverrides = Object.assign({}, Module2);\n var arguments_ = [];\n var thisProgram = \"./this.program\";\n var quit_ = (status, toThrow) => {\n throw toThrow;\n };\n var ENVIRONMENT_IS_WEB = true;\n var ENVIRONMENT_IS_WORKER = false;\n var ENVIRONMENT_IS_NODE = false;\n var scriptDirectory = \"\";\n function locateFile(path) {\n if (Module2[\"locateFile\"]) {\n return Module2[\"locateFile\"](path, scriptDirectory);\n }\n return scriptDirectory + path;\n }\n var read_, readAsync, readBinary, setWindowTitle;\n if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {\n if (ENVIRONMENT_IS_WORKER) {\n scriptDirectory = self.location.href;\n } else if (typeof document != \"undefined\" && document.currentScript) {\n scriptDirectory = document.currentScript.src;\n }\n if (_scriptDir) {\n scriptDirectory = _scriptDir;\n }\n if (scriptDirectory.indexOf(\"blob:\") !== 0) {\n scriptDirectory = scriptDirectory.substr(0, scriptDirectory.replace(/[?#].*/, \"\").lastIndexOf(\"/\") + 1);\n } else {\n scriptDirectory = \"\";\n }\n {\n read_ = (url) => {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n xhr.send(null);\n return xhr.responseText;\n };\n if (ENVIRONMENT_IS_WORKER) {\n readBinary = (url) => {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n xhr.responseType = \"arraybuffer\";\n xhr.send(null);\n return new Uint8Array(xhr.response);\n };\n }\n readAsync = (url, onload, onerror) => {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, true);\n xhr.responseType = \"arraybuffer\";\n xhr.onload = () => {\n if (xhr.status == 200 || xhr.status == 0 && xhr.response) {\n onload(xhr.response);\n return;\n }\n onerror();\n };\n xhr.onerror = onerror;\n xhr.send(null);\n };\n }\n setWindowTitle = (title2) => document.title = title2;\n } else {\n }\n var out = Module2[\"print\"] || console.log.bind(console);\n var err = Module2[\"printErr\"] || console.error.bind(console);\n Object.assign(Module2, moduleOverrides);\n moduleOverrides = null;\n if (Module2[\"arguments\"]) arguments_ = Module2[\"arguments\"];\n if (Module2[\"thisProgram\"]) thisProgram = Module2[\"thisProgram\"];\n if (Module2[\"quit\"]) quit_ = Module2[\"quit\"];\n var wasmBinary;\n if (Module2[\"wasmBinary\"]) wasmBinary = Module2[\"wasmBinary\"];\n var noExitRuntime = Module2[\"noExitRuntime\"] || false;\n if (typeof WebAssembly != \"object\") {\n abort(\"no native wasm support detected\");\n }\n function _asan_js_load_1(ptr) {\n if (runtimeInitialized) return __asan_c_load_1(ptr);\n return HEAP8[ptr];\n }\n function _asan_js_load_2(ptr) {\n if (runtimeInitialized) return __asan_c_load_2(ptr);\n return HEAP16[ptr];\n }\n function _asan_js_load_4(ptr) {\n if (runtimeInitialized) return __asan_c_load_4(ptr);\n return HEAP32[ptr];\n }\n function _asan_js_load_4u(ptr) {\n if (runtimeInitialized) return __asan_c_load_4u(ptr) >>> 0;\n return HEAPU32[ptr];\n }\n function _asan_js_load_f(ptr) {\n if (runtimeInitialized) return __asan_c_load_f(ptr);\n return HEAPF32[ptr];\n }\n function _asan_js_load_d(ptr) {\n if (runtimeInitialized) return __asan_c_load_d(ptr);\n return HEAPF64[ptr];\n }\n function _asan_js_store_1(ptr, val) {\n if (runtimeInitialized) return __asan_c_store_1(ptr, val);\n return HEAP8[ptr] = val;\n }\n function _asan_js_store_2(ptr, val) {\n if (runtimeInitialized) return __asan_c_store_2(ptr, val);\n return HEAP16[ptr] = val;\n }\n function _asan_js_store_4(ptr, val) {\n if (runtimeInitialized) return __asan_c_store_4(ptr, val);\n return HEAP32[ptr] = val;\n }\n function _asan_js_store_4u(ptr, val) {\n if (runtimeInitialized) return __asan_c_store_4u(ptr, val) >>> 0;\n return HEAPU32[ptr] = val;\n }\n var wasmMemory;\n var ABORT = false;\n var EXITSTATUS;\n function assert(condition, text) {\n if (!condition) {\n abort(text);\n }\n }\n var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;\n function updateMemoryViews() {\n var b = wasmMemory.buffer;\n Module2[\"HEAP8\"] = HEAP8 = new Int8Array(b);\n Module2[\"HEAP16\"] = HEAP16 = new Int16Array(b);\n Module2[\"HEAPU8\"] = HEAPU8 = new Uint8Array(b);\n Module2[\"HEAPU16\"] = HEAPU16 = new Uint16Array(b);\n Module2[\"HEAP32\"] = HEAP32 = new Int32Array(b);\n Module2[\"HEAPU32\"] = HEAPU32 = new Uint32Array(b);\n Module2[\"HEAPF32\"] = HEAPF32 = new Float32Array(b);\n Module2[\"HEAPF64\"] = HEAPF64 = new Float64Array(b);\n }\n var wasmTable;\n var __ATPRERUN__ = [];\n var __ATINIT__ = [];\n var __ATEXIT__ = [];\n var __ATPOSTRUN__ = [];\n var runtimeInitialized = false;\n var runtimeExited = false;\n var runtimeKeepaliveCounter = 0;\n function keepRuntimeAlive() {\n return noExitRuntime || runtimeKeepaliveCounter > 0;\n }\n function preRun() {\n if (Module2[\"preRun\"]) {\n if (typeof Module2[\"preRun\"] == \"function\") Module2[\"preRun\"] = [Module2[\"preRun\"]];\n while (Module2[\"preRun\"].length) {\n addOnPreRun(Module2[\"preRun\"].shift());\n }\n }\n callRuntimeCallbacks(__ATPRERUN__);\n }\n function initRuntime() {\n runtimeInitialized = true;\n if (!Module2[\"noFSInit\"] && !FS.init.initialized) FS.init();\n FS.ignorePermissions = false;\n TTY.init();\n PIPEFS.root = FS.mount(PIPEFS, {}, null);\n callRuntimeCallbacks(__ATINIT__);\n }\n function exitRuntime() {\n ___funcs_on_exit();\n callRuntimeCallbacks(__ATEXIT__);\n FS.quit();\n TTY.shutdown();\n runtimeExited = true;\n }\n function postRun() {\n if (Module2[\"postRun\"]) {\n if (typeof Module2[\"postRun\"] == \"function\") Module2[\"postRun\"] = [Module2[\"postRun\"]];\n while (Module2[\"postRun\"].length) {\n addOnPostRun(Module2[\"postRun\"].shift());\n }\n }\n callRuntimeCallbacks(__ATPOSTRUN__);\n }\n function addOnPreRun(cb) {\n __ATPRERUN__.unshift(cb);\n }\n function addOnInit(cb) {\n __ATINIT__.unshift(cb);\n }\n function addOnPostRun(cb) {\n __ATPOSTRUN__.unshift(cb);\n }\n var runDependencies = 0;\n var runDependencyWatcher = null;\n var dependenciesFulfilled = null;\n function getUniqueRunDependency(id) {\n return id;\n }\n function addRunDependency(id) {\n runDependencies++;\n if (Module2[\"monitorRunDependencies\"]) {\n Module2[\"monitorRunDependencies\"](runDependencies);\n }\n }\n function removeRunDependency(id) {\n runDependencies--;\n if (Module2[\"monitorRunDependencies\"]) {\n Module2[\"monitorRunDependencies\"](runDependencies);\n }\n if (runDependencies == 0) {\n if (runDependencyWatcher !== null) {\n clearInterval(runDependencyWatcher);\n runDependencyWatcher = null;\n }\n if (dependenciesFulfilled) {\n var callback = dependenciesFulfilled;\n dependenciesFulfilled = null;\n callback();\n }\n }\n }\n function abort(what) {\n if (Module2[\"onAbort\"]) {\n Module2[\"onAbort\"](what);\n }\n what = \"Aborted(\" + what + \")\";\n err(what);\n ABORT = true;\n EXITSTATUS = 1;\n what += \". Build with -sASSERTIONS for more info.\";\n var e = new WebAssembly.RuntimeError(what);\n readyPromiseReject(e);\n throw e;\n }\n var dataURIPrefix = \"data:application/octet-stream;base64,\";\n function isDataURI(filename) {\n return filename.startsWith(dataURIPrefix);\n }\n var wasmBinaryFile;\n wasmBinaryFile = \"unpack.wasm\";\n if (!isDataURI(wasmBinaryFile)) {\n wasmBinaryFile = locateFile(wasmBinaryFile);\n }\n function getBinarySync(file) {\n if (file == wasmBinaryFile && wasmBinary) {\n return new Uint8Array(wasmBinary);\n }\n if (readBinary) {\n return readBinary(file);\n }\n throw \"both async and sync fetching of the wasm failed\";\n }\n function getBinaryPromise(binaryFile) {\n if (!wasmBinary && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER)) {\n if (typeof fetch == \"function\") {\n return fetch(binaryFile, { credentials: \"same-origin\" }).then((response) => {\n if (!response[\"ok\"]) {\n throw \"failed to load wasm binary file at '\" + binaryFile + \"'\";\n }\n return response[\"arrayBuffer\"]();\n }).catch(() => getBinarySync(binaryFile));\n }\n }\n return Promise.resolve().then(() => getBinarySync(binaryFile));\n }\n var wasmOffsetConverter;\n function WasmOffsetConverter(wasmBytes, wasmModule) {\n var offset = 8;\n var funcidx = 0;\n this.offset_map = {};\n this.func_starts = [];\n this.name_map = {};\n this.import_functions = 0;\n var buffer = wasmBytes;\n function unsignedLEB128() {\n var result = 0;\n var shift = 0;\n do {\n var byte = buffer[offset++];\n result += (byte & 127) << shift;\n shift += 7;\n } while (byte & 128);\n return result;\n }\n function skipLimits() {\n var flags = unsignedLEB128();\n unsignedLEB128();\n var hasMax = (flags & 1) != 0;\n if (hasMax) {\n unsignedLEB128();\n }\n }\n binary_parse: while (offset < buffer.length) {\n var type = buffer[offset++];\n var end = unsignedLEB128() + offset;\n switch (type) {\n case 2:\n var count = unsignedLEB128();\n while (count-- > 0) {\n offset = unsignedLEB128() + offset;\n offset = unsignedLEB128() + offset;\n var kind = buffer[offset++];\n switch (kind) {\n case 0:\n ++funcidx;\n unsignedLEB128();\n break;\n case 1:\n unsignedLEB128();\n skipLimits();\n break;\n case 2:\n skipLimits();\n break;\n case 3:\n offset += 2;\n break;\n case 4:\n ++offset;\n unsignedLEB128();\n break;\n }\n }\n this.import_functions = funcidx;\n break;\n case 10:\n var count = unsignedLEB128();\n while (count-- > 0) {\n var size = unsignedLEB128();\n this.offset_map[funcidx++] = offset;\n this.func_starts.push(offset);\n offset += size;\n }\n break binary_parse;\n }\n offset = end;\n }\n var sections = WebAssembly.Module.customSections(wasmModule, \"name\");\n var nameSection = sections.length ? sections[0] : void 0;\n if (nameSection) {\n buffer = new Uint8Array(nameSection);\n offset = 0;\n while (offset < buffer.length) {\n var subsection_type = buffer[offset++];\n var len = unsignedLEB128();\n if (subsection_type != 1) {\n offset += len;\n continue;\n }\n var count = unsignedLEB128();\n while (count-- > 0) {\n var index = unsignedLEB128();\n var length = unsignedLEB128();\n this.name_map[index] = UTF8ArrayToString(buffer, offset, length);\n offset += length;\n }\n }\n }\n }\n WasmOffsetConverter.prototype.convert = function(funcidx, offset) {\n return this.offset_map[funcidx] + offset;\n };\n WasmOffsetConverter.prototype.getIndex = function(offset) {\n var lo = 0;\n var hi = this.func_starts.length;\n var mid;\n while (lo < hi) {\n mid = Math.floor((lo + hi) / 2);\n if (this.func_starts[mid] > offset) {\n hi = mid;\n } else {\n lo = mid + 1;\n }\n }\n return lo + this.import_functions - 1;\n };\n WasmOffsetConverter.prototype.isSameFunc = function(offset1, offset2) {\n return this.getIndex(offset1) == this.getIndex(offset2);\n };\n WasmOffsetConverter.prototype.getName = function(offset) {\n var index = this.getIndex(offset);\n return this.name_map[index] || \"wasm-function[\" + index + \"]\";\n };\n function instantiateArrayBuffer(binaryFile, imports, receiver) {\n var savedBinary;\n return getBinaryPromise(binaryFile).then((binary) => {\n savedBinary = binary;\n return WebAssembly.instantiate(binary, imports);\n }).then((instance) => {\n wasmOffsetConverter = new WasmOffsetConverter(savedBinary, instance.module);\n return instance;\n }).then(receiver, (reason) => {\n err(`failed to asynchronously prepare wasm: ${reason}`);\n abort(reason);\n });\n }\n function instantiateAsync(binary, binaryFile, imports, callback) {\n if (!binary && typeof WebAssembly.instantiateStreaming == \"function\" && !isDataURI(binaryFile) && typeof fetch == \"function\") {\n return fetch(binaryFile, { credentials: \"same-origin\" }).then((response) => {\n var result = WebAssembly.instantiateStreaming(response, imports);\n var clonedResponsePromise = response.clone().arrayBuffer();\n return result.then(function(instantiationResult) {\n clonedResponsePromise.then((arrayBufferResult) => {\n wasmOffsetConverter = new WasmOffsetConverter(new Uint8Array(arrayBufferResult), instantiationResult.module);\n callback(instantiationResult);\n }, (reason) => err(`failed to initialize offset-converter: ${reason}`));\n }, function(reason) {\n err(`wasm streaming compile failed: ${reason}`);\n err(\"falling back to ArrayBuffer instantiation\");\n return instantiateArrayBuffer(binaryFile, imports, callback);\n });\n });\n }\n return instantiateArrayBuffer(binaryFile, imports, callback);\n }\n function createWasm() {\n var info = { \"a\": wasmImports };\n function receiveInstance(instance, module2) {\n var exports2 = instance.exports;\n wasmExports = exports2;\n wasmMemory = wasmExports[\"Q\"];\n Module2[\"wasmMemory\"] = wasmMemory;\n updateMemoryViews();\n wasmTable = wasmExports[\"W\"];\n addOnInit(wasmExports[\"R\"]);\n removeRunDependency(\"wasm-instantiate\");\n return exports2;\n }\n addRunDependency(\"wasm-instantiate\");\n function receiveInstantiationResult(result) {\n receiveInstance(result[\"instance\"]);\n }\n if (Module2[\"instantiateWasm\"]) {\n try {\n return Module2[\"instantiateWasm\"](info, receiveInstance);\n } catch (e) {\n err(`Module.instantiateWasm callback failed with error: ${e}`);\n readyPromiseReject(e);\n }\n }\n instantiateAsync(wasmBinary, wasmBinaryFile, info, receiveInstantiationResult).catch(readyPromiseReject);\n return {};\n }\n var tempDouble;\n var tempI64;\n function ExitStatus(status) {\n this.name = \"ExitStatus\";\n this.message = `Program terminated with exit(${status})`;\n this.status = status;\n }\n var UTF8Decoder = typeof TextDecoder != \"undefined\" ? new TextDecoder(\"utf8\") : void 0;\n var UTF8ArrayToString = (heapOrArray, idx, maxBytesToRead) => {\n var endIdx = idx + maxBytesToRead;\n var endPtr = idx;\n while (heapOrArray[endPtr] && !(endPtr >= endIdx)) ++endPtr;\n if (endPtr - idx > 16 && heapOrArray.buffer && UTF8Decoder) {\n return UTF8Decoder.decode(heapOrArray.subarray(idx, endPtr));\n }\n var str = \"\";\n while (idx < endPtr) {\n var u0 = heapOrArray[idx++];\n if (!(u0 & 128)) {\n str += String.fromCharCode(u0);\n continue;\n }\n var u1 = heapOrArray[idx++] & 63;\n if ((u0 & 224) == 192) {\n str += String.fromCharCode((u0 & 31) << 6 | u1);\n continue;\n }\n var u2 = heapOrArray[idx++] & 63;\n if ((u0 & 240) == 224) {\n u0 = (u0 & 15) << 12 | u1 << 6 | u2;\n } else {\n u0 = (u0 & 7) << 18 | u1 << 12 | u2 << 6 | heapOrArray[idx++] & 63;\n }\n if (u0 < 65536) {\n str += String.fromCharCode(u0);\n } else {\n var ch = u0 - 65536;\n str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023);\n }\n }\n return str;\n };\n var callRuntimeCallbacks = (callbacks) => {\n while (callbacks.length > 0) {\n callbacks.shift()(Module2);\n }\n };\n function getValue(ptr, type = \"i8\") {\n if (type.endsWith(\"*\")) type = \"*\";\n switch (type) {\n case \"i1\":\n return _asan_js_load_1(ptr >> 0);\n case \"i8\":\n return _asan_js_load_1(ptr >> 0);\n case \"i16\":\n return _asan_js_load_2(ptr >> 1);\n case \"i32\":\n return _asan_js_load_4(ptr >> 2);\n case \"i64\":\n abort(\"to do getValue(i64) use WASM_BIGINT\");\n case \"float\":\n return _asan_js_load_f(ptr >> 2);\n case \"double\":\n return _asan_js_load_d(ptr >> 3);\n case \"*\":\n return _asan_js_load_4u(ptr >> 2);\n default:\n abort(`invalid type for getValue: ${type}`);\n }\n }\n var UTF8ToString = (ptr, maxBytesToRead) => ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : \"\";\n var ___assert_fail = (condition, filename, line, func) => {\n abort(`Assertion failed: ${UTF8ToString(condition)}, at: ` + [filename ? UTF8ToString(filename) : \"unknown filename\", line, func ? UTF8ToString(func) : \"unknown function\"]);\n };\n var PATH = { isAbs: (path) => path.charAt(0) === \"/\", splitPath: (filename) => {\n var splitPathRe = /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\n return splitPathRe.exec(filename).slice(1);\n }, normalizeArray: (parts, allowAboveRoot) => {\n var up = 0;\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n if (last === \".\") {\n parts.splice(i, 1);\n } else if (last === \"..\") {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n if (allowAboveRoot) {\n for (; up; up--) {\n parts.unshift(\"..\");\n }\n }\n return parts;\n }, normalize: (path) => {\n var isAbsolute = PATH.isAbs(path), trailingSlash = path.substr(-1) === \"/\";\n path = PATH.normalizeArray(path.split(\"/\").filter((p) => !!p), !isAbsolute).join(\"/\");\n if (!path && !isAbsolute) {\n path = \".\";\n }\n if (path && trailingSlash) {\n path += \"/\";\n }\n return (isAbsolute ? \"/\" : \"\") + path;\n }, dirname: (path) => {\n var result = PATH.splitPath(path), root = result[0], dir = result[1];\n if (!root && !dir) {\n return \".\";\n }\n if (dir) {\n dir = dir.substr(0, dir.length - 1);\n }\n return root + dir;\n }, basename: (path) => {\n if (path === \"/\") return \"/\";\n path = PATH.normalize(path);\n path = path.replace(/\\/$/, \"\");\n var lastSlash = path.lastIndexOf(\"/\");\n if (lastSlash === -1) return path;\n return path.substr(lastSlash + 1);\n }, join: function() {\n var paths = Array.prototype.slice.call(arguments);\n return PATH.normalize(paths.join(\"/\"));\n }, join2: (l, r) => PATH.normalize(l + \"/\" + r) };\n var initRandomFill = () => {\n if (typeof crypto == \"object\" && typeof crypto[\"getRandomValues\"] == \"function\") {\n return (view) => crypto.getRandomValues(view);\n } else abort(\"initRandomDevice\");\n };\n var randomFill = (view) => (randomFill = initRandomFill())(view);\n var PATH_FS = { resolve: function() {\n var resolvedPath = \"\", resolvedAbsolute = false;\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = i >= 0 ? arguments[i] : FS.cwd();\n if (typeof path != \"string\") {\n throw new TypeError(\"Arguments to path.resolve must be strings\");\n } else if (!path) {\n return \"\";\n }\n resolvedPath = path + \"/\" + resolvedPath;\n resolvedAbsolute = PATH.isAbs(path);\n }\n resolvedPath = PATH.normalizeArray(resolvedPath.split(\"/\").filter((p) => !!p), !resolvedAbsolute).join(\"/\");\n return (resolvedAbsolute ? \"/\" : \"\") + resolvedPath || \".\";\n }, relative: (from2, to) => {\n from2 = PATH_FS.resolve(from2).substr(1);\n to = PATH_FS.resolve(to).substr(1);\n function trim(arr) {\n var start = 0;\n for (; start < arr.length; start++) {\n if (arr[start] !== \"\") break;\n }\n var end = arr.length - 1;\n for (; end >= 0; end--) {\n if (arr[end] !== \"\") break;\n }\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n var fromParts = trim(from2.split(\"/\"));\n var toParts = trim(to.split(\"/\"));\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push(\"..\");\n }\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n return outputParts.join(\"/\");\n } };\n var FS_stdin_getChar_buffer = [];\n var lengthBytesUTF8 = (str) => {\n var len = 0;\n for (var i = 0; i < str.length; ++i) {\n var c = str.charCodeAt(i);\n if (c <= 127) {\n len++;\n } else if (c <= 2047) {\n len += 2;\n } else if (c >= 55296 && c <= 57343) {\n len += 4;\n ++i;\n } else {\n len += 3;\n }\n }\n return len;\n };\n var stringToUTF8Array = (str, heap, outIdx, maxBytesToWrite) => {\n if (!(maxBytesToWrite > 0)) return 0;\n var startIdx = outIdx;\n var endIdx = outIdx + maxBytesToWrite - 1;\n for (var i = 0; i < str.length; ++i) {\n var u = str.charCodeAt(i);\n if (u >= 55296 && u <= 57343) {\n var u1 = str.charCodeAt(++i);\n u = 65536 + ((u & 1023) << 10) | u1 & 1023;\n }\n if (u <= 127) {\n if (outIdx >= endIdx) break;\n heap[outIdx++] = u;\n } else if (u <= 2047) {\n if (outIdx + 1 >= endIdx) break;\n heap[outIdx++] = 192 | u >> 6;\n heap[outIdx++] = 128 | u & 63;\n } else if (u <= 65535) {\n if (outIdx + 2 >= endIdx) break;\n heap[outIdx++] = 224 | u >> 12;\n heap[outIdx++] = 128 | u >> 6 & 63;\n heap[outIdx++] = 128 | u & 63;\n } else {\n if (outIdx + 3 >= endIdx) break;\n heap[outIdx++] = 240 | u >> 18;\n heap[outIdx++] = 128 | u >> 12 & 63;\n heap[outIdx++] = 128 | u >> 6 & 63;\n heap[outIdx++] = 128 | u & 63;\n }\n }\n heap[outIdx] = 0;\n return outIdx - startIdx;\n };\n function intArrayFromString(stringy, dontAddNull, length) {\n var len = length > 0 ? length : lengthBytesUTF8(stringy) + 1;\n var u8array = new Array(len);\n var numBytesWritten = stringToUTF8Array(stringy, u8array, 0, u8array.length);\n if (dontAddNull) u8array.length = numBytesWritten;\n return u8array;\n }\n var FS_stdin_getChar = () => {\n if (!FS_stdin_getChar_buffer.length) {\n var result = null;\n if (typeof window != \"undefined\" && typeof window.prompt == \"function\") {\n result = window.prompt(\"Input: \");\n if (result !== null) {\n result += \"\\n\";\n }\n } else if (typeof readline == \"function\") {\n result = readline();\n if (result !== null) {\n result += \"\\n\";\n }\n }\n if (!result) {\n return null;\n }\n FS_stdin_getChar_buffer = intArrayFromString(result, true);\n }\n return FS_stdin_getChar_buffer.shift();\n };\n var TTY = { ttys: [], init() {\n }, shutdown() {\n }, register(dev, ops) {\n TTY.ttys[dev] = { input: [], output: [], ops };\n FS.registerDevice(dev, TTY.stream_ops);\n }, stream_ops: { open(stream) {\n var tty = TTY.ttys[stream.node.rdev];\n if (!tty) {\n throw new FS.ErrnoError(43);\n }\n stream.tty = tty;\n stream.seekable = false;\n }, close(stream) {\n stream.tty.ops.fsync(stream.tty);\n }, fsync(stream) {\n stream.tty.ops.fsync(stream.tty);\n }, read(stream, buffer, offset, length, pos) {\n if (!stream.tty || !stream.tty.ops.get_char) {\n throw new FS.ErrnoError(60);\n }\n var bytesRead = 0;\n for (var i = 0; i < length; i++) {\n var result;\n try {\n result = stream.tty.ops.get_char(stream.tty);\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (result === void 0 && bytesRead === 0) {\n throw new FS.ErrnoError(6);\n }\n if (result === null || result === void 0) break;\n bytesRead++;\n buffer[offset + i] = result;\n }\n if (bytesRead) {\n stream.node.timestamp = Date.now();\n }\n return bytesRead;\n }, write(stream, buffer, offset, length, pos) {\n if (!stream.tty || !stream.tty.ops.put_char) {\n throw new FS.ErrnoError(60);\n }\n try {\n for (var i = 0; i < length; i++) {\n stream.tty.ops.put_char(stream.tty, buffer[offset + i]);\n }\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (length) {\n stream.node.timestamp = Date.now();\n }\n return i;\n } }, default_tty_ops: { get_char(tty) {\n return FS_stdin_getChar();\n }, put_char(tty, val) {\n if (val === null || val === 10) {\n out(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n } else {\n if (val != 0) tty.output.push(val);\n }\n }, fsync(tty) {\n if (tty.output && tty.output.length > 0) {\n out(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n }\n }, ioctl_tcgets(tty) {\n return { c_iflag: 25856, c_oflag: 5, c_cflag: 191, c_lflag: 35387, c_cc: [3, 28, 127, 21, 4, 0, 1, 0, 17, 19, 26, 0, 18, 15, 23, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] };\n }, ioctl_tcsets(tty, optional_actions, data) {\n return 0;\n }, ioctl_tiocgwinsz(tty) {\n return [24, 80];\n } }, default_tty1_ops: { put_char(tty, val) {\n if (val === null || val === 10) {\n err(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n } else {\n if (val != 0) tty.output.push(val);\n }\n }, fsync(tty) {\n if (tty.output && tty.output.length > 0) {\n err(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n }\n } } };\n var zeroMemory = (address, size) => {\n HEAPU8.fill(0, address, address + size);\n return address;\n };\n var alignMemory = (size, alignment) => Math.ceil(size / alignment) * alignment;\n var mmapAlloc = (size) => {\n size = alignMemory(size, 65536);\n var ptr = _emscripten_builtin_memalign(65536, size);\n if (!ptr) return 0;\n return zeroMemory(ptr, size);\n };\n var MEMFS = { ops_table: null, mount(mount) {\n return MEMFS.createNode(null, \"/\", 16384 | 511, 0);\n }, createNode(parent, name, mode, dev) {\n if (FS.isBlkdev(mode) || FS.isFIFO(mode)) {\n throw new FS.ErrnoError(63);\n }\n if (!MEMFS.ops_table) {\n MEMFS.ops_table = { dir: { node: { getattr: MEMFS.node_ops.getattr, setattr: MEMFS.node_ops.setattr, lookup: MEMFS.node_ops.lookup, mknod: MEMFS.node_ops.mknod, rename: MEMFS.node_ops.rename, unlink: MEMFS.node_ops.unlink, rmdir: MEMFS.node_ops.rmdir, readdir: MEMFS.node_ops.readdir, symlink: MEMFS.node_ops.symlink }, stream: { llseek: MEMFS.stream_ops.llseek } }, file: { node: { getattr: MEMFS.node_ops.getattr, setattr: MEMFS.node_ops.setattr }, stream: { llseek: MEMFS.stream_ops.llseek, read: MEMFS.stream_ops.read, write: MEMFS.stream_ops.write, allocate: MEMFS.stream_ops.allocate, mmap: MEMFS.stream_ops.mmap, msync: MEMFS.stream_ops.msync } }, link: { node: { getattr: MEMFS.node_ops.getattr, setattr: MEMFS.node_ops.setattr, readlink: MEMFS.node_ops.readlink }, stream: {} }, chrdev: { node: { getattr: MEMFS.node_ops.getattr, setattr: MEMFS.node_ops.setattr }, stream: FS.chrdev_stream_ops } };\n }\n var node = FS.createNode(parent, name, mode, dev);\n if (FS.isDir(node.mode)) {\n node.node_ops = MEMFS.ops_table.dir.node;\n node.stream_ops = MEMFS.ops_table.dir.stream;\n node.contents = {};\n } else if (FS.isFile(node.mode)) {\n node.node_ops = MEMFS.ops_table.file.node;\n node.stream_ops = MEMFS.ops_table.file.stream;\n node.usedBytes = 0;\n node.contents = null;\n } else if (FS.isLink(node.mode)) {\n node.node_ops = MEMFS.ops_table.link.node;\n node.stream_ops = MEMFS.ops_table.link.stream;\n } else if (FS.isChrdev(node.mode)) {\n node.node_ops = MEMFS.ops_table.chrdev.node;\n node.stream_ops = MEMFS.ops_table.chrdev.stream;\n }\n node.timestamp = Date.now();\n if (parent) {\n parent.contents[name] = node;\n parent.timestamp = node.timestamp;\n }\n return node;\n }, getFileDataAsTypedArray(node) {\n if (!node.contents) return new Uint8Array(0);\n if (node.contents.subarray) return node.contents.subarray(0, node.usedBytes);\n return new Uint8Array(node.contents);\n }, expandFileStorage(node, newCapacity) {\n var prevCapacity = node.contents ? node.contents.length : 0;\n if (prevCapacity >= newCapacity) return;\n var CAPACITY_DOUBLING_MAX = 1024 * 1024;\n newCapacity = Math.max(newCapacity, prevCapacity * (prevCapacity < CAPACITY_DOUBLING_MAX ? 2 : 1.125) >>> 0);\n if (prevCapacity != 0) newCapacity = Math.max(newCapacity, 256);\n var oldContents = node.contents;\n node.contents = new Uint8Array(newCapacity);\n if (node.usedBytes > 0) node.contents.set(oldContents.subarray(0, node.usedBytes), 0);\n }, resizeFileStorage(node, newSize) {\n if (node.usedBytes == newSize) return;\n if (newSize == 0) {\n node.contents = null;\n node.usedBytes = 0;\n } else {\n var oldContents = node.contents;\n node.contents = new Uint8Array(newSize);\n if (oldContents) {\n node.contents.set(oldContents.subarray(0, Math.min(newSize, node.usedBytes)));\n }\n node.usedBytes = newSize;\n }\n }, node_ops: { getattr(node) {\n var attr = {};\n attr.dev = FS.isChrdev(node.mode) ? node.id : 1;\n attr.ino = node.id;\n attr.mode = node.mode;\n attr.nlink = 1;\n attr.uid = 0;\n attr.gid = 0;\n attr.rdev = node.rdev;\n if (FS.isDir(node.mode)) {\n attr.size = 4096;\n } else if (FS.isFile(node.mode)) {\n attr.size = node.usedBytes;\n } else if (FS.isLink(node.mode)) {\n attr.size = node.link.length;\n } else {\n attr.size = 0;\n }\n attr.atime = new Date(node.timestamp);\n attr.mtime = new Date(node.timestamp);\n attr.ctime = new Date(node.timestamp);\n attr.blksize = 4096;\n attr.blocks = Math.ceil(attr.size / attr.blksize);\n return attr;\n }, setattr(node, attr) {\n if (attr.mode !== void 0) {\n node.mode = attr.mode;\n }\n if (attr.timestamp !== void 0) {\n node.timestamp = attr.timestamp;\n }\n if (attr.size !== void 0) {\n MEMFS.resizeFileStorage(node, attr.size);\n }\n }, lookup(parent, name) {\n throw FS.genericErrors[44];\n }, mknod(parent, name, mode, dev) {\n return MEMFS.createNode(parent, name, mode, dev);\n }, rename(old_node, new_dir, new_name) {\n if (FS.isDir(old_node.mode)) {\n var new_node;\n try {\n new_node = FS.lookupNode(new_dir, new_name);\n } catch (e) {\n }\n if (new_node) {\n for (var i in new_node.contents) {\n throw new FS.ErrnoError(55);\n }\n }\n }\n delete old_node.parent.contents[old_node.name];\n old_node.parent.timestamp = Date.now();\n old_node.name = new_name;\n new_dir.contents[new_name] = old_node;\n new_dir.timestamp = old_node.parent.timestamp;\n old_node.parent = new_dir;\n }, unlink(parent, name) {\n delete parent.contents[name];\n parent.timestamp = Date.now();\n }, rmdir(parent, name) {\n var node = FS.lookupNode(parent, name);\n for (var i in node.contents) {\n throw new FS.ErrnoError(55);\n }\n delete parent.contents[name];\n parent.timestamp = Date.now();\n }, readdir(node) {\n var entries = [\".\", \"..\"];\n for (var key in node.contents) {\n if (!node.contents.hasOwnProperty(key)) {\n continue;\n }\n entries.push(key);\n }\n return entries;\n }, symlink(parent, newname, oldpath) {\n var node = MEMFS.createNode(parent, newname, 511 | 40960, 0);\n node.link = oldpath;\n return node;\n }, readlink(node) {\n if (!FS.isLink(node.mode)) {\n throw new FS.ErrnoError(28);\n }\n return node.link;\n } }, stream_ops: { read(stream, buffer, offset, length, position) {\n var contents = stream.node.contents;\n if (position >= stream.node.usedBytes) return 0;\n var size = Math.min(stream.node.usedBytes - position, length);\n if (size > 8 && contents.subarray) {\n buffer.set(contents.subarray(position, position + size), offset);\n } else {\n for (var i = 0; i < size; i++) buffer[offset + i] = contents[position + i];\n }\n return size;\n }, write(stream, buffer, offset, length, position, canOwn) {\n if (buffer.buffer === HEAP8.buffer) {\n canOwn = false;\n }\n if (!length) return 0;\n var node = stream.node;\n node.timestamp = Date.now();\n if (buffer.subarray && (!node.contents || node.contents.subarray)) {\n if (canOwn) {\n node.contents = buffer.subarray(offset, offset + length);\n node.usedBytes = length;\n return length;\n } else if (node.usedBytes === 0 && position === 0) {\n node.contents = buffer.slice(offset, offset + length);\n node.usedBytes = length;\n return length;\n } else if (position + length <= node.usedBytes) {\n node.contents.set(buffer.subarray(offset, offset + length), position);\n return length;\n }\n }\n MEMFS.expandFileStorage(node, position + length);\n if (node.contents.subarray && buffer.subarray) {\n node.contents.set(buffer.subarray(offset, offset + length), position);\n } else {\n for (var i = 0; i < length; i++) {\n node.contents[position + i] = buffer[offset + i];\n }\n }\n node.usedBytes = Math.max(node.usedBytes, position + length);\n return length;\n }, llseek(stream, offset, whence) {\n var position = offset;\n if (whence === 1) {\n position += stream.position;\n } else if (whence === 2) {\n if (FS.isFile(stream.node.mode)) {\n position += stream.node.usedBytes;\n }\n }\n if (position < 0) {\n throw new FS.ErrnoError(28);\n }\n return position;\n }, allocate(stream, offset, length) {\n MEMFS.expandFileStorage(stream.node, offset + length);\n stream.node.usedBytes = Math.max(stream.node.usedBytes, offset + length);\n }, mmap(stream, length, position, prot, flags) {\n if (!FS.isFile(stream.node.mode)) {\n throw new FS.ErrnoError(43);\n }\n var ptr;\n var allocated;\n var contents = stream.node.contents;\n if (!(flags & 2) && contents.buffer === HEAP8.buffer) {\n allocated = false;\n ptr = contents.byteOffset;\n } else {\n if (position > 0 || position + length < contents.length) {\n if (contents.subarray) {\n contents = contents.subarray(position, position + length);\n } else {\n contents = Array.prototype.slice.call(contents, position, position + length);\n }\n }\n allocated = true;\n ptr = mmapAlloc(length);\n if (!ptr) {\n throw new FS.ErrnoError(48);\n }\n HEAP8.set(contents, ptr);\n }\n return { ptr, allocated };\n }, msync(stream, buffer, offset, length, mmapFlags) {\n MEMFS.stream_ops.write(stream, buffer, 0, length, offset, false);\n return 0;\n } } };\n var asyncLoad = (url, onload, onerror, noRunDep) => {\n var dep = !noRunDep ? getUniqueRunDependency(`al ${url}`) : \"\";\n readAsync(url, (arrayBuffer) => {\n assert(arrayBuffer, `Loading data file \"${url}\" failed (no arrayBuffer).`);\n onload(new Uint8Array(arrayBuffer));\n if (dep) removeRunDependency(dep);\n }, (event) => {\n if (onerror) {\n onerror();\n } else {\n throw `Loading data file \"${url}\" failed.`;\n }\n });\n if (dep) addRunDependency(dep);\n };\n var preloadPlugins = Module2[\"preloadPlugins\"] || [];\n var FS_handledByPreloadPlugin = (byteArray, fullname, finish, onerror) => {\n if (typeof Browser != \"undefined\") Browser.init();\n var handled = false;\n preloadPlugins.forEach((plugin) => {\n if (handled) return;\n if (plugin[\"canHandle\"](fullname)) {\n plugin[\"handle\"](byteArray, fullname, finish, onerror);\n handled = true;\n }\n });\n return handled;\n };\n var FS_createPreloadedFile = (parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn, preFinish) => {\n var fullname = name ? PATH_FS.resolve(PATH.join2(parent, name)) : parent;\n var dep = getUniqueRunDependency(`cp ${fullname}`);\n function processData(byteArray) {\n function finish(byteArray2) {\n if (preFinish) preFinish();\n if (!dontCreateFile) {\n FS.createDataFile(parent, name, byteArray2, canRead, canWrite, canOwn);\n }\n if (onload) onload();\n removeRunDependency(dep);\n }\n if (FS_handledByPreloadPlugin(byteArray, fullname, finish, () => {\n if (onerror) onerror();\n removeRunDependency(dep);\n })) {\n return;\n }\n finish(byteArray);\n }\n addRunDependency(dep);\n if (typeof url == \"string\") {\n asyncLoad(url, (byteArray) => processData(byteArray), onerror);\n } else {\n processData(url);\n }\n };\n var FS_modeStringToFlags = (str) => {\n var flagModes = { \"r\": 0, \"r+\": 2, \"w\": 512 | 64 | 1, \"w+\": 512 | 64 | 2, \"a\": 1024 | 64 | 1, \"a+\": 1024 | 64 | 2 };\n var flags = flagModes[str];\n if (typeof flags == \"undefined\") {\n throw new Error(`Unknown file open mode: ${str}`);\n }\n return flags;\n };\n var FS_getMode = (canRead, canWrite) => {\n var mode = 0;\n if (canRead) mode |= 292 | 73;\n if (canWrite) mode |= 146;\n return mode;\n };\n var FS = { root: null, mounts: [], devices: {}, streams: [], nextInode: 1, nameTable: null, currentPath: \"/\", initialized: false, ignorePermissions: true, ErrnoError: null, genericErrors: {}, filesystems: null, syncFSRequests: 0, lookupPath(path, opts = {}) {\n path = PATH_FS.resolve(path);\n if (!path) return { path: \"\", node: null };\n var defaults = { follow_mount: true, recurse_count: 0 };\n opts = Object.assign(defaults, opts);\n if (opts.recurse_count > 8) {\n throw new FS.ErrnoError(32);\n }\n var parts = path.split(\"/\").filter((p) => !!p);\n var current = FS.root;\n var current_path = \"/\";\n for (var i = 0; i < parts.length; i++) {\n var islast = i === parts.length - 1;\n if (islast && opts.parent) {\n break;\n }\n current = FS.lookupNode(current, parts[i]);\n current_path = PATH.join2(current_path, parts[i]);\n if (FS.isMountpoint(current)) {\n if (!islast || islast && opts.follow_mount) {\n current = current.mounted.root;\n }\n }\n if (!islast || opts.follow) {\n var count = 0;\n while (FS.isLink(current.mode)) {\n var link = FS.readlink(current_path);\n current_path = PATH_FS.resolve(PATH.dirname(current_path), link);\n var lookup2 = FS.lookupPath(current_path, { recurse_count: opts.recurse_count + 1 });\n current = lookup2.node;\n if (count++ > 40) {\n throw new FS.ErrnoError(32);\n }\n }\n }\n }\n return { path: current_path, node: current };\n }, getPath(node) {\n var path;\n while (true) {\n if (FS.isRoot(node)) {\n var mount = node.mount.mountpoint;\n if (!path) return mount;\n return mount[mount.length - 1] !== \"/\" ? `${mount}/${path}` : mount + path;\n }\n path = path ? `${node.name}/${path}` : node.name;\n node = node.parent;\n }\n }, hashName(parentid, name) {\n var hash = 0;\n for (var i = 0; i < name.length; i++) {\n hash = (hash << 5) - hash + name.charCodeAt(i) | 0;\n }\n return (parentid + hash >>> 0) % FS.nameTable.length;\n }, hashAddNode(node) {\n var hash = FS.hashName(node.parent.id, node.name);\n node.name_next = FS.nameTable[hash];\n FS.nameTable[hash] = node;\n }, hashRemoveNode(node) {\n var hash = FS.hashName(node.parent.id, node.name);\n if (FS.nameTable[hash] === node) {\n FS.nameTable[hash] = node.name_next;\n } else {\n var current = FS.nameTable[hash];\n while (current) {\n if (current.name_next === node) {\n current.name_next = node.name_next;\n break;\n }\n current = current.name_next;\n }\n }\n }, lookupNode(parent, name) {\n var errCode = FS.mayLookup(parent);\n if (errCode) {\n throw new FS.ErrnoError(errCode, parent);\n }\n var hash = FS.hashName(parent.id, name);\n for (var node = FS.nameTable[hash]; node; node = node.name_next) {\n var nodeName = node.name;\n if (node.parent.id === parent.id && nodeName === name) {\n return node;\n }\n }\n return FS.lookup(parent, name);\n }, createNode(parent, name, mode, rdev) {\n var node = new FS.FSNode(parent, name, mode, rdev);\n FS.hashAddNode(node);\n return node;\n }, destroyNode(node) {\n FS.hashRemoveNode(node);\n }, isRoot(node) {\n return node === node.parent;\n }, isMountpoint(node) {\n return !!node.mounted;\n }, isFile(mode) {\n return (mode & 61440) === 32768;\n }, isDir(mode) {\n return (mode & 61440) === 16384;\n }, isLink(mode) {\n return (mode & 61440) === 40960;\n }, isChrdev(mode) {\n return (mode & 61440) === 8192;\n }, isBlkdev(mode) {\n return (mode & 61440) === 24576;\n }, isFIFO(mode) {\n return (mode & 61440) === 4096;\n }, isSocket(mode) {\n return (mode & 49152) === 49152;\n }, flagsToPermissionString(flag) {\n var perms = [\"r\", \"w\", \"rw\"][flag & 3];\n if (flag & 512) {\n perms += \"w\";\n }\n return perms;\n }, nodePermissions(node, perms) {\n if (FS.ignorePermissions) {\n return 0;\n }\n if (perms.includes(\"r\") && !(node.mode & 292)) {\n return 2;\n } else if (perms.includes(\"w\") && !(node.mode & 146)) {\n return 2;\n } else if (perms.includes(\"x\") && !(node.mode & 73)) {\n return 2;\n }\n return 0;\n }, mayLookup(dir) {\n var errCode = FS.nodePermissions(dir, \"x\");\n if (errCode) return errCode;\n if (!dir.node_ops.lookup) return 2;\n return 0;\n }, mayCreate(dir, name) {\n try {\n var node = FS.lookupNode(dir, name);\n return 20;\n } catch (e) {\n }\n return FS.nodePermissions(dir, \"wx\");\n }, mayDelete(dir, name, isdir) {\n var node;\n try {\n node = FS.lookupNode(dir, name);\n } catch (e) {\n return e.errno;\n }\n var errCode = FS.nodePermissions(dir, \"wx\");\n if (errCode) {\n return errCode;\n }\n if (isdir) {\n if (!FS.isDir(node.mode)) {\n return 54;\n }\n if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) {\n return 10;\n }\n } else {\n if (FS.isDir(node.mode)) {\n return 31;\n }\n }\n return 0;\n }, mayOpen(node, flags) {\n if (!node) {\n return 44;\n }\n if (FS.isLink(node.mode)) {\n return 32;\n } else if (FS.isDir(node.mode)) {\n if (FS.flagsToPermissionString(flags) !== \"r\" || flags & 512) {\n return 31;\n }\n }\n return FS.nodePermissions(node, FS.flagsToPermissionString(flags));\n }, MAX_OPEN_FDS: 4096, nextfd() {\n for (var fd = 0; fd <= FS.MAX_OPEN_FDS; fd++) {\n if (!FS.streams[fd]) {\n return fd;\n }\n }\n throw new FS.ErrnoError(33);\n }, getStreamChecked(fd) {\n var stream = FS.getStream(fd);\n if (!stream) {\n throw new FS.ErrnoError(8);\n }\n return stream;\n }, getStream: (fd) => FS.streams[fd], createStream(stream, fd = -1) {\n if (!FS.FSStream) {\n FS.FSStream = function() {\n this.shared = {};\n };\n FS.FSStream.prototype = {};\n Object.defineProperties(FS.FSStream.prototype, { object: { get() {\n return this.node;\n }, set(val) {\n this.node = val;\n } }, isRead: { get() {\n return (this.flags & 2097155) !== 1;\n } }, isWrite: { get() {\n return (this.flags & 2097155) !== 0;\n } }, isAppend: { get() {\n return this.flags & 1024;\n } }, flags: { get() {\n return this.shared.flags;\n }, set(val) {\n this.shared.flags = val;\n } }, position: { get() {\n return this.shared.position;\n }, set(val) {\n this.shared.position = val;\n } } });\n }\n stream = Object.assign(new FS.FSStream(), stream);\n if (fd == -1) {\n fd = FS.nextfd();\n }\n stream.fd = fd;\n FS.streams[fd] = stream;\n return stream;\n }, closeStream(fd) {\n FS.streams[fd] = null;\n }, chrdev_stream_ops: { open(stream) {\n var device = FS.getDevice(stream.node.rdev);\n stream.stream_ops = device.stream_ops;\n if (stream.stream_ops.open) {\n stream.stream_ops.open(stream);\n }\n }, llseek() {\n throw new FS.ErrnoError(70);\n } }, major: (dev) => dev >> 8, minor: (dev) => dev & 255, makedev: (ma, mi) => ma << 8 | mi, registerDevice(dev, ops) {\n FS.devices[dev] = { stream_ops: ops };\n }, getDevice: (dev) => FS.devices[dev], getMounts(mount) {\n var mounts = [];\n var check = [mount];\n while (check.length) {\n var m = check.pop();\n mounts.push(m);\n check.push.apply(check, m.mounts);\n }\n return mounts;\n }, syncfs(populate, callback) {\n if (typeof populate == \"function\") {\n callback = populate;\n populate = false;\n }\n FS.syncFSRequests++;\n if (FS.syncFSRequests > 1) {\n err(`warning: ${FS.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);\n }\n var mounts = FS.getMounts(FS.root.mount);\n var completed = 0;\n function doCallback(errCode) {\n FS.syncFSRequests--;\n return callback(errCode);\n }\n function done(errCode) {\n if (errCode) {\n if (!done.errored) {\n done.errored = true;\n return doCallback(errCode);\n }\n return;\n }\n if (++completed >= mounts.length) {\n doCallback(null);\n }\n }\n mounts.forEach((mount) => {\n if (!mount.type.syncfs) {\n return done(null);\n }\n mount.type.syncfs(mount, populate, done);\n });\n }, mount(type, opts, mountpoint) {\n var root = mountpoint === \"/\";\n var pseudo = !mountpoint;\n var node;\n if (root && FS.root) {\n throw new FS.ErrnoError(10);\n } else if (!root && !pseudo) {\n var lookup2 = FS.lookupPath(mountpoint, { follow_mount: false });\n mountpoint = lookup2.path;\n node = lookup2.node;\n if (FS.isMountpoint(node)) {\n throw new FS.ErrnoError(10);\n }\n if (!FS.isDir(node.mode)) {\n throw new FS.ErrnoError(54);\n }\n }\n var mount = { type, opts, mountpoint, mounts: [] };\n var mountRoot = type.mount(mount);\n mountRoot.mount = mount;\n mount.root = mountRoot;\n if (root) {\n FS.root = mountRoot;\n } else if (node) {\n node.mounted = mount;\n if (node.mount) {\n node.mount.mounts.push(mount);\n }\n }\n return mountRoot;\n }, unmount(mountpoint) {\n var lookup2 = FS.lookupPath(mountpoint, { follow_mount: false });\n if (!FS.isMountpoint(lookup2.node)) {\n throw new FS.ErrnoError(28);\n }\n var node = lookup2.node;\n var mount = node.mounted;\n var mounts = FS.getMounts(mount);\n Object.keys(FS.nameTable).forEach((hash) => {\n var current = FS.nameTable[hash];\n while (current) {\n var next = current.name_next;\n if (mounts.includes(current.mount)) {\n FS.destroyNode(current);\n }\n current = next;\n }\n });\n node.mounted = null;\n var idx = node.mount.mounts.indexOf(mount);\n node.mount.mounts.splice(idx, 1);\n }, lookup(parent, name) {\n return parent.node_ops.lookup(parent, name);\n }, mknod(path, mode, dev) {\n var lookup2 = FS.lookupPath(path, { parent: true });\n var parent = lookup2.node;\n var name = PATH.basename(path);\n if (!name || name === \".\" || name === \"..\") {\n throw new FS.ErrnoError(28);\n }\n var errCode = FS.mayCreate(parent, name);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n if (!parent.node_ops.mknod) {\n throw new FS.ErrnoError(63);\n }\n return parent.node_ops.mknod(parent, name, mode, dev);\n }, create(path, mode) {\n mode = mode !== void 0 ? mode : 438;\n mode &= 4095;\n mode |= 32768;\n return FS.mknod(path, mode, 0);\n }, mkdir(path, mode) {\n mode = mode !== void 0 ? mode : 511;\n mode &= 511 | 512;\n mode |= 16384;\n return FS.mknod(path, mode, 0);\n }, mkdirTree(path, mode) {\n var dirs = path.split(\"/\");\n var d = \"\";\n for (var i = 0; i < dirs.length; ++i) {\n if (!dirs[i]) continue;\n d += \"/\" + dirs[i];\n try {\n FS.mkdir(d, mode);\n } catch (e) {\n if (e.errno != 20) throw e;\n }\n }\n }, mkdev(path, mode, dev) {\n if (typeof dev == \"undefined\") {\n dev = mode;\n mode = 438;\n }\n mode |= 8192;\n return FS.mknod(path, mode, dev);\n }, symlink(oldpath, newpath) {\n if (!PATH_FS.resolve(oldpath)) {\n throw new FS.ErrnoError(44);\n }\n var lookup2 = FS.lookupPath(newpath, { parent: true });\n var parent = lookup2.node;\n if (!parent) {\n throw new FS.ErrnoError(44);\n }\n var newname = PATH.basename(newpath);\n var errCode = FS.mayCreate(parent, newname);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n if (!parent.node_ops.symlink) {\n throw new FS.ErrnoError(63);\n }\n return parent.node_ops.symlink(parent, newname, oldpath);\n }, rename(old_path, new_path) {\n var old_dirname = PATH.dirname(old_path);\n var new_dirname = PATH.dirname(new_path);\n var old_name = PATH.basename(old_path);\n var new_name = PATH.basename(new_path);\n var lookup2, old_dir, new_dir;\n lookup2 = FS.lookupPath(old_path, { parent: true });\n old_dir = lookup2.node;\n lookup2 = FS.lookupPath(new_path, { parent: true });\n new_dir = lookup2.node;\n if (!old_dir || !new_dir) throw new FS.ErrnoError(44);\n if (old_dir.mount !== new_dir.mount) {\n throw new FS.ErrnoError(75);\n }\n var old_node = FS.lookupNode(old_dir, old_name);\n var relative = PATH_FS.relative(old_path, new_dirname);\n if (relative.charAt(0) !== \".\") {\n throw new FS.ErrnoError(28);\n }\n relative = PATH_FS.relative(new_path, old_dirname);\n if (relative.charAt(0) !== \".\") {\n throw new FS.ErrnoError(55);\n }\n var new_node;\n try {\n new_node = FS.lookupNode(new_dir, new_name);\n } catch (e) {\n }\n if (old_node === new_node) {\n return;\n }\n var isdir = FS.isDir(old_node.mode);\n var errCode = FS.mayDelete(old_dir, old_name, isdir);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n errCode = new_node ? FS.mayDelete(new_dir, new_name, isdir) : FS.mayCreate(new_dir, new_name);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n if (!old_dir.node_ops.rename) {\n throw new FS.ErrnoError(63);\n }\n if (FS.isMountpoint(old_node) || new_node && FS.isMountpoint(new_node)) {\n throw new FS.ErrnoError(10);\n }\n if (new_dir !== old_dir) {\n errCode = FS.nodePermissions(old_dir, \"w\");\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n }\n FS.hashRemoveNode(old_node);\n try {\n old_dir.node_ops.rename(old_node, new_dir, new_name);\n } catch (e) {\n throw e;\n } finally {\n FS.hashAddNode(old_node);\n }\n }, rmdir(path) {\n var lookup2 = FS.lookupPath(path, { parent: true });\n var parent = lookup2.node;\n var name = PATH.basename(path);\n var node = FS.lookupNode(parent, name);\n var errCode = FS.mayDelete(parent, name, true);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n if (!parent.node_ops.rmdir) {\n throw new FS.ErrnoError(63);\n }\n if (FS.isMountpoint(node)) {\n throw new FS.ErrnoError(10);\n }\n parent.node_ops.rmdir(parent, name);\n FS.destroyNode(node);\n }, readdir(path) {\n var lookup2 = FS.lookupPath(path, { follow: true });\n var node = lookup2.node;\n if (!node.node_ops.readdir) {\n throw new FS.ErrnoError(54);\n }\n return node.node_ops.readdir(node);\n }, unlink(path) {\n var lookup2 = FS.lookupPath(path, { parent: true });\n var parent = lookup2.node;\n if (!parent) {\n throw new FS.ErrnoError(44);\n }\n var name = PATH.basename(path);\n var node = FS.lookupNode(parent, name);\n var errCode = FS.mayDelete(parent, name, false);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n if (!parent.node_ops.unlink) {\n throw new FS.ErrnoError(63);\n }\n if (FS.isMountpoint(node)) {\n throw new FS.ErrnoError(10);\n }\n parent.node_ops.unlink(parent, name);\n FS.destroyNode(node);\n }, readlink(path) {\n var lookup2 = FS.lookupPath(path);\n var link = lookup2.node;\n if (!link) {\n throw new FS.ErrnoError(44);\n }\n if (!link.node_ops.readlink) {\n throw new FS.ErrnoError(28);\n }\n return PATH_FS.resolve(FS.getPath(link.parent), link.node_ops.readlink(link));\n }, stat(path, dontFollow) {\n var lookup2 = FS.lookupPath(path, { follow: !dontFollow });\n var node = lookup2.node;\n if (!node) {\n throw new FS.ErrnoError(44);\n }\n if (!node.node_ops.getattr) {\n throw new FS.ErrnoError(63);\n }\n return node.node_ops.getattr(node);\n }, lstat(path) {\n return FS.stat(path, true);\n }, chmod(path, mode, dontFollow) {\n var node;\n if (typeof path == \"string\") {\n var lookup2 = FS.lookupPath(path, { follow: !dontFollow });\n node = lookup2.node;\n } else {\n node = path;\n }\n if (!node.node_ops.setattr) {\n throw new FS.ErrnoError(63);\n }\n node.node_ops.setattr(node, { mode: mode & 4095 | node.mode & ~4095, timestamp: Date.now() });\n }, lchmod(path, mode) {\n FS.chmod(path, mode, true);\n }, fchmod(fd, mode) {\n var stream = FS.getStreamChecked(fd);\n FS.chmod(stream.node, mode);\n }, chown(path, uid, gid, dontFollow) {\n var node;\n if (typeof path == \"string\") {\n var lookup2 = FS.lookupPath(path, { follow: !dontFollow });\n node = lookup2.node;\n } else {\n node = path;\n }\n if (!node.node_ops.setattr) {\n throw new FS.ErrnoError(63);\n }\n node.node_ops.setattr(node, { timestamp: Date.now() });\n }, lchown(path, uid, gid) {\n FS.chown(path, uid, gid, true);\n }, fchown(fd, uid, gid) {\n var stream = FS.getStreamChecked(fd);\n FS.chown(stream.node, uid, gid);\n }, truncate(path, len) {\n if (len < 0) {\n throw new FS.ErrnoError(28);\n }\n var node;\n if (typeof path == \"string\") {\n var lookup2 = FS.lookupPath(path, { follow: true });\n node = lookup2.node;\n } else {\n node = path;\n }\n if (!node.node_ops.setattr) {\n throw new FS.ErrnoError(63);\n }\n if (FS.isDir(node.mode)) {\n throw new FS.ErrnoError(31);\n }\n if (!FS.isFile(node.mode)) {\n throw new FS.ErrnoError(28);\n }\n var errCode = FS.nodePermissions(node, \"w\");\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n node.node_ops.setattr(node, { size: len, timestamp: Date.now() });\n }, ftruncate(fd, len) {\n var stream = FS.getStreamChecked(fd);\n if ((stream.flags & 2097155) === 0) {\n throw new FS.ErrnoError(28);\n }\n FS.truncate(stream.node, len);\n }, utime(path, atime, mtime) {\n var lookup2 = FS.lookupPath(path, { follow: true });\n var node = lookup2.node;\n node.node_ops.setattr(node, { timestamp: Math.max(atime, mtime) });\n }, open(path, flags, mode) {\n if (path === \"\") {\n throw new FS.ErrnoError(44);\n }\n flags = typeof flags == \"string\" ? FS_modeStringToFlags(flags) : flags;\n mode = typeof mode == \"undefined\" ? 438 : mode;\n if (flags & 64) {\n mode = mode & 4095 | 32768;\n } else {\n mode = 0;\n }\n var node;\n if (typeof path == \"object\") {\n node = path;\n } else {\n path = PATH.normalize(path);\n try {\n var lookup2 = FS.lookupPath(path, { follow: !(flags & 131072) });\n node = lookup2.node;\n } catch (e) {\n }\n }\n var created = false;\n if (flags & 64) {\n if (node) {\n if (flags & 128) {\n throw new FS.ErrnoError(20);\n }\n } else {\n node = FS.mknod(path, mode, 0);\n created = true;\n }\n }\n if (!node) {\n throw new FS.ErrnoError(44);\n }\n if (FS.isChrdev(node.mode)) {\n flags &= ~512;\n }\n if (flags & 65536 && !FS.isDir(node.mode)) {\n throw new FS.ErrnoError(54);\n }\n if (!created) {\n var errCode = FS.mayOpen(node, flags);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n }\n if (flags & 512 && !created) {\n FS.truncate(node, 0);\n }\n flags &= ~(128 | 512 | 131072);\n var stream = FS.createStream({ node, path: FS.getPath(node), flags, seekable: true, position: 0, stream_ops: node.stream_ops, ungotten: [], error: false });\n if (stream.stream_ops.open) {\n stream.stream_ops.open(stream);\n }\n if (Module2[\"logReadFiles\"] && !(flags & 1)) {\n if (!FS.readFiles) FS.readFiles = {};\n if (!(path in FS.readFiles)) {\n FS.readFiles[path] = 1;\n }\n }\n return stream;\n }, close(stream) {\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n if (stream.getdents) stream.getdents = null;\n try {\n if (stream.stream_ops.close) {\n stream.stream_ops.close(stream);\n }\n } catch (e) {\n throw e;\n } finally {\n FS.closeStream(stream.fd);\n }\n stream.fd = null;\n }, isClosed(stream) {\n return stream.fd === null;\n }, llseek(stream, offset, whence) {\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n if (!stream.seekable || !stream.stream_ops.llseek) {\n throw new FS.ErrnoError(70);\n }\n if (whence != 0 && whence != 1 && whence != 2) {\n throw new FS.ErrnoError(28);\n }\n stream.position = stream.stream_ops.llseek(stream, offset, whence);\n stream.ungotten = [];\n return stream.position;\n }, read(stream, buffer, offset, length, position) {\n if (length < 0 || position < 0) {\n throw new FS.ErrnoError(28);\n }\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n if ((stream.flags & 2097155) === 1) {\n throw new FS.ErrnoError(8);\n }\n if (FS.isDir(stream.node.mode)) {\n throw new FS.ErrnoError(31);\n }\n if (!stream.stream_ops.read) {\n throw new FS.ErrnoError(28);\n }\n var seeking = typeof position != \"undefined\";\n if (!seeking) {\n position = stream.position;\n } else if (!stream.seekable) {\n throw new FS.ErrnoError(70);\n }\n var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position);\n if (!seeking) stream.position += bytesRead;\n return bytesRead;\n }, write(stream, buffer, offset, length, position, canOwn) {\n if (length < 0 || position < 0) {\n throw new FS.ErrnoError(28);\n }\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n if ((stream.flags & 2097155) === 0) {\n throw new FS.ErrnoError(8);\n }\n if (FS.isDir(stream.node.mode)) {\n throw new FS.ErrnoError(31);\n }\n if (!stream.stream_ops.write) {\n throw new FS.ErrnoError(28);\n }\n if (stream.seekable && stream.flags & 1024) {\n FS.llseek(stream, 0, 2);\n }\n var seeking = typeof position != \"undefined\";\n if (!seeking) {\n position = stream.position;\n } else if (!stream.seekable) {\n throw new FS.ErrnoError(70);\n }\n var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn);\n if (!seeking) stream.position += bytesWritten;\n return bytesWritten;\n }, allocate(stream, offset, length) {\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n if (offset < 0 || length <= 0) {\n throw new FS.ErrnoError(28);\n }\n if ((stream.flags & 2097155) === 0) {\n throw new FS.ErrnoError(8);\n }\n if (!FS.isFile(stream.node.mode) && !FS.isDir(stream.node.mode)) {\n throw new FS.ErrnoError(43);\n }\n if (!stream.stream_ops.allocate) {\n throw new FS.ErrnoError(138);\n }\n stream.stream_ops.allocate(stream, offset, length);\n }, mmap(stream, length, position, prot, flags) {\n if ((prot & 2) !== 0 && (flags & 2) === 0 && (stream.flags & 2097155) !== 2) {\n throw new FS.ErrnoError(2);\n }\n if ((stream.flags & 2097155) === 1) {\n throw new FS.ErrnoError(2);\n }\n if (!stream.stream_ops.mmap) {\n throw new FS.ErrnoError(43);\n }\n return stream.stream_ops.mmap(stream, length, position, prot, flags);\n }, msync(stream, buffer, offset, length, mmapFlags) {\n if (!stream.stream_ops.msync) {\n return 0;\n }\n return stream.stream_ops.msync(stream, buffer, offset, length, mmapFlags);\n }, munmap: (stream) => 0, ioctl(stream, cmd, arg) {\n if (!stream.stream_ops.ioctl) {\n throw new FS.ErrnoError(59);\n }\n return stream.stream_ops.ioctl(stream, cmd, arg);\n }, readFile(path, opts = {}) {\n opts.flags = opts.flags || 0;\n opts.encoding = opts.encoding || \"binary\";\n if (opts.encoding !== \"utf8\" && opts.encoding !== \"binary\") {\n throw new Error(`Invalid encoding type \"${opts.encoding}\"`);\n }\n var ret;\n var stream = FS.open(path, opts.flags);\n var stat = FS.stat(path);\n var length = stat.size;\n var buf = new Uint8Array(length);\n FS.read(stream, buf, 0, length, 0);\n if (opts.encoding === \"utf8\") {\n ret = UTF8ArrayToString(buf, 0);\n } else if (opts.encoding === \"binary\") {\n ret = buf;\n }\n FS.close(stream);\n return ret;\n }, writeFile(path, data, opts = {}) {\n opts.flags = opts.flags || 577;\n var stream = FS.open(path, opts.flags, opts.mode);\n if (typeof data == \"string\") {\n var buf = new Uint8Array(lengthBytesUTF8(data) + 1);\n var actualNumBytes = stringToUTF8Array(data, buf, 0, buf.length);\n FS.write(stream, buf, 0, actualNumBytes, void 0, opts.canOwn);\n } else if (ArrayBuffer.isView(data)) {\n FS.write(stream, data, 0, data.byteLength, void 0, opts.canOwn);\n } else {\n throw new Error(\"Unsupported data type\");\n }\n FS.close(stream);\n }, cwd: () => FS.currentPath, chdir(path) {\n var lookup2 = FS.lookupPath(path, { follow: true });\n if (lookup2.node === null) {\n throw new FS.ErrnoError(44);\n }\n if (!FS.isDir(lookup2.node.mode)) {\n throw new FS.ErrnoError(54);\n }\n var errCode = FS.nodePermissions(lookup2.node, \"x\");\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n FS.currentPath = lookup2.path;\n }, createDefaultDirectories() {\n FS.mkdir(\"/tmp\");\n FS.mkdir(\"/home\");\n FS.mkdir(\"/home/web_user\");\n }, createDefaultDevices() {\n FS.mkdir(\"/dev\");\n FS.registerDevice(FS.makedev(1, 3), { read: () => 0, write: (stream, buffer, offset, length, pos) => length });\n FS.mkdev(\"/dev/null\", FS.makedev(1, 3));\n TTY.register(FS.makedev(5, 0), TTY.default_tty_ops);\n TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops);\n FS.mkdev(\"/dev/tty\", FS.makedev(5, 0));\n FS.mkdev(\"/dev/tty1\", FS.makedev(6, 0));\n var randomBuffer = new Uint8Array(1024), randomLeft = 0;\n var randomByte = () => {\n if (randomLeft === 0) {\n randomLeft = randomFill(randomBuffer).byteLength;\n }\n return randomBuffer[--randomLeft];\n };\n FS.createDevice(\"/dev\", \"random\", randomByte);\n FS.createDevice(\"/dev\", \"urandom\", randomByte);\n FS.mkdir(\"/dev/shm\");\n FS.mkdir(\"/dev/shm/tmp\");\n }, createSpecialDirectories() {\n FS.mkdir(\"/proc\");\n var proc_self = FS.mkdir(\"/proc/self\");\n FS.mkdir(\"/proc/self/fd\");\n FS.mount({ mount() {\n var node = FS.createNode(proc_self, \"fd\", 16384 | 511, 73);\n node.node_ops = { lookup(parent, name) {\n var fd = +name;\n var stream = FS.getStreamChecked(fd);\n var ret = { parent: null, mount: { mountpoint: \"fake\" }, node_ops: { readlink: () => stream.path } };\n ret.parent = ret;\n return ret;\n } };\n return node;\n } }, {}, \"/proc/self/fd\");\n }, createStandardStreams() {\n if (Module2[\"stdin\"]) {\n FS.createDevice(\"/dev\", \"stdin\", Module2[\"stdin\"]);\n } else {\n FS.symlink(\"/dev/tty\", \"/dev/stdin\");\n }\n if (Module2[\"stdout\"]) {\n FS.createDevice(\"/dev\", \"stdout\", null, Module2[\"stdout\"]);\n } else {\n FS.symlink(\"/dev/tty\", \"/dev/stdout\");\n }\n if (Module2[\"stderr\"]) {\n FS.createDevice(\"/dev\", \"stderr\", null, Module2[\"stderr\"]);\n } else {\n FS.symlink(\"/dev/tty1\", \"/dev/stderr\");\n }\n var stdin = FS.open(\"/dev/stdin\", 0);\n var stdout = FS.open(\"/dev/stdout\", 1);\n var stderr = FS.open(\"/dev/stderr\", 1);\n }, ensureErrnoError() {\n if (FS.ErrnoError) return;\n FS.ErrnoError = function ErrnoError(errno, node) {\n this.name = \"ErrnoError\";\n this.node = node;\n this.setErrno = function(errno2) {\n this.errno = errno2;\n };\n this.setErrno(errno);\n this.message = \"FS error\";\n };\n FS.ErrnoError.prototype = new Error();\n FS.ErrnoError.prototype.constructor = FS.ErrnoError;\n [44].forEach((code) => {\n FS.genericErrors[code] = new FS.ErrnoError(code);\n FS.genericErrors[code].stack = \"<generic error, no stack>\";\n });\n }, staticInit() {\n FS.ensureErrnoError();\n FS.nameTable = new Array(4096);\n FS.mount(MEMFS, {}, \"/\");\n FS.createDefaultDirectories();\n FS.createDefaultDevices();\n FS.createSpecialDirectories();\n FS.filesystems = { \"MEMFS\": MEMFS };\n }, init(input, output, error) {\n FS.init.initialized = true;\n FS.ensureErrnoError();\n Module2[\"stdin\"] = input || Module2[\"stdin\"];\n Module2[\"stdout\"] = output || Module2[\"stdout\"];\n Module2[\"stderr\"] = error || Module2[\"stderr\"];\n FS.createStandardStreams();\n }, quit() {\n FS.init.initialized = false;\n for (var i = 0; i < FS.streams.length; i++) {\n var stream = FS.streams[i];\n if (!stream) {\n continue;\n }\n FS.close(stream);\n }\n }, findObject(path, dontResolveLastLink) {\n var ret = FS.analyzePath(path, dontResolveLastLink);\n if (!ret.exists) {\n return null;\n }\n return ret.object;\n }, analyzePath(path, dontResolveLastLink) {\n try {\n var lookup2 = FS.lookupPath(path, { follow: !dontResolveLastLink });\n path = lookup2.path;\n } catch (e) {\n }\n var ret = { isRoot: false, exists: false, error: 0, name: null, path: null, object: null, parentExists: false, parentPath: null, parentObject: null };\n try {\n var lookup2 = FS.lookupPath(path, { parent: true });\n ret.parentExists = true;\n ret.parentPath = lookup2.path;\n ret.parentObject = lookup2.node;\n ret.name = PATH.basename(path);\n lookup2 = FS.lookupPath(path, { follow: !dontResolveLastLink });\n ret.exists = true;\n ret.path = lookup2.path;\n ret.object = lookup2.node;\n ret.name = lookup2.node.name;\n ret.isRoot = lookup2.path === \"/\";\n } catch (e) {\n ret.error = e.errno;\n }\n return ret;\n }, createPath(parent, path, canRead, canWrite) {\n parent = typeof parent == \"string\" ? parent : FS.getPath(parent);\n var parts = path.split(\"/\").reverse();\n while (parts.length) {\n var part = parts.pop();\n if (!part) continue;\n var current = PATH.join2(parent, part);\n try {\n FS.mkdir(current);\n } catch (e) {\n }\n parent = current;\n }\n return current;\n }, createFile(parent, name, properties, canRead, canWrite) {\n var path = PATH.join2(typeof parent == \"string\" ? parent : FS.getPath(parent), name);\n var mode = FS_getMode(canRead, canWrite);\n return FS.create(path, mode);\n }, createDataFile(parent, name, data, canRead, canWrite, canOwn) {\n var path = name;\n if (parent) {\n parent = typeof parent == \"string\" ? parent : FS.getPath(parent);\n path = name ? PATH.join2(parent, name) : parent;\n }\n var mode = FS_getMode(canRead, canWrite);\n var node = FS.create(path, mode);\n if (data) {\n if (typeof data == \"string\") {\n var arr = new Array(data.length);\n for (var i = 0, len = data.length; i < len; ++i) arr[i] = data.charCodeAt(i);\n data = arr;\n }\n FS.chmod(node, mode | 146);\n var stream = FS.open(node, 577);\n FS.write(stream, data, 0, data.length, 0, canOwn);\n FS.close(stream);\n FS.chmod(node, mode);\n }\n return node;\n }, createDevice(parent, name, input, output) {\n var path = PATH.join2(typeof parent == \"string\" ? parent : FS.getPath(parent), name);\n var mode = FS_getMode(!!input, !!output);\n if (!FS.createDevice.major) FS.createDevice.major = 64;\n var dev = FS.makedev(FS.createDevice.major++, 0);\n FS.registerDevice(dev, { open(stream) {\n stream.seekable = false;\n }, close(stream) {\n if (output && output.buffer && output.buffer.length) {\n output(10);\n }\n }, read(stream, buffer, offset, length, pos) {\n var bytesRead = 0;\n for (var i = 0; i < length; i++) {\n var result;\n try {\n result = input();\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (result === void 0 && bytesRead === 0) {\n throw new FS.ErrnoError(6);\n }\n if (result === null || result === void 0) break;\n bytesRead++;\n buffer[offset + i] = result;\n }\n if (bytesRead) {\n stream.node.timestamp = Date.now();\n }\n return bytesRead;\n }, write(stream, buffer, offset, length, pos) {\n for (var i = 0; i < length; i++) {\n try {\n output(buffer[offset + i]);\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n }\n if (length) {\n stream.node.timestamp = Date.now();\n }\n return i;\n } });\n return FS.mkdev(path, mode, dev);\n }, forceLoadFile(obj) {\n if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true;\n if (typeof XMLHttpRequest != \"undefined\") {\n throw new Error(\"Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.\");\n } else if (read_) {\n try {\n obj.contents = intArrayFromString(read_(obj.url), true);\n obj.usedBytes = obj.contents.length;\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n } else {\n throw new Error(\"Cannot load without read() or XMLHttpRequest.\");\n }\n }, createLazyFile(parent, name, url, canRead, canWrite) {\n function LazyUint8Array() {\n this.lengthKnown = false;\n this.chunks = [];\n }\n LazyUint8Array.prototype.get = function LazyUint8Array_get(idx) {\n if (idx > this.length - 1 || idx < 0) {\n return void 0;\n }\n var chunkOffset = idx % this.chunkSize;\n var chunkNum = idx / this.chunkSize | 0;\n return this.getter(chunkNum)[chunkOffset];\n };\n LazyUint8Array.prototype.setDataGetter = function LazyUint8Array_setDataGetter(getter) {\n this.getter = getter;\n };\n LazyUint8Array.prototype.cacheLength = function LazyUint8Array_cacheLength() {\n var xhr = new XMLHttpRequest();\n xhr.open(\"HEAD\", url, false);\n xhr.send(null);\n if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error(\"Couldn't load \" + url + \". Status: \" + xhr.status);\n var datalength = Number(xhr.getResponseHeader(\"Content-length\"));\n var header;\n var hasByteServing = (header = xhr.getResponseHeader(\"Accept-Ranges\")) && header === \"bytes\";\n var usesGzip = (header = xhr.getResponseHeader(\"Content-Encoding\")) && header === \"gzip\";\n var chunkSize = 1024 * 1024;\n if (!hasByteServing) chunkSize = datalength;\n var doXHR = (from2, to) => {\n if (from2 > to) throw new Error(\"invalid range (\" + from2 + \", \" + to + \") or no bytes requested!\");\n if (to > datalength - 1) throw new Error(\"only \" + datalength + \" bytes available! programmer error!\");\n var xhr2 = new XMLHttpRequest();\n xhr2.open(\"GET\", url, false);\n if (datalength !== chunkSize) xhr2.setRequestHeader(\"Range\", \"bytes=\" + from2 + \"-\" + to);\n xhr2.responseType = \"arraybuffer\";\n if (xhr2.overrideMimeType) {\n xhr2.overrideMimeType(\"text/plain; charset=x-user-defined\");\n }\n xhr2.send(null);\n if (!(xhr2.status >= 200 && xhr2.status < 300 || xhr2.status === 304)) throw new Error(\"Couldn't load \" + url + \". Status: \" + xhr2.status);\n if (xhr2.response !== void 0) {\n return new Uint8Array(xhr2.response || []);\n }\n return intArrayFromString(xhr2.responseText || \"\", true);\n };\n var lazyArray2 = this;\n lazyArray2.setDataGetter((chunkNum) => {\n var start = chunkNum * chunkSize;\n var end = (chunkNum + 1) * chunkSize - 1;\n end = Math.min(end, datalength - 1);\n if (typeof lazyArray2.chunks[chunkNum] == \"undefined\") {\n lazyArray2.chunks[chunkNum] = doXHR(start, end);\n }\n if (typeof lazyArray2.chunks[chunkNum] == \"undefined\") throw new Error(\"doXHR failed!\");\n return lazyArray2.chunks[chunkNum];\n });\n if (usesGzip || !datalength) {\n chunkSize = datalength = 1;\n datalength = this.getter(0).length;\n chunkSize = datalength;\n out(\"LazyFiles on gzip forces download of the whole file when length is accessed\");\n }\n this._length = datalength;\n this._chunkSize = chunkSize;\n this.lengthKnown = true;\n };\n if (typeof XMLHttpRequest != \"undefined\") {\n if (!ENVIRONMENT_IS_WORKER) throw \"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc\";\n var lazyArray = new LazyUint8Array();\n Object.defineProperties(lazyArray, { length: { get: function() {\n if (!this.lengthKnown) {\n this.cacheLength();\n }\n return this._length;\n } }, chunkSize: { get: function() {\n if (!this.lengthKnown) {\n this.cacheLength();\n }\n return this._chunkSize;\n } } });\n var properties = { isDevice: false, contents: lazyArray };\n } else {\n var properties = { isDevice: false, url };\n }\n var node = FS.createFile(parent, name, properties, canRead, canWrite);\n if (properties.contents) {\n node.contents = properties.contents;\n } else if (properties.url) {\n node.contents = null;\n node.url = properties.url;\n }\n Object.defineProperties(node, { usedBytes: { get: function() {\n return this.contents.length;\n } } });\n var stream_ops = {};\n var keys = Object.keys(node.stream_ops);\n keys.forEach((key) => {\n var fn = node.stream_ops[key];\n stream_ops[key] = function forceLoadLazyFile() {\n FS.forceLoadFile(node);\n return fn.apply(null, arguments);\n };\n });\n function writeChunks(stream, buffer, offset, length, position) {\n var contents = stream.node.contents;\n if (position >= contents.length) return 0;\n var size = Math.min(contents.length - position, length);\n if (contents.slice) {\n for (var i = 0; i < size; i++) {\n buffer[offset + i] = contents[position + i];\n }\n } else {\n for (var i = 0; i < size; i++) {\n buffer[offset + i] = contents.get(position + i);\n }\n }\n return size;\n }\n stream_ops.read = (stream, buffer, offset, length, position) => {\n FS.forceLoadFile(node);\n return writeChunks(stream, buffer, offset, length, position);\n };\n stream_ops.mmap = (stream, length, position, prot, flags) => {\n FS.forceLoadFile(node);\n var ptr = mmapAlloc(length);\n if (!ptr) {\n throw new FS.ErrnoError(48);\n }\n writeChunks(stream, HEAP8, ptr, length, position);\n return { ptr, allocated: true };\n };\n node.stream_ops = stream_ops;\n return node;\n } };\n var SYSCALLS = { DEFAULT_POLLMASK: 5, calculateAt(dirfd, path, allowEmpty) {\n if (PATH.isAbs(path)) {\n return path;\n }\n var dir;\n if (dirfd === -100) {\n dir = FS.cwd();\n } else {\n var dirstream = SYSCALLS.getStreamFromFD(dirfd);\n dir = dirstream.path;\n }\n if (path.length == 0) {\n if (!allowEmpty) {\n throw new FS.ErrnoError(44);\n }\n return dir;\n }\n return PATH.join2(dir, path);\n }, doStat(func, path, buf) {\n try {\n var stat = func(path);\n } catch (e) {\n if (e && e.node && PATH.normalize(path) !== PATH.normalize(FS.getPath(e.node))) {\n return -54;\n }\n throw e;\n }\n _asan_js_store_4(buf >> 2, stat.dev);\n _asan_js_store_4(buf + 4 >> 2, stat.mode);\n _asan_js_store_4u(buf + 8 >> 2, stat.nlink);\n _asan_js_store_4(buf + 12 >> 2, stat.uid);\n _asan_js_store_4(buf + 16 >> 2, stat.gid);\n _asan_js_store_4(buf + 20 >> 2, stat.rdev);\n tempI64 = [stat.size >>> 0, (tempDouble = stat.size, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], _asan_js_store_4(buf + 24 >> 2, tempI64[0]), _asan_js_store_4(buf + 28 >> 2, tempI64[1]);\n _asan_js_store_4(buf + 32 >> 2, 4096);\n _asan_js_store_4(buf + 36 >> 2, stat.blocks);\n var atime = stat.atime.getTime();\n var mtime = stat.mtime.getTime();\n var ctime = stat.ctime.getTime();\n tempI64 = [Math.floor(atime / 1e3) >>> 0, (tempDouble = Math.floor(atime / 1e3), +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], _asan_js_store_4(buf + 40 >> 2, tempI64[0]), _asan_js_store_4(buf + 44 >> 2, tempI64[1]);\n _asan_js_store_4u(buf + 48 >> 2, atime % 1e3 * 1e3);\n tempI64 = [Math.floor(mtime / 1e3) >>> 0, (tempDouble = Math.floor(mtime / 1e3), +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], _asan_js_store_4(buf + 56 >> 2, tempI64[0]), _asan_js_store_4(buf + 60 >> 2, tempI64[1]);\n _asan_js_store_4u(buf + 64 >> 2, mtime % 1e3 * 1e3);\n tempI64 = [Math.floor(ctime / 1e3) >>> 0, (tempDouble = Math.floor(ctime / 1e3), +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], _asan_js_store_4(buf + 72 >> 2, tempI64[0]), _asan_js_store_4(buf + 76 >> 2, tempI64[1]);\n _asan_js_store_4u(buf + 80 >> 2, ctime % 1e3 * 1e3);\n tempI64 = [stat.ino >>> 0, (tempDouble = stat.ino, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], _asan_js_store_4(buf + 88 >> 2, tempI64[0]), _asan_js_store_4(buf + 92 >> 2, tempI64[1]);\n return 0;\n }, doMsync(addr, stream, len, flags, offset) {\n if (!FS.isFile(stream.node.mode)) {\n throw new FS.ErrnoError(43);\n }\n if (flags & 2) {\n return 0;\n }\n var buffer = HEAPU8.slice(addr, addr + len);\n FS.msync(stream, buffer, offset, len, flags);\n }, varargs: void 0, get() {\n var ret = _asan_js_load_4(SYSCALLS.varargs >> 2);\n SYSCALLS.varargs += 4;\n return ret;\n }, getp() {\n return SYSCALLS.get();\n }, getStr(ptr) {\n var ret = UTF8ToString(ptr);\n return ret;\n }, getStreamFromFD(fd) {\n var stream = FS.getStreamChecked(fd);\n return stream;\n } };\n function ___syscall_dup(fd) {\n try {\n var old = SYSCALLS.getStreamFromFD(fd);\n return FS.createStream(old).fd;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n var setErrNo = (value) => {\n _asan_js_store_4(___errno_location() >> 2, value);\n return value;\n };\n function ___syscall_fcntl64(fd, cmd, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n switch (cmd) {\n case 0: {\n var arg = SYSCALLS.get();\n if (arg < 0) {\n return -28;\n }\n while (FS.streams[arg]) {\n arg++;\n }\n var newStream;\n newStream = FS.createStream(stream, arg);\n return newStream.fd;\n }\n case 1:\n case 2:\n return 0;\n case 3:\n return stream.flags;\n case 4: {\n var arg = SYSCALLS.get();\n stream.flags |= arg;\n return 0;\n }\n case 5: {\n var arg = SYSCALLS.getp();\n var offset = 0;\n _asan_js_store_2(arg + offset >> 1, 2);\n return 0;\n }\n case 6:\n case 7:\n return 0;\n case 16:\n case 8:\n return -28;\n case 9:\n setErrNo(28);\n return -1;\n default: {\n return -28;\n }\n }\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_fstat64(fd, buf) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n return SYSCALLS.doStat(FS.stat, stream.path, buf);\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_lstat64(path, buf) {\n try {\n path = SYSCALLS.getStr(path);\n return SYSCALLS.doStat(FS.lstat, path, buf);\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_mkdirat(dirfd, path, mode) {\n try {\n path = SYSCALLS.getStr(path);\n path = SYSCALLS.calculateAt(dirfd, path);\n path = PATH.normalize(path);\n if (path[path.length - 1] === \"/\") path = path.substr(0, path.length - 1);\n FS.mkdir(path, mode, 0);\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_newfstatat(dirfd, path, buf, flags) {\n try {\n path = SYSCALLS.getStr(path);\n var nofollow = flags & 256;\n var allowEmpty = flags & 4096;\n flags = flags & ~6400;\n path = SYSCALLS.calculateAt(dirfd, path, allowEmpty);\n return SYSCALLS.doStat(nofollow ? FS.lstat : FS.stat, path, buf);\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_openat(dirfd, path, flags, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n path = SYSCALLS.getStr(path);\n path = SYSCALLS.calculateAt(dirfd, path);\n var mode = varargs ? SYSCALLS.get() : 0;\n return FS.open(path, flags, mode).fd;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n var PIPEFS = { BUCKET_BUFFER_SIZE: 8192, mount(mount) {\n return FS.createNode(null, \"/\", 16384 | 511, 0);\n }, createPipe() {\n var pipe = { buckets: [], refcnt: 2 };\n pipe.buckets.push({ buffer: new Uint8Array(PIPEFS.BUCKET_BUFFER_SIZE), offset: 0, roffset: 0 });\n var rName = PIPEFS.nextname();\n var wName = PIPEFS.nextname();\n var rNode = FS.createNode(PIPEFS.root, rName, 4096, 0);\n var wNode = FS.createNode(PIPEFS.root, wName, 4096, 0);\n rNode.pipe = pipe;\n wNode.pipe = pipe;\n var readableStream = FS.createStream({ path: rName, node: rNode, flags: 0, seekable: false, stream_ops: PIPEFS.stream_ops });\n rNode.stream = readableStream;\n var writableStream = FS.createStream({ path: wName, node: wNode, flags: 1, seekable: false, stream_ops: PIPEFS.stream_ops });\n wNode.stream = writableStream;\n return { readable_fd: readableStream.fd, writable_fd: writableStream.fd };\n }, stream_ops: { poll(stream) {\n var pipe = stream.node.pipe;\n if ((stream.flags & 2097155) === 1) {\n return 256 | 4;\n }\n if (pipe.buckets.length > 0) {\n for (var i = 0; i < pipe.buckets.length; i++) {\n var bucket = pipe.buckets[i];\n if (bucket.offset - bucket.roffset > 0) {\n return 64 | 1;\n }\n }\n }\n return 0;\n }, ioctl(stream, request, varargs) {\n return 28;\n }, fsync(stream) {\n return 28;\n }, read(stream, buffer, offset, length, position) {\n var pipe = stream.node.pipe;\n var currentLength = 0;\n for (var i = 0; i < pipe.buckets.length; i++) {\n var bucket = pipe.buckets[i];\n currentLength += bucket.offset - bucket.roffset;\n }\n var data = buffer.subarray(offset, offset + length);\n if (length <= 0) {\n return 0;\n }\n if (currentLength == 0) {\n throw new FS.ErrnoError(6);\n }\n var toRead = Math.min(currentLength, length);\n var totalRead = toRead;\n var toRemove = 0;\n for (var i = 0; i < pipe.buckets.length; i++) {\n var currBucket = pipe.buckets[i];\n var bucketSize = currBucket.offset - currBucket.roffset;\n if (toRead <= bucketSize) {\n var tmpSlice = currBucket.buffer.subarray(currBucket.roffset, currBucket.offset);\n if (toRead < bucketSize) {\n tmpSlice = tmpSlice.subarray(0, toRead);\n currBucket.roffset += toRead;\n } else {\n toRemove++;\n }\n data.set(tmpSlice);\n break;\n } else {\n var tmpSlice = currBucket.buffer.subarray(currBucket.roffset, currBucket.offset);\n data.set(tmpSlice);\n data = data.subarray(tmpSlice.byteLength);\n toRead -= tmpSlice.byteLength;\n toRemove++;\n }\n }\n if (toRemove && toRemove == pipe.buckets.length) {\n toRemove--;\n pipe.buckets[toRemove].offset = 0;\n pipe.buckets[toRemove].roffset = 0;\n }\n pipe.buckets.splice(0, toRemove);\n return totalRead;\n }, write(stream, buffer, offset, length, position) {\n var pipe = stream.node.pipe;\n var data = buffer.subarray(offset, offset + length);\n var dataLen = data.byteLength;\n if (dataLen <= 0) {\n return 0;\n }\n var currBucket = null;\n if (pipe.buckets.length == 0) {\n currBucket = { buffer: new Uint8Array(PIPEFS.BUCKET_BUFFER_SIZE), offset: 0, roffset: 0 };\n pipe.buckets.push(currBucket);\n } else {\n currBucket = pipe.buckets[pipe.buckets.length - 1];\n }\n assert(currBucket.offset <= PIPEFS.BUCKET_BUFFER_SIZE);\n var freeBytesInCurrBuffer = PIPEFS.BUCKET_BUFFER_SIZE - currBucket.offset;\n if (freeBytesInCurrBuffer >= dataLen) {\n currBucket.buffer.set(data, currBucket.offset);\n currBucket.offset += dataLen;\n return dataLen;\n } else if (freeBytesInCurrBuffer > 0) {\n currBucket.buffer.set(data.subarray(0, freeBytesInCurrBuffer), currBucket.offset);\n currBucket.offset += freeBytesInCurrBuffer;\n data = data.subarray(freeBytesInCurrBuffer, data.byteLength);\n }\n var numBuckets = data.byteLength / PIPEFS.BUCKET_BUFFER_SIZE | 0;\n var remElements = data.byteLength % PIPEFS.BUCKET_BUFFER_SIZE;\n for (var i = 0; i < numBuckets; i++) {\n var newBucket = { buffer: new Uint8Array(PIPEFS.BUCKET_BUFFER_SIZE), offset: PIPEFS.BUCKET_BUFFER_SIZE, roffset: 0 };\n pipe.buckets.push(newBucket);\n newBucket.buffer.set(data.subarray(0, PIPEFS.BUCKET_BUFFER_SIZE));\n data = data.subarray(PIPEFS.BUCKET_BUFFER_SIZE, data.byteLength);\n }\n if (remElements > 0) {\n var newBucket = { buffer: new Uint8Array(PIPEFS.BUCKET_BUFFER_SIZE), offset: data.byteLength, roffset: 0 };\n pipe.buckets.push(newBucket);\n newBucket.buffer.set(data);\n }\n return dataLen;\n }, close(stream) {\n var pipe = stream.node.pipe;\n pipe.refcnt--;\n if (pipe.refcnt === 0) {\n pipe.buckets = null;\n }\n } }, nextname() {\n if (!PIPEFS.nextname.current) {\n PIPEFS.nextname.current = 0;\n }\n return \"pipe[\" + PIPEFS.nextname.current++ + \"]\";\n } };\n function ___syscall_pipe(fdPtr) {\n try {\n if (fdPtr == 0) {\n throw new FS.ErrnoError(21);\n }\n var res = PIPEFS.createPipe();\n _asan_js_store_4(fdPtr >> 2, res.readable_fd);\n _asan_js_store_4(fdPtr + 4 >> 2, res.writable_fd);\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_poll(fds, nfds, timeout) {\n try {\n var nonzero = 0;\n for (var i = 0; i < nfds; i++) {\n var pollfd = fds + 8 * i;\n var fd = _asan_js_load_4(pollfd >> 2);\n var events = _asan_js_load_2(pollfd + 4 >> 1);\n var mask = 32;\n var stream = FS.getStream(fd);\n if (stream) {\n mask = SYSCALLS.DEFAULT_POLLMASK;\n if (stream.stream_ops.poll) {\n mask = stream.stream_ops.poll(stream, -1);\n }\n }\n mask &= events | 8 | 16;\n if (mask) nonzero++;\n _asan_js_store_2(pollfd + 6 >> 1, mask);\n }\n return nonzero;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_stat64(path, buf) {\n try {\n path = SYSCALLS.getStr(path);\n return SYSCALLS.doStat(FS.stat, path, buf);\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n var nowIsMonotonic = true;\n var __emscripten_get_now_is_monotonic = () => nowIsMonotonic;\n var withBuiltinMalloc = (func) => {\n var prev_malloc = typeof _malloc != \"undefined\" ? _malloc : void 0;\n var prev_memalign = typeof _memalign != \"undefined\" ? _memalign : void 0;\n var prev_free = typeof _free != \"undefined\" ? _free : void 0;\n _malloc = _emscripten_builtin_malloc;\n _memalign = _emscripten_builtin_memalign;\n _free = _emscripten_builtin_free;\n try {\n return func();\n } finally {\n _malloc = prev_malloc;\n _memalign = prev_memalign;\n _free = prev_free;\n }\n };\n var stringToUTF8 = (str, outPtr, maxBytesToWrite) => stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite);\n var stringToNewUTF8 = (str) => {\n var size = lengthBytesUTF8(str) + 1;\n var ret = _malloc(size);\n if (ret) stringToUTF8(str, ret, size);\n return ret;\n };\n var __emscripten_sanitizer_get_option = (name) => withBuiltinMalloc(() => stringToNewUTF8(Module2[UTF8ToString(name)] || \"\"));\n var __emscripten_sanitizer_use_colors = () => {\n var setting = Module2[\"printWithColors\"];\n if (setting !== void 0) {\n return setting;\n }\n return ENVIRONMENT_IS_NODE && process.stderr.isTTY;\n };\n var isLeapYear = (year) => year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n var MONTH_DAYS_LEAP_CUMULATIVE = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335];\n var MONTH_DAYS_REGULAR_CUMULATIVE = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334];\n var ydayFromDate = (date) => {\n var leap = isLeapYear(date.getFullYear());\n var monthDaysCumulative = leap ? MONTH_DAYS_LEAP_CUMULATIVE : MONTH_DAYS_REGULAR_CUMULATIVE;\n var yday = monthDaysCumulative[date.getMonth()] + date.getDate() - 1;\n return yday;\n };\n var convertI32PairToI53Checked = (lo, hi) => hi + 2097152 >>> 0 < 4194305 - !!lo ? (lo >>> 0) + hi * 4294967296 : NaN;\n function __localtime_js(time_low, time_high, tmPtr) {\n var time = convertI32PairToI53Checked(time_low, time_high);\n var date = new Date(time * 1e3);\n _asan_js_store_4(tmPtr >> 2, date.getSeconds());\n _asan_js_store_4(tmPtr + 4 >> 2, date.getMinutes());\n _asan_js_store_4(tmPtr + 8 >> 2, date.getHours());\n _asan_js_store_4(tmPtr + 12 >> 2, date.getDate());\n _asan_js_store_4(tmPtr + 16 >> 2, date.getMonth());\n _asan_js_store_4(tmPtr + 20 >> 2, date.getFullYear() - 1900);\n _asan_js_store_4(tmPtr + 24 >> 2, date.getDay());\n var yday = ydayFromDate(date) | 0;\n _asan_js_store_4(tmPtr + 28 >> 2, yday);\n _asan_js_store_4(tmPtr + 36 >> 2, -(date.getTimezoneOffset() * 60));\n var start = new Date(date.getFullYear(), 0, 1);\n var summerOffset = new Date(date.getFullYear(), 6, 1).getTimezoneOffset();\n var winterOffset = start.getTimezoneOffset();\n var dst = (summerOffset != winterOffset && date.getTimezoneOffset() == Math.min(winterOffset, summerOffset)) | 0;\n _asan_js_store_4(tmPtr + 32 >> 2, dst);\n }\n var __mktime_js = function(tmPtr) {\n var ret = (() => {\n var date = new Date(_asan_js_load_4(tmPtr + 20 >> 2) + 1900, _asan_js_load_4(tmPtr + 16 >> 2), _asan_js_load_4(tmPtr + 12 >> 2), _asan_js_load_4(tmPtr + 8 >> 2), _asan_js_load_4(tmPtr + 4 >> 2), _asan_js_load_4(tmPtr >> 2), 0);\n var dst = _asan_js_load_4(tmPtr + 32 >> 2);\n var guessedOffset = date.getTimezoneOffset();\n var start = new Date(date.getFullYear(), 0, 1);\n var summerOffset = new Date(date.getFullYear(), 6, 1).getTimezoneOffset();\n var winterOffset = start.getTimezoneOffset();\n var dstOffset = Math.min(winterOffset, summerOffset);\n if (dst < 0) {\n _asan_js_store_4(tmPtr + 32 >> 2, Number(summerOffset != winterOffset && dstOffset == guessedOffset));\n } else if (dst > 0 != (dstOffset == guessedOffset)) {\n var nonDstOffset = Math.max(winterOffset, summerOffset);\n var trueOffset = dst > 0 ? dstOffset : nonDstOffset;\n date.setTime(date.getTime() + (trueOffset - guessedOffset) * 6e4);\n }\n _asan_js_store_4(tmPtr + 24 >> 2, date.getDay());\n var yday = ydayFromDate(date) | 0;\n _asan_js_store_4(tmPtr + 28 >> 2, yday);\n _asan_js_store_4(tmPtr >> 2, date.getSeconds());\n _asan_js_store_4(tmPtr + 4 >> 2, date.getMinutes());\n _asan_js_store_4(tmPtr + 8 >> 2, date.getHours());\n _asan_js_store_4(tmPtr + 12 >> 2, date.getDate());\n _asan_js_store_4(tmPtr + 16 >> 2, date.getMonth());\n _asan_js_store_4(tmPtr + 20 >> 2, date.getYear());\n return date.getTime() / 1e3;\n })();\n return setTempRet0((tempDouble = ret, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)), ret >>> 0;\n };\n function __mmap_js(len, prot, flags, fd, offset_low, offset_high, allocated, addr) {\n var offset = convertI32PairToI53Checked(offset_low, offset_high);\n try {\n if (isNaN(offset)) return 61;\n var stream = SYSCALLS.getStreamFromFD(fd);\n var res = FS.mmap(stream, len, offset, prot, flags);\n var ptr = res.ptr;\n _asan_js_store_4(allocated >> 2, res.allocated);\n _asan_js_store_4u(addr >> 2, ptr);\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function __munmap_js(addr, len, prot, flags, fd, offset_low, offset_high) {\n var offset = convertI32PairToI53Checked(offset_low, offset_high);\n try {\n if (isNaN(offset)) return 61;\n var stream = SYSCALLS.getStreamFromFD(fd);\n if (prot & 2) {\n SYSCALLS.doMsync(addr, stream, len, flags, offset);\n }\n FS.munmap(stream);\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n var __timegm_js = function(tmPtr) {\n var ret = (() => {\n var time = Date.UTC(_asan_js_load_4(tmPtr + 20 >> 2) + 1900, _asan_js_load_4(tmPtr + 16 >> 2), _asan_js_load_4(tmPtr + 12 >> 2), _asan_js_load_4(tmPtr + 8 >> 2), _asan_js_load_4(tmPtr + 4 >> 2), _asan_js_load_4(tmPtr >> 2), 0);\n var date = new Date(time);\n _asan_js_store_4(tmPtr + 24 >> 2, date.getUTCDay());\n var start = Date.UTC(date.getUTCFullYear(), 0, 1, 0, 0, 0, 0);\n var yday = (date.getTime() - start) / (1e3 * 60 * 60 * 24) | 0;\n _asan_js_store_4(tmPtr + 28 >> 2, yday);\n return date.getTime() / 1e3;\n })();\n return setTempRet0((tempDouble = ret, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)), ret >>> 0;\n };\n var __tzset_js = (timezone, daylight, tzname) => {\n var currentYear = (/* @__PURE__ */ new Date()).getFullYear();\n var winter = new Date(currentYear, 0, 1);\n var summer = new Date(currentYear, 6, 1);\n var winterOffset = winter.getTimezoneOffset();\n var summerOffset = summer.getTimezoneOffset();\n var stdTimezoneOffset = Math.max(winterOffset, summerOffset);\n _asan_js_store_4u(timezone >> 2, stdTimezoneOffset * 60);\n _asan_js_store_4(daylight >> 2, Number(winterOffset != summerOffset));\n function extractZone(date) {\n var match = date.toTimeString().match(/\\(([A-Za-z ]+)\\)$/);\n return match ? match[1] : \"GMT\";\n }\n var winterName = extractZone(winter);\n var summerName = extractZone(summer);\n var winterNamePtr = stringToNewUTF8(winterName);\n var summerNamePtr = stringToNewUTF8(summerName);\n if (summerOffset < winterOffset) {\n _asan_js_store_4u(tzname >> 2, winterNamePtr);\n _asan_js_store_4u(tzname + 4 >> 2, summerNamePtr);\n } else {\n _asan_js_store_4u(tzname >> 2, summerNamePtr);\n _asan_js_store_4u(tzname + 4 >> 2, winterNamePtr);\n }\n };\n var _abort = () => {\n abort(\"\");\n };\n var _emscripten_date_now = () => Date.now();\n var getHeapMax = () => 2147483648;\n var _emscripten_get_heap_max = () => getHeapMax();\n var _emscripten_get_module_name = (buf, length) => stringToUTF8(wasmBinaryFile, buf, length);\n var _emscripten_get_now;\n _emscripten_get_now = () => performance.now();\n var UNWIND_CACHE = {};\n var convertFrameToPC = (frame) => {\n var match;\n if (match = /\\bwasm-function\\[\\d+\\]:(0x[0-9a-f]+)/.exec(frame)) {\n return +match[1];\n } else if (match = /\\bwasm-function\\[(\\d+)\\]:(\\d+)/.exec(frame)) {\n return wasmOffsetConverter.convert(+match[1], +match[2]);\n } else if (match = /:(\\d+):\\d+(?:\\)|$)/.exec(frame)) {\n return 2147483648 | +match[1];\n }\n return 0;\n };\n var convertPCtoSourceLocation = (pc) => {\n if (UNWIND_CACHE.last_get_source_pc == pc) return UNWIND_CACHE.last_source;\n var match;\n var source;\n if (!source) {\n var frame = UNWIND_CACHE[pc];\n if (!frame) return null;\n if (match = /\\((.*):(\\d+):(\\d+)\\)$/.exec(frame)) {\n source = { file: match[1], line: match[2], column: match[3] };\n } else if (match = /@(.*):(\\d+):(\\d+)/.exec(frame)) {\n source = { file: match[1], line: match[2], column: match[3] };\n }\n }\n UNWIND_CACHE.last_get_source_pc = pc;\n UNWIND_CACHE.last_source = source;\n return source;\n };\n var _emscripten_pc_get_column = (pc) => {\n var result = convertPCtoSourceLocation(pc);\n return result ? result.column || 0 : 0;\n };\n var _emscripten_pc_get_file = (pc) => withBuiltinMalloc(() => {\n var result = convertPCtoSourceLocation(pc);\n if (!result) return 0;\n if (_emscripten_pc_get_file.ret) _free(_emscripten_pc_get_file.ret);\n _emscripten_pc_get_file.ret = stringToNewUTF8(result.file);\n return _emscripten_pc_get_file.ret;\n });\n var _emscripten_pc_get_function = (pc) => withBuiltinMalloc(() => {\n var name;\n if (pc & 2147483648) {\n var frame = UNWIND_CACHE[pc];\n if (!frame) return 0;\n var match;\n if (match = /^\\s+at (.*) \\(.*\\)$/.exec(frame)) {\n name = match[1];\n } else if (match = /^(.+?)@/.exec(frame)) {\n name = match[1];\n } else {\n return 0;\n }\n } else {\n name = wasmOffsetConverter.getName(pc);\n }\n if (_emscripten_pc_get_function.ret) _free(_emscripten_pc_get_function.ret);\n _emscripten_pc_get_function.ret = stringToNewUTF8(name);\n return _emscripten_pc_get_function.ret;\n });\n var _emscripten_pc_get_line = (pc) => {\n var result = convertPCtoSourceLocation(pc);\n return result ? result.line : 0;\n };\n var growMemory = (size) => {\n var b = wasmMemory.buffer;\n var pages = (size - b.byteLength + 65535) / 65536;\n try {\n wasmMemory.grow(pages);\n updateMemoryViews();\n return 1;\n } catch (e) {\n }\n };\n var _emscripten_resize_heap = (requestedSize) => {\n var oldSize = HEAPU8.length;\n requestedSize >>>= 0;\n var maxHeapSize = getHeapMax();\n if (requestedSize > maxHeapSize) {\n return false;\n }\n var alignUp = (x, multiple) => x + (multiple - x % multiple) % multiple;\n for (var cutDown = 1; cutDown <= 4; cutDown *= 2) {\n var overGrownHeapSize = oldSize * (1 + 0.2 / cutDown);\n overGrownHeapSize = Math.min(overGrownHeapSize, requestedSize + 100663296);\n var newSize = Math.min(maxHeapSize, alignUp(Math.max(requestedSize, overGrownHeapSize), 65536));\n var replacement = growMemory(newSize);\n if (replacement) {\n return true;\n }\n }\n return false;\n };\n function jsStackTrace() {\n var error = new Error();\n if (!error.stack) {\n try {\n throw new Error();\n } catch (e) {\n error = e;\n }\n if (!error.stack) {\n return \"(no stack trace available)\";\n }\n }\n return error.stack.toString();\n }\n var _emscripten_return_address = (level) => {\n var callstack = jsStackTrace().split(\"\\n\");\n if (callstack[0] == \"Error\") {\n callstack.shift();\n }\n var caller = callstack[level + 3];\n return convertFrameToPC(caller);\n };\n var saveInUnwindCache = (callstack) => {\n callstack.forEach((frame) => {\n var pc = convertFrameToPC(frame);\n if (pc) {\n UNWIND_CACHE[pc] = frame;\n }\n });\n };\n function _emscripten_stack_snapshot() {\n var callstack = jsStackTrace().split(\"\\n\");\n if (callstack[0] == \"Error\") {\n callstack.shift();\n }\n saveInUnwindCache(callstack);\n UNWIND_CACHE.last_addr = convertFrameToPC(callstack[3]);\n UNWIND_CACHE.last_stack = callstack;\n return UNWIND_CACHE.last_addr;\n }\n var _emscripten_stack_unwind_buffer = (addr, buffer, count) => {\n var stack;\n if (UNWIND_CACHE.last_addr == addr) {\n stack = UNWIND_CACHE.last_stack;\n } else {\n stack = jsStackTrace().split(\"\\n\");\n if (stack[0] == \"Error\") {\n stack.shift();\n }\n saveInUnwindCache(stack);\n }\n var offset = 3;\n while (stack[offset] && convertFrameToPC(stack[offset]) != addr) {\n ++offset;\n }\n for (var i = 0; i < count && stack[i + offset]; ++i) {\n _asan_js_store_4(buffer + i * 4 >> 2, convertFrameToPC(stack[i + offset]));\n }\n return i;\n };\n var ENV = {};\n var getExecutableName = () => thisProgram || \"./this.program\";\n var getEnvStrings = () => {\n if (!getEnvStrings.strings) {\n var lang = (typeof navigator == \"object\" && navigator.languages && navigator.languages[0] || \"C\").replace(\"-\", \"_\") + \".UTF-8\";\n var env2 = { \"USER\": \"web_user\", \"LOGNAME\": \"web_user\", \"PATH\": \"/\", \"PWD\": \"/\", \"HOME\": \"/home/web_user\", \"LANG\": lang, \"_\": getExecutableName() };\n for (var x in ENV) {\n if (ENV[x] === void 0) delete env2[x];\n else env2[x] = ENV[x];\n }\n var strings = [];\n for (var x in env2) {\n strings.push(`${x}=${env2[x]}`);\n }\n getEnvStrings.strings = strings;\n }\n return getEnvStrings.strings;\n };\n var stringToAscii = (str, buffer) => {\n for (var i = 0; i < str.length; ++i) {\n _asan_js_store_1(buffer++ >> 0, str.charCodeAt(i));\n }\n _asan_js_store_1(buffer >> 0, 0);\n };\n var _environ_get = (__environ, environ_buf) => {\n var bufSize = 0;\n getEnvStrings().forEach((string, i) => {\n var ptr = environ_buf + bufSize;\n _asan_js_store_4u(__environ + i * 4 >> 2, ptr);\n stringToAscii(string, ptr);\n bufSize += string.length + 1;\n });\n return 0;\n };\n var _environ_sizes_get = (penviron_count, penviron_buf_size) => {\n var strings = getEnvStrings();\n _asan_js_store_4u(penviron_count >> 2, strings.length);\n var bufSize = 0;\n strings.forEach((string) => bufSize += string.length + 1);\n _asan_js_store_4u(penviron_buf_size >> 2, bufSize);\n return 0;\n };\n var _proc_exit = (code) => {\n EXITSTATUS = code;\n if (!keepRuntimeAlive()) {\n if (Module2[\"onExit\"]) Module2[\"onExit\"](code);\n ABORT = true;\n }\n quit_(code, new ExitStatus(code));\n };\n var exitJS = (status, implicit) => {\n EXITSTATUS = status;\n if (!keepRuntimeAlive()) {\n exitRuntime();\n }\n _proc_exit(status);\n };\n var _exit = exitJS;\n function _fd_close(fd) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n FS.close(stream);\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n }\n function _fd_fdstat_get(fd, pbuf) {\n try {\n var rightsBase = 0;\n var rightsInheriting = 0;\n var flags = 0;\n {\n var stream = SYSCALLS.getStreamFromFD(fd);\n var type = stream.tty ? 2 : FS.isDir(stream.mode) ? 3 : FS.isLink(stream.mode) ? 7 : 4;\n }\n _asan_js_store_1(pbuf >> 0, type);\n _asan_js_store_2(pbuf + 2 >> 1, flags);\n tempI64 = [rightsBase >>> 0, (tempDouble = rightsBase, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], _asan_js_store_4(pbuf + 8 >> 2, tempI64[0]), _asan_js_store_4(pbuf + 12 >> 2, tempI64[1]);\n tempI64 = [rightsInheriting >>> 0, (tempDouble = rightsInheriting, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], _asan_js_store_4(pbuf + 16 >> 2, tempI64[0]), _asan_js_store_4(pbuf + 20 >> 2, tempI64[1]);\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n }\n var doReadv = (stream, iov, iovcnt, offset) => {\n var ret = 0;\n for (var i = 0; i < iovcnt; i++) {\n var ptr = _asan_js_load_4u(iov >> 2);\n var len = _asan_js_load_4u(iov + 4 >> 2);\n iov += 8;\n var curr = FS.read(stream, HEAP8, ptr, len, offset);\n if (curr < 0) return -1;\n ret += curr;\n if (curr < len) break;\n if (typeof offset !== \"undefined\") {\n offset += curr;\n }\n }\n return ret;\n };\n function _fd_read(fd, iov, iovcnt, pnum) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n var num = doReadv(stream, iov, iovcnt);\n _asan_js_store_4u(pnum >> 2, num);\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n }\n function _fd_seek(fd, offset_low, offset_high, whence, newOffset) {\n var offset = convertI32PairToI53Checked(offset_low, offset_high);\n try {\n if (isNaN(offset)) return 61;\n var stream = SYSCALLS.getStreamFromFD(fd);\n FS.llseek(stream, offset, whence);\n tempI64 = [stream.position >>> 0, (tempDouble = stream.position, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], _asan_js_store_4(newOffset >> 2, tempI64[0]), _asan_js_store_4(newOffset + 4 >> 2, tempI64[1]);\n if (stream.getdents && offset === 0 && whence === 0) stream.getdents = null;\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n }\n var doWritev = (stream, iov, iovcnt, offset) => {\n var ret = 0;\n for (var i = 0; i < iovcnt; i++) {\n var ptr = _asan_js_load_4u(iov >> 2);\n var len = _asan_js_load_4u(iov + 4 >> 2);\n iov += 8;\n var curr = FS.write(stream, HEAP8, ptr, len, offset);\n if (curr < 0) return -1;\n ret += curr;\n if (typeof offset !== \"undefined\") {\n offset += curr;\n }\n }\n return ret;\n };\n function _fd_write(fd, iov, iovcnt, pnum) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n var num = doWritev(stream, iov, iovcnt);\n _asan_js_store_4u(pnum >> 2, num);\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n }\n var getCFunc = (ident) => {\n var func = Module2[\"_\" + ident];\n return func;\n };\n var writeArrayToMemory = (array, buffer) => {\n HEAP8.set(array, buffer);\n };\n var stringToUTF8OnStack = (str) => {\n var size = lengthBytesUTF8(str) + 1;\n var ret = stackAlloc(size);\n stringToUTF8(str, ret, size);\n return ret;\n };\n var ccall = (ident, returnType, argTypes, args, opts) => {\n var toC = { \"string\": (str) => {\n var ret2 = 0;\n if (str !== null && str !== void 0 && str !== 0) {\n ret2 = stringToUTF8OnStack(str);\n }\n return ret2;\n }, \"array\": (arr) => {\n var ret2 = stackAlloc(arr.length);\n writeArrayToMemory(arr, ret2);\n return ret2;\n } };\n function convertReturnValue(ret2) {\n if (returnType === \"string\") {\n return UTF8ToString(ret2);\n }\n if (returnType === \"boolean\") return Boolean(ret2);\n return ret2;\n }\n var func = getCFunc(ident);\n var cArgs = [];\n var stack = 0;\n if (args) {\n for (var i = 0; i < args.length; i++) {\n var converter = toC[argTypes[i]];\n if (converter) {\n if (stack === 0) stack = stackSave();\n cArgs[i] = converter(args[i]);\n } else {\n cArgs[i] = args[i];\n }\n }\n }\n var ret = func.apply(null, cArgs);\n function onDone(ret2) {\n if (stack !== 0) stackRestore(stack);\n return convertReturnValue(ret2);\n }\n ret = onDone(ret);\n return ret;\n };\n var cwrap = (ident, returnType, argTypes, opts) => {\n var numericArgs = !argTypes || argTypes.every((type) => type === \"number\" || type === \"boolean\");\n var numericRet = returnType !== \"string\";\n if (numericRet && numericArgs && !opts) {\n return getCFunc(ident);\n }\n return function() {\n return ccall(ident, returnType, argTypes, arguments, opts);\n };\n };\n var FSNode = function(parent, name, mode, rdev) {\n if (!parent) {\n parent = this;\n }\n this.parent = parent;\n this.mount = parent.mount;\n this.mounted = null;\n this.id = FS.nextInode++;\n this.name = name;\n this.mode = mode;\n this.node_ops = {};\n this.stream_ops = {};\n this.rdev = rdev;\n };\n var readMode = 292 | 73;\n var writeMode = 146;\n Object.defineProperties(FSNode.prototype, { read: { get: function() {\n return (this.mode & readMode) === readMode;\n }, set: function(val) {\n val ? this.mode |= readMode : this.mode &= ~readMode;\n } }, write: { get: function() {\n return (this.mode & writeMode) === writeMode;\n }, set: function(val) {\n val ? this.mode |= writeMode : this.mode &= ~writeMode;\n } }, isFolder: { get: function() {\n return FS.isDir(this.mode);\n } }, isDevice: { get: function() {\n return FS.isChrdev(this.mode);\n } } });\n FS.FSNode = FSNode;\n FS.createPreloadedFile = FS_createPreloadedFile;\n FS.staticInit();\n var wasmImports = { E: ___assert_fail, p: ___syscall_dup, c: ___syscall_fcntl64, P: ___syscall_fstat64, N: ___syscall_lstat64, D: ___syscall_mkdirat, O: ___syscall_newfstatat, l: ___syscall_openat, K: ___syscall_pipe, J: ___syscall_poll, i: ___syscall_stat64, L: __emscripten_get_now_is_monotonic, g: __emscripten_sanitizer_get_option, e: __emscripten_sanitizer_use_colors, t: __localtime_js, u: __mktime_js, r: __mmap_js, s: __munmap_js, v: __timegm_js, H: __tzset_js, a: _abort, M: _emscripten_date_now, I: _emscripten_get_heap_max, k: _emscripten_get_module_name, h: _emscripten_get_now, x: _emscripten_pc_get_column, z: _emscripten_pc_get_file, A: _emscripten_pc_get_function, y: _emscripten_pc_get_line, F: _emscripten_resize_heap, b: _emscripten_return_address, C: _emscripten_stack_snapshot, B: _emscripten_stack_unwind_buffer, n: _environ_get, o: _environ_sizes_get, m: _exit, f: _fd_close, G: _fd_fdstat_get, j: _fd_read, w: _fd_seek, d: _fd_write, q: _proc_exit };\n var wasmExports = createWasm();\n var ___wasm_call_ctors = () => (___wasm_call_ctors = wasmExports[\"R\"])();\n var _extract_archive = Module2[\"_extract_archive\"] = (a0, a1, a2) => (_extract_archive = Module2[\"_extract_archive\"] = wasmExports[\"S\"])(a0, a1, a2);\n var _malloc = Module2[\"_malloc\"] = (a0) => (_malloc = Module2[\"_malloc\"] = wasmExports[\"T\"])(a0);\n var _free = Module2[\"_free\"] = (a0) => (_free = Module2[\"_free\"] = wasmExports[\"U\"])(a0);\n var _free_extracted_archive = Module2[\"_free_extracted_archive\"] = (a0) => (_free_extracted_archive = Module2[\"_free_extracted_archive\"] = wasmExports[\"V\"])(a0);\n var ___errno_location = () => (___errno_location = wasmExports[\"X\"])();\n var ___funcs_on_exit = () => (___funcs_on_exit = wasmExports[\"Y\"])();\n var _emscripten_builtin_malloc = (a0) => (_emscripten_builtin_malloc = wasmExports[\"Z\"])(a0);\n var _memalign = (a0, a1) => (_memalign = wasmExports[\"_\"])(a0, a1);\n var _emscripten_builtin_free = (a0) => (_emscripten_builtin_free = wasmExports[\"$\"])(a0);\n var _emscripten_builtin_memalign = (a0, a1) => (_emscripten_builtin_memalign = wasmExports[\"aa\"])(a0, a1);\n var setTempRet0 = (a0) => (setTempRet0 = wasmExports[\"ba\"])(a0);\n var stackSave = () => (stackSave = wasmExports[\"ca\"])();\n var stackRestore = (a0) => (stackRestore = wasmExports[\"da\"])(a0);\n var stackAlloc = (a0) => (stackAlloc = wasmExports[\"ea\"])(a0);\n var __ZN6__asan9FakeStack17AddrIsInFakeStackEm = Module2[\"__ZN6__asan9FakeStack17AddrIsInFakeStackEm\"] = (a0, a1) => (__ZN6__asan9FakeStack17AddrIsInFakeStackEm = Module2[\"__ZN6__asan9FakeStack17AddrIsInFakeStackEm\"] = wasmExports[\"fa\"])(a0, a1);\n var __ZN6__asan9FakeStack8AllocateEmmm = Module2[\"__ZN6__asan9FakeStack8AllocateEmmm\"] = (a0, a1, a2, a3) => (__ZN6__asan9FakeStack8AllocateEmmm = Module2[\"__ZN6__asan9FakeStack8AllocateEmmm\"] = wasmExports[\"ga\"])(a0, a1, a2, a3);\n var __asan_c_load_1 = (a0) => (__asan_c_load_1 = wasmExports[\"ha\"])(a0);\n var __asan_c_load_1u = (a0) => (__asan_c_load_1u = wasmExports[\"_asan_c_load_1u\"])(a0);\n var __asan_c_load_2 = (a0) => (__asan_c_load_2 = wasmExports[\"ia\"])(a0);\n var __asan_c_load_2u = (a0) => (__asan_c_load_2u = wasmExports[\"_asan_c_load_2u\"])(a0);\n var __asan_c_load_4 = (a0) => (__asan_c_load_4 = wasmExports[\"ja\"])(a0);\n var __asan_c_load_4u = (a0) => (__asan_c_load_4u = wasmExports[\"ka\"])(a0);\n var __asan_c_load_f = (a0) => (__asan_c_load_f = wasmExports[\"la\"])(a0);\n var __asan_c_load_d = (a0) => (__asan_c_load_d = wasmExports[\"ma\"])(a0);\n var __asan_c_store_1 = (a0, a1) => (__asan_c_store_1 = wasmExports[\"na\"])(a0, a1);\n var __asan_c_store_1u = (a0, a1) => (__asan_c_store_1u = wasmExports[\"_asan_c_store_1u\"])(a0, a1);\n var __asan_c_store_2 = (a0, a1) => (__asan_c_store_2 = wasmExports[\"oa\"])(a0, a1);\n var __asan_c_store_2u = (a0, a1) => (__asan_c_store_2u = wasmExports[\"_asan_c_store_2u\"])(a0, a1);\n var __asan_c_store_4 = (a0, a1) => (__asan_c_store_4 = wasmExports[\"pa\"])(a0, a1);\n var __asan_c_store_4u = (a0, a1) => (__asan_c_store_4u = wasmExports[\"qa\"])(a0, a1);\n var __asan_c_store_f = (a0, a1) => (__asan_c_store_f = wasmExports[\"_asan_c_store_f\"])(a0, a1);\n var __asan_c_store_d = (a0, a1) => (__asan_c_store_d = wasmExports[\"_asan_c_store_d\"])(a0, a1);\n Module2[\"wasmMemory\"] = wasmMemory;\n Module2[\"ccall\"] = ccall;\n Module2[\"cwrap\"] = cwrap;\n Module2[\"getValue\"] = getValue;\n Module2[\"UTF8ToString\"] = UTF8ToString;\n var calledRun;\n dependenciesFulfilled = function runCaller() {\n if (!calledRun) run();\n if (!calledRun) dependenciesFulfilled = runCaller;\n };\n function run() {\n if (runDependencies > 0) {\n return;\n }\n preRun();\n if (runDependencies > 0) {\n return;\n }\n function doRun() {\n if (calledRun) return;\n calledRun = true;\n Module2[\"calledRun\"] = true;\n if (ABORT) return;\n initRuntime();\n readyPromiseResolve(Module2);\n if (Module2[\"onRuntimeInitialized\"]) Module2[\"onRuntimeInitialized\"]();\n postRun();\n }\n if (Module2[\"setStatus\"]) {\n Module2[\"setStatus\"](\"Running...\");\n setTimeout(function() {\n setTimeout(function() {\n Module2[\"setStatus\"](\"\");\n }, 1);\n doRun();\n }, 1);\n } else {\n doRun();\n }\n }\n if (Module2[\"preInit\"]) {\n if (typeof Module2[\"preInit\"] == \"function\") Module2[\"preInit\"] = [Module2[\"preInit\"]];\n while (Module2[\"preInit\"].length > 0) {\n Module2[\"preInit\"].pop()();\n }\n }\n run();\n return moduleArg.ready;\n };\n })();\n if (typeof exports === \"object\" && typeof module === \"object\")\n module.exports = Module;\n else if (typeof define === \"function\" && define[\"amd\"])\n define([], () => Module);\n }\n});\n\n// src/index.ts\ninit_process();\ninit_buffer();\n\n// node_modules/@emscripten-forge/untarjs/lib/index.js\ninit_process();\ninit_buffer();\n\n// node_modules/@emscripten-forge/untarjs/lib/helper.js\ninit_process();\ninit_buffer();\nvar import_unpack = __toESM(require_unpack());\n\n// node_modules/@emscripten-forge/untarjs/lib/unpack.wasm\nvar unpack_default = \"./unpack-FNZYUYJE.wasm\";\n\n// node_modules/@emscripten-forge/untarjs/lib/helper.js\nvar initializeWasm = async () => {\n const wasmModule = await (0, import_unpack.default)({\n locateFile(path) {\n if (path.endsWith(\".wasm\")) {\n return unpack_default;\n }\n return path;\n }\n });\n return wasmModule;\n};\nvar helper_default = initializeWasm;\n\n// node_modules/@emscripten-forge/untarjs/lib/types.js\ninit_process();\ninit_buffer();\n\n// node_modules/@emscripten-forge/untarjs/lib/index.js\nvar fetchByteArray = async (url) => {\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n const arrayBuffer = await response.arrayBuffer();\n return new Uint8Array(arrayBuffer);\n};\nvar initUntarJS = async () => {\n const wasmModule = await helper_default();\n const extractData = async (data) => {\n let inputPtr = wasmModule._malloc(data.length);\n wasmModule.HEAPU8.set(data, inputPtr);\n let fileCountPtr = wasmModule._malloc(4);\n let resultPtr = wasmModule._extract_archive(inputPtr, data.length, fileCountPtr);\n let statusPtr = wasmModule.getValue(resultPtr + 8, \"i32\");\n let errorMessagePtr = resultPtr + 12;\n if (statusPtr !== 1) {\n const errorMessage = wasmModule.UTF8ToString(errorMessagePtr);\n console.error(\"Extraction failed with status:\", statusPtr, \"Error:\", errorMessage);\n wasmModule._free(inputPtr);\n wasmModule._free(fileCountPtr);\n wasmModule._free_extracted_archive(resultPtr);\n inputPtr = null;\n fileCountPtr = null;\n resultPtr = null;\n errorMessagePtr = null;\n throw new Error(errorMessage);\n }\n const filesPtr = wasmModule.getValue(resultPtr, \"i32\");\n const fileCount = wasmModule.getValue(resultPtr + 4, \"i32\");\n const files = {};\n for (let i = 0; i < fileCount; i++) {\n const fileDataPtr = filesPtr + i * 12;\n const filenamePtr = wasmModule.getValue(fileDataPtr, \"i32\");\n const dataSize = wasmModule.getValue(fileDataPtr + 8, \"i32\");\n const dataPtr = wasmModule.getValue(fileDataPtr + 4, \"i32\");\n const filename = wasmModule.UTF8ToString(filenamePtr);\n const fileData = new Uint8Array(wasmModule.HEAPU8.buffer, dataPtr, dataSize);\n const fileDataCopy = fileData.slice(0);\n files[filename] = fileDataCopy;\n }\n wasmModule._free(inputPtr);\n wasmModule._free(fileCountPtr);\n wasmModule._free_extracted_archive(resultPtr);\n inputPtr = null;\n fileCountPtr = null;\n resultPtr = null;\n errorMessagePtr = null;\n return files;\n };\n const extract = async (url) => {\n const data = await fetchByteArray(url);\n return extractData(data);\n };\n return {\n extract,\n extractData\n };\n};\n\n// src/helper.ts\ninit_process();\ninit_buffer();\nvar fetchJson = async (url) => {\n let response = await fetch(url);\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n let json = await response.json();\n return json;\n};\n\n// src/dynload/dynload.js\ninit_process();\ninit_buffer();\nvar memoize = (fn) => {\n let cache = {};\n return (...args) => {\n let n = args[0];\n if (n in cache) {\n return cache[n];\n } else {\n let result = fn(n);\n cache[n] = result;\n return result;\n }\n };\n};\nfunction createLock() {\n let _lock = Promise.resolve();\n async function acquireLock() {\n const old_lock = _lock;\n let releaseLock = () => {\n };\n _lock = new Promise((resolve) => releaseLock = resolve);\n await old_lock;\n return releaseLock;\n }\n return acquireLock;\n}\nfunction isInSharedLibraryPath(prefix, libPath) {\n if (libPath.startsWith(\"/\")) {\n const dirname = libPath.substring(0, libPath.lastIndexOf(\"/\"));\n if (prefix == \"/\") {\n return dirname == `/lib`;\n } else {\n return dirname == `${prefix}/lib`;\n }\n } else {\n return false;\n }\n}\nasync function loadDynlibsFromPackage(prefix, pkg_file_name, pkg_is_shared_library, dynlibPaths, Module) {\n if (prefix == \"/\") {\n var sitepackages = `/lib/python3.11/site-packages`;\n } else {\n var sitepackages = `${prefix}/lib/python3.11/site-packages`;\n }\n const auditWheelLibDir = `${sitepackages}/${pkg_file_name.split(\"-\")[0]}.libs`;\n const readFileMemoized = memoize(Module.FS.readFile);\n const forceGlobal = !!pkg_is_shared_library;\n let dynlibs = [];\n if (forceGlobal) {\n dynlibs = Object.keys(dynlibPaths).map((path) => {\n return {\n path,\n global: true\n };\n });\n } else {\n const globalLibs = calculateGlobalLibs(\n dynlibPaths,\n readFileMemoized,\n Module\n );\n dynlibs = Object.keys(dynlibPaths).map((path) => {\n const global2 = globalLibs.has(Module.PATH.basename(path));\n return {\n path,\n global: global2 || !!pkg_is_shared_library || isInSharedLibraryPath(prefix, path) || path.startsWith(auditWheelLibDir)\n };\n });\n }\n dynlibs.sort((lib1, lib2) => Number(lib2.global) - Number(lib1.global));\n for (const { path, global: global2 } of dynlibs) {\n try {\n await loadDynlib(prefix, path, global2, [auditWheelLibDir], readFileMemoized, Module);\n } catch (e) {\n console.error(e);\n }\n }\n}\nfunction createDynlibFS(prefix, lib, searchDirs, readFileFunc, Module) {\n const dirname = lib.substring(0, lib.lastIndexOf(\"/\"));\n let _searchDirs = searchDirs || [];\n if (prefix == \"/\") {\n _searchDirs = _searchDirs.concat([dirname], [`/lib`]);\n } else {\n _searchDirs = _searchDirs.concat([dirname], [`${prefix}/lib`]);\n }\n const resolvePath = (path) => {\n if (Module.PATH.basename(path) !== Module.PATH.basename(lib)) {\n }\n for (const dir of _searchDirs) {\n const fullPath = Module.PATH.join2(dir, path);\n if (Module.FS.findObject(fullPath) !== null) {\n return fullPath;\n }\n }\n return path;\n };\n let readFile = (path) => Module.FS.readFile(resolvePath(path));\n if (readFileFunc !== void 0) {\n readFile = (path) => readFileFunc(resolvePath(path));\n }\n const fs = {\n findObject: (path, dontResolveLastLink) => {\n let obj = Module.FS.findObject(resolvePath(path), dontResolveLastLink);\n if (obj === null) {\n console.debug(`Failed to find a library: ${resolvePath(path)}`);\n }\n return obj;\n },\n readFile\n };\n return fs;\n}\nfunction calculateGlobalLibs(libs, readFileFunc, Module) {\n let readFile = Module.FS.readFile;\n if (readFileFunc !== void 0) {\n readFile = readFileFunc;\n }\n const globalLibs = /* @__PURE__ */ new Set();\n Object.keys(libs).map((lib) => {\n const binary = readFile(lib);\n const needed = Module.getDylinkMetadata(binary).neededDynlibs;\n needed.forEach((lib2) => {\n globalLibs.add(lib2);\n });\n });\n return globalLibs;\n}\nvar acquireDynlibLock = createLock();\nasync function loadDynlib(prefix, lib, global2, searchDirs, readFileFunc, Module) {\n if (searchDirs === void 0) {\n searchDirs = [];\n }\n const releaseDynlibLock = await acquireDynlibLock();\n try {\n const fs = createDynlibFS(prefix, lib, searchDirs, readFileFunc, Module);\n const libName = Module.PATH.basename(lib);\n await Module.loadDynamicLibrary(libName, {\n loadAsync: true,\n nodelete: true,\n allowUndefined: true,\n global: global2,\n fs\n });\n const dsoOnlyLibName = Module.LDSO.loadedLibsByName[libName];\n const dsoFullLib = Module.LDSO.loadedLibsByName[lib];\n if (!dsoOnlyLibName && !dsoFullLib) {\n console.execption(`Failed to load ${libName} from ${lib} LDSO not found`);\n }\n if (!dsoOnlyLibName) {\n Module.LDSO.loadedLibsByName[libName] = dsoFullLib;\n }\n if (!dsoFullLib) {\n Module.LDSO.loadedLibsByName[lib] = dsoOnlyLibName;\n }\n } catch (error) {\n throw new Error(error?.message);\n } finally {\n releaseDynlibLock();\n }\n}\n\n// src/index.ts\nvar splitPackages = (packages) => {\n let pythonPackage = void 0;\n for (let i = 0; i < packages.length; i++) {\n if (packages[i].name == \"python\") {\n pythonPackage = packages[i];\n packages.splice(i, 1);\n break;\n }\n }\n if (pythonPackage) {\n let pythonVersion = pythonPackage.version.split(\".\").map((x) => parseInt(x));\n return { pythonPackage, pythonVersion, packages };\n } else {\n return { packages };\n }\n};\nvar installCondaPackages = async (prefix, url, FS, untarjs, verbose) => {\n let sharedLibs = {};\n let newPrefix = prefix;\n if (!url) {\n throw new Error(`There is no file in ${url}`);\n }\n let files = await installCondaPackage(prefix, url, FS, untarjs, verbose);\n if (prefix === \"/\") {\n newPrefix = \"\";\n }\n if (Object.keys(files).length !== 0) {\n sharedLibs = getSharedLibs(files, newPrefix);\n }\n return sharedLibs;\n};\nvar installCondaPackage = async (prefix, url, FS, untarjs, verbose) => {\n let files = await untarjs.extract(url);\n let newPrefix = prefix;\n if (Object.keys(files).length !== 0) {\n if (prefix === \"/\") {\n newPrefix = \"\";\n }\n if (url.toLowerCase().endsWith(\".conda\")) {\n let condaPackage = new Uint8Array();\n let packageInfo = new Uint8Array();\n Object.keys(files).map((file) => {\n if (file.startsWith(\"pkg-\")) {\n condaPackage = files[file];\n } else if (file.startsWith(\"info-\")) {\n packageInfo = files[file];\n }\n });\n if (condaPackage && condaPackage.byteLength === 0 || packageInfo && packageInfo.byteLength === 0) {\n throw new Error(`Invalid .conda package ${url}`);\n }\n const condaFiles = await untarjs.extractData(condaPackage);\n const packageInfoFiles = await untarjs.extractData(packageInfo);\n saveCondaMetaFile(packageInfoFiles, newPrefix, FS, verbose);\n saveFiles(FS, { ...condaFiles, ...packageInfoFiles }, newPrefix);\n return condaFiles;\n } else {\n saveCondaMetaFile(files, newPrefix, FS, verbose);\n saveFiles(FS, files, newPrefix);\n return files;\n }\n }\n throw new Error(`There is no file in ${url}`);\n};\nvar getSharedLibs = (files, prefix) => {\n let sharedLibs = {};\n Object.keys(files).map((file) => {\n if (file.endsWith(\".so\") || file.includes(\".so.\")) {\n sharedLibs[`${prefix}/${file}`] = files[file];\n }\n });\n return sharedLibs;\n};\nvar getParentDirectory = (filePath) => {\n return filePath.substring(0, filePath.lastIndexOf(\"/\"));\n};\nvar saveFiles = (FS, files, prefix) => {\n try {\n Object.keys(files).forEach((filename) => {\n const dir = getParentDirectory(filename);\n if (!FS.analyzePath(dir).exists) {\n FS.mkdirTree(dir);\n }\n FS.writeFile(`${prefix}/${filename}`, files[filename]);\n });\n } catch (error) {\n throw new Error(error?.message);\n }\n};\nvar saveCondaMetaFile = (files, prefix, FS, verbose) => {\n let infoData = new Uint8Array();\n let isCondaMetaFile = checkCondaMetaFile(files);\n if (!isCondaMetaFile) {\n if (verbose) {\n console.log(`Creating and saving conda-meta json`);\n }\n Object.keys(files).map((filename) => {\n let regexp = \"index.json\";\n if (filename.match(regexp)) {\n infoData = files[filename];\n }\n });\n if (infoData.byteLength !== 0) {\n let info = new TextDecoder(\"utf-8\").decode(infoData);\n try {\n let condaPackageInfo = JSON.parse(info);\n const condaMetaDir = `${prefix}/conda-meta`;\n const path = `${condaMetaDir}/${condaPackageInfo.name}-${condaPackageInfo.version}-${condaPackageInfo.build}.json`;\n const pkgCondaMeta = {\n name: condaPackageInfo.name,\n version: condaPackageInfo.version,\n build: condaPackageInfo.build,\n build_number: condaPackageInfo.build_number\n };\n if (!FS.analyzePath(`${condaMetaDir}`).exists) {\n FS.mkdirTree(`${condaMetaDir}`);\n }\n if (verbose) {\n console.log(\n `Creating conda-meta file for ${condaPackageInfo.name}-${condaPackageInfo.version}-${condaPackageInfo.build} package`\n );\n }\n FS.writeFile(path, JSON.stringify(pkgCondaMeta));\n } catch (error) {\n throw new Error(error?.message);\n }\n } else if (verbose) {\n console.log(\n \"There is no info folder, imposibly to create a conda meta json file\"\n );\n }\n } else {\n let condaMetaFileData = new Uint8Array();\n let path = \"\";\n Object.keys(files).forEach((filename) => {\n let regexp = \"conda-meta\";\n if (filename.match(regexp)) {\n condaMetaFileData = files[filename];\n path = filename;\n }\n });\n let condaMetaDir = `${prefix}/conda-meta`;\n if (!FS.analyzePath(`${condaMetaDir}`).exists) {\n FS.mkdirTree(`${condaMetaDir}`);\n }\n if (verbose) {\n console.log(`Saving conda-meta file ${path}`);\n }\n const json = JSON.stringify(condaMetaFileData);\n const condaMetaFile = new TextEncoder().encode(json);\n FS.writeFile(`${prefix}/${path}`, condaMetaFile);\n }\n};\nvar checkCondaMetaFile = (files) => {\n let isCondaMetaFile = false;\n Object.keys(files).forEach((filename) => {\n let regexp = \"conda-meta\";\n if (filename.match(regexp)) {\n isCondaMetaFile = true;\n }\n });\n return isCondaMetaFile;\n};\nvar initPrimaryPhase = async (pythonPackage, pythonVersion, verbose, untarjs, Module, pkgRootUrl, prefix) => {\n let url = pythonPackage.url ? pythonPackage.url : `${pkgRootUrl}/${pythonPackage.filename}`;\n if (verbose) {\n console.log(`Installing a python package from ${url}`);\n }\n await installCondaPackage(prefix, url, Module.FS, untarjs, verbose);\n await Module.init_phase_1(prefix, pythonVersion, verbose);\n};\nvar bootstrapFromEmpackPackedEnvironment = async (packagesJsonUrl, verbose = true, skipLoadingSharedLibs = false, Module, pkgRootUrl, bootstrapPython = false) => {\n if (verbose) {\n console.log(\"fetching packages.json from\", packagesJsonUrl);\n }\n let empackEnvMeta = await fetchJson(packagesJsonUrl);\n let allPackages = empackEnvMeta.packages;\n let prefix = empackEnvMeta.prefix;\n let { pythonPackage, pythonVersion, packages } = splitPackages(allPackages);\n let packagesData = { prefix, pythonVersion };\n const untarjsReady = initUntarJS();\n const untarjs = await untarjsReady;\n if (bootstrapPython && pythonPackage && pythonVersion) {\n await initPrimaryPhase(\n pythonPackage,\n pythonVersion,\n verbose,\n untarjs,\n Module,\n pkgRootUrl,\n prefix\n );\n }\n if (packages?.length) {\n let sharedLibs = await Promise.all(\n packages.map((pkg) => {\n const packageUrl = pkg?.url ?? `${pkgRootUrl}/${pkg.filename}`;\n if (verbose) {\n console.log(`Install ${pkg.filename} taken from ${packageUrl}`);\n }\n return installCondaPackages(\n prefix,\n packageUrl,\n Module.FS,\n untarjs,\n verbose\n );\n })\n );\n await waitRunDependencies(Module);\n if (!skipLoadingSharedLibs) {\n await loadShareLibs(packages, sharedLibs, prefix, Module);\n }\n }\n if (bootstrapPython && pythonPackage && pythonVersion) {\n globalThis.Module.init_phase_2(prefix, pythonVersion, verbose);\n }\n return packagesData;\n};\nvar loadShareLibs = (packages, sharedLibs, prefix, Module) => {\n return Promise.all(packages.map(async (pkg, i) => {\n let packageShareLibs = sharedLibs[i];\n if (Object.keys(packageShareLibs).length) {\n let verifiedWasmSharedLibs = {};\n Object.keys(packageShareLibs).map((path) => {\n const isValidWasm = checkWasmMagicNumber(packageShareLibs[path]);\n if (isValidWasm) {\n verifiedWasmSharedLibs[path] = packageShareLibs[path];\n }\n });\n if (Object.keys(verifiedWasmSharedLibs).length) {\n return await loadDynlibsFromPackage(\n prefix,\n pkg.name,\n false,\n verifiedWasmSharedLibs,\n Module\n );\n }\n }\n }));\n};\nvar waitRunDependencies = (Module) => {\n const promise = new Promise((r) => {\n Module.monitorRunDependencies = (n) => {\n if (n === 0) {\n r();\n }\n };\n });\n Module.addRunDependency(\"dummy\");\n Module.removeRunDependency(\"dummy\");\n return promise;\n};\nvar checkWasmMagicNumber = (uint8Array) => {\n const WASM_MAGIC_NUMBER = [0, 97, 115, 109];\n return uint8Array[0] === WASM_MAGIC_NUMBER[0] && uint8Array[1] === WASM_MAGIC_NUMBER[1] && uint8Array[2] === WASM_MAGIC_NUMBER[2] && uint8Array[3] === WASM_MAGIC_NUMBER[3];\n};\nvar src_default = {\n installCondaPackage,\n bootstrapFromEmpackPackedEnvironment\n};\nexport {\n bootstrapFromEmpackPackedEnvironment,\n src_default as default,\n installCondaPackage,\n installCondaPackages\n};\n/*! Bundled license information:\n\n@esbuild-plugins/node-globals-polyfill/Buffer.js:\n (*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>\n * @license MIT\n *)\n*/\n","// Copyright (c) Thorsten Beier\n// Copyright (c) JupyterLite Contributors\n// Distributed under the terms of the Modified BSD License.\nimport { URLExt } from '@jupyterlab/coreutils';\nimport { bootstrapFromEmpackPackedEnvironment } from '@emscripten-forge/mambajs';\nglobalThis.Module = {};\n// when a toplevel cell uses an await, the cell is implicitly\n// wrapped in a async function. Since the webloop - eventloop\n// implementation does not support `eventloop.run_until_complete(f)`\n// we need to convert the toplevel future in a javascript Promise\n// this `toplevel` promise is then awaited before we\n// execute the next cell. After the promise is awaited we need\n// to do some cleanup and delete the python proxy\n// (ie a js-wrapped python object) to avoid memory leaks\nglobalThis.toplevel_promise = null;\nglobalThis.toplevel_promise_py_proxy = null;\nlet resolveInputReply;\nlet kernelReady;\nlet rawXKernel;\nlet rawXServer;\nasync function get_stdin() {\n const replyPromise = new Promise(resolve => {\n resolveInputReply = resolve;\n });\n return replyPromise;\n}\nself.get_stdin = get_stdin;\nasync function waitRunDependency() {\n const promise = new Promise(resolve => {\n globalThis.Module.monitorRunDependencies = (n) => {\n if (n === 0) {\n resolve();\n }\n };\n });\n // If there are no pending dependencies left, monitorRunDependencies will\n // never be called. Since we can't check the number of dependencies,\n // manually trigger a call.\n globalThis.Module.addRunDependency('dummy');\n globalThis.Module.removeRunDependency('dummy');\n return promise;\n}\nglobalThis.ready = new Promise(resolve => {\n kernelReady = resolve;\n});\nexport class XeusRemoteKernel {\n constructor(options = {}) {\n this._sendWorkerMessage = () => { };\n }\n async ready() {\n return await globalThis.ready;\n }\n async cd(path) {\n if (!path || !globalThis.Module.FS) {\n return;\n }\n globalThis.Module.FS.chdir(path);\n }\n async isDir(path) {\n try {\n const lookup = globalThis.Module.FS.lookupPath(path);\n return globalThis.Module.FS.isDir(lookup.node.mode);\n }\n catch (e) {\n return false;\n }\n }\n async processMessage(event) {\n const msg_type = event.msg.header.msg_type;\n await globalThis.ready;\n if (globalThis.toplevel_promise !== null &&\n globalThis.toplevel_promise_py_proxy !== null) {\n await globalThis.toplevel_promise;\n globalThis.toplevel_promise_py_proxy.delete();\n globalThis.toplevel_promise_py_proxy = null;\n globalThis.toplevel_promise = null;\n }\n if (msg_type === 'input_reply') {\n resolveInputReply(event.msg);\n }\n else {\n rawXServer.notify_listener(event.msg);\n }\n }\n async initialize(options) {\n const { baseUrl, kernelSpec, empackEnvMetaLink } = options;\n // location of the kernel binary on the server\n const binary_js = URLExt.join(baseUrl, kernelSpec.argv[0]);\n const binary_wasm = binary_js.replace('.js', '.wasm');\n const binary_data = binary_js.replace('.js', '.data');\n const kernel_root_url = URLExt.join(baseUrl, 'xeus', 'kernels', kernelSpec.dir);\n const sharedLibs = kernelSpec.metadata && kernelSpec.metadata.shared\n ? kernelSpec.metadata.shared\n : {};\n importScripts(binary_js);\n globalThis.Module = await createXeusModule({\n locateFile: (file) => {\n if (file in sharedLibs) {\n return URLExt.join(kernel_root_url, file);\n }\n if (file.endsWith('.wasm')) {\n return binary_wasm;\n }\n else if (file.endsWith('.data')) {\n // Handle the .data file if it exists\n return binary_data;\n }\n return file;\n }\n });\n try {\n await waitRunDependency();\n if (globalThis.Module.FS !== undefined &&\n globalThis.Module.loadDynamicLibrary !== undefined) {\n const empackEnvMetaLocation = empackEnvMetaLink || kernel_root_url;\n const verbose = true;\n const packagesJsonUrl = `${empackEnvMetaLocation}/empack_env_meta.json`;\n const pkgRootUrl = URLExt.join(baseUrl, 'xeus/kernel_packages');\n const bootstrapPython = kernelSpec.name === 'xpython';\n await bootstrapFromEmpackPackedEnvironment(packagesJsonUrl, verbose, false, globalThis.Module, pkgRootUrl, bootstrapPython);\n }\n await waitRunDependency();\n rawXKernel = new globalThis.Module.xkernel();\n rawXServer = rawXKernel.get_server();\n if (!rawXServer) {\n console.error('Failed to start kernel!');\n }\n rawXKernel.start();\n }\n catch (e) {\n if (typeof e === 'number') {\n const msg = globalThis.Module.get_exception_message(e);\n throw new Error(msg);\n }\n else {\n throw e;\n }\n }\n kernelReady(1);\n }\n /**\n * Register the callback function to send messages from the worker back to the main thread.\n * @param callback the callback to register\n */\n registerCallback(callback) {\n this._sendWorkerMessage = callback;\n }\n}\n","// Copyright (c) Thorsten Beier\n// Copyright (c) JupyterLite Contributors\n// Distributed under the terms of the Modified BSD License.\nimport coincident from 'coincident';\nimport { ContentsAPI, DriveFS } from '@jupyterlite/contents';\nimport { XeusRemoteKernel } from './worker';\nconst workerAPI = coincident(self);\n/**\n * An Emscripten-compatible synchronous Contents API using shared array buffers.\n */\nexport class SharedBufferContentsAPI extends ContentsAPI {\n request(data) {\n return workerAPI.processDriveRequest(data);\n }\n}\n/**\n * A custom drive implementation which uses shared array buffers (via coincident) if available\n */\nclass XeusDriveFS extends DriveFS {\n createAPI(options) {\n return new SharedBufferContentsAPI(options.driveName, options.mountpoint, options.FS, options.ERRNO_CODES);\n }\n}\nexport class XeusCoincidentKernel extends XeusRemoteKernel {\n /**\n * Setup custom Emscripten FileSystem\n */\n async mount(driveName, mountpoint, baseUrl) {\n const { FS, PATH, ERRNO_CODES } = globalThis.Module;\n if (!FS) {\n return;\n }\n const drive = new XeusDriveFS({\n FS,\n PATH,\n ERRNO_CODES,\n baseUrl,\n driveName,\n mountpoint\n });\n FS.mkdir(mountpoint);\n FS.mount(drive, {}, mountpoint);\n FS.chdir(mountpoint);\n }\n}\nconst worker = new XeusCoincidentKernel();\nworkerAPI.initialize = worker.initialize.bind(worker);\nworkerAPI.mount = worker.mount.bind(worker);\nworkerAPI.ready = worker.ready.bind(worker);\nworkerAPI.cd = worker.cd.bind(worker);\nworkerAPI.isDir = worker.isDir.bind(worker);\nworkerAPI.processMessage = worker.processMessage.bind(worker);\n"],"names":["Object","defineProperty","exports","value","ActivityMonitor","signaling_1","constructor","options","this","_timer","_timeout","_isDisposed","_activityStopped","Signal","signal","connect","_onSignalFired","timeout","activityStopped","isDisposed","dispose","clearData","sender","args","clearTimeout","_sender","_args","setTimeout","emit","__createBinding","create","o","m","k","k2","undefined","desc","getOwnPropertyDescriptor","__esModule","writable","configurable","enumerable","get","__exportStar","p","prototype","hasOwnProperty","call","LruCache","_map","Map","_maxSize","maxSize","size","clear","key","item","delete","set","keys","next","MarkdownCodeBlocks","CODE_BLOCK_MARKER","markdownExtensions","MarkdownCodeBlock","startLine","code","endLine","isMarkdown","extension","indexOf","findMarkdownCodeBlocks","text","lines","split","codeBlocks","currentBlock","lineIndex","length","line","lineContainsMarker","constructingBlock","push","firstIndex","lastIndex","lastIndexOf","substring","__importDefault","mod","PageConfig","coreutils_1","minimist_1","url_1","getOption","name","configData","getBodyData","found","document","el","getElementById","JSON","parse","textContent","process","argv","cli","default","slice","path","fullPath","resolve","env","eval","e","console","error","JSONExt","isObject","stringify","setOption","last","getBaseUrl","URLExt","normalize","getTreeUrl","join","getShareUrl","getTreeShareUrl","getUrl","_a","_b","_c","_d","toShare","mode","workspace","labOrDoc","defaultWorkspace","encodeURIComponent","treePath","encodeParts","getWsUrl","baseUrl","wsUrl","getNBConvertURL","format","download","notebookPath","url","getToken","getNotebookVersion","notebookVersion","Extension","body","val","dataset","decodeURIComponent","populate","raw","warn","deferred","disabled","isDeferred","id","separatorIndex","extName","some","isDisabled","PathExt","path_1","removeSlash","paths","posix","joinWithLeadingSlash","basename","ext","dirname","dir","extname","parts","relative","from","to","normalizeExtension","signalToPromise","waitForSignal","PromiseDelegate","cleanup","disconnect","slot","reject","promise","Text","jsIndexToCharIndex","jsIdx","charIndexToJsIndex","charIdx","camelCase","str","upper","replace","match","p1","p2","toUpperCase","toLowerCase","titleCase","map","word","charAt","Time","UNITS","milliseconds","formatHuman","lang","documentElement","formatter","Intl","RelativeTimeFormat","numeric","style","delta","Date","getTime","now","unit","amount","Math","ceil","DateTimeFormat","dateStyle","timeStyle","url_parse_1","a","createElement","href","u","isSchemaLess","protocol","slashes","prefix","auth","host","pathname","getHostName","hostname","toString","objectToQueryString","filter","content","String","queryStringToObject","reduce","acc","isLocal","allowRoot","ArrayExt","Private","StringExt","chain","objects","object","empty","enumerate","start","fn","index","find","findIndex","min","result","max","minmax","vmin","vmax","toArray","Array","toObject","each","every","range","stop","step","rangeLength","initial","it","Symbol","iterator","first","done","TypeError","accumulator","second","repeat","count","once","retro","topologicSort","edges","sorted","visited","Set","graph","edge","addEdge","visit","fromNode","toNode","children","node","has","add","child","stride","take","zip","iters","obj","tuple","firstIndexOf","array","span","n","i","j","findFirstIndex","findLastIndex","d","reverse","b","removeAt","findFirstValue","findLastValue","lowerBound","begin","half","middle","upperBound","shallowEqual","Error","floor","move","fromIndex","toIndex","rotate","pivot","fill","insert","removeFirstOf","removeLastOf","removeAllOf","removeFirstWhere","removeLastWhere","removeAllWhere","Infinity","findIndices","source","query","indices","matchSumOfSquares","score","matchSumOfDeltas","highlight","cmp","algorithm","isPrimitive","isArray","deepEqual","a1","a2","deepArrayEqual","firstValue","secondValue","deepObjectEqual","deepCopy","deepArrayCopy","subvalue","deepObjectCopy","emptyObject","freeze","emptyArray","PluginData","plugin","_activated","_promise","_service","description","activate","deactivate","provides","autoStart","requires","optional","activated","service","s","createPluginData","ensureNoCycle","plugins","services","dependencies","token","trace","pop","ReferenceError","findDependents","dep","newEdges","oldSize","previousSize","packagesOfInterest","poi","forEach","includes","candidate","collectStartupPlugins","collection","startPlugins","ignorePlugins","fallbackRandomValues","buffer","random","Random","getRandomValues","crypto","window","msCrypto","UUID","uuid4","bytes","Uint8Array","lut","uuid4Factory","MimeData","_types","_values","types","hasData","mime","getData","setData","data","splice","PluginRegistry","_application","_validatePlugin","_plugins","_services","validatePlugin","info","application","v","deferredPlugins","getPluginDescription","hasPlugin","isPluginActivated","listPlugins","registerPlugin","registerPlugins","deregisterPlugin","force","activatePlugin","required","t","resolveRequiredService","resolveOptionalService","Promise","all","then","apply","catch","activatePlugins","kind","promises","pluginId","async","deactivatePlugin","manifest","downstream","reason","_resolve","_reject","Token","_tokenStructuralPropertyT","factory","thisArg","disconnectBetween","receiver","disconnectSender","disconnectReceiver","disconnectAll","getExceptionHandler","exceptionHandler","setExceptionHandler","handler","old","Stream","super","arguments","_pending","asyncIterator","pending","_","receivers","receiversForSender","connection","scheduleCleanup","sendersForReceiver","senders","err","findConnection","invokeSlot","WeakMap","dirtySet","schedule","requestAnimationFrame","setImmediate","connections","cleanupDirtySet","cleanupConnections","isDeadConnection","isNumber","x","test","isConstructorOrProto","module","opts","flags","bools","strings","unknownFn","unknown","boolean","allBools","concat","Boolean","aliases","aliasIsBoolean","alias","y","string","defaults","setKey","Number","lastKey","setArg","arg","argDefined","notFlags","letters","broken","stopEarly","assertPath","normalizeStringPosix","allowAboveRoot","res","lastSegmentLength","lastSlash","dots","charCodeAt","lastSlashIndex","cwd","resolvedPath","resolvedAbsolute","isAbsolute","trailingSeparator","joined","fromStart","fromEnd","fromLen","toStart","toLen","lastCommonSep","fromCode","out","_makeLong","hasRoot","end","matchedSlash","extIdx","firstNonSlashEnd","startDot","startPart","preDotState","pathObject","sep","root","base","_format","ret","delimiter","win32","decode","input","encode","pairs","isNaN","part","parser","exec","port","qs","controlOrWhitespace","CRHTLF","protocolre","windowsDriveLetter","trimLeft","rules","address","isSpecial","NaN","ignore","hash","lolcation","loc","location","g","self","finaldestination","type","Url","unescape","scheme","extractProtocol","rest","forwardSlashes","otherSlashes","slashesCount","extracted","instruction","instructions","unshift","up","username","password","origin","char","ins","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","amdO","getter","definition","globalThis","Function","prop","r","toStringTag","SharedArrayBuffer","notify","Atomics","onmessage","w","Worker","postMessage","ArrayBuffer","ids","resolvers","listener","event","details","stopImmediatePropagation","sb","addEventListener","buff","as","Int32Array","BYTES_PER_ELEMENT","WeakSet","transform","interrupt","sendMessage","post","transfer","delay","decoder","TextDecoder","waitFor","isAsync","seppuku","Proxy","action","startsWith","at","deadlock","actions","callback","results","serialized","ui16a","TextEncoder","fs","open","stream","realPath","FS","isFile","file","API","close","parsedFlags","parseInt","needsWrite","put","read","offset","position","subarray","write","timestamp","oldData","llseek","whence","ErrnoError","ERRNO_CODES","EPERM","EINVAL","nodeOrStream","getattr","ino","setattr","attr","entries","lookup","parent","PATH","join2","ok","genericErrors","createNode","mknod","dev","rename","newDir","newName","oldNode","newDirNode","unlink","rmdir","readdir","symlink","oldPath","readlink","driveName","mountpoint","_driveName","_mountpoint","request","method","normalizePath","getmode","newPath","dirlist","response","serializedContent","binString","atob","len","binary","byteLength","fromCharCode","btoa","stats","atime","mtime","ctime","_baseUrl","xhr","XMLHttpRequest","encodeURI","endpoint","send","status","responseText","createAPI","node_ops","stream_ops","mount","isDir","getMode","currentNode","getOwnPropertyNames","getPrototypeOf","fun","e2","run","marker","previousTimestamp","clocktime","seconds","nanoseconds","performance","mozNow","msNow","oNow","webkitNow","nextTick","title","browser","version","versions","on","addListener","off","removeListener","removeAllListeners","binding","chdir","umask","hrtime","platform","release","config","uptime","segs","target","seg","uint8","tmp","num","output","extraBytes","maxChunkLength","len2","TYPED_ARRAY_SUPPORT","that","RangeError","__proto__","encodingOrOffset","byteOffset","encoding","isEncoding","actual","copy","_isBuffer","isView","loweredCase","arr","indexSize","arrLength","valLength","buf","i2","readUInt16BE","foundIndex","remaining","strLen","parsed","substr","byteArray","units","c","hi","lo","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","littleEndian","noAssert","leadSurrogate","b64","l","placeHolders","L","trim","src","dst","readFloatLE","isBuffer","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","pow","rt","abs","log","LN2","cb","poolSize","_augment","kMaxLength","species","alloc","fill2","allocUnsafe","allocUnsafeSlow","compare","list","pos","swap16","swap32","swap64","equals","thisStart","thisEnd","thisCopy","targetCopy","isFinite","toJSON","_arr","newBuf","sliceLen","readUIntLE","byteLength2","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","_scriptDir","Module","currentScript","moduleArg","readyPromiseResolve","readyPromiseReject","Module2","read_","readAsync","moduleOverrides","assign","thisProgram","quit_","toThrow","scriptDirectory","onload","onerror","responseType","wasmBinary","bind","wasmMemory","noExitRuntime","_asan_js_load_2","ptr","runtimeInitialized","__asan_c_load_2","HEAP16","_asan_js_load_4","__asan_c_load_4","HEAP32","_asan_js_load_4u","__asan_c_load_4u","HEAPU32","_asan_js_store_1","__asan_c_store_1","HEAP8","_asan_js_store_2","__asan_c_store_2","_asan_js_store_4","__asan_c_store_4","_asan_js_store_4u","__asan_c_store_4u","WebAssembly","abort","HEAPU8","HEAPF32","HEAPF64","ABORT","assert","condition","updateMemoryViews","Int8Array","Int16Array","Uint16Array","Uint32Array","Float32Array","Float64Array","__ATPRERUN__","__ATINIT__","__ATEXIT__","__ATPOSTRUN__","keepRuntimeAlive","runtimeKeepaliveCounter","wasmBinaryFile","wasmOffsetConverter","tempDouble","tempI64","runDependencies","runDependencyWatcher","dependenciesFulfilled","addRunDependency","removeRunDependency","clearInterval","what","RuntimeError","isDataURI","filename","getBinarySync","WasmOffsetConverter","wasmBytes","wasmModule","funcidx","offset_map","func_starts","name_map","import_functions","unsignedLEB128","shift","byte","skipLimits","binary_parse","sections","customSections","nameSection","subsection_type","UTF8ArrayToString","instantiateArrayBuffer","binaryFile","imports","savedBinary","fetch","credentials","getBinaryPromise","instantiate","instance","ExitStatus","message","convert","getIndex","mid","isSameFunc","offset1","offset2","getName","UTF8Decoder","heapOrArray","idx","maxBytesToRead","endIdx","endPtr","u0","u1","u2","ch","callRuntimeCallbacks","callbacks","UTF8ToString","isAbs","splitPath","normalizeArray","trailingSlash","randomFill","view","initRandomFill","PATH_FS","from2","fromParts","toParts","samePartsLength","outputParts","FS_stdin_getChar_buffer","lengthBytesUTF8","stringToUTF8Array","heap","outIdx","maxBytesToWrite","startIdx","intArrayFromString","stringy","dontAddNull","u8array","numBytesWritten","_emscripten_get_now","TTY","ttys","init","shutdown","register","ops","registerDevice","tty","rdev","seekable","fsync","get_char","bytesRead","put_char","default_tty_ops","prompt","readline","FS_stdin_getChar","ioctl_tcgets","c_iflag","c_oflag","c_cflag","c_lflag","c_cc","ioctl_tcsets","optional_actions","ioctl_tiocgwinsz","default_tty1_ops","mmapAlloc","alignMemory","_emscripten_builtin_memalign","zeroMemory","MEMFS","ops_table","isBlkdev","isFIFO","allocate","mmap","msync","link","chrdev","chrdev_stream_ops","contents","usedBytes","isLink","isChrdev","getFileDataAsTypedArray","expandFileStorage","newCapacity","prevCapacity","oldContents","resizeFileStorage","newSize","nlink","uid","gid","blksize","blocks","old_node","new_dir","new_name","new_node","lookupNode","newname","oldpath","canOwn","prot","allocated","mmapFlags","preloadPlugins","FS_getMode","canRead","canWrite","mounts","devices","streams","nextInode","nameTable","currentPath","initialized","ignorePermissions","filesystems","syncFSRequests","lookupPath","follow_mount","recurse_count","current","current_path","islast","isMountpoint","mounted","follow","getPath","isRoot","hashName","parentid","hashAddNode","name_next","hashRemoveNode","errCode","mayLookup","nodeName","FSNode","destroyNode","isSocket","flagsToPermissionString","flag","perms","nodePermissions","mayCreate","mayDelete","isdir","errno","mayOpen","MAX_OPEN_FDS","nextfd","fd","getStreamChecked","getStream","createStream","FSStream","shared","defineProperties","isRead","isWrite","isAppend","closeStream","device","getDevice","major","minor","makedev","ma","mi","getMounts","check","syncfs","completed","doCallback","errored","pseudo","lookup2","mountRoot","unmount","mkdir","mkdirTree","dirs","mkdev","newpath","old_path","new_path","old_dir","old_dirname","new_dirname","old_name","stat","dontFollow","lstat","chmod","lchmod","fchmod","chown","lchown","fchown","truncate","ftruncate","utime","FS_modeStringToFlags","created","ungotten","readFiles","isClosed","getdents","seeking","bytesWritten","munmap","ioctl","cmd","readFile","writeFile","actualNumBytes","createDefaultDirectories","createDefaultDevices","randomBuffer","randomLeft","randomByte","createDevice","createSpecialDirectories","proc_self","createStandardStreams","ensureErrnoError","setErrno","errno2","stack","staticInit","quit","findObject","dontResolveLastLink","analyzePath","exists","parentExists","parentPath","parentObject","createPath","createFile","properties","createDataFile","forceLoadFile","isDevice","isFolder","createLazyFile","LazyUint8Array","lengthKnown","chunks","chunkOffset","chunkSize","chunkNum","setDataGetter","cacheLength","header","datalength","getResponseHeader","hasByteServing","usesGzip","lazyArray2","xhr2","setRequestHeader","overrideMimeType","doXHR","_length","_chunkSize","writeChunks","SYSCALLS","DEFAULT_POLLMASK","calculateAt","dirfd","allowEmpty","getStreamFromFD","doStat","func","doMsync","addr","varargs","getp","getStr","PIPEFS","BUCKET_BUFFER_SIZE","createPipe","pipe","buckets","refcnt","roffset","rName","nextname","wName","rNode","wNode","readableStream","writableStream","readable_fd","writable_fd","poll","bucket","currentLength","toRead","totalRead","toRemove","currBucket","bucketSize","tmpSlice","dataLen","freeBytesInCurrBuffer","numBuckets","remElements","newBucket","withBuiltinMalloc","prev_malloc","_malloc","prev_memalign","_memalign","prev_free","_free","_emscripten_builtin_malloc","_emscripten_builtin_free","stringToUTF8","outPtr","stringToNewUTF8","MONTH_DAYS_LEAP_CUMULATIVE","MONTH_DAYS_REGULAR_CUMULATIVE","ydayFromDate","date","year","getFullYear","getMonth","getDate","convertI32PairToI53Checked","UNWIND_CACHE","convertFrameToPC","frame","convertPCtoSourceLocation","pc","last_get_source_pc","last_source","column","_emscripten_pc_get_file","_emscripten_pc_get_function","growMemory","pages","grow","jsStackTrace","saveInUnwindCache","callstack","ENV","getEnvStrings","env2","navigator","languages","_proc_exit","getCFunc","ident","ccall","returnType","argTypes","toC","ret2","stackAlloc","stringToUTF8OnStack","cArgs","converter","stackSave","stackRestore","convertReturnValue","createPreloadedFile","dontCreateFile","preFinish","fullname","processData","finish","byteArray2","Browser","handled","FS_handledByPreloadPlugin","arrayBuffer","asyncLoad","calledRun","wasmImports","E","___errno_location","P","N","D","O","nofollow","K","fdPtr","J","fds","nfds","nonzero","pollfd","events","mask","setting","time_low","time_high","tmPtr","time","getSeconds","getMinutes","getHours","getDay","getTimezoneOffset","summerOffset","winterOffset","guessedOffset","dstOffset","nonDstOffset","trueOffset","setTime","yday","getYear","setTempRet0","offset_low","offset_high","UTC","getUTCDay","getUTCFullYear","H","timezone","daylight","tzname","currentYear","winter","summer","extractZone","toTimeString","winterName","summerName","winterNamePtr","summerNamePtr","M","I","h","z","A","F","requestedSize","maxHeapSize","cutDown","overGrownHeapSize","level","caller","C","last_addr","last_stack","B","__environ","environ_buf","bufSize","stringToAscii","penviron_count","penviron_buf_size","implicit","___funcs_on_exit","f","G","pbuf","rightsBase","rightsInheriting","iov","iovcnt","pnum","curr","doReadv","newOffset","doWritev","q","wasmExports","receiveInstance","module2","exports2","instantiateStreaming","clonedResponsePromise","clone","instantiationResult","arrayBufferResult","createWasm","a0","__asan_c_load_1","a3","__asan_c_load_f","__asan_c_load_d","doRun","postRun","preRun","numericArgs","endsWith","_asan_js_load_1","_asan_js_load_f","_asan_js_load_d","runCaller","ready","define","isNodeMode","except","locateFile","extractData","inputPtr","fileCountPtr","resultPtr","_extract_archive","statusPtr","getValue","errorMessagePtr","errorMessage","_free_extracted_archive","filesPtr","fileCount","files","fileDataPtr","filenamePtr","dataSize","dataPtr","fileDataCopy","extract","libPath","_lock","old_lock","releaseLock","lib","global2","searchDirs","readFileFunc","releaseDynlibLock","_searchDirs","resolvePath","debug","libName","loadDynamicLibrary","loadAsync","nodelete","allowUndefined","global","dsoOnlyLibName","LDSO","loadedLibsByName","dsoFullLib","execption","untarjs","verbose","newPrefix","condaPackage","packageInfo","condaFiles","packageInfoFiles","filePath","infoData","condaMetaFileData","condaMetaDir","json","condaMetaFile","condaPackageInfo","build","pkgCondaMeta","build_number","isCondaMetaFile","packagesJsonUrl","skipLoadingSharedLibs","pkgRootUrl","bootstrapPython","empackEnvMeta","allPackages","packages","pythonPackage","pythonVersion","packagesData","untarjsReady","init_phase_1","sharedLibs","pkg","packageUrl","init_phase_2","packageShareLibs","verifiedWasmSharedLibs","pkg_file_name","pkg_is_shared_library","dynlibPaths","sitepackages","auditWheelLibDir","readFileMemoized","cache","dynlibs","globalLibs","libs","getDylinkMetadata","neededDynlibs","lib2","sort","lib1","monitorRunDependencies","uint8Array","WASM_MAGIC_NUMBER","toplevel_promise","toplevel_promise_py_proxy","get_stdin","_sendWorkerMessage","cd","processMessage","msg_type","msg","notify_listener","initialize","kernelSpec","empackEnvMetaLink","binary_js","binary_wasm","binary_data","kernel_root_url","metadata","importScripts","createXeusModule","xkernel","get_server","get_exception_message","registerCallback","processDriveRequest","drive"],"sourceRoot":""}
1
+ {"version":3,"file":"coincident.worker.js","mappings":"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","sources":["webpack://@jupyterlite/xeus/../../node_modules/@jupyterlab/coreutils/lib/activitymonitor.js","webpack://@jupyterlite/xeus/../../node_modules/@jupyterlab/coreutils/lib/index.js","webpack://@jupyterlite/xeus/../../node_modules/@jupyterlab/coreutils/lib/interfaces.js","webpack://@jupyterlite/xeus/../../node_modules/@jupyterlab/coreutils/lib/lru.js","webpack://@jupyterlite/xeus/../../node_modules/@jupyterlab/coreutils/lib/markdowncodeblocks.js","webpack://@jupyterlite/xeus/../../node_modules/@jupyterlab/coreutils/lib/pageconfig.js","webpack://@jupyterlite/xeus/../../node_modules/@jupyterlab/coreutils/lib/path.js","webpack://@jupyterlite/xeus/../../node_modules/@jupyterlab/coreutils/lib/signal.js","webpack://@jupyterlite/xeus/../../node_modules/@jupyterlab/coreutils/lib/text.js","webpack://@jupyterlite/xeus/../../node_modules/@jupyterlab/coreutils/lib/time.js","webpack://@jupyterlite/xeus/../../node_modules/@jupyterlab/coreutils/lib/url.js","webpack://@jupyterlite/xeus/../../node_modules/@lumino/algorithm/dist/index.es6.js","webpack://@jupyterlite/xeus/../../node_modules/@lumino/coreutils/dist/index.js","webpack://@jupyterlite/xeus/../../node_modules/@lumino/signaling/dist/index.es6.js","webpack://@jupyterlite/xeus/../../node_modules/minimist/index.js","webpack://@jupyterlite/xeus/../../node_modules/path-browserify/index.js","webpack://@jupyterlite/xeus/../../node_modules/querystringify/index.js","webpack://@jupyterlite/xeus/../../node_modules/requires-port/index.js","webpack://@jupyterlite/xeus/../../node_modules/url-parse/index.js","webpack://@jupyterlite/xeus/webpack/bootstrap","webpack://@jupyterlite/xeus/webpack/runtime/amd options","webpack://@jupyterlite/xeus/webpack/runtime/compat get default export","webpack://@jupyterlite/xeus/webpack/runtime/define property getters","webpack://@jupyterlite/xeus/webpack/runtime/global","webpack://@jupyterlite/xeus/webpack/runtime/hasOwnProperty shorthand","webpack://@jupyterlite/xeus/webpack/runtime/make namespace object","webpack://@jupyterlite/xeus/../../node_modules/proxy-target/esm/types.js","webpack://@jupyterlite/xeus/../../node_modules/coincident/esm/channel.js","webpack://@jupyterlite/xeus/../../node_modules/proxy-target/esm/traps.js","webpack://@jupyterlite/xeus/../../node_modules/coincident/esm/bridge.js","webpack://@jupyterlite/xeus/../../node_modules/coincident/esm/index.js","webpack://@jupyterlite/xeus/../../node_modules/@jupyterlite/contents/lib/drivefs.js","webpack://@jupyterlite/xeus/../../node_modules/@jupyterlite/contents/lib/emscripten.js","webpack://@jupyterlite/xeus/../../node_modules/@emscripten-forge/mambajs/lib/index.js","webpack://@jupyterlite/xeus/./lib/worker.js","webpack://@jupyterlite/xeus/./lib/coincident.worker.js"],"sourcesContent":["\"use strict\";\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActivityMonitor = void 0;\nconst signaling_1 = require(\"@lumino/signaling\");\n/**\n * A class that monitors activity on a signal.\n */\nclass ActivityMonitor {\n /**\n * Construct a new activity monitor.\n */\n constructor(options) {\n this._timer = -1;\n this._timeout = -1;\n this._isDisposed = false;\n this._activityStopped = new signaling_1.Signal(this);\n options.signal.connect(this._onSignalFired, this);\n this._timeout = options.timeout || 1000;\n }\n /**\n * A signal emitted when activity has ceased.\n */\n get activityStopped() {\n return this._activityStopped;\n }\n /**\n * The timeout associated with the monitor, in milliseconds.\n */\n get timeout() {\n return this._timeout;\n }\n set timeout(value) {\n this._timeout = value;\n }\n /**\n * Test whether the monitor has been disposed.\n *\n * #### Notes\n * This is a read-only property.\n */\n get isDisposed() {\n return this._isDisposed;\n }\n /**\n * Dispose of the resources used by the activity monitor.\n */\n dispose() {\n if (this._isDisposed) {\n return;\n }\n this._isDisposed = true;\n signaling_1.Signal.clearData(this);\n }\n /**\n * A signal handler for the monitored signal.\n */\n _onSignalFired(sender, args) {\n clearTimeout(this._timer);\n this._sender = sender;\n this._args = args;\n this._timer = setTimeout(() => {\n this._activityStopped.emit({\n sender: this._sender,\n args: this._args\n });\n }, this._timeout);\n }\n}\nexports.ActivityMonitor = ActivityMonitor;\n//# sourceMappingURL=activitymonitor.js.map","\"use strict\";\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/**\n * @packageDocumentation\n * @module coreutils\n */\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./activitymonitor\"), exports);\n__exportStar(require(\"./interfaces\"), exports);\n__exportStar(require(\"./lru\"), exports);\n__exportStar(require(\"./markdowncodeblocks\"), exports);\n__exportStar(require(\"./pageconfig\"), exports);\n__exportStar(require(\"./path\"), exports);\n__exportStar(require(\"./signal\"), exports);\n__exportStar(require(\"./text\"), exports);\n__exportStar(require(\"./time\"), exports);\n__exportStar(require(\"./url\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=interfaces.js.map","\"use strict\";\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LruCache = void 0;\nconst DEFAULT_MAX_SIZE = 128;\n/** A least-recently-used cache. */\nclass LruCache {\n constructor(options = {}) {\n this._map = new Map();\n this._maxSize = (options === null || options === void 0 ? void 0 : options.maxSize) || DEFAULT_MAX_SIZE;\n }\n /**\n * Return the current size of the cache.\n */\n get size() {\n return this._map.size;\n }\n /**\n * Clear the values in the cache.\n */\n clear() {\n this._map.clear();\n }\n /**\n * Get a value (or null) from the cache, pushing the item to the front of the cache.\n */\n get(key) {\n const item = this._map.get(key) || null;\n if (item != null) {\n this._map.delete(key);\n this._map.set(key, item);\n }\n return item;\n }\n /**\n * Set a value in the cache, potentially evicting an old item.\n */\n set(key, value) {\n if (this._map.size >= this._maxSize) {\n this._map.delete(this._map.keys().next().value);\n }\n this._map.set(key, value);\n }\n}\nexports.LruCache = LruCache;\n//# sourceMappingURL=lru.js.map","\"use strict\";\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MarkdownCodeBlocks = void 0;\n/**\n * The namespace for code block functions which help\n * in extract code from markdown text\n */\nvar MarkdownCodeBlocks;\n(function (MarkdownCodeBlocks) {\n MarkdownCodeBlocks.CODE_BLOCK_MARKER = '```';\n const markdownExtensions = [\n '.markdown',\n '.mdown',\n '.mkdn',\n '.md',\n '.mkd',\n '.mdwn',\n '.mdtxt',\n '.mdtext',\n '.text',\n '.txt',\n '.Rmd'\n ];\n class MarkdownCodeBlock {\n constructor(startLine) {\n this.startLine = startLine;\n this.code = '';\n this.endLine = -1;\n }\n }\n MarkdownCodeBlocks.MarkdownCodeBlock = MarkdownCodeBlock;\n /**\n * Check whether the given file extension is a markdown extension\n * @param extension - A file extension\n *\n * @returns true/false depending on whether this is a supported markdown extension\n */\n function isMarkdown(extension) {\n return markdownExtensions.indexOf(extension) > -1;\n }\n MarkdownCodeBlocks.isMarkdown = isMarkdown;\n /**\n * Construct all code snippets from current text\n * (this could be potentially optimized if we can cache and detect differences)\n * @param text - A string to parse codeblocks from\n *\n * @returns An array of MarkdownCodeBlocks.\n */\n function findMarkdownCodeBlocks(text) {\n if (!text || text === '') {\n return [];\n }\n const lines = text.split('\\n');\n const codeBlocks = [];\n let currentBlock = null;\n for (let lineIndex = 0; lineIndex < lines.length; lineIndex++) {\n const line = lines[lineIndex];\n const lineContainsMarker = line.indexOf(MarkdownCodeBlocks.CODE_BLOCK_MARKER) === 0;\n const constructingBlock = currentBlock != null;\n // Skip this line if it is not part of any code block and doesn't contain a marker.\n if (!lineContainsMarker && !constructingBlock) {\n continue;\n }\n // Check if we are already constructing a code block.\n if (!constructingBlock) {\n // Start constructing a new code block.\n currentBlock = new MarkdownCodeBlock(lineIndex);\n // Check whether this is a single line code block of the form ```a = 10```.\n const firstIndex = line.indexOf(MarkdownCodeBlocks.CODE_BLOCK_MARKER);\n const lastIndex = line.lastIndexOf(MarkdownCodeBlocks.CODE_BLOCK_MARKER);\n const isSingleLine = firstIndex !== lastIndex;\n if (isSingleLine) {\n currentBlock.code = line.substring(firstIndex + MarkdownCodeBlocks.CODE_BLOCK_MARKER.length, lastIndex);\n currentBlock.endLine = lineIndex;\n codeBlocks.push(currentBlock);\n currentBlock = null;\n }\n }\n else if (currentBlock) {\n if (lineContainsMarker) {\n // End of block, finish it up.\n currentBlock.endLine = lineIndex - 1;\n codeBlocks.push(currentBlock);\n currentBlock = null;\n }\n else {\n // Append the current line.\n currentBlock.code += line + '\\n';\n }\n }\n }\n return codeBlocks;\n }\n MarkdownCodeBlocks.findMarkdownCodeBlocks = findMarkdownCodeBlocks;\n})(MarkdownCodeBlocks || (exports.MarkdownCodeBlocks = MarkdownCodeBlocks = {}));\n//# sourceMappingURL=markdowncodeblocks.js.map","\"use strict\";\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PageConfig = void 0;\nconst coreutils_1 = require(\"@lumino/coreutils\");\nconst minimist_1 = __importDefault(require(\"minimist\"));\nconst url_1 = require(\"./url\");\n/**\n * The namespace for `PageConfig` functions.\n */\nvar PageConfig;\n(function (PageConfig) {\n /**\n * Get global configuration data for the Jupyter application.\n *\n * @param name - The name of the configuration option.\n *\n * @returns The config value or an empty string if not found.\n *\n * #### Notes\n * All values are treated as strings.\n * For browser based applications, it is assumed that the page HTML\n * includes a script tag with the id `jupyter-config-data` containing the\n * configuration as valid JSON. In order to support the classic Notebook,\n * we fall back on checking for `body` data of the given `name`.\n *\n * For node applications, it is assumed that the process was launched\n * with a `--jupyter-config-data` option pointing to a JSON settings\n * file.\n */\n function getOption(name) {\n if (configData) {\n return configData[name] || getBodyData(name);\n }\n configData = Object.create(null);\n let found = false;\n // Use script tag if available.\n if (typeof document !== 'undefined' && document) {\n const el = document.getElementById('jupyter-config-data');\n if (el) {\n configData = JSON.parse(el.textContent || '');\n found = true;\n }\n }\n // Otherwise use CLI if given.\n if (!found && typeof process !== 'undefined' && process.argv) {\n try {\n const cli = (0, minimist_1.default)(process.argv.slice(2));\n const path = require('path');\n let fullPath = '';\n if ('jupyter-config-data' in cli) {\n fullPath = path.resolve(cli['jupyter-config-data']);\n }\n else if ('JUPYTER_CONFIG_DATA' in process.env) {\n fullPath = path.resolve(process.env['JUPYTER_CONFIG_DATA']);\n }\n if (fullPath) {\n // Force Webpack to ignore this require.\n // eslint-disable-next-line\n configData = eval('require')(fullPath);\n }\n }\n catch (e) {\n console.error(e);\n }\n }\n if (!coreutils_1.JSONExt.isObject(configData)) {\n configData = Object.create(null);\n }\n else {\n for (const key in configData) {\n // PageConfig expects strings\n if (typeof configData[key] !== 'string') {\n configData[key] = JSON.stringify(configData[key]);\n }\n }\n }\n return configData[name] || getBodyData(name);\n }\n PageConfig.getOption = getOption;\n /**\n * Set global configuration data for the Jupyter application.\n *\n * @param name - The name of the configuration option.\n * @param value - The value to set the option to.\n *\n * @returns The last config value or an empty string if it doesn't exist.\n */\n function setOption(name, value) {\n const last = getOption(name);\n configData[name] = value;\n return last;\n }\n PageConfig.setOption = setOption;\n /**\n * Get the base url for a Jupyter application, or the base url of the page.\n */\n function getBaseUrl() {\n return url_1.URLExt.normalize(getOption('baseUrl') || '/');\n }\n PageConfig.getBaseUrl = getBaseUrl;\n /**\n * Get the tree url for a JupyterLab application.\n */\n function getTreeUrl() {\n return url_1.URLExt.join(getBaseUrl(), getOption('treeUrl'));\n }\n PageConfig.getTreeUrl = getTreeUrl;\n /**\n * Get the base url for sharing links (usually baseUrl)\n */\n function getShareUrl() {\n return url_1.URLExt.normalize(getOption('shareUrl') || getBaseUrl());\n }\n PageConfig.getShareUrl = getShareUrl;\n /**\n * Get the tree url for shareable links.\n * Usually the same as treeUrl,\n * but overridable e.g. when sharing with JupyterHub.\n */\n function getTreeShareUrl() {\n return url_1.URLExt.normalize(url_1.URLExt.join(getShareUrl(), getOption('treeUrl')));\n }\n PageConfig.getTreeShareUrl = getTreeShareUrl;\n /**\n * Create a new URL given an optional mode and tree path.\n *\n * This is used to create URLS when the mode or tree path change as the user\n * changes mode or the current document in the main area. If fields in\n * options are omitted, the value in PageConfig will be used.\n *\n * @param options - IGetUrlOptions for the new path.\n */\n function getUrl(options) {\n var _a, _b, _c, _d;\n let path = options.toShare ? getShareUrl() : getBaseUrl();\n const mode = (_a = options.mode) !== null && _a !== void 0 ? _a : getOption('mode');\n const workspace = (_b = options.workspace) !== null && _b !== void 0 ? _b : getOption('workspace');\n const labOrDoc = mode === 'single-document' ? 'doc' : 'lab';\n path = url_1.URLExt.join(path, labOrDoc);\n if (workspace !== PageConfig.defaultWorkspace) {\n path = url_1.URLExt.join(path, 'workspaces', encodeURIComponent((_c = getOption('workspace')) !== null && _c !== void 0 ? _c : PageConfig.defaultWorkspace));\n }\n const treePath = (_d = options.treePath) !== null && _d !== void 0 ? _d : getOption('treePath');\n if (treePath) {\n path = url_1.URLExt.join(path, 'tree', url_1.URLExt.encodeParts(treePath));\n }\n return path;\n }\n PageConfig.getUrl = getUrl;\n PageConfig.defaultWorkspace = 'default';\n /**\n * Get the base websocket url for a Jupyter application, or an empty string.\n */\n function getWsUrl(baseUrl) {\n let wsUrl = getOption('wsUrl');\n if (!wsUrl) {\n baseUrl = baseUrl ? url_1.URLExt.normalize(baseUrl) : getBaseUrl();\n if (baseUrl.indexOf('http') !== 0) {\n return '';\n }\n wsUrl = 'ws' + baseUrl.slice(4);\n }\n return url_1.URLExt.normalize(wsUrl);\n }\n PageConfig.getWsUrl = getWsUrl;\n /**\n * Returns the URL converting this notebook to a certain\n * format with nbconvert.\n */\n function getNBConvertURL({ path, format, download }) {\n const notebookPath = url_1.URLExt.encodeParts(path);\n const url = url_1.URLExt.join(getBaseUrl(), 'nbconvert', format, notebookPath);\n if (download) {\n return url + '?download=true';\n }\n return url;\n }\n PageConfig.getNBConvertURL = getNBConvertURL;\n /**\n * Get the authorization token for a Jupyter application.\n */\n function getToken() {\n return getOption('token') || getBodyData('jupyterApiToken');\n }\n PageConfig.getToken = getToken;\n /**\n * Get the Notebook version info [major, minor, patch].\n */\n function getNotebookVersion() {\n const notebookVersion = getOption('notebookVersion');\n if (notebookVersion === '') {\n return [0, 0, 0];\n }\n return JSON.parse(notebookVersion);\n }\n PageConfig.getNotebookVersion = getNotebookVersion;\n /**\n * Private page config data for the Jupyter application.\n */\n let configData = null;\n /**\n * Get a url-encoded item from `body.data` and decode it\n * We should never have any encoded URLs anywhere else in code\n * until we are building an actual request.\n */\n function getBodyData(key) {\n if (typeof document === 'undefined' || !document.body) {\n return '';\n }\n const val = document.body.dataset[key];\n if (typeof val === 'undefined') {\n return '';\n }\n return decodeURIComponent(val);\n }\n /**\n * The namespace for page config `Extension` functions.\n */\n let Extension;\n (function (Extension) {\n /**\n * Populate an array from page config.\n *\n * @param key - The page config key (e.g., `deferredExtensions`).\n *\n * #### Notes\n * This is intended for `deferredExtensions` and `disabledExtensions`.\n */\n function populate(key) {\n try {\n const raw = getOption(key);\n if (raw) {\n return JSON.parse(raw);\n }\n }\n catch (error) {\n console.warn(`Unable to parse ${key}.`, error);\n }\n return [];\n }\n /**\n * The collection of deferred extensions in page config.\n */\n Extension.deferred = populate('deferredExtensions');\n /**\n * The collection of disabled extensions in page config.\n */\n Extension.disabled = populate('disabledExtensions');\n /**\n * Returns whether a plugin is deferred.\n *\n * @param id - The plugin ID.\n */\n function isDeferred(id) {\n // Check for either a full plugin id match or an extension\n // name match.\n const separatorIndex = id.indexOf(':');\n let extName = '';\n if (separatorIndex !== -1) {\n extName = id.slice(0, separatorIndex);\n }\n return Extension.deferred.some(val => val === id || (extName && val === extName));\n }\n Extension.isDeferred = isDeferred;\n /**\n * Returns whether a plugin is disabled.\n *\n * @param id - The plugin ID.\n */\n function isDisabled(id) {\n // Check for either a full plugin id match or an extension\n // name match.\n const separatorIndex = id.indexOf(':');\n let extName = '';\n if (separatorIndex !== -1) {\n extName = id.slice(0, separatorIndex);\n }\n return Extension.disabled.some(val => val === id || (extName && val === extName));\n }\n Extension.isDisabled = isDisabled;\n })(Extension = PageConfig.Extension || (PageConfig.Extension = {}));\n})(PageConfig || (exports.PageConfig = PageConfig = {}));\n//# sourceMappingURL=pageconfig.js.map","\"use strict\";\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PathExt = void 0;\nconst path_1 = require(\"path\");\n/**\n * The namespace for path-related functions.\n *\n * Note that Jupyter server paths do not start with a leading slash.\n */\nvar PathExt;\n(function (PathExt) {\n /**\n * Join all arguments together and normalize the resulting path.\n * Arguments must be strings. In v0.8, non-string arguments were silently ignored. In v0.10 and up, an exception is thrown.\n *\n * @param paths - The string paths to join.\n */\n function join(...paths) {\n const path = path_1.posix.join(...paths);\n return path === '.' ? '' : removeSlash(path);\n }\n PathExt.join = join;\n /**\n * Join all arguments together and normalize the resulting path and preserve the leading slash.\n *\n * @param paths - The string paths to join.\n */\n function joinWithLeadingSlash(...paths) {\n const path = path_1.posix.join(...paths);\n return path === '.' ? '' : path;\n }\n PathExt.joinWithLeadingSlash = joinWithLeadingSlash;\n /**\n * Return the last portion of a path. Similar to the Unix basename command.\n * Often used to extract the file name from a fully qualified path.\n *\n * @param path - The path to evaluate.\n *\n * @param ext - An extension to remove from the result.\n */\n function basename(path, ext) {\n return path_1.posix.basename(path, ext);\n }\n PathExt.basename = basename;\n /**\n * Get the directory name of a path, similar to the Unix dirname command.\n * When an empty path is given, returns the root path.\n *\n * @param path - The file path.\n */\n function dirname(path) {\n const dir = removeSlash(path_1.posix.dirname(path));\n return dir === '.' ? '' : dir;\n }\n PathExt.dirname = dirname;\n /**\n * Get the extension of the path.\n *\n * @param path - The file path.\n *\n * @returns the extension of the file.\n *\n * #### Notes\n * The extension is the string from the last occurrence of the `.`\n * character to end of string in the last portion of the path, inclusive.\n * If there is no `.` in the last portion of the path, or if the first\n * character of the basename of path [[basename]] is `.`, then an\n * empty string is returned.\n */\n function extname(path) {\n return path_1.posix.extname(path);\n }\n PathExt.extname = extname;\n /**\n * Normalize a string path, reducing '..' and '.' parts.\n * When multiple slashes are found, they're replaced by a single one; when the path contains a trailing slash, it is preserved. On Windows backslashes are used.\n * When an empty path is given, returns the root path.\n *\n * @param path - The string path to normalize.\n */\n function normalize(path) {\n if (path === '') {\n return '';\n }\n return removeSlash(path_1.posix.normalize(path));\n }\n PathExt.normalize = normalize;\n /**\n * Resolve a sequence of paths or path segments into an absolute path.\n * The root path in the application has no leading slash, so it is removed.\n *\n * @param parts - The paths to join.\n *\n * #### Notes\n * The right-most parameter is considered \\{to\\}. Other parameters are considered an array of \\{from\\}.\n *\n * Starting from leftmost \\{from\\} parameter, resolves \\{to\\} to an absolute path.\n *\n * If \\{to\\} isn't already absolute, \\{from\\} arguments are prepended in right to left order, until an absolute path is found. If after using all \\{from\\} paths still no absolute path is found, the current working directory is used as well. The resulting path is normalized, and trailing slashes are removed unless the path gets resolved to the root directory.\n */\n function resolve(...parts) {\n return removeSlash(path_1.posix.resolve(...parts));\n }\n PathExt.resolve = resolve;\n /**\n * Solve the relative path from \\{from\\} to \\{to\\}.\n *\n * @param from - The source path.\n *\n * @param to - The target path.\n *\n * #### Notes\n * If from and to each resolve to the same path (after calling\n * path.resolve() on each), a zero-length string is returned.\n * If a zero-length string is passed as from or to, `/`\n * will be used instead of the zero-length strings.\n */\n function relative(from, to) {\n return removeSlash(path_1.posix.relative(from, to));\n }\n PathExt.relative = relative;\n /**\n * Normalize a file extension to be of the type `'.foo'`.\n *\n * @param extension - the file extension.\n *\n * #### Notes\n * Adds a leading dot if not present and converts to lower case.\n */\n function normalizeExtension(extension) {\n if (extension.length > 0 && extension.indexOf('.') !== 0) {\n extension = `.${extension}`;\n }\n return extension;\n }\n PathExt.normalizeExtension = normalizeExtension;\n /**\n * Remove the leading slash from a path.\n *\n * @param path the path from which to remove a leading slash.\n */\n function removeSlash(path) {\n if (path.indexOf('/') === 0) {\n path = path.slice(1);\n }\n return path;\n }\n PathExt.removeSlash = removeSlash;\n})(PathExt || (exports.PathExt = PathExt = {}));\n//# sourceMappingURL=path.js.map","\"use strict\";\n/*\n * Copyright (c) Jupyter Development Team.\n * Distributed under the terms of the Modified BSD License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.signalToPromise = void 0;\nconst coreutils_1 = require(\"@lumino/coreutils\");\n/**\n * Convert a signal into a promise for the first emitted value.\n *\n * @param signal - The signal we are listening to.\n * @param timeout - Timeout to wait for signal in ms (not timeout if not defined or 0)\n *\n * @returns a Promise that resolves with a `(sender, args)` pair.\n */\nfunction signalToPromise(signal, timeout) {\n const waitForSignal = new coreutils_1.PromiseDelegate();\n function cleanup() {\n signal.disconnect(slot);\n }\n function slot(sender, args) {\n cleanup();\n waitForSignal.resolve([sender, args]);\n }\n signal.connect(slot);\n if ((timeout !== null && timeout !== void 0 ? timeout : 0) > 0) {\n setTimeout(() => {\n cleanup();\n waitForSignal.reject(`Signal not emitted within ${timeout} ms.`);\n }, timeout);\n }\n return waitForSignal.promise;\n}\nexports.signalToPromise = signalToPromise;\n//# sourceMappingURL=signal.js.map","\"use strict\";\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Text = void 0;\n/**\n * The namespace for text-related functions.\n */\nvar Text;\n(function (Text) {\n // javascript stores text as utf16 and string indices use \"code units\",\n // which stores high-codepoint characters as \"surrogate pairs\",\n // which occupy two indices in the javascript string.\n // We need to translate cursor_pos in the Jupyter protocol (in characters)\n // to js offset (with surrogate pairs taking two spots).\n const HAS_SURROGATES = '𝐚'.length > 1;\n /**\n * Convert a javascript string index into a unicode character offset\n *\n * @param jsIdx - The javascript string index (counting surrogate pairs)\n *\n * @param text - The text in which the offset is calculated\n *\n * @returns The unicode character offset\n */\n function jsIndexToCharIndex(jsIdx, text) {\n if (HAS_SURROGATES) {\n // not using surrogates, nothing to do\n return jsIdx;\n }\n let charIdx = jsIdx;\n for (let i = 0; i + 1 < text.length && i < jsIdx; i++) {\n const charCode = text.charCodeAt(i);\n // check for surrogate pair\n if (charCode >= 0xd800 && charCode <= 0xdbff) {\n const nextCharCode = text.charCodeAt(i + 1);\n if (nextCharCode >= 0xdc00 && nextCharCode <= 0xdfff) {\n charIdx--;\n i++;\n }\n }\n }\n return charIdx;\n }\n Text.jsIndexToCharIndex = jsIndexToCharIndex;\n /**\n * Convert a unicode character offset to a javascript string index.\n *\n * @param charIdx - The index in unicode characters\n *\n * @param text - The text in which the offset is calculated\n *\n * @returns The js-native index\n */\n function charIndexToJsIndex(charIdx, text) {\n if (HAS_SURROGATES) {\n // not using surrogates, nothing to do\n return charIdx;\n }\n let jsIdx = charIdx;\n for (let i = 0; i + 1 < text.length && i < jsIdx; i++) {\n const charCode = text.charCodeAt(i);\n // check for surrogate pair\n if (charCode >= 0xd800 && charCode <= 0xdbff) {\n const nextCharCode = text.charCodeAt(i + 1);\n if (nextCharCode >= 0xdc00 && nextCharCode <= 0xdfff) {\n jsIdx++;\n i++;\n }\n }\n }\n return jsIdx;\n }\n Text.charIndexToJsIndex = charIndexToJsIndex;\n /**\n * Given a 'snake-case', 'snake_case', 'snake:case', or\n * 'snake case' string, will return the camel case version: 'snakeCase'.\n *\n * @param str the snake-case input string.\n *\n * @param upper default = false. If true, the first letter of the\n * returned string will be capitalized.\n *\n * @returns the camel case version of the input string.\n */\n function camelCase(str, upper = false) {\n return str.replace(/^(\\w)|[\\s-_:]+(\\w)/g, function (match, p1, p2) {\n if (p2) {\n return p2.toUpperCase();\n }\n else {\n return upper ? p1.toUpperCase() : p1.toLowerCase();\n }\n });\n }\n Text.camelCase = camelCase;\n /**\n * Given a string, title case the words in the string.\n *\n * @param str the string to title case.\n *\n * @returns the same string, but with each word capitalized.\n */\n function titleCase(str) {\n return (str || '')\n .toLowerCase()\n .split(' ')\n .map(word => word.charAt(0).toUpperCase() + word.slice(1))\n .join(' ');\n }\n Text.titleCase = titleCase;\n})(Text || (exports.Text = Text = {}));\n//# sourceMappingURL=text.js.map","\"use strict\";\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Time = void 0;\n/**\n * A list of time units with their associated value in milliseconds.\n */\nconst UNITS = [\n { name: 'years', milliseconds: 365 * 24 * 60 * 60 * 1000 },\n { name: 'months', milliseconds: 30 * 24 * 60 * 60 * 1000 },\n { name: 'days', milliseconds: 24 * 60 * 60 * 1000 },\n { name: 'hours', milliseconds: 60 * 60 * 1000 },\n { name: 'minutes', milliseconds: 60 * 1000 },\n { name: 'seconds', milliseconds: 1000 }\n];\n/**\n * The namespace for date functions.\n */\nvar Time;\n(function (Time) {\n /**\n * Convert a timestring to a human readable string (e.g. 'two minutes ago').\n *\n * @param value - The date timestring or date object.\n *\n * @returns A formatted date.\n */\n function formatHuman(value, format = 'long') {\n const lang = document.documentElement.lang || 'en';\n const formatter = new Intl.RelativeTimeFormat(lang, {\n numeric: 'auto',\n style: format\n });\n const delta = new Date(value).getTime() - Date.now();\n for (let unit of UNITS) {\n const amount = Math.ceil(delta / unit.milliseconds);\n if (amount === 0) {\n continue;\n }\n return formatter.format(amount, unit.name);\n }\n return formatter.format(0, 'seconds');\n }\n Time.formatHuman = formatHuman;\n /**\n * Convenient helper to convert a timestring to a date format.\n *\n * @param value - The date timestring or date object.\n *\n * @returns A formatted date.\n */\n function format(value) {\n const lang = document.documentElement.lang || 'en';\n const formatter = new Intl.DateTimeFormat(lang, {\n dateStyle: 'short',\n timeStyle: 'short'\n });\n return formatter.format(new Date(value));\n }\n Time.format = format;\n})(Time || (exports.Time = Time = {}));\n//# sourceMappingURL=time.js.map","\"use strict\";\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.URLExt = void 0;\nconst path_1 = require(\"path\");\nconst url_parse_1 = __importDefault(require(\"url-parse\"));\n/**\n * The namespace for URL-related functions.\n */\nvar URLExt;\n(function (URLExt) {\n /**\n * Parse a url into a URL object.\n *\n * @param url - The URL string to parse.\n *\n * @returns A URL object.\n */\n function parse(url) {\n if (typeof document !== 'undefined' && document) {\n const a = document.createElement('a');\n a.href = url;\n return a;\n }\n return (0, url_parse_1.default)(url);\n }\n URLExt.parse = parse;\n /**\n * Parse URL and retrieve hostname\n *\n * @param url - The URL string to parse\n *\n * @returns a hostname string value\n */\n function getHostName(url) {\n return (0, url_parse_1.default)(url).hostname;\n }\n URLExt.getHostName = getHostName;\n function normalize(url) {\n return url && parse(url).toString();\n }\n URLExt.normalize = normalize;\n /**\n * Join a sequence of url components and normalizes as in node `path.join`.\n *\n * @param parts - The url components.\n *\n * @returns the joined url.\n */\n function join(...parts) {\n let u = (0, url_parse_1.default)(parts[0], {});\n // Schema-less URL can be only parsed as relative to a base URL\n // see https://github.com/unshiftio/url-parse/issues/219#issuecomment-1002219326\n const isSchemaLess = u.protocol === '' && u.slashes;\n if (isSchemaLess) {\n u = (0, url_parse_1.default)(parts[0], 'https:' + parts[0]);\n }\n const prefix = `${isSchemaLess ? '' : u.protocol}${u.slashes ? '//' : ''}${u.auth}${u.auth ? '@' : ''}${u.host}`;\n // If there was a prefix, then the first path must start at the root.\n const path = path_1.posix.join(`${!!prefix && u.pathname[0] !== '/' ? '/' : ''}${u.pathname}`, ...parts.slice(1));\n return `${prefix}${path === '.' ? '' : path}`;\n }\n URLExt.join = join;\n /**\n * Encode the components of a multi-segment url.\n *\n * @param url - The url to encode.\n *\n * @returns the encoded url.\n *\n * #### Notes\n * Preserves the `'/'` separators.\n * Should not include the base url, since all parts are escaped.\n */\n function encodeParts(url) {\n return join(...url.split('/').map(encodeURIComponent));\n }\n URLExt.encodeParts = encodeParts;\n /**\n * Return a serialized object string suitable for a query.\n *\n * @param value The source object.\n *\n * @returns an encoded url query.\n *\n * #### Notes\n * Modified version of [stackoverflow](http://stackoverflow.com/a/30707423).\n */\n function objectToQueryString(value) {\n const keys = Object.keys(value).filter(key => key.length > 0);\n if (!keys.length) {\n return '';\n }\n return ('?' +\n keys\n .map(key => {\n const content = encodeURIComponent(String(value[key]));\n return key + (content ? '=' + content : '');\n })\n .join('&'));\n }\n URLExt.objectToQueryString = objectToQueryString;\n /**\n * Return a parsed object that represents the values in a query string.\n */\n function queryStringToObject(value) {\n return value\n .replace(/^\\?/, '')\n .split('&')\n .reduce((acc, val) => {\n const [key, value] = val.split('=');\n if (key.length > 0) {\n acc[key] = decodeURIComponent(value || '');\n }\n return acc;\n }, {});\n }\n URLExt.queryStringToObject = queryStringToObject;\n /**\n * Test whether the url is a local url.\n *\n * @param allowRoot - Whether the paths starting at Unix-style filesystem root (`/`) are permitted.\n *\n * #### Notes\n * This function returns `false` for any fully qualified url, including\n * `data:`, `file:`, and `//` protocol URLs.\n */\n function isLocal(url, allowRoot = false) {\n const { protocol } = parse(url);\n return ((!protocol || url.toLowerCase().indexOf(protocol) !== 0) &&\n (allowRoot ? url.indexOf('//') !== 0 : url.indexOf('/') !== 0));\n }\n URLExt.isLocal = isLocal;\n})(URLExt || (exports.URLExt = URLExt = {}));\n//# sourceMappingURL=url.js.map","// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n/**\n * The namespace for array-specific algorithms.\n */\nvar ArrayExt;\n(function (ArrayExt) {\n /**\n * Find the index of the first occurrence of a value in an array.\n *\n * @param array - The array-like object to search.\n *\n * @param value - The value to locate in the array. Values are\n * compared using strict `===` equality.\n *\n * @param start - The index of the first element in the range to be\n * searched, inclusive. The default value is `0`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @param stop - The index of the last element in the range to be\n * searched, inclusive. The default value is `-1`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @returns The index of the first occurrence of the value, or `-1`\n * if the value is not found.\n *\n * #### Notes\n * If `stop < start` the search will wrap at the end of the array.\n *\n * #### Complexity\n * Linear.\n *\n * #### Undefined Behavior\n * A `start` or `stop` which is non-integral.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * let data = ['one', 'two', 'three', 'four', 'one'];\n * ArrayExt.firstIndexOf(data, 'red'); // -1\n * ArrayExt.firstIndexOf(data, 'one'); // 0\n * ArrayExt.firstIndexOf(data, 'one', 1); // 4\n * ArrayExt.firstIndexOf(data, 'two', 2); // -1\n * ArrayExt.firstIndexOf(data, 'two', 2, 1); // 1\n * ```\n */\n function firstIndexOf(array, value, start = 0, stop = -1) {\n let n = array.length;\n if (n === 0) {\n return -1;\n }\n if (start < 0) {\n start = Math.max(0, start + n);\n }\n else {\n start = Math.min(start, n - 1);\n }\n if (stop < 0) {\n stop = Math.max(0, stop + n);\n }\n else {\n stop = Math.min(stop, n - 1);\n }\n let span;\n if (stop < start) {\n span = stop + 1 + (n - start);\n }\n else {\n span = stop - start + 1;\n }\n for (let i = 0; i < span; ++i) {\n let j = (start + i) % n;\n if (array[j] === value) {\n return j;\n }\n }\n return -1;\n }\n ArrayExt.firstIndexOf = firstIndexOf;\n /**\n * Find the index of the last occurrence of a value in an array.\n *\n * @param array - The array-like object to search.\n *\n * @param value - The value to locate in the array. Values are\n * compared using strict `===` equality.\n *\n * @param start - The index of the first element in the range to be\n * searched, inclusive. The default value is `-1`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @param stop - The index of the last element in the range to be\n * searched, inclusive. The default value is `0`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @returns The index of the last occurrence of the value, or `-1`\n * if the value is not found.\n *\n * #### Notes\n * If `start < stop` the search will wrap at the front of the array.\n *\n * #### Complexity\n * Linear.\n *\n * #### Undefined Behavior\n * A `start` or `stop` which is non-integral.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * let data = ['one', 'two', 'three', 'four', 'one'];\n * ArrayExt.lastIndexOf(data, 'red'); // -1\n * ArrayExt.lastIndexOf(data, 'one'); // 4\n * ArrayExt.lastIndexOf(data, 'one', 1); // 0\n * ArrayExt.lastIndexOf(data, 'two', 0); // -1\n * ArrayExt.lastIndexOf(data, 'two', 0, 1); // 1\n * ```\n */\n function lastIndexOf(array, value, start = -1, stop = 0) {\n let n = array.length;\n if (n === 0) {\n return -1;\n }\n if (start < 0) {\n start = Math.max(0, start + n);\n }\n else {\n start = Math.min(start, n - 1);\n }\n if (stop < 0) {\n stop = Math.max(0, stop + n);\n }\n else {\n stop = Math.min(stop, n - 1);\n }\n let span;\n if (start < stop) {\n span = start + 1 + (n - stop);\n }\n else {\n span = start - stop + 1;\n }\n for (let i = 0; i < span; ++i) {\n let j = (start - i + n) % n;\n if (array[j] === value) {\n return j;\n }\n }\n return -1;\n }\n ArrayExt.lastIndexOf = lastIndexOf;\n /**\n * Find the index of the first value which matches a predicate.\n *\n * @param array - The array-like object to search.\n *\n * @param fn - The predicate function to apply to the values.\n *\n * @param start - The index of the first element in the range to be\n * searched, inclusive. The default value is `0`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @param stop - The index of the last element in the range to be\n * searched, inclusive. The default value is `-1`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @returns The index of the first matching value, or `-1` if no\n * matching value is found.\n *\n * #### Notes\n * If `stop < start` the search will wrap at the end of the array.\n *\n * #### Complexity\n * Linear.\n *\n * #### Undefined Behavior\n * A `start` or `stop` which is non-integral.\n *\n * Modifying the length of the array while searching.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * function isEven(value: number): boolean {\n * return value % 2 === 0;\n * }\n *\n * let data = [1, 2, 3, 4, 3, 2, 1];\n * ArrayExt.findFirstIndex(data, isEven); // 1\n * ArrayExt.findFirstIndex(data, isEven, 4); // 5\n * ArrayExt.findFirstIndex(data, isEven, 6); // -1\n * ArrayExt.findFirstIndex(data, isEven, 6, 5); // 1\n * ```\n */\n function findFirstIndex(array, fn, start = 0, stop = -1) {\n let n = array.length;\n if (n === 0) {\n return -1;\n }\n if (start < 0) {\n start = Math.max(0, start + n);\n }\n else {\n start = Math.min(start, n - 1);\n }\n if (stop < 0) {\n stop = Math.max(0, stop + n);\n }\n else {\n stop = Math.min(stop, n - 1);\n }\n let span;\n if (stop < start) {\n span = stop + 1 + (n - start);\n }\n else {\n span = stop - start + 1;\n }\n for (let i = 0; i < span; ++i) {\n let j = (start + i) % n;\n if (fn(array[j], j)) {\n return j;\n }\n }\n return -1;\n }\n ArrayExt.findFirstIndex = findFirstIndex;\n /**\n * Find the index of the last value which matches a predicate.\n *\n * @param array - The array-like object to search.\n *\n * @param fn - The predicate function to apply to the values.\n *\n * @param start - The index of the first element in the range to be\n * searched, inclusive. The default value is `-1`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @param stop - The index of the last element in the range to be\n * searched, inclusive. The default value is `0`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @returns The index of the last matching value, or `-1` if no\n * matching value is found.\n *\n * #### Notes\n * If `start < stop` the search will wrap at the front of the array.\n *\n * #### Complexity\n * Linear.\n *\n * #### Undefined Behavior\n * A `start` or `stop` which is non-integral.\n *\n * Modifying the length of the array while searching.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * function isEven(value: number): boolean {\n * return value % 2 === 0;\n * }\n *\n * let data = [1, 2, 3, 4, 3, 2, 1];\n * ArrayExt.findLastIndex(data, isEven); // 5\n * ArrayExt.findLastIndex(data, isEven, 4); // 3\n * ArrayExt.findLastIndex(data, isEven, 0); // -1\n * ArrayExt.findLastIndex(data, isEven, 0, 1); // 5\n * ```\n */\n function findLastIndex(array, fn, start = -1, stop = 0) {\n let n = array.length;\n if (n === 0) {\n return -1;\n }\n if (start < 0) {\n start = Math.max(0, start + n);\n }\n else {\n start = Math.min(start, n - 1);\n }\n if (stop < 0) {\n stop = Math.max(0, stop + n);\n }\n else {\n stop = Math.min(stop, n - 1);\n }\n let d;\n if (start < stop) {\n d = start + 1 + (n - stop);\n }\n else {\n d = start - stop + 1;\n }\n for (let i = 0; i < d; ++i) {\n let j = (start - i + n) % n;\n if (fn(array[j], j)) {\n return j;\n }\n }\n return -1;\n }\n ArrayExt.findLastIndex = findLastIndex;\n /**\n * Find the first value which matches a predicate.\n *\n * @param array - The array-like object to search.\n *\n * @param fn - The predicate function to apply to the values.\n *\n * @param start - The index of the first element in the range to be\n * searched, inclusive. The default value is `0`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @param stop - The index of the last element in the range to be\n * searched, inclusive. The default value is `-1`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @returns The first matching value, or `undefined` if no matching\n * value is found.\n *\n * #### Notes\n * If `stop < start` the search will wrap at the end of the array.\n *\n * #### Complexity\n * Linear.\n *\n * #### Undefined Behavior\n * A `start` or `stop` which is non-integral.\n *\n * Modifying the length of the array while searching.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * function isEven(value: number): boolean {\n * return value % 2 === 0;\n * }\n *\n * let data = [1, 2, 3, 4, 3, 2, 1];\n * ArrayExt.findFirstValue(data, isEven); // 2\n * ArrayExt.findFirstValue(data, isEven, 2); // 4\n * ArrayExt.findFirstValue(data, isEven, 6); // undefined\n * ArrayExt.findFirstValue(data, isEven, 6, 5); // 2\n * ```\n */\n function findFirstValue(array, fn, start = 0, stop = -1) {\n let index = findFirstIndex(array, fn, start, stop);\n return index !== -1 ? array[index] : undefined;\n }\n ArrayExt.findFirstValue = findFirstValue;\n /**\n * Find the last value which matches a predicate.\n *\n * @param object - The array-like object to search.\n *\n * @param fn - The predicate function to apply to the values.\n *\n * @param start - The index of the first element in the range to be\n * searched, inclusive. The default value is `-1`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @param stop - The index of the last element in the range to be\n * searched, inclusive. The default value is `0`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @returns The last matching value, or `undefined` if no matching\n * value is found.\n *\n * #### Notes\n * If `start < stop` the search will wrap at the front of the array.\n *\n * #### Complexity\n * Linear.\n *\n * #### Undefined Behavior\n * A `start` or `stop` which is non-integral.\n *\n * Modifying the length of the array while searching.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * function isEven(value: number): boolean {\n * return value % 2 === 0;\n * }\n *\n * let data = [1, 2, 3, 4, 3, 2, 1];\n * ArrayExt.findLastValue(data, isEven); // 2\n * ArrayExt.findLastValue(data, isEven, 4); // 4\n * ArrayExt.findLastValue(data, isEven, 0); // undefined\n * ArrayExt.findLastValue(data, isEven, 0, 1); // 2\n * ```\n */\n function findLastValue(array, fn, start = -1, stop = 0) {\n let index = findLastIndex(array, fn, start, stop);\n return index !== -1 ? array[index] : undefined;\n }\n ArrayExt.findLastValue = findLastValue;\n /**\n * Find the index of the first element which compares `>=` to a value.\n *\n * @param array - The sorted array-like object to search.\n *\n * @param value - The value to locate in the array.\n *\n * @param fn - The 3-way comparison function to apply to the values.\n * It should return `< 0` if an element is less than a value, `0` if\n * an element is equal to a value, or `> 0` if an element is greater\n * than a value.\n *\n * @param start - The index of the first element in the range to be\n * searched, inclusive. The default value is `0`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @param stop - The index of the last element in the range to be\n * searched, inclusive. The default value is `-1`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @returns The index of the first element which compares `>=` to the\n * value, or `length` if there is no such element. If the computed\n * index for `stop` is less than `start`, then the computed index\n * for `start` is returned.\n *\n * #### Notes\n * The array must already be sorted in ascending order according to\n * the comparison function.\n *\n * #### Complexity\n * Logarithmic.\n *\n * #### Undefined Behavior\n * Searching a range which is not sorted in ascending order.\n *\n * A `start` or `stop` which is non-integral.\n *\n * Modifying the length of the array while searching.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * function numberCmp(a: number, b: number): number {\n * return a - b;\n * }\n *\n * let data = [0, 3, 4, 7, 7, 9];\n * ArrayExt.lowerBound(data, 0, numberCmp); // 0\n * ArrayExt.lowerBound(data, 6, numberCmp); // 3\n * ArrayExt.lowerBound(data, 7, numberCmp); // 3\n * ArrayExt.lowerBound(data, -1, numberCmp); // 0\n * ArrayExt.lowerBound(data, 10, numberCmp); // 6\n * ```\n */\n function lowerBound(array, value, fn, start = 0, stop = -1) {\n let n = array.length;\n if (n === 0) {\n return 0;\n }\n if (start < 0) {\n start = Math.max(0, start + n);\n }\n else {\n start = Math.min(start, n - 1);\n }\n if (stop < 0) {\n stop = Math.max(0, stop + n);\n }\n else {\n stop = Math.min(stop, n - 1);\n }\n let begin = start;\n let span = stop - start + 1;\n while (span > 0) {\n let half = span >> 1;\n let middle = begin + half;\n if (fn(array[middle], value) < 0) {\n begin = middle + 1;\n span -= half + 1;\n }\n else {\n span = half;\n }\n }\n return begin;\n }\n ArrayExt.lowerBound = lowerBound;\n /**\n * Find the index of the first element which compares `>` than a value.\n *\n * @param array - The sorted array-like object to search.\n *\n * @param value - The value to locate in the array.\n *\n * @param fn - The 3-way comparison function to apply to the values.\n * It should return `< 0` if an element is less than a value, `0` if\n * an element is equal to a value, or `> 0` if an element is greater\n * than a value.\n *\n * @param start - The index of the first element in the range to be\n * searched, inclusive. The default value is `0`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @param stop - The index of the last element in the range to be\n * searched, inclusive. The default value is `-1`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @returns The index of the first element which compares `>` than the\n * value, or `length` if there is no such element. If the computed\n * index for `stop` is less than `start`, then the computed index\n * for `start` is returned.\n *\n * #### Notes\n * The array must already be sorted in ascending order according to\n * the comparison function.\n *\n * #### Complexity\n * Logarithmic.\n *\n * #### Undefined Behavior\n * Searching a range which is not sorted in ascending order.\n *\n * A `start` or `stop` which is non-integral.\n *\n * Modifying the length of the array while searching.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * function numberCmp(a: number, b: number): number {\n * return a - b;\n * }\n *\n * let data = [0, 3, 4, 7, 7, 9];\n * ArrayExt.upperBound(data, 0, numberCmp); // 1\n * ArrayExt.upperBound(data, 6, numberCmp); // 3\n * ArrayExt.upperBound(data, 7, numberCmp); // 5\n * ArrayExt.upperBound(data, -1, numberCmp); // 0\n * ArrayExt.upperBound(data, 10, numberCmp); // 6\n * ```\n */\n function upperBound(array, value, fn, start = 0, stop = -1) {\n let n = array.length;\n if (n === 0) {\n return 0;\n }\n if (start < 0) {\n start = Math.max(0, start + n);\n }\n else {\n start = Math.min(start, n - 1);\n }\n if (stop < 0) {\n stop = Math.max(0, stop + n);\n }\n else {\n stop = Math.min(stop, n - 1);\n }\n let begin = start;\n let span = stop - start + 1;\n while (span > 0) {\n let half = span >> 1;\n let middle = begin + half;\n if (fn(array[middle], value) > 0) {\n span = half;\n }\n else {\n begin = middle + 1;\n span -= half + 1;\n }\n }\n return begin;\n }\n ArrayExt.upperBound = upperBound;\n /**\n * Test whether two arrays are shallowly equal.\n *\n * @param a - The first array-like object to compare.\n *\n * @param b - The second array-like object to compare.\n *\n * @param fn - The comparison function to apply to the elements. It\n * should return `true` if the elements are \"equal\". The default\n * compares elements using strict `===` equality.\n *\n * @returns Whether the two arrays are shallowly equal.\n *\n * #### Complexity\n * Linear.\n *\n * #### Undefined Behavior\n * Modifying the length of the arrays while comparing.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * let d1 = [0, 3, 4, 7, 7, 9];\n * let d2 = [0, 3, 4, 7, 7, 9];\n * let d3 = [42];\n * ArrayExt.shallowEqual(d1, d2); // true\n * ArrayExt.shallowEqual(d2, d3); // false\n * ```\n */\n function shallowEqual(a, b, fn) {\n // Check for object identity first.\n if (a === b) {\n return true;\n }\n // Bail early if the lengths are different.\n if (a.length !== b.length) {\n return false;\n }\n // Compare each element for equality.\n for (let i = 0, n = a.length; i < n; ++i) {\n if (fn ? !fn(a[i], b[i]) : a[i] !== b[i]) {\n return false;\n }\n }\n // The array are shallowly equal.\n return true;\n }\n ArrayExt.shallowEqual = shallowEqual;\n /**\n * Create a slice of an array subject to an optional step.\n *\n * @param array - The array-like object of interest.\n *\n * @param options - The options for configuring the slice.\n *\n * @returns A new array with the specified values.\n *\n * @throws An exception if the slice `step` is `0`.\n *\n * #### Complexity\n * Linear.\n *\n * #### Undefined Behavior\n * A `start`, `stop`, or `step` which is non-integral.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * let data = [0, 3, 4, 7, 7, 9];\n * ArrayExt.slice(data); // [0, 3, 4, 7, 7, 9]\n * ArrayExt.slice(data, { start: 2 }); // [4, 7, 7, 9]\n * ArrayExt.slice(data, { start: 0, stop: 4 }); // [0, 3, 4, 7]\n * ArrayExt.slice(data, { step: 2 }); // [0, 4, 7]\n * ArrayExt.slice(data, { step: -1 }); // [9, 7, 7, 4, 3, 0]\n * ```\n */\n function slice(array, options = {}) {\n // Extract the options.\n let { start, stop, step } = options;\n // Set up the `step` value.\n if (step === undefined) {\n step = 1;\n }\n // Validate the step size.\n if (step === 0) {\n throw new Error('Slice `step` cannot be zero.');\n }\n // Look up the length of the array.\n let n = array.length;\n // Set up the `start` value.\n if (start === undefined) {\n start = step < 0 ? n - 1 : 0;\n }\n else if (start < 0) {\n start = Math.max(start + n, step < 0 ? -1 : 0);\n }\n else if (start >= n) {\n start = step < 0 ? n - 1 : n;\n }\n // Set up the `stop` value.\n if (stop === undefined) {\n stop = step < 0 ? -1 : n;\n }\n else if (stop < 0) {\n stop = Math.max(stop + n, step < 0 ? -1 : 0);\n }\n else if (stop >= n) {\n stop = step < 0 ? n - 1 : n;\n }\n // Compute the slice length.\n let length;\n if ((step < 0 && stop >= start) || (step > 0 && start >= stop)) {\n length = 0;\n }\n else if (step < 0) {\n length = Math.floor((stop - start + 1) / step + 1);\n }\n else {\n length = Math.floor((stop - start - 1) / step + 1);\n }\n // Compute the sliced result.\n let result = [];\n for (let i = 0; i < length; ++i) {\n result[i] = array[start + i * step];\n }\n // Return the result.\n return result;\n }\n ArrayExt.slice = slice;\n /**\n * Move an element in an array from one index to another.\n *\n * @param array - The mutable array-like object of interest.\n *\n * @param fromIndex - The index of the element to move. Negative\n * values are taken as an offset from the end of the array.\n *\n * @param toIndex - The target index of the element. Negative\n * values are taken as an offset from the end of the array.\n *\n * #### Complexity\n * Linear.\n *\n * #### Undefined Behavior\n * A `fromIndex` or `toIndex` which is non-integral.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from from '@lumino/algorithm';\n *\n * let data = [0, 1, 2, 3, 4];\n * ArrayExt.move(data, 1, 2); // [0, 2, 1, 3, 4]\n * ArrayExt.move(data, 4, 2); // [0, 2, 4, 1, 3]\n * ```\n */\n function move(array, fromIndex, toIndex) {\n let n = array.length;\n if (n <= 1) {\n return;\n }\n if (fromIndex < 0) {\n fromIndex = Math.max(0, fromIndex + n);\n }\n else {\n fromIndex = Math.min(fromIndex, n - 1);\n }\n if (toIndex < 0) {\n toIndex = Math.max(0, toIndex + n);\n }\n else {\n toIndex = Math.min(toIndex, n - 1);\n }\n if (fromIndex === toIndex) {\n return;\n }\n let value = array[fromIndex];\n let d = fromIndex < toIndex ? 1 : -1;\n for (let i = fromIndex; i !== toIndex; i += d) {\n array[i] = array[i + d];\n }\n array[toIndex] = value;\n }\n ArrayExt.move = move;\n /**\n * Reverse an array in-place.\n *\n * @param array - The mutable array-like object of interest.\n *\n * @param start - The index of the first element in the range to be\n * reversed, inclusive. The default value is `0`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @param stop - The index of the last element in the range to be\n * reversed, inclusive. The default value is `-1`. Negative values\n * are taken as an offset from the end of the array.\n *\n * #### Complexity\n * Linear.\n *\n * #### Undefined Behavior\n * A `start` or `stop` index which is non-integral.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * let data = [0, 1, 2, 3, 4];\n * ArrayExt.reverse(data, 1, 3); // [0, 3, 2, 1, 4]\n * ArrayExt.reverse(data, 3); // [0, 3, 2, 4, 1]\n * ArrayExt.reverse(data); // [1, 4, 2, 3, 0]\n * ```\n */\n function reverse(array, start = 0, stop = -1) {\n let n = array.length;\n if (n <= 1) {\n return;\n }\n if (start < 0) {\n start = Math.max(0, start + n);\n }\n else {\n start = Math.min(start, n - 1);\n }\n if (stop < 0) {\n stop = Math.max(0, stop + n);\n }\n else {\n stop = Math.min(stop, n - 1);\n }\n while (start < stop) {\n let a = array[start];\n let b = array[stop];\n array[start++] = b;\n array[stop--] = a;\n }\n }\n ArrayExt.reverse = reverse;\n /**\n * Rotate the elements of an array in-place.\n *\n * @param array - The mutable array-like object of interest.\n *\n * @param delta - The amount of rotation to apply to the elements. A\n * positive value will rotate the elements to the left. A negative\n * value will rotate the elements to the right.\n *\n * @param start - The index of the first element in the range to be\n * rotated, inclusive. The default value is `0`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @param stop - The index of the last element in the range to be\n * rotated, inclusive. The default value is `-1`. Negative values\n * are taken as an offset from the end of the array.\n *\n * #### Complexity\n * Linear.\n *\n * #### Undefined Behavior\n * A `delta`, `start`, or `stop` which is non-integral.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * let data = [0, 1, 2, 3, 4];\n * ArrayExt.rotate(data, 2); // [2, 3, 4, 0, 1]\n * ArrayExt.rotate(data, -2); // [0, 1, 2, 3, 4]\n * ArrayExt.rotate(data, 10); // [0, 1, 2, 3, 4]\n * ArrayExt.rotate(data, 9); // [4, 0, 1, 2, 3]\n * ArrayExt.rotate(data, 2, 1, 3); // [4, 2, 0, 1, 3]\n * ```\n */\n function rotate(array, delta, start = 0, stop = -1) {\n let n = array.length;\n if (n <= 1) {\n return;\n }\n if (start < 0) {\n start = Math.max(0, start + n);\n }\n else {\n start = Math.min(start, n - 1);\n }\n if (stop < 0) {\n stop = Math.max(0, stop + n);\n }\n else {\n stop = Math.min(stop, n - 1);\n }\n if (start >= stop) {\n return;\n }\n let length = stop - start + 1;\n if (delta > 0) {\n delta = delta % length;\n }\n else if (delta < 0) {\n delta = ((delta % length) + length) % length;\n }\n if (delta === 0) {\n return;\n }\n let pivot = start + delta;\n reverse(array, start, pivot - 1);\n reverse(array, pivot, stop);\n reverse(array, start, stop);\n }\n ArrayExt.rotate = rotate;\n /**\n * Fill an array with a static value.\n *\n * @param array - The mutable array-like object to fill.\n *\n * @param value - The static value to use to fill the array.\n *\n * @param start - The index of the first element in the range to be\n * filled, inclusive. The default value is `0`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @param stop - The index of the last element in the range to be\n * filled, inclusive. The default value is `-1`. Negative values\n * are taken as an offset from the end of the array.\n *\n * #### Notes\n * If `stop < start` the fill will wrap at the end of the array.\n *\n * #### Complexity\n * Linear.\n *\n * #### Undefined Behavior\n * A `start` or `stop` which is non-integral.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * let data = ['one', 'two', 'three', 'four'];\n * ArrayExt.fill(data, 'r'); // ['r', 'r', 'r', 'r']\n * ArrayExt.fill(data, 'g', 1); // ['r', 'g', 'g', 'g']\n * ArrayExt.fill(data, 'b', 2, 3); // ['r', 'g', 'b', 'b']\n * ArrayExt.fill(data, 'z', 3, 1); // ['z', 'z', 'b', 'z']\n * ```\n */\n function fill(array, value, start = 0, stop = -1) {\n let n = array.length;\n if (n === 0) {\n return;\n }\n if (start < 0) {\n start = Math.max(0, start + n);\n }\n else {\n start = Math.min(start, n - 1);\n }\n if (stop < 0) {\n stop = Math.max(0, stop + n);\n }\n else {\n stop = Math.min(stop, n - 1);\n }\n let span;\n if (stop < start) {\n span = stop + 1 + (n - start);\n }\n else {\n span = stop - start + 1;\n }\n for (let i = 0; i < span; ++i) {\n array[(start + i) % n] = value;\n }\n }\n ArrayExt.fill = fill;\n /**\n * Insert a value into an array at a specific index.\n *\n * @param array - The array of interest.\n *\n * @param index - The index at which to insert the value. Negative\n * values are taken as an offset from the end of the array.\n *\n * @param value - The value to set at the specified index.\n *\n * #### Complexity\n * Linear.\n *\n * #### Undefined Behavior\n * An `index` which is non-integral.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * let data = [0, 1, 2];\n * ArrayExt.insert(data, 0, -1); // [-1, 0, 1, 2]\n * ArrayExt.insert(data, 2, 12); // [-1, 0, 12, 1, 2]\n * ArrayExt.insert(data, -1, 7); // [-1, 0, 12, 1, 7, 2]\n * ArrayExt.insert(data, 6, 19); // [-1, 0, 12, 1, 7, 2, 19]\n * ```\n */\n function insert(array, index, value) {\n let n = array.length;\n if (index < 0) {\n index = Math.max(0, index + n);\n }\n else {\n index = Math.min(index, n);\n }\n for (let i = n; i > index; --i) {\n array[i] = array[i - 1];\n }\n array[index] = value;\n }\n ArrayExt.insert = insert;\n /**\n * Remove and return a value at a specific index in an array.\n *\n * @param array - The array of interest.\n *\n * @param index - The index of the value to remove. Negative values\n * are taken as an offset from the end of the array.\n *\n * @returns The value at the specified index, or `undefined` if the\n * index is out of range.\n *\n * #### Complexity\n * Linear.\n *\n * #### Undefined Behavior\n * An `index` which is non-integral.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * let data = [0, 12, 23, 39, 14, 12, 75];\n * ArrayExt.removeAt(data, 2); // 23\n * ArrayExt.removeAt(data, -2); // 12\n * ArrayExt.removeAt(data, 10); // undefined;\n * ```\n */\n function removeAt(array, index) {\n let n = array.length;\n if (index < 0) {\n index += n;\n }\n if (index < 0 || index >= n) {\n return undefined;\n }\n let value = array[index];\n for (let i = index + 1; i < n; ++i) {\n array[i - 1] = array[i];\n }\n array.length = n - 1;\n return value;\n }\n ArrayExt.removeAt = removeAt;\n /**\n * Remove the first occurrence of a value from an array.\n *\n * @param array - The array of interest.\n *\n * @param value - The value to remove from the array. Values are\n * compared using strict `===` equality.\n *\n * @param start - The index of the first element in the range to be\n * searched, inclusive. The default value is `0`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @param stop - The index of the last element in the range to be\n * searched, inclusive. The default value is `-1`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @returns The index of the removed value, or `-1` if the value\n * is not contained in the array.\n *\n * #### Notes\n * If `stop < start` the search will wrap at the end of the array.\n *\n * #### Complexity\n * Linear.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * let data = [0, 12, 23, 39, 14, 12, 75];\n * ArrayExt.removeFirstOf(data, 12); // 1\n * ArrayExt.removeFirstOf(data, 17); // -1\n * ArrayExt.removeFirstOf(data, 39, 3); // -1\n * ArrayExt.removeFirstOf(data, 39, 3, 2); // 2\n * ```\n */\n function removeFirstOf(array, value, start = 0, stop = -1) {\n let index = firstIndexOf(array, value, start, stop);\n if (index !== -1) {\n removeAt(array, index);\n }\n return index;\n }\n ArrayExt.removeFirstOf = removeFirstOf;\n /**\n * Remove the last occurrence of a value from an array.\n *\n * @param array - The array of interest.\n *\n * @param value - The value to remove from the array. Values are\n * compared using strict `===` equality.\n *\n * @param start - The index of the first element in the range to be\n * searched, inclusive. The default value is `-1`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @param stop - The index of the last element in the range to be\n * searched, inclusive. The default value is `0`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @returns The index of the removed value, or `-1` if the value\n * is not contained in the array.\n *\n * #### Notes\n * If `start < stop` the search will wrap at the end of the array.\n *\n * #### Complexity\n * Linear.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * let data = [0, 12, 23, 39, 14, 12, 75];\n * ArrayExt.removeLastOf(data, 12); // 5\n * ArrayExt.removeLastOf(data, 17); // -1\n * ArrayExt.removeLastOf(data, 39, 2); // -1\n * ArrayExt.removeLastOf(data, 39, 2, 3); // 3\n * ```\n */\n function removeLastOf(array, value, start = -1, stop = 0) {\n let index = lastIndexOf(array, value, start, stop);\n if (index !== -1) {\n removeAt(array, index);\n }\n return index;\n }\n ArrayExt.removeLastOf = removeLastOf;\n /**\n * Remove all occurrences of a value from an array.\n *\n * @param array - The array of interest.\n *\n * @param value - The value to remove from the array. Values are\n * compared using strict `===` equality.\n *\n * @param start - The index of the first element in the range to be\n * searched, inclusive. The default value is `0`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @param stop - The index of the last element in the range to be\n * searched, inclusive. The default value is `-1`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @returns The number of elements removed from the array.\n *\n * #### Notes\n * If `stop < start` the search will conceptually wrap at the end of\n * the array, however the array will be traversed front-to-back.\n *\n * #### Complexity\n * Linear.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * let data = [14, 12, 23, 39, 14, 12, 19, 14];\n * ArrayExt.removeAllOf(data, 12); // 2\n * ArrayExt.removeAllOf(data, 17); // 0\n * ArrayExt.removeAllOf(data, 14, 1, 4); // 1\n * ```\n */\n function removeAllOf(array, value, start = 0, stop = -1) {\n let n = array.length;\n if (n === 0) {\n return 0;\n }\n if (start < 0) {\n start = Math.max(0, start + n);\n }\n else {\n start = Math.min(start, n - 1);\n }\n if (stop < 0) {\n stop = Math.max(0, stop + n);\n }\n else {\n stop = Math.min(stop, n - 1);\n }\n let count = 0;\n for (let i = 0; i < n; ++i) {\n if (start <= stop && i >= start && i <= stop && array[i] === value) {\n count++;\n }\n else if (stop < start &&\n (i <= stop || i >= start) &&\n array[i] === value) {\n count++;\n }\n else if (count > 0) {\n array[i - count] = array[i];\n }\n }\n if (count > 0) {\n array.length = n - count;\n }\n return count;\n }\n ArrayExt.removeAllOf = removeAllOf;\n /**\n * Remove the first occurrence of a value which matches a predicate.\n *\n * @param array - The array of interest.\n *\n * @param fn - The predicate function to apply to the values.\n *\n * @param start - The index of the first element in the range to be\n * searched, inclusive. The default value is `0`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @param stop - The index of the last element in the range to be\n * searched, inclusive. The default value is `-1`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @returns The removed `{ index, value }`, which will be `-1` and\n * `undefined` if the value is not contained in the array.\n *\n * #### Notes\n * If `stop < start` the search will wrap at the end of the array.\n *\n * #### Complexity\n * Linear.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * function isEven(value: number): boolean {\n * return value % 2 === 0;\n * }\n *\n * let data = [0, 12, 23, 39, 14, 12, 75];\n * ArrayExt.removeFirstWhere(data, isEven); // { index: 0, value: 0 }\n * ArrayExt.removeFirstWhere(data, isEven, 2); // { index: 3, value: 14 }\n * ArrayExt.removeFirstWhere(data, isEven, 4); // { index: -1, value: undefined }\n * ```\n */\n function removeFirstWhere(array, fn, start = 0, stop = -1) {\n let value;\n let index = findFirstIndex(array, fn, start, stop);\n if (index !== -1) {\n value = removeAt(array, index);\n }\n return { index, value };\n }\n ArrayExt.removeFirstWhere = removeFirstWhere;\n /**\n * Remove the last occurrence of a value which matches a predicate.\n *\n * @param array - The array of interest.\n *\n * @param fn - The predicate function to apply to the values.\n *\n * @param start - The index of the first element in the range to be\n * searched, inclusive. The default value is `-1`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @param stop - The index of the last element in the range to be\n * searched, inclusive. The default value is `0`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @returns The removed `{ index, value }`, which will be `-1` and\n * `undefined` if the value is not contained in the array.\n *\n * #### Notes\n * If `start < stop` the search will wrap at the end of the array.\n *\n * #### Complexity\n * Linear.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * function isEven(value: number): boolean {\n * return value % 2 === 0;\n * }\n *\n * let data = [0, 12, 23, 39, 14, 12, 75];\n * ArrayExt.removeLastWhere(data, isEven); // { index: 5, value: 12 }\n * ArrayExt.removeLastWhere(data, isEven, 2); // { index: 1, value: 12 }\n * ArrayExt.removeLastWhere(data, isEven, 2, 1); // { index: -1, value: undefined }\n * ```\n */\n function removeLastWhere(array, fn, start = -1, stop = 0) {\n let value;\n let index = findLastIndex(array, fn, start, stop);\n if (index !== -1) {\n value = removeAt(array, index);\n }\n return { index, value };\n }\n ArrayExt.removeLastWhere = removeLastWhere;\n /**\n * Remove all occurrences of values which match a predicate.\n *\n * @param array - The array of interest.\n *\n * @param fn - The predicate function to apply to the values.\n *\n * @param start - The index of the first element in the range to be\n * searched, inclusive. The default value is `0`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @param stop - The index of the last element in the range to be\n * searched, inclusive. The default value is `-1`. Negative values\n * are taken as an offset from the end of the array.\n *\n * @returns The number of elements removed from the array.\n *\n * #### Notes\n * If `stop < start` the search will conceptually wrap at the end of\n * the array, however the array will be traversed front-to-back.\n *\n * #### Complexity\n * Linear.\n *\n * #### Example\n * ```typescript\n * import { ArrayExt } from '@lumino/algorithm';\n *\n * function isEven(value: number): boolean {\n * return value % 2 === 0;\n * }\n *\n * function isNegative(value: number): boolean {\n * return value < 0;\n * }\n *\n * let data = [0, 12, -13, -9, 23, 39, 14, -15, 12, 75];\n * ArrayExt.removeAllWhere(data, isEven); // 4\n * ArrayExt.removeAllWhere(data, isNegative, 0, 3); // 2\n * ```\n */\n function removeAllWhere(array, fn, start = 0, stop = -1) {\n let n = array.length;\n if (n === 0) {\n return 0;\n }\n if (start < 0) {\n start = Math.max(0, start + n);\n }\n else {\n start = Math.min(start, n - 1);\n }\n if (stop < 0) {\n stop = Math.max(0, stop + n);\n }\n else {\n stop = Math.min(stop, n - 1);\n }\n let count = 0;\n for (let i = 0; i < n; ++i) {\n if (start <= stop && i >= start && i <= stop && fn(array[i], i)) {\n count++;\n }\n else if (stop < start && (i <= stop || i >= start) && fn(array[i], i)) {\n count++;\n }\n else if (count > 0) {\n array[i - count] = array[i];\n }\n }\n if (count > 0) {\n array.length = n - count;\n }\n return count;\n }\n ArrayExt.removeAllWhere = removeAllWhere;\n})(ArrayExt || (ArrayExt = {}));\n\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n/**\n * Chain together several iterables.\n *\n * @deprecated\n *\n * @param objects - The iterable objects of interest.\n *\n * @returns An iterator which yields the values of the iterables\n * in the order in which they are supplied.\n *\n * #### Example\n * ```typescript\n * import { chain } from '@lumino/algorithm';\n *\n * let data1 = [1, 2, 3];\n * let data2 = [4, 5, 6];\n *\n * let stream = chain(data1, data2);\n *\n * Array.from(stream); // [1, 2, 3, 4, 5, 6]\n * ```\n */\nfunction* chain(...objects) {\n for (const object of objects) {\n yield* object;\n }\n}\n\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n/**\n * Create an empty iterator.\n *\n * @returns A new iterator which yields nothing.\n *\n * #### Example\n * ```typescript\n * import { empty } from '@lumino/algorithm';\n *\n * let stream = empty<number>();\n *\n * Array.from(stream); // []\n * ```\n */\n// eslint-disable-next-line require-yield\nfunction* empty() {\n return;\n}\n\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n/**\n * Enumerate an iterable object.\n *\n * @param object - The iterable object of interest.\n *\n * @param start - The starting enum value. The default is `0`.\n *\n * @returns An iterator which yields the enumerated values.\n *\n * #### Example\n * ```typescript\n * import { enumerate } from '@lumino/algorithm';\n *\n * let data = ['foo', 'bar', 'baz'];\n *\n * let stream = enumerate(data, 1);\n *\n * Array.from(stream); // [[1, 'foo'], [2, 'bar'], [3, 'baz']]\n * ```\n */\nfunction* enumerate(object, start = 0) {\n for (const value of object) {\n yield [start++, value];\n }\n}\n\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n/**\n * Filter an iterable for values which pass a test.\n *\n * @param object - The iterable object of interest.\n *\n * @param fn - The predicate function to invoke for each value.\n *\n * @returns An iterator which yields the values which pass the test.\n *\n * #### Example\n * ```typescript\n * import { filter } from '@lumino/algorithm';\n *\n * let data = [1, 2, 3, 4, 5, 6];\n *\n * let stream = filter(data, value => value % 2 === 0);\n *\n * Array.from(stream); // [2, 4, 6]\n * ```\n */\nfunction* filter(object, fn) {\n let index = 0;\n for (const value of object) {\n if (fn(value, index++)) {\n yield value;\n }\n }\n}\n\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n/**\n * Find the first value in an iterable which matches a predicate.\n *\n * @param object - The iterable object to search.\n *\n * @param fn - The predicate function to apply to the values.\n *\n * @returns The first matching value, or `undefined` if no matching\n * value is found.\n *\n * #### Complexity\n * Linear.\n *\n * #### Example\n * ```typescript\n * import { find } from '@lumino/algorithm';\n *\n * interface IAnimal { species: string, name: string };\n *\n * function isCat(value: IAnimal): boolean {\n * return value.species === 'cat';\n * }\n *\n * let data: IAnimal[] = [\n * { species: 'dog', name: 'spot' },\n * { species: 'cat', name: 'fluffy' },\n * { species: 'alligator', name: 'pocho' }\n * ];\n *\n * find(data, isCat).name; // 'fluffy'\n * ```\n */\nfunction find(object, fn) {\n let index = 0;\n for (const value of object) {\n if (fn(value, index++)) {\n return value;\n }\n }\n return undefined;\n}\n/**\n * Find the index of the first value which matches a predicate.\n *\n * @param object - The iterable object to search.\n *\n * @param fn - The predicate function to apply to the values.\n *\n * @returns The index of the first matching value, or `-1` if no\n * matching value is found.\n *\n * #### Complexity\n * Linear.\n *\n * #### Example\n * ```typescript\n * import { findIndex } from '@lumino/algorithm';\n *\n * interface IAnimal { species: string, name: string };\n *\n * function isCat(value: IAnimal): boolean {\n * return value.species === 'cat';\n * }\n *\n * let data: IAnimal[] = [\n * { species: 'dog', name: 'spot' },\n * { species: 'cat', name: 'fluffy' },\n * { species: 'alligator', name: 'pocho' }\n * ];\n *\n * findIndex(data, isCat); // 1\n * ```\n */\nfunction findIndex(object, fn) {\n let index = 0;\n for (const value of object) {\n if (fn(value, index++)) {\n return index - 1;\n }\n }\n return -1;\n}\n/**\n * Find the minimum value in an iterable.\n *\n * @param object - The iterable object to search.\n *\n * @param fn - The 3-way comparison function to apply to the values.\n * It should return `< 0` if the first value is less than the second.\n * `0` if the values are equivalent, or `> 0` if the first value is\n * greater than the second.\n *\n * @returns The minimum value in the iterable. If multiple values are\n * equivalent to the minimum, the left-most value is returned. If\n * the iterable is empty, this returns `undefined`.\n *\n * #### Complexity\n * Linear.\n *\n * #### Example\n * ```typescript\n * import { min } from '@lumino/algorithm';\n *\n * function numberCmp(a: number, b: number): number {\n * return a - b;\n * }\n *\n * min([7, 4, 0, 3, 9, 4], numberCmp); // 0\n * ```\n */\nfunction min(object, fn) {\n let result = undefined;\n for (const value of object) {\n if (result === undefined) {\n result = value;\n continue;\n }\n if (fn(value, result) < 0) {\n result = value;\n }\n }\n return result;\n}\n/**\n * Find the maximum value in an iterable.\n *\n * @param object - The iterable object to search.\n *\n * @param fn - The 3-way comparison function to apply to the values.\n * It should return `< 0` if the first value is less than the second.\n * `0` if the values are equivalent, or `> 0` if the first value is\n * greater than the second.\n *\n * @returns The maximum value in the iterable. If multiple values are\n * equivalent to the maximum, the left-most value is returned. If\n * the iterable is empty, this returns `undefined`.\n *\n * #### Complexity\n * Linear.\n *\n * #### Example\n * ```typescript\n * import { max } from '@lumino/algorithm';\n *\n * function numberCmp(a: number, b: number): number {\n * return a - b;\n * }\n *\n * max([7, 4, 0, 3, 9, 4], numberCmp); // 9\n * ```\n */\nfunction max(object, fn) {\n let result = undefined;\n for (const value of object) {\n if (result === undefined) {\n result = value;\n continue;\n }\n if (fn(value, result) > 0) {\n result = value;\n }\n }\n return result;\n}\n/**\n * Find the minimum and maximum values in an iterable.\n *\n * @param object - The iterable object to search.\n *\n * @param fn - The 3-way comparison function to apply to the values.\n * It should return `< 0` if the first value is less than the second.\n * `0` if the values are equivalent, or `> 0` if the first value is\n * greater than the second.\n *\n * @returns A 2-tuple of the `[min, max]` values in the iterable. If\n * multiple values are equivalent, the left-most values are returned.\n * If the iterable is empty, this returns `undefined`.\n *\n * #### Complexity\n * Linear.\n *\n * #### Example\n * ```typescript\n * import { minmax } from '@lumino/algorithm';\n *\n * function numberCmp(a: number, b: number): number {\n * return a - b;\n * }\n *\n * minmax([7, 4, 0, 3, 9, 4], numberCmp); // [0, 9]\n * ```\n */\nfunction minmax(object, fn) {\n let empty = true;\n let vmin;\n let vmax;\n for (const value of object) {\n if (empty) {\n vmin = value;\n vmax = value;\n empty = false;\n }\n else if (fn(value, vmin) < 0) {\n vmin = value;\n }\n else if (fn(value, vmax) > 0) {\n vmax = value;\n }\n }\n return empty ? undefined : [vmin, vmax];\n}\n\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n/**\n * Create an array from an iterable of values.\n *\n * @deprecated\n *\n * @param object - The iterable object of interest.\n *\n * @returns A new array of values from the given object.\n *\n * #### Example\n * ```typescript\n * import { toArray } from '@lumino/algorithm';\n *\n * let stream = [1, 2, 3, 4, 5, 6][Symbol.iterator]();\n *\n * toArray(stream); // [1, 2, 3, 4, 5, 6];\n * ```\n */\nfunction toArray(object) {\n return Array.from(object);\n}\n/**\n * Create an object from an iterable of key/value pairs.\n *\n * @param object - The iterable object of interest.\n *\n * @returns A new object mapping keys to values.\n *\n * #### Example\n * ```typescript\n * import { toObject } from '@lumino/algorithm';\n *\n * let data: [string, number][] = [['one', 1], ['two', 2], ['three', 3]];\n *\n * toObject(data); // { one: 1, two: 2, three: 3 }\n * ```\n */\nfunction toObject(object) {\n const result = {};\n for (const [key, value] of object) {\n result[key] = value;\n }\n return result;\n}\n/**\n * Invoke a function for each value in an iterable.\n *\n * @deprecated\n *\n * @param object - The iterable object of interest.\n *\n * @param fn - The callback function to invoke for each value.\n *\n * #### Notes\n * Iteration can be terminated early by returning `false` from the\n * callback function.\n *\n * #### Complexity\n * Linear.\n *\n * #### Example\n * ```typescript\n * import { each } from '@lumino/algorithm';\n *\n * let data = [5, 7, 0, -2, 9];\n *\n * each(data, value => { console.log(value); });\n * ```\n */\nfunction each(object, fn) {\n let index = 0;\n for (const value of object) {\n if (false === fn(value, index++)) {\n return;\n }\n }\n}\n/**\n * Test whether all values in an iterable satisfy a predicate.\n *\n * @param object - The iterable object of interest.\n *\n * @param fn - The predicate function to invoke for each value.\n *\n * @returns `true` if all values pass the test, `false` otherwise.\n *\n * #### Notes\n * Iteration terminates on the first `false` predicate result.\n *\n * #### Complexity\n * Linear.\n *\n * #### Example\n * ```typescript\n * import { every } from '@lumino/algorithm';\n *\n * let data = [5, 7, 1];\n *\n * every(data, value => value % 2 === 0); // false\n * every(data, value => value % 2 === 1); // true\n * ```\n */\nfunction every(object, fn) {\n let index = 0;\n for (const value of object) {\n if (false === fn(value, index++)) {\n return false;\n }\n }\n return true;\n}\n/**\n * Test whether any value in an iterable satisfies a predicate.\n *\n * @param object - The iterable object of interest.\n *\n * @param fn - The predicate function to invoke for each value.\n *\n * @returns `true` if any value passes the test, `false` otherwise.\n *\n * #### Notes\n * Iteration terminates on the first `true` predicate result.\n *\n * #### Complexity\n * Linear.\n *\n * #### Example\n * ```typescript\n * import { some } from '@lumino/algorithm';\n *\n * let data = [5, 7, 1];\n *\n * some(data, value => value === 7); // true\n * some(data, value => value === 3); // false\n * ```\n */\nfunction some(object, fn) {\n let index = 0;\n for (const value of object) {\n if (fn(value, index++)) {\n return true;\n }\n }\n return false;\n}\n\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n/**\n * Transform the values of an iterable with a mapping function.\n *\n * @param object - The iterable object of interest.\n *\n * @param fn - The mapping function to invoke for each value.\n *\n * @returns An iterator which yields the transformed values.\n *\n * #### Example\n * ```typescript\n * import { map } from '@lumino/algorithm';\n *\n * let data = [1, 2, 3];\n *\n * let stream = map(data, value => value * 2);\n *\n * Array.from(stream); // [2, 4, 6]\n * ```\n */\nfunction* map(object, fn) {\n let index = 0;\n for (const value of object) {\n yield fn(value, index++);\n }\n}\n\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n/**\n * Create an iterator of evenly spaced values.\n *\n * @param start - The starting value for the range, inclusive.\n *\n * @param stop - The stopping value for the range, exclusive.\n *\n * @param step - The distance between each value.\n *\n * @returns An iterator which produces evenly spaced values.\n *\n * #### Notes\n * In the single argument form of `range(stop)`, `start` defaults to\n * `0` and `step` defaults to `1`.\n *\n * In the two argument form of `range(start, stop)`, `step` defaults\n * to `1`.\n *\n * #### Example\n * ```typescript\n * import { range } from '@lumino/algorithm';\n *\n * let stream = range(2, 4);\n *\n * Array.from(stream); // [2, 3]\n * ```\n */\nfunction* range(start, stop, step) {\n if (stop === undefined) {\n stop = start;\n start = 0;\n step = 1;\n }\n else if (step === undefined) {\n step = 1;\n }\n const length = Private.rangeLength(start, stop, step);\n for (let index = 0; index < length; index++) {\n yield start + step * index;\n }\n}\n/**\n * The namespace for the module implementation details.\n */\nvar Private;\n(function (Private) {\n /**\n * Compute the effective length of a range.\n *\n * @param start - The starting value for the range, inclusive.\n *\n * @param stop - The stopping value for the range, exclusive.\n *\n * @param step - The distance between each value.\n *\n * @returns The number of steps need to traverse the range.\n */\n function rangeLength(start, stop, step) {\n if (step === 0) {\n return Infinity;\n }\n if (start > stop && step > 0) {\n return 0;\n }\n if (start < stop && step < 0) {\n return 0;\n }\n return Math.ceil((stop - start) / step);\n }\n Private.rangeLength = rangeLength;\n})(Private || (Private = {}));\n\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\nfunction reduce(object, fn, initial) {\n // Setup the iterator and fetch the first value.\n const it = object[Symbol.iterator]();\n let index = 0;\n let first = it.next();\n // An empty iterator and no initial value is an error.\n if (first.done && initial === undefined) {\n throw new TypeError('Reduce of empty iterable with no initial value.');\n }\n // If the iterator is empty, return the initial value.\n if (first.done) {\n return initial;\n }\n // If the iterator has a single item and no initial value, the\n // reducer is not invoked and the first item is the return value.\n let second = it.next();\n if (second.done && initial === undefined) {\n return first.value;\n }\n // If iterator has a single item and an initial value is provided,\n // the reducer is invoked and that result is the return value.\n if (second.done) {\n return fn(initial, first.value, index++);\n }\n // Setup the initial accumlated value.\n let accumulator;\n if (initial === undefined) {\n accumulator = fn(first.value, second.value, index++);\n }\n else {\n accumulator = fn(fn(initial, first.value, index++), second.value, index++);\n }\n // Iterate the rest of the values, updating the accumulator.\n let next;\n while (!(next = it.next()).done) {\n accumulator = fn(accumulator, next.value, index++);\n }\n // Return the final accumulated value.\n return accumulator;\n}\n\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n/**\n * Create an iterator which repeats a value a number of times.\n *\n * @deprecated\n *\n * @param value - The value to repeat.\n *\n * @param count - The number of times to repeat the value.\n *\n * @returns A new iterator which repeats the specified value.\n *\n * #### Example\n * ```typescript\n * import { repeat } from '@lumino/algorithm';\n *\n * let stream = repeat(7, 3);\n *\n * Array.from(stream); // [7, 7, 7]\n * ```\n */\nfunction* repeat(value, count) {\n while (0 < count--) {\n yield value;\n }\n}\n/**\n * Create an iterator which yields a value a single time.\n *\n * @deprecated\n *\n * @param value - The value to wrap in an iterator.\n *\n * @returns A new iterator which yields the value a single time.\n *\n * #### Example\n * ```typescript\n * import { once } from '@lumino/algorithm';\n *\n * let stream = once(7);\n *\n * Array.from(stream); // [7]\n * ```\n */\nfunction* once(value) {\n yield value;\n}\n\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n/**\n * Create an iterator for a retroable object.\n *\n * @param object - The retroable or array-like object of interest.\n *\n * @returns An iterator which traverses the object's values in reverse.\n *\n * #### Example\n * ```typescript\n * import { retro } from '@lumino/algorithm';\n *\n * let data = [1, 2, 3, 4, 5, 6];\n *\n * let stream = retro(data);\n *\n * Array.from(stream); // [6, 5, 4, 3, 2, 1]\n * ```\n */\nfunction* retro(object) {\n if (typeof object.retro === 'function') {\n yield* object.retro();\n }\n else {\n for (let index = object.length - 1; index > -1; index--) {\n yield object[index];\n }\n }\n}\n\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n/**\n * Topologically sort an iterable of edges.\n *\n * @param edges - The iterable object of edges to sort.\n * An edge is represented as a 2-tuple of `[fromNode, toNode]`.\n *\n * @returns The topologically sorted array of nodes.\n *\n * #### Notes\n * If a cycle is present in the graph, the cycle will be ignored and\n * the return value will be only approximately sorted.\n *\n * #### Example\n * ```typescript\n * import { topologicSort } from '@lumino/algorithm';\n *\n * let data = [\n * ['d', 'e'],\n * ['c', 'd'],\n * ['a', 'b'],\n * ['b', 'c']\n * ];\n *\n * topologicSort(data); // ['a', 'b', 'c', 'd', 'e']\n * ```\n */\nfunction topologicSort(edges) {\n // Setup the shared sorting state.\n let sorted = [];\n let visited = new Set();\n let graph = new Map();\n // Add the edges to the graph.\n for (const edge of edges) {\n addEdge(edge);\n }\n // Visit each node in the graph.\n for (const [k] of graph) {\n visit(k);\n }\n // Return the sorted results.\n return sorted;\n // Add an edge to the graph.\n function addEdge(edge) {\n let [fromNode, toNode] = edge;\n let children = graph.get(toNode);\n if (children) {\n children.push(fromNode);\n }\n else {\n graph.set(toNode, [fromNode]);\n }\n }\n // Recursively visit the node.\n function visit(node) {\n if (visited.has(node)) {\n return;\n }\n visited.add(node);\n let children = graph.get(node);\n if (children) {\n for (const child of children) {\n visit(child);\n }\n }\n sorted.push(node);\n }\n}\n\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n/**\n * Iterate over an iterable using a stepped increment.\n *\n * @param object - The iterable object of interest.\n *\n * @param step - The distance to step on each iteration. A value\n * of less than `1` will behave the same as a value of `1`.\n *\n * @returns An iterator which traverses the iterable step-wise.\n *\n * #### Example\n * ```typescript\n * import { stride } from '@lumino/algorithm';\n *\n * let data = [1, 2, 3, 4, 5, 6];\n *\n * let stream = stride(data, 2);\n *\n * Array.from(stream); // [1, 3, 5];\n * ```\n */\nfunction* stride(object, step) {\n let count = 0;\n for (const value of object) {\n if (0 === count++ % step) {\n yield value;\n }\n }\n}\n\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n/**\n * The namespace for string-specific algorithms.\n */\nvar StringExt;\n(function (StringExt) {\n /**\n * Find the indices of characters in a source text.\n *\n * @param source - The source text which should be searched.\n *\n * @param query - The characters to locate in the source text.\n *\n * @param start - The index to start the search.\n *\n * @returns The matched indices, or `null` if there is no match.\n *\n * #### Complexity\n * Linear on `sourceText`.\n *\n * #### Notes\n * In order for there to be a match, all of the characters in `query`\n * **must** appear in `source` in the order given by `query`.\n *\n * Characters are matched using strict `===` equality.\n */\n function findIndices(source, query, start = 0) {\n let indices = new Array(query.length);\n for (let i = 0, j = start, n = query.length; i < n; ++i, ++j) {\n j = source.indexOf(query[i], j);\n if (j === -1) {\n return null;\n }\n indices[i] = j;\n }\n return indices;\n }\n StringExt.findIndices = findIndices;\n /**\n * A string matcher which uses a sum-of-squares algorithm.\n *\n * @param source - The source text which should be searched.\n *\n * @param query - The characters to locate in the source text.\n *\n * @param start - The index to start the search.\n *\n * @returns The match result, or `null` if there is no match.\n * A lower `score` represents a stronger match.\n *\n * #### Complexity\n * Linear on `sourceText`.\n *\n * #### Notes\n * This scoring algorithm uses a sum-of-squares approach to determine\n * the score. In order for there to be a match, all of the characters\n * in `query` **must** appear in `source` in order. The index of each\n * matching character is squared and added to the score. This means\n * that early and consecutive character matches are preferred, while\n * late matches are heavily penalized.\n */\n function matchSumOfSquares(source, query, start = 0) {\n let indices = findIndices(source, query, start);\n if (!indices) {\n return null;\n }\n let score = 0;\n for (let i = 0, n = indices.length; i < n; ++i) {\n let j = indices[i] - start;\n score += j * j;\n }\n return { score, indices };\n }\n StringExt.matchSumOfSquares = matchSumOfSquares;\n /**\n * A string matcher which uses a sum-of-deltas algorithm.\n *\n * @param source - The source text which should be searched.\n *\n * @param query - The characters to locate in the source text.\n *\n * @param start - The index to start the search.\n *\n * @returns The match result, or `null` if there is no match.\n * A lower `score` represents a stronger match.\n *\n * #### Complexity\n * Linear on `sourceText`.\n *\n * #### Notes\n * This scoring algorithm uses a sum-of-deltas approach to determine\n * the score. In order for there to be a match, all of the characters\n * in `query` **must** appear in `source` in order. The delta between\n * the indices are summed to create the score. This means that groups\n * of matched characters are preferred, while fragmented matches are\n * penalized.\n */\n function matchSumOfDeltas(source, query, start = 0) {\n let indices = findIndices(source, query, start);\n if (!indices) {\n return null;\n }\n let score = 0;\n let last = start - 1;\n for (let i = 0, n = indices.length; i < n; ++i) {\n let j = indices[i];\n score += j - last - 1;\n last = j;\n }\n return { score, indices };\n }\n StringExt.matchSumOfDeltas = matchSumOfDeltas;\n /**\n * Highlight the matched characters of a source text.\n *\n * @param source - The text which should be highlighted.\n *\n * @param indices - The indices of the matched characters. They must\n * appear in increasing order and must be in bounds of the source.\n *\n * @param fn - The function to apply to the matched chunks.\n *\n * @returns An array of unmatched and highlighted chunks.\n */\n function highlight(source, indices, fn) {\n // Set up the result array.\n let result = [];\n // Set up the counter variables.\n let k = 0;\n let last = 0;\n let n = indices.length;\n // Iterator over each index.\n while (k < n) {\n // Set up the chunk indices.\n let i = indices[k];\n let j = indices[k];\n // Advance the right chunk index until it's non-contiguous.\n while (++k < n && indices[k] === j + 1) {\n j++;\n }\n // Extract the unmatched text.\n if (last < i) {\n result.push(source.slice(last, i));\n }\n // Extract and highlight the matched text.\n if (i < j + 1) {\n result.push(fn(source.slice(i, j + 1)));\n }\n // Update the last visited index.\n last = j + 1;\n }\n // Extract any remaining unmatched text.\n if (last < source.length) {\n result.push(source.slice(last));\n }\n // Return the highlighted result.\n return result;\n }\n StringExt.highlight = highlight;\n /**\n * A 3-way string comparison function.\n *\n * @param a - The first string of interest.\n *\n * @param b - The second string of interest.\n *\n * @returns `-1` if `a < b`, else `1` if `a > b`, else `0`.\n */\n function cmp(a, b) {\n return a < b ? -1 : a > b ? 1 : 0;\n }\n StringExt.cmp = cmp;\n})(StringExt || (StringExt = {}));\n\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n/**\n * Take a fixed number of items from an iterable.\n *\n * @param object - The iterable object of interest.\n *\n * @param count - The number of items to take from the iterable.\n *\n * @returns An iterator which yields the specified number of items\n * from the source iterable.\n *\n * #### Notes\n * The returned iterator will exhaust early if the source iterable\n * contains an insufficient number of items.\n *\n * #### Example\n * ```typescript\n * import { take } from '@lumino/algorithm';\n *\n * let stream = take([5, 4, 3, 2, 1, 0, -1], 3);\n *\n * Array.from(stream); // [5, 4, 3]\n * ```\n */\nfunction* take(object, count) {\n if (count < 1) {\n return;\n }\n const it = object[Symbol.iterator]();\n let item;\n while (0 < count-- && !(item = it.next()).done) {\n yield item.value;\n }\n}\n\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n/**\n * Iterate several iterables in lockstep.\n *\n * @param objects - The iterable objects of interest.\n *\n * @returns An iterator which yields successive tuples of values where\n * each value is taken in turn from the provided iterables. It will\n * be as long as the shortest provided iterable.\n *\n * #### Example\n * ```typescript\n * import { zip } from '@lumino/algorithm';\n *\n * let data1 = [1, 2, 3];\n * let data2 = [4, 5, 6];\n *\n * let stream = zip(data1, data2);\n *\n * Array.from(stream); // [[1, 4], [2, 5], [3, 6]]\n * ```\n */\nfunction* zip(...objects) {\n const iters = objects.map(obj => obj[Symbol.iterator]());\n let tuple = iters.map(it => it.next());\n for (; every(tuple, item => !item.done); tuple = iters.map(it => it.next())) {\n yield tuple.map(item => item.value);\n }\n}\n\nexport { ArrayExt, StringExt, chain, each, empty, enumerate, every, filter, find, findIndex, map, max, min, minmax, once, range, reduce, repeat, retro, some, stride, take, toArray, toObject, topologicSort, zip };\n//# sourceMappingURL=index.es6.js.map\n","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@lumino/algorithm')) :\n typeof define === 'function' && define.amd ? define(['exports', '@lumino/algorithm'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.lumino_coreutils = {}, global.lumino_algorithm));\n})(this, (function (exports, algorithm) { 'use strict';\n\n // Copyright (c) Jupyter Development Team.\n // Distributed under the terms of the Modified BSD License.\n /*-----------------------------------------------------------------------------\n | Copyright (c) 2014-2017, PhosphorJS Contributors\n |\n | Distributed under the terms of the BSD 3-Clause License.\n |\n | The full license is in the file LICENSE, distributed with this software.\n |----------------------------------------------------------------------------*/\n /**\n * The namespace for JSON-specific functions.\n */\n exports.JSONExt = void 0;\n (function (JSONExt) {\n /**\n * A shared frozen empty JSONObject\n */\n JSONExt.emptyObject = Object.freeze({});\n /**\n * A shared frozen empty JSONArray\n */\n JSONExt.emptyArray = Object.freeze([]);\n /**\n * Test whether a JSON value is a primitive.\n *\n * @param value - The JSON value of interest.\n *\n * @returns `true` if the value is a primitive,`false` otherwise.\n */\n function isPrimitive(value) {\n return (value === null ||\n typeof value === 'boolean' ||\n typeof value === 'number' ||\n typeof value === 'string');\n }\n JSONExt.isPrimitive = isPrimitive;\n function isArray(value) {\n return Array.isArray(value);\n }\n JSONExt.isArray = isArray;\n function isObject(value) {\n return !isPrimitive(value) && !isArray(value);\n }\n JSONExt.isObject = isObject;\n /**\n * Compare two JSON values for deep equality.\n *\n * @param first - The first JSON value of interest.\n *\n * @param second - The second JSON value of interest.\n *\n * @returns `true` if the values are equivalent, `false` otherwise.\n */\n function deepEqual(first, second) {\n // Check referential and primitive equality first.\n if (first === second) {\n return true;\n }\n // If one is a primitive, the `===` check ruled out the other.\n if (isPrimitive(first) || isPrimitive(second)) {\n return false;\n }\n // Test whether they are arrays.\n let a1 = isArray(first);\n let a2 = isArray(second);\n // Bail if the types are different.\n if (a1 !== a2) {\n return false;\n }\n // If they are both arrays, compare them.\n if (a1 && a2) {\n return deepArrayEqual(first, second);\n }\n // At this point, they must both be objects.\n return deepObjectEqual(first, second);\n }\n JSONExt.deepEqual = deepEqual;\n /**\n * Create a deep copy of a JSON value.\n *\n * @param value - The JSON value to copy.\n *\n * @returns A deep copy of the given JSON value.\n */\n function deepCopy(value) {\n // Do nothing for primitive values.\n if (isPrimitive(value)) {\n return value;\n }\n // Deep copy an array.\n if (isArray(value)) {\n return deepArrayCopy(value);\n }\n // Deep copy an object.\n return deepObjectCopy(value);\n }\n JSONExt.deepCopy = deepCopy;\n /**\n * Compare two JSON arrays for deep equality.\n */\n function deepArrayEqual(first, second) {\n // Check referential equality first.\n if (first === second) {\n return true;\n }\n // Test the arrays for equal length.\n if (first.length !== second.length) {\n return false;\n }\n // Compare the values for equality.\n for (let i = 0, n = first.length; i < n; ++i) {\n if (!deepEqual(first[i], second[i])) {\n return false;\n }\n }\n // At this point, the arrays are equal.\n return true;\n }\n /**\n * Compare two JSON objects for deep equality.\n */\n function deepObjectEqual(first, second) {\n // Check referential equality first.\n if (first === second) {\n return true;\n }\n // Check for the first object's keys in the second object.\n for (let key in first) {\n if (first[key] !== undefined && !(key in second)) {\n return false;\n }\n }\n // Check for the second object's keys in the first object.\n for (let key in second) {\n if (second[key] !== undefined && !(key in first)) {\n return false;\n }\n }\n // Compare the values for equality.\n for (let key in first) {\n // Get the values.\n let firstValue = first[key];\n let secondValue = second[key];\n // If both are undefined, ignore the key.\n if (firstValue === undefined && secondValue === undefined) {\n continue;\n }\n // If only one value is undefined, the objects are not equal.\n if (firstValue === undefined || secondValue === undefined) {\n return false;\n }\n // Compare the values.\n if (!deepEqual(firstValue, secondValue)) {\n return false;\n }\n }\n // At this point, the objects are equal.\n return true;\n }\n /**\n * Create a deep copy of a JSON array.\n */\n function deepArrayCopy(value) {\n let result = new Array(value.length);\n for (let i = 0, n = value.length; i < n; ++i) {\n result[i] = deepCopy(value[i]);\n }\n return result;\n }\n /**\n * Create a deep copy of a JSON object.\n */\n function deepObjectCopy(value) {\n let result = {};\n for (let key in value) {\n // Ignore undefined values.\n let subvalue = value[key];\n if (subvalue === undefined) {\n continue;\n }\n result[key] = deepCopy(subvalue);\n }\n return result;\n }\n })(exports.JSONExt || (exports.JSONExt = {}));\n\n // Copyright (c) Jupyter Development Team.\n // Distributed under the terms of the Modified BSD License.\n /*-----------------------------------------------------------------------------\n | Copyright (c) 2014-2017, PhosphorJS Contributors\n |\n | Distributed under the terms of the BSD 3-Clause License.\n |\n | The full license is in the file LICENSE, distributed with this software.\n |----------------------------------------------------------------------------*/\n /**\n * An object which stores MIME data for general application use.\n *\n * #### Notes\n * This class does not attempt to enforce \"correctness\" of MIME types\n * and their associated data. Since this class is designed to transfer\n * arbitrary data and objects within the same application, it assumes\n * that the user provides correct and accurate data.\n */\n class MimeData {\n constructor() {\n this._types = [];\n this._values = [];\n }\n /**\n * Get an array of the MIME types contained within the dataset.\n *\n * @returns A new array of the MIME types, in order of insertion.\n */\n types() {\n return this._types.slice();\n }\n /**\n * Test whether the dataset has an entry for the given type.\n *\n * @param mime - The MIME type of interest.\n *\n * @returns `true` if the dataset contains a value for the given\n * MIME type, `false` otherwise.\n */\n hasData(mime) {\n return this._types.indexOf(mime) !== -1;\n }\n /**\n * Get the data value for the given MIME type.\n *\n * @param mime - The MIME type of interest.\n *\n * @returns The value for the given MIME type, or `undefined` if\n * the dataset does not contain a value for the type.\n */\n getData(mime) {\n let i = this._types.indexOf(mime);\n return i !== -1 ? this._values[i] : undefined;\n }\n /**\n * Set the data value for the given MIME type.\n *\n * @param mime - The MIME type of interest.\n *\n * @param data - The data value for the given MIME type.\n *\n * #### Notes\n * This will overwrite any previous entry for the MIME type.\n */\n setData(mime, data) {\n this.clearData(mime);\n this._types.push(mime);\n this._values.push(data);\n }\n /**\n * Remove the data entry for the given MIME type.\n *\n * @param mime - The MIME type of interest.\n *\n * #### Notes\n * This is a no-op if there is no entry for the given MIME type.\n */\n clearData(mime) {\n let i = this._types.indexOf(mime);\n if (i !== -1) {\n this._types.splice(i, 1);\n this._values.splice(i, 1);\n }\n }\n /**\n * Remove all data entries from the dataset.\n */\n clear() {\n this._types.length = 0;\n this._values.length = 0;\n }\n }\n\n // Copyright (c) Jupyter Development Team.\n // Distributed under the terms of the Modified BSD License.\n /**\n * Plugin registry.\n */\n class PluginRegistry {\n constructor(options = {}) {\n this._application = null;\n this._validatePlugin = () => true;\n this._plugins = new Map();\n this._services = new Map();\n if (options.validatePlugin) {\n console.info('Plugins may be rejected by the custom validation plugin method.');\n this._validatePlugin = options.validatePlugin;\n }\n }\n /**\n * The application object.\n *\n * It will be provided as first argument to the\n * plugins activation and deactivation functions.\n *\n * It can only be set once.\n *\n * By default, it is `null`.\n */\n get application() {\n return this._application;\n }\n set application(v) {\n if (this._application !== null) {\n throw Error('PluginRegistry.application is already set. It cannot be overridden.');\n }\n this._application = v;\n }\n /**\n * The list of all the deferred plugins.\n */\n get deferredPlugins() {\n return Array.from(this._plugins)\n .filter(([id, plugin]) => plugin.autoStart === 'defer')\n .map(([id, plugin]) => id);\n }\n /**\n * Get a plugin description.\n *\n * @param id - The ID of the plugin of interest.\n *\n * @returns The plugin description.\n */\n getPluginDescription(id) {\n var _a, _b;\n return (_b = (_a = this._plugins.get(id)) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : '';\n }\n /**\n * Test whether a plugin is registered with the application.\n *\n * @param id - The ID of the plugin of interest.\n *\n * @returns `true` if the plugin is registered, `false` otherwise.\n */\n hasPlugin(id) {\n return this._plugins.has(id);\n }\n /**\n * Test whether a plugin is activated with the application.\n *\n * @param id - The ID of the plugin of interest.\n *\n * @returns `true` if the plugin is activated, `false` otherwise.\n */\n isPluginActivated(id) {\n var _a, _b;\n return (_b = (_a = this._plugins.get(id)) === null || _a === void 0 ? void 0 : _a.activated) !== null && _b !== void 0 ? _b : false;\n }\n /**\n * List the IDs of the plugins registered with the application.\n *\n * @returns A new array of the registered plugin IDs.\n */\n listPlugins() {\n return Array.from(this._plugins.keys());\n }\n /**\n * Register a plugin with the application.\n *\n * @param plugin - The plugin to register.\n *\n * #### Notes\n * An error will be thrown if a plugin with the same ID is already\n * registered, or if the plugin has a circular dependency.\n *\n * If the plugin provides a service which has already been provided\n * by another plugin, the new service will override the old service.\n */\n registerPlugin(plugin) {\n // Throw an error if the plugin ID is already registered.\n if (this._plugins.has(plugin.id)) {\n throw new TypeError(`Plugin '${plugin.id}' is already registered.`);\n }\n if (!this._validatePlugin(plugin)) {\n throw new Error(`Plugin '${plugin.id}' is not valid.`);\n }\n // Create the normalized plugin data.\n const data = Private.createPluginData(plugin);\n // Ensure the plugin does not cause a cyclic dependency.\n Private.ensureNoCycle(data, this._plugins, this._services);\n // Add the service token to the service map.\n if (data.provides) {\n this._services.set(data.provides, data.id);\n }\n // Add the plugin to the plugin map.\n this._plugins.set(data.id, data);\n }\n /**\n * Register multiple plugins with the application.\n *\n * @param plugins - The plugins to register.\n *\n * #### Notes\n * This calls `registerPlugin()` for each of the given plugins.\n */\n registerPlugins(plugins) {\n for (const plugin of plugins) {\n this.registerPlugin(plugin);\n }\n }\n /**\n * Deregister a plugin with the application.\n *\n * @param id - The ID of the plugin of interest.\n *\n * @param force - Whether to deregister the plugin even if it is active.\n */\n deregisterPlugin(id, force) {\n const plugin = this._plugins.get(id);\n if (!plugin) {\n return;\n }\n if (plugin.activated && !force) {\n throw new Error(`Plugin '${id}' is still active.`);\n }\n this._plugins.delete(id);\n }\n /**\n * Activate the plugin with the given ID.\n *\n * @param id - The ID of the plugin of interest.\n *\n * @returns A promise which resolves when the plugin is activated\n * or rejects with an error if it cannot be activated.\n */\n async activatePlugin(id) {\n // Reject the promise if the plugin is not registered.\n const plugin = this._plugins.get(id);\n if (!plugin) {\n throw new ReferenceError(`Plugin '${id}' is not registered.`);\n }\n // Resolve immediately if the plugin is already activated.\n if (plugin.activated) {\n return;\n }\n // Return the pending resolver promise if it exists.\n if (plugin.promise) {\n return plugin.promise;\n }\n // Resolve the required services for the plugin.\n const required = plugin.requires.map(t => this.resolveRequiredService(t));\n // Resolve the optional services for the plugin.\n const optional = plugin.optional.map(t => this.resolveOptionalService(t));\n // Setup the resolver promise for the plugin.\n plugin.promise = Promise.all([...required, ...optional])\n .then(services => plugin.activate.apply(undefined, [this.application, ...services]))\n .then(service => {\n plugin.service = service;\n plugin.activated = true;\n plugin.promise = null;\n })\n .catch(error => {\n plugin.promise = null;\n throw error;\n });\n // Return the pending resolver promise.\n return plugin.promise;\n }\n /**\n * Activate all the deferred plugins.\n *\n * @returns A promise which will resolve when each plugin is activated\n * or rejects with an error if one cannot be activated.\n */\n async activatePlugins(kind, options = {}) {\n switch (kind) {\n case 'defer': {\n const promises = this.deferredPlugins\n .filter(pluginId => this._plugins.get(pluginId).autoStart)\n .map(pluginId => {\n return this.activatePlugin(pluginId);\n });\n await Promise.all(promises);\n break;\n }\n case 'startUp': {\n // Collect the ids of the startup plugins.\n const startups = Private.collectStartupPlugins(this._plugins, options);\n // Generate the activation promises.\n const promises = startups.map(async (id) => {\n try {\n return await this.activatePlugin(id);\n }\n catch (error) {\n console.error(`Plugin '${id}' failed to activate.`, error);\n }\n });\n await Promise.all(promises);\n break;\n }\n }\n }\n /**\n * Deactivate the plugin and its downstream dependents if and only if the\n * plugin and its dependents all support `deactivate`.\n *\n * @param id - The ID of the plugin of interest.\n *\n * @returns A list of IDs of downstream plugins deactivated with this one.\n */\n async deactivatePlugin(id) {\n // Reject the promise if the plugin is not registered.\n const plugin = this._plugins.get(id);\n if (!plugin) {\n throw new ReferenceError(`Plugin '${id}' is not registered.`);\n }\n // Bail early if the plugin is not activated.\n if (!plugin.activated) {\n return [];\n }\n // Check that this plugin can deactivate.\n if (!plugin.deactivate) {\n throw new TypeError(`Plugin '${id}'#deactivate() method missing`);\n }\n // Find the optimal deactivation order for plugins downstream of this one.\n const manifest = Private.findDependents(id, this._plugins, this._services);\n const downstream = manifest.map(id => this._plugins.get(id));\n // Check that all downstream plugins can deactivate.\n for (const plugin of downstream) {\n if (!plugin.deactivate) {\n throw new TypeError(`Plugin ${plugin.id}#deactivate() method missing (depends on ${id})`);\n }\n }\n // Deactivate all downstream plugins.\n for (const plugin of downstream) {\n const services = [...plugin.requires, ...plugin.optional].map(service => {\n const id = this._services.get(service);\n return id ? this._plugins.get(id).service : null;\n });\n // Await deactivation so the next plugins only receive active services.\n await plugin.deactivate(this.application, ...services);\n plugin.service = null;\n plugin.activated = false;\n }\n // Remove plugin ID and return manifest of deactivated plugins.\n manifest.pop();\n return manifest;\n }\n /**\n * Resolve a required service of a given type.\n *\n * @param token - The token for the service type of interest.\n *\n * @returns A promise which resolves to an instance of the requested\n * service, or rejects with an error if it cannot be resolved.\n *\n * #### Notes\n * Services are singletons. The same instance will be returned each\n * time a given service token is resolved.\n *\n * If the plugin which provides the service has not been activated,\n * resolving the service will automatically activate the plugin.\n *\n * User code will not typically call this method directly. Instead,\n * the required services for the user's plugins will be resolved\n * automatically when the plugin is activated.\n */\n async resolveRequiredService(token) {\n // Reject the promise if there is no provider for the type.\n const id = this._services.get(token);\n if (!id) {\n throw new TypeError(`No provider for: ${token.name}.`);\n }\n // Activate the plugin if necessary.\n const plugin = this._plugins.get(id);\n if (!plugin.activated) {\n await this.activatePlugin(id);\n }\n return plugin.service;\n }\n /**\n * Resolve an optional service of a given type.\n *\n * @param token - The token for the service type of interest.\n *\n * @returns A promise which resolves to an instance of the requested\n * service, or `null` if it cannot be resolved.\n *\n * #### Notes\n * Services are singletons. The same instance will be returned each\n * time a given service token is resolved.\n *\n * If the plugin which provides the service has not been activated,\n * resolving the service will automatically activate the plugin.\n *\n * User code will not typically call this method directly. Instead,\n * the optional services for the user's plugins will be resolved\n * automatically when the plugin is activated.\n */\n async resolveOptionalService(token) {\n // Resolve with `null` if there is no provider for the type.\n const id = this._services.get(token);\n if (!id) {\n return null;\n }\n // Activate the plugin if necessary.\n const plugin = this._plugins.get(id);\n if (!plugin.activated) {\n try {\n await this.activatePlugin(id);\n }\n catch (reason) {\n console.error(reason);\n return null;\n }\n }\n return plugin.service;\n }\n }\n /**\n * The namespace for the module implementation details.\n */\n var Private;\n (function (Private) {\n class PluginData {\n constructor(plugin) {\n var _a, _b, _c, _d;\n this._activated = false;\n this._promise = null;\n this._service = null;\n this.id = plugin.id;\n this.description = (_a = plugin.description) !== null && _a !== void 0 ? _a : '';\n this.activate = plugin.activate;\n this.deactivate = (_b = plugin.deactivate) !== null && _b !== void 0 ? _b : null;\n this.provides = (_c = plugin.provides) !== null && _c !== void 0 ? _c : null;\n this.autoStart = (_d = plugin.autoStart) !== null && _d !== void 0 ? _d : false;\n this.requires = plugin.requires ? plugin.requires.slice() : [];\n this.optional = plugin.optional ? plugin.optional.slice() : [];\n }\n /**\n * Whether the plugin has been activated.\n */\n get activated() {\n return this._activated;\n }\n set activated(a) {\n this._activated = a;\n }\n /**\n * The resolved service for the plugin, or `null`.\n */\n get service() {\n return this._service;\n }\n set service(s) {\n this._service = s;\n }\n /**\n * The pending resolver promise, or `null`.\n */\n get promise() {\n return this._promise;\n }\n set promise(p) {\n this._promise = p;\n }\n }\n /**\n * Create a normalized plugin data object for the given plugin.\n */\n function createPluginData(plugin) {\n return new PluginData(plugin);\n }\n Private.createPluginData = createPluginData;\n /**\n * Ensure no cycle is present in the plugin resolution graph.\n *\n * If a cycle is detected, an error will be thrown.\n */\n function ensureNoCycle(plugin, plugins, services) {\n const dependencies = [...plugin.requires, ...plugin.optional];\n const visit = (token) => {\n if (token === plugin.provides) {\n return true;\n }\n const id = services.get(token);\n if (!id) {\n return false;\n }\n const visited = plugins.get(id);\n const dependencies = [...visited.requires, ...visited.optional];\n if (dependencies.length === 0) {\n return false;\n }\n trace.push(id);\n if (dependencies.some(visit)) {\n return true;\n }\n trace.pop();\n return false;\n };\n // Bail early if there cannot be a cycle.\n if (!plugin.provides || dependencies.length === 0) {\n return;\n }\n // Setup a stack to trace service resolution.\n const trace = [plugin.id];\n // Throw an exception if a cycle is present.\n if (dependencies.some(visit)) {\n throw new ReferenceError(`Cycle detected: ${trace.join(' -> ')}.`);\n }\n }\n Private.ensureNoCycle = ensureNoCycle;\n /**\n * Find dependents in deactivation order.\n *\n * @param id - The ID of the plugin of interest.\n *\n * @param plugins - The map containing all plugins.\n *\n * @param services - The map containing all services.\n *\n * @returns A list of dependent plugin IDs in order of deactivation\n *\n * #### Notes\n * The final item of the returned list is always the plugin of interest.\n */\n function findDependents(id, plugins, services) {\n const edges = new Array();\n const add = (id) => {\n const plugin = plugins.get(id);\n // FIXME In the case of missing optional dependencies, we may consider\n // deactivating and reactivating the plugin without the missing service.\n const dependencies = [...plugin.requires, ...plugin.optional];\n edges.push(...dependencies.reduce((acc, dep) => {\n const service = services.get(dep);\n if (service) {\n // An edge is oriented from dependent to provider.\n acc.push([id, service]);\n }\n return acc;\n }, []));\n };\n for (const id of plugins.keys()) {\n add(id);\n }\n // Filter edges\n // - Get all packages that dependent on the package to be deactivated\n const newEdges = edges.filter(edge => edge[1] === id);\n let oldSize = 0;\n while (newEdges.length > oldSize) {\n const previousSize = newEdges.length;\n // Get all packages that dependent on packages that will be deactivated\n const packagesOfInterest = new Set(newEdges.map(edge => edge[0]));\n for (const poi of packagesOfInterest) {\n edges\n .filter(edge => edge[1] === poi)\n .forEach(edge => {\n // We check it is not already included to deal with circular dependencies\n if (!newEdges.includes(edge)) {\n newEdges.push(edge);\n }\n });\n }\n oldSize = previousSize;\n }\n const sorted = algorithm.topologicSort(newEdges);\n const index = sorted.findIndex(candidate => candidate === id);\n if (index === -1) {\n return [id];\n }\n return sorted.slice(0, index + 1);\n }\n Private.findDependents = findDependents;\n /**\n * Collect the IDs of the plugins to activate on startup.\n */\n function collectStartupPlugins(plugins, options) {\n // Create a set to hold the plugin IDs.\n const collection = new Set();\n // Collect the auto-start (non deferred) plugins.\n for (const id of plugins.keys()) {\n if (plugins.get(id).autoStart === true) {\n collection.add(id);\n }\n }\n // Add the startup plugins.\n if (options.startPlugins) {\n for (const id of options.startPlugins) {\n collection.add(id);\n }\n }\n // Remove the ignored plugins.\n if (options.ignorePlugins) {\n for (const id of options.ignorePlugins) {\n collection.delete(id);\n }\n }\n // Return the collected startup plugins.\n return Array.from(collection);\n }\n Private.collectStartupPlugins = collectStartupPlugins;\n })(Private || (Private = {}));\n\n // Copyright (c) Jupyter Development Team.\n // Distributed under the terms of the Modified BSD License.\n /*-----------------------------------------------------------------------------\n | Copyright (c) 2014-2017, PhosphorJS Contributors\n |\n | Distributed under the terms of the BSD 3-Clause License.\n |\n | The full license is in the file LICENSE, distributed with this software.\n |----------------------------------------------------------------------------*/\n /**\n * A class which wraps a promise into a delegate object.\n *\n * #### Notes\n * This class is useful when the logic to resolve or reject a promise\n * cannot be defined at the point where the promise is created.\n */\n class PromiseDelegate {\n /**\n * Construct a new promise delegate.\n */\n constructor() {\n this.promise = new Promise((resolve, reject) => {\n this._resolve = resolve;\n this._reject = reject;\n });\n }\n /**\n * Resolve the wrapped promise with the given value.\n *\n * @param value - The value to use for resolving the promise.\n */\n resolve(value) {\n let resolve = this._resolve;\n resolve(value);\n }\n /**\n * Reject the wrapped promise with the given value.\n *\n * @reason - The reason for rejecting the promise.\n */\n reject(reason) {\n let reject = this._reject;\n reject(reason);\n }\n }\n\n // Copyright (c) Jupyter Development Team.\n // Distributed under the terms of the Modified BSD License.\n /*-----------------------------------------------------------------------------\n | Copyright (c) 2014-2017, PhosphorJS Contributors\n |\n | Distributed under the terms of the BSD 3-Clause License.\n |\n | The full license is in the file LICENSE, distributed with this software.\n |----------------------------------------------------------------------------*/\n /**\n * A runtime object which captures compile-time type information.\n *\n * #### Notes\n * A token captures the compile-time type of an interface or class in\n * an object which can be used at runtime in a type-safe fashion.\n */\n class Token {\n /**\n * Construct a new token.\n *\n * @param name - A human readable name for the token.\n * @param description - Token purpose description for documentation.\n */\n constructor(name, description) {\n this.name = name;\n this.description = description !== null && description !== void 0 ? description : '';\n this._tokenStructuralPropertyT = null;\n }\n }\n\n // Copyright (c) Jupyter Development Team.\n // Distributed under the terms of the Modified BSD License.\n /*-----------------------------------------------------------------------------\n | Copyright (c) 2014-2017, PhosphorJS Contributors\n |\n | Distributed under the terms of the BSD 3-Clause License.\n |\n | The full license is in the file LICENSE, distributed with this software.\n |----------------------------------------------------------------------------*/\n // Fallback\n function fallbackRandomValues(buffer) {\n let value = 0;\n for (let i = 0, n = buffer.length; i < n; ++i) {\n if (i % 4 === 0) {\n value = (Math.random() * 0xffffffff) >>> 0;\n }\n buffer[i] = value & 0xff;\n value >>>= 8;\n }\n }\n\n // Copyright (c) Jupyter Development Team.\n // Distributed under the terms of the Modified BSD License.\n /*-----------------------------------------------------------------------------\n | Copyright (c) 2014-2017, PhosphorJS Contributors\n |\n | Distributed under the terms of the BSD 3-Clause License.\n |\n | The full license is in the file LICENSE, distributed with this software.\n |----------------------------------------------------------------------------*/\n /**\n * The namespace for random number related functionality.\n */\n exports.Random = void 0;\n (function (Random) {\n /**\n * A function which generates random bytes.\n *\n * @param buffer - The `Uint8Array` to fill with random bytes.\n *\n * #### Notes\n * A cryptographically strong random number generator will be used if\n * available. Otherwise, `Math.random` will be used as a fallback for\n * randomness.\n *\n * The following RNGs are supported, listed in order of precedence:\n * - `window.crypto.getRandomValues`\n * - `window.msCrypto.getRandomValues`\n * - `require('crypto').randomFillSync\n * - `require('crypto').randomBytes\n * - `Math.random`\n */\n Random.getRandomValues = (() => {\n // Look up the crypto module if available.\n const crypto = (typeof window !== 'undefined' && (window.crypto || window.msCrypto)) ||\n null;\n // Modern browsers and IE 11\n if (crypto && typeof crypto.getRandomValues === 'function') {\n return function getRandomValues(buffer) {\n return crypto.getRandomValues(buffer);\n };\n }\n // Fallback\n return fallbackRandomValues;\n })();\n })(exports.Random || (exports.Random = {}));\n\n // Copyright (c) Jupyter Development Team.\n // Distributed under the terms of the Modified BSD License.\n /*-----------------------------------------------------------------------------\n | Copyright (c) 2014-2017, PhosphorJS Contributors\n |\n | Distributed under the terms of the BSD 3-Clause License.\n |\n | The full license is in the file LICENSE, distributed with this software.\n |----------------------------------------------------------------------------*/\n /**\n * A function which creates a function that generates UUID v4 identifiers.\n *\n * @returns A new function that creates a UUID v4 string.\n *\n * #### Notes\n * This implementation complies with RFC 4122.\n *\n * This uses `Random.getRandomValues()` for random bytes, which in\n * turn will use the underlying `crypto` module of the platform if\n * it is available. The fallback for randomness is `Math.random`.\n */\n function uuid4Factory(getRandomValues) {\n // Create a 16 byte array to hold the random values.\n const bytes = new Uint8Array(16);\n // Create a look up table from bytes to hex strings.\n const lut = new Array(256);\n // Pad the single character hex digits with a leading zero.\n for (let i = 0; i < 16; ++i) {\n lut[i] = '0' + i.toString(16);\n }\n // Populate the rest of the hex digits.\n for (let i = 16; i < 256; ++i) {\n lut[i] = i.toString(16);\n }\n // Return a function which generates the UUID.\n return function uuid4() {\n // Get a new batch of random values.\n getRandomValues(bytes);\n // Set the UUID version number to 4.\n bytes[6] = 0x40 | (bytes[6] & 0x0f);\n // Set the clock sequence bit to the RFC spec.\n bytes[8] = 0x80 | (bytes[8] & 0x3f);\n // Assemble the UUID string.\n return (lut[bytes[0]] +\n lut[bytes[1]] +\n lut[bytes[2]] +\n lut[bytes[3]] +\n '-' +\n lut[bytes[4]] +\n lut[bytes[5]] +\n '-' +\n lut[bytes[6]] +\n lut[bytes[7]] +\n '-' +\n lut[bytes[8]] +\n lut[bytes[9]] +\n '-' +\n lut[bytes[10]] +\n lut[bytes[11]] +\n lut[bytes[12]] +\n lut[bytes[13]] +\n lut[bytes[14]] +\n lut[bytes[15]]);\n };\n }\n\n // Copyright (c) Jupyter Development Team.\n // Distributed under the terms of the Modified BSD License.\n /*-----------------------------------------------------------------------------\n | Copyright (c) 2014-2017, PhosphorJS Contributors\n |\n | Distributed under the terms of the BSD 3-Clause License.\n |\n | The full license is in the file LICENSE, distributed with this software.\n |----------------------------------------------------------------------------*/\n /**\n * The namespace for UUID related functionality.\n */\n exports.UUID = void 0;\n (function (UUID) {\n /**\n * A function which generates UUID v4 identifiers.\n *\n * @returns A new UUID v4 string.\n *\n * #### Notes\n * This implementation complies with RFC 4122.\n *\n * This uses `Random.getRandomValues()` for random bytes, which in\n * turn will use the underlying `crypto` module of the platform if\n * it is available. The fallback for randomness is `Math.random`.\n */\n UUID.uuid4 = uuid4Factory(exports.Random.getRandomValues);\n })(exports.UUID || (exports.UUID = {}));\n\n exports.MimeData = MimeData;\n exports.PluginRegistry = PluginRegistry;\n exports.PromiseDelegate = PromiseDelegate;\n exports.Token = Token;\n\n}));\n//# sourceMappingURL=index.js.map\n","import { find, ArrayExt } from '@lumino/algorithm';\nimport { PromiseDelegate } from '@lumino/coreutils';\n\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/*-----------------------------------------------------------------------------\n| Copyright (c) 2014-2017, PhosphorJS Contributors\n|\n| Distributed under the terms of the BSD 3-Clause License.\n|\n| The full license is in the file LICENSE, distributed with this software.\n|----------------------------------------------------------------------------*/\n/**\n * @packageDocumentation\n * @module signaling\n */\n/**\n * A concrete implementation of `ISignal`.\n *\n * #### Example\n * ```typescript\n * import { ISignal, Signal } from '@lumino/signaling';\n *\n * class SomeClass {\n *\n * constructor(name: string) {\n * this.name = name;\n * }\n *\n * readonly name: string;\n *\n * get valueChanged: ISignal<this, number> {\n * return this._valueChanged;\n * }\n *\n * get value(): number {\n * return this._value;\n * }\n *\n * set value(value: number) {\n * if (value === this._value) {\n * return;\n * }\n * this._value = value;\n * this._valueChanged.emit(value);\n * }\n *\n * private _value = 0;\n * private _valueChanged = new Signal<this, number>(this);\n * }\n *\n * function logger(sender: SomeClass, value: number): void {\n * console.log(sender.name, value);\n * }\n *\n * let m1 = new SomeClass('foo');\n * let m2 = new SomeClass('bar');\n *\n * m1.valueChanged.connect(logger);\n * m2.valueChanged.connect(logger);\n *\n * m1.value = 42; // logs: foo 42\n * m2.value = 17; // logs: bar 17\n * ```\n */\nclass Signal {\n /**\n * Construct a new signal.\n *\n * @param sender - The sender which owns the signal.\n */\n constructor(sender) {\n this.sender = sender;\n }\n /**\n * Connect a slot to the signal.\n *\n * @param slot - The slot to invoke when the signal is emitted.\n *\n * @param thisArg - The `this` context for the slot. If provided,\n * this must be a non-primitive object.\n *\n * @returns `true` if the connection succeeds, `false` otherwise.\n */\n connect(slot, thisArg) {\n return Private.connect(this, slot, thisArg);\n }\n /**\n * Disconnect a slot from the signal.\n *\n * @param slot - The slot to disconnect from the signal.\n *\n * @param thisArg - The `this` context for the slot. If provided,\n * this must be a non-primitive object.\n *\n * @returns `true` if the connection is removed, `false` otherwise.\n */\n disconnect(slot, thisArg) {\n return Private.disconnect(this, slot, thisArg);\n }\n /**\n * Emit the signal and invoke the connected slots.\n *\n * @param args - The args to pass to the connected slots.\n *\n * #### Notes\n * Slots are invoked synchronously in connection order.\n *\n * Exceptions thrown by connected slots will be caught and logged.\n */\n emit(args) {\n Private.emit(this, args);\n }\n}\n/**\n * The namespace for the `Signal` class statics.\n */\n(function (Signal) {\n /**\n * Remove all connections between a sender and receiver.\n *\n * @param sender - The sender object of interest.\n *\n * @param receiver - The receiver object of interest.\n *\n * #### Notes\n * If a `thisArg` is provided when connecting a signal, that object\n * is considered the receiver. Otherwise, the `slot` is considered\n * the receiver.\n */\n function disconnectBetween(sender, receiver) {\n Private.disconnectBetween(sender, receiver);\n }\n Signal.disconnectBetween = disconnectBetween;\n /**\n * Remove all connections where the given object is the sender.\n *\n * @param sender - The sender object of interest.\n */\n function disconnectSender(sender) {\n Private.disconnectSender(sender);\n }\n Signal.disconnectSender = disconnectSender;\n /**\n * Remove all connections where the given object is the receiver.\n *\n * @param receiver - The receiver object of interest.\n *\n * #### Notes\n * If a `thisArg` is provided when connecting a signal, that object\n * is considered the receiver. Otherwise, the `slot` is considered\n * the receiver.\n */\n function disconnectReceiver(receiver) {\n Private.disconnectReceiver(receiver);\n }\n Signal.disconnectReceiver = disconnectReceiver;\n /**\n * Remove all connections where an object is the sender or receiver.\n *\n * @param object - The object of interest.\n *\n * #### Notes\n * If a `thisArg` is provided when connecting a signal, that object\n * is considered the receiver. Otherwise, the `slot` is considered\n * the receiver.\n */\n function disconnectAll(object) {\n Private.disconnectAll(object);\n }\n Signal.disconnectAll = disconnectAll;\n /**\n * Clear all signal data associated with the given object.\n *\n * @param object - The object for which the data should be cleared.\n *\n * #### Notes\n * This removes all signal connections and any other signal data\n * associated with the object.\n */\n function clearData(object) {\n Private.disconnectAll(object);\n }\n Signal.clearData = clearData;\n /**\n * Get the signal exception handler.\n *\n * @returns The current exception handler.\n *\n * #### Notes\n * The default exception handler is `console.error`.\n */\n function getExceptionHandler() {\n return Private.exceptionHandler;\n }\n Signal.getExceptionHandler = getExceptionHandler;\n /**\n * Set the signal exception handler.\n *\n * @param handler - The function to use as the exception handler.\n *\n * @returns The old exception handler.\n *\n * #### Notes\n * The exception handler is invoked when a slot throws an exception.\n */\n function setExceptionHandler(handler) {\n let old = Private.exceptionHandler;\n Private.exceptionHandler = handler;\n return old;\n }\n Signal.setExceptionHandler = setExceptionHandler;\n})(Signal || (Signal = {}));\n/**\n * A concrete implementation of `IStream`.\n *\n * #### Example\n * ```typescript\n * import { IStream, Stream } from '@lumino/signaling';\n *\n * class SomeClass {\n *\n * constructor(name: string) {\n * this.name = name;\n * }\n *\n * readonly name: string;\n *\n * get pings(): IStream<this, string> {\n * return this._pings;\n * }\n *\n * ping(value: string) {\n * this._pings.emit(value);\n * }\n *\n * private _pings = new Stream<this, string>(this);\n * }\n *\n * let m1 = new SomeClass('foo');\n *\n * m1.pings.connect((_, value: string) => {\n * console.log('connect', value);\n * });\n *\n * void (async () => {\n * for await (const ping of m1.pings) {\n * console.log('iterator', ping);\n * }\n * })();\n *\n * m1.ping('alpha'); // logs: connect alpha\n * // logs: iterator alpha\n * m1.ping('beta'); // logs: connect beta\n * // logs: iterator beta\n * ```\n */\nclass Stream extends Signal {\n constructor() {\n super(...arguments);\n this._pending = new PromiseDelegate();\n }\n /**\n * Return an async iterator that yields every emission.\n */\n async *[Symbol.asyncIterator]() {\n let pending = this._pending;\n while (true) {\n try {\n const { args, next } = await pending.promise;\n pending = next;\n yield args;\n }\n catch (_) {\n return; // Any promise rejection stops the iterator.\n }\n }\n }\n /**\n * Emit the signal, invoke the connected slots, and yield the emission.\n *\n * @param args - The args to pass to the connected slots.\n */\n emit(args) {\n const pending = this._pending;\n const next = (this._pending = new PromiseDelegate());\n pending.resolve({ args, next });\n super.emit(args);\n }\n /**\n * Stop the stream's async iteration.\n */\n stop() {\n this._pending.promise.catch(() => undefined);\n this._pending.reject('stop');\n this._pending = new PromiseDelegate();\n }\n}\n/**\n * The namespace for the module implementation details.\n */\nvar Private;\n(function (Private) {\n /**\n * The signal exception handler function.\n */\n Private.exceptionHandler = (err) => {\n console.error(err);\n };\n /**\n * Connect a slot to a signal.\n *\n * @param signal - The signal of interest.\n *\n * @param slot - The slot to invoke when the signal is emitted.\n *\n * @param thisArg - The `this` context for the slot. If provided,\n * this must be a non-primitive object.\n *\n * @returns `true` if the connection succeeds, `false` otherwise.\n */\n function connect(signal, slot, thisArg) {\n // Coerce a `null` `thisArg` to `undefined`.\n thisArg = thisArg || undefined;\n // Ensure the sender's array of receivers is created.\n let receivers = receiversForSender.get(signal.sender);\n if (!receivers) {\n receivers = [];\n receiversForSender.set(signal.sender, receivers);\n }\n // Bail if a matching connection already exists.\n if (findConnection(receivers, signal, slot, thisArg)) {\n return false;\n }\n // Choose the best object for the receiver.\n let receiver = thisArg || slot;\n // Ensure the receiver's array of senders is created.\n let senders = sendersForReceiver.get(receiver);\n if (!senders) {\n senders = [];\n sendersForReceiver.set(receiver, senders);\n }\n // Create a new connection and add it to the end of each array.\n let connection = { signal, slot, thisArg };\n receivers.push(connection);\n senders.push(connection);\n // Indicate a successful connection.\n return true;\n }\n Private.connect = connect;\n /**\n * Disconnect a slot from a signal.\n *\n * @param signal - The signal of interest.\n *\n * @param slot - The slot to disconnect from the signal.\n *\n * @param thisArg - The `this` context for the slot. If provided,\n * this must be a non-primitive object.\n *\n * @returns `true` if the connection is removed, `false` otherwise.\n */\n function disconnect(signal, slot, thisArg) {\n // Coerce a `null` `thisArg` to `undefined`.\n thisArg = thisArg || undefined;\n // Lookup the list of receivers, and bail if none exist.\n let receivers = receiversForSender.get(signal.sender);\n if (!receivers || receivers.length === 0) {\n return false;\n }\n // Bail if no matching connection exits.\n let connection = findConnection(receivers, signal, slot, thisArg);\n if (!connection) {\n return false;\n }\n // Choose the best object for the receiver.\n let receiver = thisArg || slot;\n // Lookup the array of senders, which is now known to exist.\n let senders = sendersForReceiver.get(receiver);\n // Clear the connection and schedule cleanup of the arrays.\n connection.signal = null;\n scheduleCleanup(receivers);\n scheduleCleanup(senders);\n // Indicate a successful disconnection.\n return true;\n }\n Private.disconnect = disconnect;\n /**\n * Remove all connections between a sender and receiver.\n *\n * @param sender - The sender object of interest.\n *\n * @param receiver - The receiver object of interest.\n */\n function disconnectBetween(sender, receiver) {\n // If there are no receivers, there is nothing to do.\n let receivers = receiversForSender.get(sender);\n if (!receivers || receivers.length === 0) {\n return;\n }\n // If there are no senders, there is nothing to do.\n let senders = sendersForReceiver.get(receiver);\n if (!senders || senders.length === 0) {\n return;\n }\n // Clear each connection between the sender and receiver.\n for (const connection of senders) {\n // Skip connections which have already been cleared.\n if (!connection.signal) {\n continue;\n }\n // Clear the connection if it matches the sender.\n if (connection.signal.sender === sender) {\n connection.signal = null;\n }\n }\n // Schedule a cleanup of the senders and receivers.\n scheduleCleanup(receivers);\n scheduleCleanup(senders);\n }\n Private.disconnectBetween = disconnectBetween;\n /**\n * Remove all connections where the given object is the sender.\n *\n * @param sender - The sender object of interest.\n */\n function disconnectSender(sender) {\n // If there are no receivers, there is nothing to do.\n let receivers = receiversForSender.get(sender);\n if (!receivers || receivers.length === 0) {\n return;\n }\n // Clear each receiver connection.\n for (const connection of receivers) {\n // Skip connections which have already been cleared.\n if (!connection.signal) {\n continue;\n }\n // Choose the best object for the receiver.\n let receiver = connection.thisArg || connection.slot;\n // Clear the connection.\n connection.signal = null;\n // Cleanup the array of senders, which is now known to exist.\n scheduleCleanup(sendersForReceiver.get(receiver));\n }\n // Schedule a cleanup of the receivers.\n scheduleCleanup(receivers);\n }\n Private.disconnectSender = disconnectSender;\n /**\n * Remove all connections where the given object is the receiver.\n *\n * @param receiver - The receiver object of interest.\n */\n function disconnectReceiver(receiver) {\n // If there are no senders, there is nothing to do.\n let senders = sendersForReceiver.get(receiver);\n if (!senders || senders.length === 0) {\n return;\n }\n // Clear each sender connection.\n for (const connection of senders) {\n // Skip connections which have already been cleared.\n if (!connection.signal) {\n continue;\n }\n // Lookup the sender for the connection.\n let sender = connection.signal.sender;\n // Clear the connection.\n connection.signal = null;\n // Cleanup the array of receivers, which is now known to exist.\n scheduleCleanup(receiversForSender.get(sender));\n }\n // Schedule a cleanup of the list of senders.\n scheduleCleanup(senders);\n }\n Private.disconnectReceiver = disconnectReceiver;\n /**\n * Remove all connections where an object is the sender or receiver.\n *\n * @param object - The object of interest.\n */\n function disconnectAll(object) {\n // Remove all connections where the given object is the sender.\n disconnectSender(object);\n // Remove all connections where the given object is the receiver.\n disconnectReceiver(object);\n }\n Private.disconnectAll = disconnectAll;\n /**\n * Emit a signal and invoke its connected slots.\n *\n * @param signal - The signal of interest.\n *\n * @param args - The args to pass to the connected slots.\n *\n * #### Notes\n * Slots are invoked synchronously in connection order.\n *\n * Exceptions thrown by connected slots will be caught and logged.\n */\n function emit(signal, args) {\n // If there are no receivers, there is nothing to do.\n let receivers = receiversForSender.get(signal.sender);\n if (!receivers || receivers.length === 0) {\n return;\n }\n // Invoke the slots for connections with a matching signal.\n // Any connections added during emission are not invoked.\n for (let i = 0, n = receivers.length; i < n; ++i) {\n let connection = receivers[i];\n if (connection.signal === signal) {\n invokeSlot(connection, args);\n }\n }\n }\n Private.emit = emit;\n /**\n * A weak mapping of sender to array of receiver connections.\n */\n const receiversForSender = new WeakMap();\n /**\n * A weak mapping of receiver to array of sender connections.\n */\n const sendersForReceiver = new WeakMap();\n /**\n * A set of connection arrays which are pending cleanup.\n */\n const dirtySet = new Set();\n /**\n * A function to schedule an event loop callback.\n */\n const schedule = (() => {\n let ok = typeof requestAnimationFrame === 'function';\n return ok ? requestAnimationFrame : setImmediate;\n })();\n /**\n * Find a connection which matches the given parameters.\n */\n function findConnection(connections, signal, slot, thisArg) {\n return find(connections, connection => connection.signal === signal &&\n connection.slot === slot &&\n connection.thisArg === thisArg);\n }\n /**\n * Invoke a slot with the given parameters.\n *\n * The connection is assumed to be valid.\n *\n * Exceptions in the slot will be caught and logged.\n */\n function invokeSlot(connection, args) {\n let { signal, slot, thisArg } = connection;\n try {\n slot.call(thisArg, signal.sender, args);\n }\n catch (err) {\n Private.exceptionHandler(err);\n }\n }\n /**\n * Schedule a cleanup of a connection array.\n *\n * This will add the array to the dirty set and schedule a deferred\n * cleanup of the array contents. On cleanup, any connection with a\n * `null` signal will be removed from the array.\n */\n function scheduleCleanup(array) {\n if (dirtySet.size === 0) {\n schedule(cleanupDirtySet);\n }\n dirtySet.add(array);\n }\n /**\n * Cleanup the connection lists in the dirty set.\n *\n * This function should only be invoked asynchronously, when the\n * stack frame is guaranteed to not be on the path of user code.\n */\n function cleanupDirtySet() {\n dirtySet.forEach(cleanupConnections);\n dirtySet.clear();\n }\n /**\n * Cleanup the dirty connections in a connections array.\n *\n * This will remove any connection with a `null` signal.\n *\n * This function should only be invoked asynchronously, when the\n * stack frame is guaranteed to not be on the path of user code.\n */\n function cleanupConnections(connections) {\n ArrayExt.removeAllWhere(connections, isDeadConnection);\n }\n /**\n * Test whether a connection is dead.\n *\n * A dead connection has a `null` signal.\n */\n function isDeadConnection(connection) {\n return connection.signal === null;\n }\n})(Private || (Private = {}));\n\nexport { Signal, Stream };\n//# sourceMappingURL=index.es6.js.map\n","'use strict';\n\nfunction hasKey(obj, keys) {\n\tvar o = obj;\n\tkeys.slice(0, -1).forEach(function (key) {\n\t\to = o[key] || {};\n\t});\n\n\tvar key = keys[keys.length - 1];\n\treturn key in o;\n}\n\nfunction isNumber(x) {\n\tif (typeof x === 'number') { return true; }\n\tif ((/^0x[0-9a-f]+$/i).test(x)) { return true; }\n\treturn (/^[-+]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(e[-+]?\\d+)?$/).test(x);\n}\n\nfunction isConstructorOrProto(obj, key) {\n\treturn (key === 'constructor' && typeof obj[key] === 'function') || key === '__proto__';\n}\n\nmodule.exports = function (args, opts) {\n\tif (!opts) { opts = {}; }\n\n\tvar flags = {\n\t\tbools: {},\n\t\tstrings: {},\n\t\tunknownFn: null,\n\t};\n\n\tif (typeof opts.unknown === 'function') {\n\t\tflags.unknownFn = opts.unknown;\n\t}\n\n\tif (typeof opts.boolean === 'boolean' && opts.boolean) {\n\t\tflags.allBools = true;\n\t} else {\n\t\t[].concat(opts.boolean).filter(Boolean).forEach(function (key) {\n\t\t\tflags.bools[key] = true;\n\t\t});\n\t}\n\n\tvar aliases = {};\n\n\tfunction aliasIsBoolean(key) {\n\t\treturn aliases[key].some(function (x) {\n\t\t\treturn flags.bools[x];\n\t\t});\n\t}\n\n\tObject.keys(opts.alias || {}).forEach(function (key) {\n\t\taliases[key] = [].concat(opts.alias[key]);\n\t\taliases[key].forEach(function (x) {\n\t\t\taliases[x] = [key].concat(aliases[key].filter(function (y) {\n\t\t\t\treturn x !== y;\n\t\t\t}));\n\t\t});\n\t});\n\n\t[].concat(opts.string).filter(Boolean).forEach(function (key) {\n\t\tflags.strings[key] = true;\n\t\tif (aliases[key]) {\n\t\t\t[].concat(aliases[key]).forEach(function (k) {\n\t\t\t\tflags.strings[k] = true;\n\t\t\t});\n\t\t}\n\t});\n\n\tvar defaults = opts.default || {};\n\n\tvar argv = { _: [] };\n\n\tfunction argDefined(key, arg) {\n\t\treturn (flags.allBools && (/^--[^=]+$/).test(arg))\n\t\t\t|| flags.strings[key]\n\t\t\t|| flags.bools[key]\n\t\t\t|| aliases[key];\n\t}\n\n\tfunction setKey(obj, keys, value) {\n\t\tvar o = obj;\n\t\tfor (var i = 0; i < keys.length - 1; i++) {\n\t\t\tvar key = keys[i];\n\t\t\tif (isConstructorOrProto(o, key)) { return; }\n\t\t\tif (o[key] === undefined) { o[key] = {}; }\n\t\t\tif (\n\t\t\t\to[key] === Object.prototype\n\t\t\t\t|| o[key] === Number.prototype\n\t\t\t\t|| o[key] === String.prototype\n\t\t\t) {\n\t\t\t\to[key] = {};\n\t\t\t}\n\t\t\tif (o[key] === Array.prototype) { o[key] = []; }\n\t\t\to = o[key];\n\t\t}\n\n\t\tvar lastKey = keys[keys.length - 1];\n\t\tif (isConstructorOrProto(o, lastKey)) { return; }\n\t\tif (\n\t\t\to === Object.prototype\n\t\t\t|| o === Number.prototype\n\t\t\t|| o === String.prototype\n\t\t) {\n\t\t\to = {};\n\t\t}\n\t\tif (o === Array.prototype) { o = []; }\n\t\tif (o[lastKey] === undefined || flags.bools[lastKey] || typeof o[lastKey] === 'boolean') {\n\t\t\to[lastKey] = value;\n\t\t} else if (Array.isArray(o[lastKey])) {\n\t\t\to[lastKey].push(value);\n\t\t} else {\n\t\t\to[lastKey] = [o[lastKey], value];\n\t\t}\n\t}\n\n\tfunction setArg(key, val, arg) {\n\t\tif (arg && flags.unknownFn && !argDefined(key, arg)) {\n\t\t\tif (flags.unknownFn(arg) === false) { return; }\n\t\t}\n\n\t\tvar value = !flags.strings[key] && isNumber(val)\n\t\t\t? Number(val)\n\t\t\t: val;\n\t\tsetKey(argv, key.split('.'), value);\n\n\t\t(aliases[key] || []).forEach(function (x) {\n\t\t\tsetKey(argv, x.split('.'), value);\n\t\t});\n\t}\n\n\tObject.keys(flags.bools).forEach(function (key) {\n\t\tsetArg(key, defaults[key] === undefined ? false : defaults[key]);\n\t});\n\n\tvar notFlags = [];\n\n\tif (args.indexOf('--') !== -1) {\n\t\tnotFlags = args.slice(args.indexOf('--') + 1);\n\t\targs = args.slice(0, args.indexOf('--'));\n\t}\n\n\tfor (var i = 0; i < args.length; i++) {\n\t\tvar arg = args[i];\n\t\tvar key;\n\t\tvar next;\n\n\t\tif ((/^--.+=/).test(arg)) {\n\t\t\t// Using [\\s\\S] instead of . because js doesn't support the\n\t\t\t// 'dotall' regex modifier. See:\n\t\t\t// http://stackoverflow.com/a/1068308/13216\n\t\t\tvar m = arg.match(/^--([^=]+)=([\\s\\S]*)$/);\n\t\t\tkey = m[1];\n\t\t\tvar value = m[2];\n\t\t\tif (flags.bools[key]) {\n\t\t\t\tvalue = value !== 'false';\n\t\t\t}\n\t\t\tsetArg(key, value, arg);\n\t\t} else if ((/^--no-.+/).test(arg)) {\n\t\t\tkey = arg.match(/^--no-(.+)/)[1];\n\t\t\tsetArg(key, false, arg);\n\t\t} else if ((/^--.+/).test(arg)) {\n\t\t\tkey = arg.match(/^--(.+)/)[1];\n\t\t\tnext = args[i + 1];\n\t\t\tif (\n\t\t\t\tnext !== undefined\n\t\t\t\t&& !(/^(-|--)[^-]/).test(next)\n\t\t\t\t&& !flags.bools[key]\n\t\t\t\t&& !flags.allBools\n\t\t\t\t&& (aliases[key] ? !aliasIsBoolean(key) : true)\n\t\t\t) {\n\t\t\t\tsetArg(key, next, arg);\n\t\t\t\ti += 1;\n\t\t\t} else if ((/^(true|false)$/).test(next)) {\n\t\t\t\tsetArg(key, next === 'true', arg);\n\t\t\t\ti += 1;\n\t\t\t} else {\n\t\t\t\tsetArg(key, flags.strings[key] ? '' : true, arg);\n\t\t\t}\n\t\t} else if ((/^-[^-]+/).test(arg)) {\n\t\t\tvar letters = arg.slice(1, -1).split('');\n\n\t\t\tvar broken = false;\n\t\t\tfor (var j = 0; j < letters.length; j++) {\n\t\t\t\tnext = arg.slice(j + 2);\n\n\t\t\t\tif (next === '-') {\n\t\t\t\t\tsetArg(letters[j], next, arg);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif ((/[A-Za-z]/).test(letters[j]) && next[0] === '=') {\n\t\t\t\t\tsetArg(letters[j], next.slice(1), arg);\n\t\t\t\t\tbroken = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t(/[A-Za-z]/).test(letters[j])\n\t\t\t\t\t&& (/-?\\d+(\\.\\d*)?(e-?\\d+)?$/).test(next)\n\t\t\t\t) {\n\t\t\t\t\tsetArg(letters[j], next, arg);\n\t\t\t\t\tbroken = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif (letters[j + 1] && letters[j + 1].match(/\\W/)) {\n\t\t\t\t\tsetArg(letters[j], arg.slice(j + 2), arg);\n\t\t\t\t\tbroken = true;\n\t\t\t\t\tbreak;\n\t\t\t\t} else {\n\t\t\t\t\tsetArg(letters[j], flags.strings[letters[j]] ? '' : true, arg);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tkey = arg.slice(-1)[0];\n\t\t\tif (!broken && key !== '-') {\n\t\t\t\tif (\n\t\t\t\t\targs[i + 1]\n\t\t\t\t\t&& !(/^(-|--)[^-]/).test(args[i + 1])\n\t\t\t\t\t&& !flags.bools[key]\n\t\t\t\t\t&& (aliases[key] ? !aliasIsBoolean(key) : true)\n\t\t\t\t) {\n\t\t\t\t\tsetArg(key, args[i + 1], arg);\n\t\t\t\t\ti += 1;\n\t\t\t\t} else if (args[i + 1] && (/^(true|false)$/).test(args[i + 1])) {\n\t\t\t\t\tsetArg(key, args[i + 1] === 'true', arg);\n\t\t\t\t\ti += 1;\n\t\t\t\t} else {\n\t\t\t\t\tsetArg(key, flags.strings[key] ? '' : true, arg);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif (!flags.unknownFn || flags.unknownFn(arg) !== false) {\n\t\t\t\targv._.push(flags.strings._ || !isNumber(arg) ? arg : Number(arg));\n\t\t\t}\n\t\t\tif (opts.stopEarly) {\n\t\t\t\targv._.push.apply(argv._, args.slice(i + 1));\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tObject.keys(defaults).forEach(function (k) {\n\t\tif (!hasKey(argv, k.split('.'))) {\n\t\t\tsetKey(argv, k.split('.'), defaults[k]);\n\n\t\t\t(aliases[k] || []).forEach(function (x) {\n\t\t\t\tsetKey(argv, x.split('.'), defaults[k]);\n\t\t\t});\n\t\t}\n\t});\n\n\tif (opts['--']) {\n\t\targv['--'] = notFlags.slice();\n\t} else {\n\t\tnotFlags.forEach(function (k) {\n\t\t\targv._.push(k);\n\t\t});\n\t}\n\n\treturn argv;\n};\n","// 'path' module extracted from Node.js v8.11.1 (only the posix part)\n// transplited with Babel\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nfunction assertPath(path) {\n if (typeof path !== 'string') {\n throw new TypeError('Path must be a string. Received ' + JSON.stringify(path));\n }\n}\n\n// Resolves . and .. elements in a path with directory names\nfunction normalizeStringPosix(path, allowAboveRoot) {\n var res = '';\n var lastSegmentLength = 0;\n var lastSlash = -1;\n var dots = 0;\n var code;\n for (var i = 0; i <= path.length; ++i) {\n if (i < path.length)\n code = path.charCodeAt(i);\n else if (code === 47 /*/*/)\n break;\n else\n code = 47 /*/*/;\n if (code === 47 /*/*/) {\n if (lastSlash === i - 1 || dots === 1) {\n // NOOP\n } else if (lastSlash !== i - 1 && dots === 2) {\n if (res.length < 2 || lastSegmentLength !== 2 || res.charCodeAt(res.length - 1) !== 46 /*.*/ || res.charCodeAt(res.length - 2) !== 46 /*.*/) {\n if (res.length > 2) {\n var lastSlashIndex = res.lastIndexOf('/');\n if (lastSlashIndex !== res.length - 1) {\n if (lastSlashIndex === -1) {\n res = '';\n lastSegmentLength = 0;\n } else {\n res = res.slice(0, lastSlashIndex);\n lastSegmentLength = res.length - 1 - res.lastIndexOf('/');\n }\n lastSlash = i;\n dots = 0;\n continue;\n }\n } else if (res.length === 2 || res.length === 1) {\n res = '';\n lastSegmentLength = 0;\n lastSlash = i;\n dots = 0;\n continue;\n }\n }\n if (allowAboveRoot) {\n if (res.length > 0)\n res += '/..';\n else\n res = '..';\n lastSegmentLength = 2;\n }\n } else {\n if (res.length > 0)\n res += '/' + path.slice(lastSlash + 1, i);\n else\n res = path.slice(lastSlash + 1, i);\n lastSegmentLength = i - lastSlash - 1;\n }\n lastSlash = i;\n dots = 0;\n } else if (code === 46 /*.*/ && dots !== -1) {\n ++dots;\n } else {\n dots = -1;\n }\n }\n return res;\n}\n\nfunction _format(sep, pathObject) {\n var dir = pathObject.dir || pathObject.root;\n var base = pathObject.base || (pathObject.name || '') + (pathObject.ext || '');\n if (!dir) {\n return base;\n }\n if (dir === pathObject.root) {\n return dir + base;\n }\n return dir + sep + base;\n}\n\nvar posix = {\n // path.resolve([from ...], to)\n resolve: function resolve() {\n var resolvedPath = '';\n var resolvedAbsolute = false;\n var cwd;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path;\n if (i >= 0)\n path = arguments[i];\n else {\n if (cwd === undefined)\n cwd = process.cwd();\n path = cwd;\n }\n\n assertPath(path);\n\n // Skip empty entries\n if (path.length === 0) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charCodeAt(0) === 47 /*/*/;\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeStringPosix(resolvedPath, !resolvedAbsolute);\n\n if (resolvedAbsolute) {\n if (resolvedPath.length > 0)\n return '/' + resolvedPath;\n else\n return '/';\n } else if (resolvedPath.length > 0) {\n return resolvedPath;\n } else {\n return '.';\n }\n },\n\n normalize: function normalize(path) {\n assertPath(path);\n\n if (path.length === 0) return '.';\n\n var isAbsolute = path.charCodeAt(0) === 47 /*/*/;\n var trailingSeparator = path.charCodeAt(path.length - 1) === 47 /*/*/;\n\n // Normalize the path\n path = normalizeStringPosix(path, !isAbsolute);\n\n if (path.length === 0 && !isAbsolute) path = '.';\n if (path.length > 0 && trailingSeparator) path += '/';\n\n if (isAbsolute) return '/' + path;\n return path;\n },\n\n isAbsolute: function isAbsolute(path) {\n assertPath(path);\n return path.length > 0 && path.charCodeAt(0) === 47 /*/*/;\n },\n\n join: function join() {\n if (arguments.length === 0)\n return '.';\n var joined;\n for (var i = 0; i < arguments.length; ++i) {\n var arg = arguments[i];\n assertPath(arg);\n if (arg.length > 0) {\n if (joined === undefined)\n joined = arg;\n else\n joined += '/' + arg;\n }\n }\n if (joined === undefined)\n return '.';\n return posix.normalize(joined);\n },\n\n relative: function relative(from, to) {\n assertPath(from);\n assertPath(to);\n\n if (from === to) return '';\n\n from = posix.resolve(from);\n to = posix.resolve(to);\n\n if (from === to) return '';\n\n // Trim any leading backslashes\n var fromStart = 1;\n for (; fromStart < from.length; ++fromStart) {\n if (from.charCodeAt(fromStart) !== 47 /*/*/)\n break;\n }\n var fromEnd = from.length;\n var fromLen = fromEnd - fromStart;\n\n // Trim any leading backslashes\n var toStart = 1;\n for (; toStart < to.length; ++toStart) {\n if (to.charCodeAt(toStart) !== 47 /*/*/)\n break;\n }\n var toEnd = to.length;\n var toLen = toEnd - toStart;\n\n // Compare paths to find the longest common path from root\n var length = fromLen < toLen ? fromLen : toLen;\n var lastCommonSep = -1;\n var i = 0;\n for (; i <= length; ++i) {\n if (i === length) {\n if (toLen > length) {\n if (to.charCodeAt(toStart + i) === 47 /*/*/) {\n // We get here if `from` is the exact base path for `to`.\n // For example: from='/foo/bar'; to='/foo/bar/baz'\n return to.slice(toStart + i + 1);\n } else if (i === 0) {\n // We get here if `from` is the root\n // For example: from='/'; to='/foo'\n return to.slice(toStart + i);\n }\n } else if (fromLen > length) {\n if (from.charCodeAt(fromStart + i) === 47 /*/*/) {\n // We get here if `to` is the exact base path for `from`.\n // For example: from='/foo/bar/baz'; to='/foo/bar'\n lastCommonSep = i;\n } else if (i === 0) {\n // We get here if `to` is the root.\n // For example: from='/foo'; to='/'\n lastCommonSep = 0;\n }\n }\n break;\n }\n var fromCode = from.charCodeAt(fromStart + i);\n var toCode = to.charCodeAt(toStart + i);\n if (fromCode !== toCode)\n break;\n else if (fromCode === 47 /*/*/)\n lastCommonSep = i;\n }\n\n var out = '';\n // Generate the relative path based on the path difference between `to`\n // and `from`\n for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) {\n if (i === fromEnd || from.charCodeAt(i) === 47 /*/*/) {\n if (out.length === 0)\n out += '..';\n else\n out += '/..';\n }\n }\n\n // Lastly, append the rest of the destination (`to`) path that comes after\n // the common path parts\n if (out.length > 0)\n return out + to.slice(toStart + lastCommonSep);\n else {\n toStart += lastCommonSep;\n if (to.charCodeAt(toStart) === 47 /*/*/)\n ++toStart;\n return to.slice(toStart);\n }\n },\n\n _makeLong: function _makeLong(path) {\n return path;\n },\n\n dirname: function dirname(path) {\n assertPath(path);\n if (path.length === 0) return '.';\n var code = path.charCodeAt(0);\n var hasRoot = code === 47 /*/*/;\n var end = -1;\n var matchedSlash = true;\n for (var i = path.length - 1; i >= 1; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n\n if (end === -1) return hasRoot ? '/' : '.';\n if (hasRoot && end === 1) return '//';\n return path.slice(0, end);\n },\n\n basename: function basename(path, ext) {\n if (ext !== undefined && typeof ext !== 'string') throw new TypeError('\"ext\" argument must be a string');\n assertPath(path);\n\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n\n if (ext !== undefined && ext.length > 0 && ext.length <= path.length) {\n if (ext.length === path.length && ext === path) return '';\n var extIdx = ext.length - 1;\n var firstNonSlashEnd = -1;\n for (i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else {\n if (firstNonSlashEnd === -1) {\n // We saw the first non-path separator, remember this index in case\n // we need it if the extension ends up not matching\n matchedSlash = false;\n firstNonSlashEnd = i + 1;\n }\n if (extIdx >= 0) {\n // Try to match the explicit extension\n if (code === ext.charCodeAt(extIdx)) {\n if (--extIdx === -1) {\n // We matched the extension, so mark this as the end of our path\n // component\n end = i;\n }\n } else {\n // Extension does not match, so our result is the entire path\n // component\n extIdx = -1;\n end = firstNonSlashEnd;\n }\n }\n }\n }\n\n if (start === end) end = firstNonSlashEnd;else if (end === -1) end = path.length;\n return path.slice(start, end);\n } else {\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n\n if (end === -1) return '';\n return path.slice(start, end);\n }\n },\n\n extname: function extname(path) {\n assertPath(path);\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n for (var i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return '';\n }\n return path.slice(startDot, end);\n },\n\n format: function format(pathObject) {\n if (pathObject === null || typeof pathObject !== 'object') {\n throw new TypeError('The \"pathObject\" argument must be of type Object. Received type ' + typeof pathObject);\n }\n return _format('/', pathObject);\n },\n\n parse: function parse(path) {\n assertPath(path);\n\n var ret = { root: '', dir: '', base: '', ext: '', name: '' };\n if (path.length === 0) return ret;\n var code = path.charCodeAt(0);\n var isAbsolute = code === 47 /*/*/;\n var start;\n if (isAbsolute) {\n ret.root = '/';\n start = 1;\n } else {\n start = 0;\n }\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n var i = path.length - 1;\n\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n\n // Get non-dir info\n for (; i >= start; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1) startDot = i;else if (preDotState !== 1) preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n if (end !== -1) {\n if (startPart === 0 && isAbsolute) ret.base = ret.name = path.slice(1, end);else ret.base = ret.name = path.slice(startPart, end);\n }\n } else {\n if (startPart === 0 && isAbsolute) {\n ret.name = path.slice(1, startDot);\n ret.base = path.slice(1, end);\n } else {\n ret.name = path.slice(startPart, startDot);\n ret.base = path.slice(startPart, end);\n }\n ret.ext = path.slice(startDot, end);\n }\n\n if (startPart > 0) ret.dir = path.slice(0, startPart - 1);else if (isAbsolute) ret.dir = '/';\n\n return ret;\n },\n\n sep: '/',\n delimiter: ':',\n win32: null,\n posix: null\n};\n\nposix.posix = posix;\n\nmodule.exports = posix;\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , undef;\n\n/**\n * Decode a URI encoded string.\n *\n * @param {String} input The URI encoded string.\n * @returns {String|Null} The decoded string.\n * @api private\n */\nfunction decode(input) {\n try {\n return decodeURIComponent(input.replace(/\\+/g, ' '));\n } catch (e) {\n return null;\n }\n}\n\n/**\n * Attempts to encode a given input.\n *\n * @param {String} input The string that needs to be encoded.\n * @returns {String|Null} The encoded string.\n * @api private\n */\nfunction encode(input) {\n try {\n return encodeURIComponent(input);\n } catch (e) {\n return null;\n }\n}\n\n/**\n * Simple query string parser.\n *\n * @param {String} query The query string that needs to be parsed.\n * @returns {Object}\n * @api public\n */\nfunction querystring(query) {\n var parser = /([^=?#&]+)=?([^&]*)/g\n , result = {}\n , part;\n\n while (part = parser.exec(query)) {\n var key = decode(part[1])\n , value = decode(part[2]);\n\n //\n // Prevent overriding of existing properties. This ensures that build-in\n // methods like `toString` or __proto__ are not overriden by malicious\n // querystrings.\n //\n // In the case if failed decoding, we want to omit the key/value pairs\n // from the result.\n //\n if (key === null || value === null || key in result) continue;\n result[key] = value;\n }\n\n return result;\n}\n\n/**\n * Transform a query string to an object.\n *\n * @param {Object} obj Object that should be transformed.\n * @param {String} prefix Optional prefix.\n * @returns {String}\n * @api public\n */\nfunction querystringify(obj, prefix) {\n prefix = prefix || '';\n\n var pairs = []\n , value\n , key;\n\n //\n // Optionally prefix with a '?' if needed\n //\n if ('string' !== typeof prefix) prefix = '?';\n\n for (key in obj) {\n if (has.call(obj, key)) {\n value = obj[key];\n\n //\n // Edge cases where we actually want to encode the value to an empty\n // string instead of the stringified value.\n //\n if (!value && (value === null || value === undef || isNaN(value))) {\n value = '';\n }\n\n key = encode(key);\n value = encode(value);\n\n //\n // If we failed to encode the strings, we should bail out as we don't\n // want to add invalid strings to the query.\n //\n if (key === null || value === null) continue;\n pairs.push(key +'='+ value);\n }\n }\n\n return pairs.length ? prefix + pairs.join('&') : '';\n}\n\n//\n// Expose the module.\n//\nexports.stringify = querystringify;\nexports.parse = querystring;\n","'use strict';\n\n/**\n * Check if we're required to add a port number.\n *\n * @see https://url.spec.whatwg.org/#default-port\n * @param {Number|String} port Port number we need to check\n * @param {String} protocol Protocol we need to check against.\n * @returns {Boolean} Is it a default port for the given protocol\n * @api private\n */\nmodule.exports = function required(port, protocol) {\n protocol = protocol.split(':')[0];\n port = +port;\n\n if (!port) return false;\n\n switch (protocol) {\n case 'http':\n case 'ws':\n return port !== 80;\n\n case 'https':\n case 'wss':\n return port !== 443;\n\n case 'ftp':\n return port !== 21;\n\n case 'gopher':\n return port !== 70;\n\n case 'file':\n return false;\n }\n\n return port !== 0;\n};\n","'use strict';\n\nvar required = require('requires-port')\n , qs = require('querystringify')\n , controlOrWhitespace = /^[\\x00-\\x20\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff]+/\n , CRHTLF = /[\\n\\r\\t]/g\n , slashes = /^[A-Za-z][A-Za-z0-9+-.]*:\\/\\//\n , port = /:\\d+$/\n , protocolre = /^([a-z][a-z0-9.+-]*:)?(\\/\\/)?([\\\\/]+)?([\\S\\s]*)/i\n , windowsDriveLetter = /^[a-zA-Z]:/;\n\n/**\n * Remove control characters and whitespace from the beginning of a string.\n *\n * @param {Object|String} str String to trim.\n * @returns {String} A new string representing `str` stripped of control\n * characters and whitespace from its beginning.\n * @public\n */\nfunction trimLeft(str) {\n return (str ? str : '').toString().replace(controlOrWhitespace, '');\n}\n\n/**\n * These are the parse rules for the URL parser, it informs the parser\n * about:\n *\n * 0. The char it Needs to parse, if it's a string it should be done using\n * indexOf, RegExp using exec and NaN means set as current value.\n * 1. The property we should set when parsing this value.\n * 2. Indication if it's backwards or forward parsing, when set as number it's\n * the value of extra chars that should be split off.\n * 3. Inherit from location if non existing in the parser.\n * 4. `toLowerCase` the resulting value.\n */\nvar rules = [\n ['#', 'hash'], // Extract from the back.\n ['?', 'query'], // Extract from the back.\n function sanitize(address, url) { // Sanitize what is left of the address\n return isSpecial(url.protocol) ? address.replace(/\\\\/g, '/') : address;\n },\n ['/', 'pathname'], // Extract from the back.\n ['@', 'auth', 1], // Extract from the front.\n [NaN, 'host', undefined, 1, 1], // Set left over value.\n [/:(\\d*)$/, 'port', undefined, 1], // RegExp the back.\n [NaN, 'hostname', undefined, 1, 1] // Set left over.\n];\n\n/**\n * These properties should not be copied or inherited from. This is only needed\n * for all non blob URL's as a blob URL does not include a hash, only the\n * origin.\n *\n * @type {Object}\n * @private\n */\nvar ignore = { hash: 1, query: 1 };\n\n/**\n * The location object differs when your code is loaded through a normal page,\n * Worker or through a worker using a blob. And with the blobble begins the\n * trouble as the location object will contain the URL of the blob, not the\n * location of the page where our code is loaded in. The actual origin is\n * encoded in the `pathname` so we can thankfully generate a good \"default\"\n * location from it so we can generate proper relative URL's again.\n *\n * @param {Object|String} loc Optional default location object.\n * @returns {Object} lolcation object.\n * @public\n */\nfunction lolcation(loc) {\n var globalVar;\n\n if (typeof window !== 'undefined') globalVar = window;\n else if (typeof global !== 'undefined') globalVar = global;\n else if (typeof self !== 'undefined') globalVar = self;\n else globalVar = {};\n\n var location = globalVar.location || {};\n loc = loc || location;\n\n var finaldestination = {}\n , type = typeof loc\n , key;\n\n if ('blob:' === loc.protocol) {\n finaldestination = new Url(unescape(loc.pathname), {});\n } else if ('string' === type) {\n finaldestination = new Url(loc, {});\n for (key in ignore) delete finaldestination[key];\n } else if ('object' === type) {\n for (key in loc) {\n if (key in ignore) continue;\n finaldestination[key] = loc[key];\n }\n\n if (finaldestination.slashes === undefined) {\n finaldestination.slashes = slashes.test(loc.href);\n }\n }\n\n return finaldestination;\n}\n\n/**\n * Check whether a protocol scheme is special.\n *\n * @param {String} The protocol scheme of the URL\n * @return {Boolean} `true` if the protocol scheme is special, else `false`\n * @private\n */\nfunction isSpecial(scheme) {\n return (\n scheme === 'file:' ||\n scheme === 'ftp:' ||\n scheme === 'http:' ||\n scheme === 'https:' ||\n scheme === 'ws:' ||\n scheme === 'wss:'\n );\n}\n\n/**\n * @typedef ProtocolExtract\n * @type Object\n * @property {String} protocol Protocol matched in the URL, in lowercase.\n * @property {Boolean} slashes `true` if protocol is followed by \"//\", else `false`.\n * @property {String} rest Rest of the URL that is not part of the protocol.\n */\n\n/**\n * Extract protocol information from a URL with/without double slash (\"//\").\n *\n * @param {String} address URL we want to extract from.\n * @param {Object} location\n * @return {ProtocolExtract} Extracted information.\n * @private\n */\nfunction extractProtocol(address, location) {\n address = trimLeft(address);\n address = address.replace(CRHTLF, '');\n location = location || {};\n\n var match = protocolre.exec(address);\n var protocol = match[1] ? match[1].toLowerCase() : '';\n var forwardSlashes = !!match[2];\n var otherSlashes = !!match[3];\n var slashesCount = 0;\n var rest;\n\n if (forwardSlashes) {\n if (otherSlashes) {\n rest = match[2] + match[3] + match[4];\n slashesCount = match[2].length + match[3].length;\n } else {\n rest = match[2] + match[4];\n slashesCount = match[2].length;\n }\n } else {\n if (otherSlashes) {\n rest = match[3] + match[4];\n slashesCount = match[3].length;\n } else {\n rest = match[4]\n }\n }\n\n if (protocol === 'file:') {\n if (slashesCount >= 2) {\n rest = rest.slice(2);\n }\n } else if (isSpecial(protocol)) {\n rest = match[4];\n } else if (protocol) {\n if (forwardSlashes) {\n rest = rest.slice(2);\n }\n } else if (slashesCount >= 2 && isSpecial(location.protocol)) {\n rest = match[4];\n }\n\n return {\n protocol: protocol,\n slashes: forwardSlashes || isSpecial(protocol),\n slashesCount: slashesCount,\n rest: rest\n };\n}\n\n/**\n * Resolve a relative URL pathname against a base URL pathname.\n *\n * @param {String} relative Pathname of the relative URL.\n * @param {String} base Pathname of the base URL.\n * @return {String} Resolved pathname.\n * @private\n */\nfunction resolve(relative, base) {\n if (relative === '') return base;\n\n var path = (base || '/').split('/').slice(0, -1).concat(relative.split('/'))\n , i = path.length\n , last = path[i - 1]\n , unshift = false\n , up = 0;\n\n while (i--) {\n if (path[i] === '.') {\n path.splice(i, 1);\n } else if (path[i] === '..') {\n path.splice(i, 1);\n up++;\n } else if (up) {\n if (i === 0) unshift = true;\n path.splice(i, 1);\n up--;\n }\n }\n\n if (unshift) path.unshift('');\n if (last === '.' || last === '..') path.push('');\n\n return path.join('/');\n}\n\n/**\n * The actual URL instance. Instead of returning an object we've opted-in to\n * create an actual constructor as it's much more memory efficient and\n * faster and it pleases my OCD.\n *\n * It is worth noting that we should not use `URL` as class name to prevent\n * clashes with the global URL instance that got introduced in browsers.\n *\n * @constructor\n * @param {String} address URL we want to parse.\n * @param {Object|String} [location] Location defaults for relative paths.\n * @param {Boolean|Function} [parser] Parser for the query string.\n * @private\n */\nfunction Url(address, location, parser) {\n address = trimLeft(address);\n address = address.replace(CRHTLF, '');\n\n if (!(this instanceof Url)) {\n return new Url(address, location, parser);\n }\n\n var relative, extracted, parse, instruction, index, key\n , instructions = rules.slice()\n , type = typeof location\n , url = this\n , i = 0;\n\n //\n // The following if statements allows this module two have compatibility with\n // 2 different API:\n //\n // 1. Node.js's `url.parse` api which accepts a URL, boolean as arguments\n // where the boolean indicates that the query string should also be parsed.\n //\n // 2. The `URL` interface of the browser which accepts a URL, object as\n // arguments. The supplied object will be used as default values / fall-back\n // for relative paths.\n //\n if ('object' !== type && 'string' !== type) {\n parser = location;\n location = null;\n }\n\n if (parser && 'function' !== typeof parser) parser = qs.parse;\n\n location = lolcation(location);\n\n //\n // Extract protocol information before running the instructions.\n //\n extracted = extractProtocol(address || '', location);\n relative = !extracted.protocol && !extracted.slashes;\n url.slashes = extracted.slashes || relative && location.slashes;\n url.protocol = extracted.protocol || location.protocol || '';\n address = extracted.rest;\n\n //\n // When the authority component is absent the URL starts with a path\n // component.\n //\n if (\n extracted.protocol === 'file:' && (\n extracted.slashesCount !== 2 || windowsDriveLetter.test(address)) ||\n (!extracted.slashes &&\n (extracted.protocol ||\n extracted.slashesCount < 2 ||\n !isSpecial(url.protocol)))\n ) {\n instructions[3] = [/(.*)/, 'pathname'];\n }\n\n for (; i < instructions.length; i++) {\n instruction = instructions[i];\n\n if (typeof instruction === 'function') {\n address = instruction(address, url);\n continue;\n }\n\n parse = instruction[0];\n key = instruction[1];\n\n if (parse !== parse) {\n url[key] = address;\n } else if ('string' === typeof parse) {\n index = parse === '@'\n ? address.lastIndexOf(parse)\n : address.indexOf(parse);\n\n if (~index) {\n if ('number' === typeof instruction[2]) {\n url[key] = address.slice(0, index);\n address = address.slice(index + instruction[2]);\n } else {\n url[key] = address.slice(index);\n address = address.slice(0, index);\n }\n }\n } else if ((index = parse.exec(address))) {\n url[key] = index[1];\n address = address.slice(0, index.index);\n }\n\n url[key] = url[key] || (\n relative && instruction[3] ? location[key] || '' : ''\n );\n\n //\n // Hostname, host and protocol should be lowercased so they can be used to\n // create a proper `origin`.\n //\n if (instruction[4]) url[key] = url[key].toLowerCase();\n }\n\n //\n // Also parse the supplied query string in to an object. If we're supplied\n // with a custom parser as function use that instead of the default build-in\n // parser.\n //\n if (parser) url.query = parser(url.query);\n\n //\n // If the URL is relative, resolve the pathname against the base URL.\n //\n if (\n relative\n && location.slashes\n && url.pathname.charAt(0) !== '/'\n && (url.pathname !== '' || location.pathname !== '')\n ) {\n url.pathname = resolve(url.pathname, location.pathname);\n }\n\n //\n // Default to a / for pathname if none exists. This normalizes the URL\n // to always have a /\n //\n if (url.pathname.charAt(0) !== '/' && isSpecial(url.protocol)) {\n url.pathname = '/' + url.pathname;\n }\n\n //\n // We should not add port numbers if they are already the default port number\n // for a given protocol. As the host also contains the port number we're going\n // override it with the hostname which contains no port number.\n //\n if (!required(url.port, url.protocol)) {\n url.host = url.hostname;\n url.port = '';\n }\n\n //\n // Parse down the `auth` for the username and password.\n //\n url.username = url.password = '';\n\n if (url.auth) {\n index = url.auth.indexOf(':');\n\n if (~index) {\n url.username = url.auth.slice(0, index);\n url.username = encodeURIComponent(decodeURIComponent(url.username));\n\n url.password = url.auth.slice(index + 1);\n url.password = encodeURIComponent(decodeURIComponent(url.password))\n } else {\n url.username = encodeURIComponent(decodeURIComponent(url.auth));\n }\n\n url.auth = url.password ? url.username +':'+ url.password : url.username;\n }\n\n url.origin = url.protocol !== 'file:' && isSpecial(url.protocol) && url.host\n ? url.protocol +'//'+ url.host\n : 'null';\n\n //\n // The href is just the compiled result.\n //\n url.href = url.toString();\n}\n\n/**\n * This is convenience method for changing properties in the URL instance to\n * insure that they all propagate correctly.\n *\n * @param {String} part Property we need to adjust.\n * @param {Mixed} value The newly assigned value.\n * @param {Boolean|Function} fn When setting the query, it will be the function\n * used to parse the query.\n * When setting the protocol, double slash will be\n * removed from the final url if it is true.\n * @returns {URL} URL instance for chaining.\n * @public\n */\nfunction set(part, value, fn) {\n var url = this;\n\n switch (part) {\n case 'query':\n if ('string' === typeof value && value.length) {\n value = (fn || qs.parse)(value);\n }\n\n url[part] = value;\n break;\n\n case 'port':\n url[part] = value;\n\n if (!required(value, url.protocol)) {\n url.host = url.hostname;\n url[part] = '';\n } else if (value) {\n url.host = url.hostname +':'+ value;\n }\n\n break;\n\n case 'hostname':\n url[part] = value;\n\n if (url.port) value += ':'+ url.port;\n url.host = value;\n break;\n\n case 'host':\n url[part] = value;\n\n if (port.test(value)) {\n value = value.split(':');\n url.port = value.pop();\n url.hostname = value.join(':');\n } else {\n url.hostname = value;\n url.port = '';\n }\n\n break;\n\n case 'protocol':\n url.protocol = value.toLowerCase();\n url.slashes = !fn;\n break;\n\n case 'pathname':\n case 'hash':\n if (value) {\n var char = part === 'pathname' ? '/' : '#';\n url[part] = value.charAt(0) !== char ? char + value : value;\n } else {\n url[part] = value;\n }\n break;\n\n case 'username':\n case 'password':\n url[part] = encodeURIComponent(value);\n break;\n\n case 'auth':\n var index = value.indexOf(':');\n\n if (~index) {\n url.username = value.slice(0, index);\n url.username = encodeURIComponent(decodeURIComponent(url.username));\n\n url.password = value.slice(index + 1);\n url.password = encodeURIComponent(decodeURIComponent(url.password));\n } else {\n url.username = encodeURIComponent(decodeURIComponent(value));\n }\n }\n\n for (var i = 0; i < rules.length; i++) {\n var ins = rules[i];\n\n if (ins[4]) url[ins[1]] = url[ins[1]].toLowerCase();\n }\n\n url.auth = url.password ? url.username +':'+ url.password : url.username;\n\n url.origin = url.protocol !== 'file:' && isSpecial(url.protocol) && url.host\n ? url.protocol +'//'+ url.host\n : 'null';\n\n url.href = url.toString();\n\n return url;\n}\n\n/**\n * Transform the properties back in to a valid and full URL string.\n *\n * @param {Function} stringify Optional query stringify function.\n * @returns {String} Compiled version of the URL.\n * @public\n */\nfunction toString(stringify) {\n if (!stringify || 'function' !== typeof stringify) stringify = qs.stringify;\n\n var query\n , url = this\n , host = url.host\n , protocol = url.protocol;\n\n if (protocol && protocol.charAt(protocol.length - 1) !== ':') protocol += ':';\n\n var result =\n protocol +\n ((url.protocol && url.slashes) || isSpecial(url.protocol) ? '//' : '');\n\n if (url.username) {\n result += url.username;\n if (url.password) result += ':'+ url.password;\n result += '@';\n } else if (url.password) {\n result += ':'+ url.password;\n result += '@';\n } else if (\n url.protocol !== 'file:' &&\n isSpecial(url.protocol) &&\n !host &&\n url.pathname !== '/'\n ) {\n //\n // Add back the empty userinfo, otherwise the original invalid URL\n // might be transformed into a valid one with `url.pathname` as host.\n //\n result += '@';\n }\n\n //\n // Trailing colon is removed from `url.host` when it is parsed. If it still\n // ends with a colon, then add back the trailing colon that was removed. This\n // prevents an invalid URL from being transformed into a valid one.\n //\n if (host[host.length - 1] === ':' || (port.test(url.hostname) && !url.port)) {\n host += ':';\n }\n\n result += host + url.pathname;\n\n query = 'object' === typeof url.query ? stringify(url.query) : url.query;\n if (query) result += '?' !== query.charAt(0) ? '?'+ query : query;\n\n if (url.hash) result += url.hash;\n\n return result;\n}\n\nUrl.prototype = { set: set, toString: toString };\n\n//\n// Expose the URL parser and some additional properties that might be useful for\n// others or testing.\n//\nUrl.extractProtocol = extractProtocol;\nUrl.location = lolcation;\nUrl.trimLeft = trimLeft;\nUrl.qs = qs;\n\nmodule.exports = Url;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","export const ARRAY = 'array';\nexport const BIGINT = 'bigint';\nexport const BOOLEAN = 'boolean';\nexport const FUNCTION = 'function';\nexport const NULL = 'null';\nexport const NUMBER = 'number';\nexport const OBJECT = 'object';\nexport const STRING = 'string';\nexport const SYMBOL = 'symbol';\nexport const UNDEFINED = 'undefined';\n","// ⚠️ AUTOMATICALLY GENERATED - DO NOT CHANGE\nexport const CHANNEL = '64e10b34-2bf7-4616-9668-f99de5aa046e';\n\nexport const MAIN = 'M' + CHANNEL;\nexport const THREAD = 'T' + CHANNEL;\n","export const APPLY = 'apply';\nexport const CONSTRUCT = 'construct';\nexport const DEFINE_PROPERTY = 'defineProperty';\nexport const DELETE_PROPERTY = 'deleteProperty';\nexport const GET = 'get';\nexport const GET_OWN_PROPERTY_DESCRIPTOR = 'getOwnPropertyDescriptor';\nexport const GET_PROTOTYPE_OF = 'getPrototypeOf';\nexport const HAS = 'has';\nexport const IS_EXTENSIBLE = 'isExtensible';\nexport const OWN_KEYS = 'ownKeys';\nexport const PREVENT_EXTENSION = 'preventExtensions';\nexport const SET = 'set';\nexport const SET_PROTOTYPE_OF = 'setPrototypeOf';\n","// The goal of this file is to normalize SAB\n// at least in main -> worker() use cases.\n// This still cannot possibly solve the sync\n// worker -> main() use case if SharedArrayBuffer\n// is not available or usable.\n\nimport {CHANNEL} from './channel.js';\n\nconst {isArray} = Array;\n\nlet {SharedArrayBuffer, window} = globalThis;\nlet {notify, wait, waitAsync} = Atomics;\nlet postPatched = null;\n\n// This is needed for some version of Firefox\nif (!waitAsync) {\n waitAsync = buffer => ({\n value: new Promise(onmessage => {\n // encodeURIComponent('onmessage=({data:b})=>(Atomics.wait(b,0),postMessage(0))')\n let w = new Worker('data:application/javascript,onmessage%3D(%7Bdata%3Ab%7D)%3D%3E(Atomics.wait(b%2C0)%2CpostMessage(0))');\n w.onmessage = onmessage;\n w.postMessage(buffer);\n })\n });\n}\n\n// Monkey-patch SharedArrayBuffer if needed\ntry {\n new SharedArrayBuffer(4);\n}\ncatch (_) {\n SharedArrayBuffer = ArrayBuffer;\n\n const ids = new WeakMap;\n // patch only main -> worker():async use case\n if (window) {\n const resolvers = new Map;\n const {prototype: {postMessage}} = Worker;\n\n const listener = event => {\n const details = event.data?.[CHANNEL];\n if (!isArray(details)) {\n event.stopImmediatePropagation();\n const { id, sb } = details;\n resolvers.get(id)(sb);\n }\n };\n\n postPatched = function (data, ...rest) {\n const details = data?.[CHANNEL];\n if (isArray(details)) {\n const [id, sb] = details;\n ids.set(sb, id);\n this.addEventListener('message', listener);\n }\n return postMessage.call(this, data, ...rest);\n };\n\n waitAsync = sb => ({\n value: new Promise(resolve => {\n resolvers.set(ids.get(sb), resolve);\n }).then(buff => {\n resolvers.delete(ids.get(sb));\n ids.delete(sb);\n for (let i = 0; i < buff.length; i++) sb[i] = buff[i];\n return 'ok';\n })\n });\n }\n else {\n const as = (id, sb) => ({[CHANNEL]: { id, sb }});\n\n notify = sb => {\n postMessage(as(ids.get(sb), sb));\n };\n\n addEventListener('message', event => {\n const details = event.data?.[CHANNEL];\n if (isArray(details)) {\n const [id, sb] = details;\n ids.set(sb, id);\n }\n });\n }\n}\n\nexport {SharedArrayBuffer, isArray, notify, postPatched, wait, waitAsync};\n","/*! (c) Andrea Giammarchi - ISC */\n\nimport {FUNCTION} from 'proxy-target/types';\n\nimport {CHANNEL} from './channel.js';\nimport {GET, HAS, SET} from './shared/traps.js';\n\nimport {SharedArrayBuffer, isArray, notify, postPatched, wait, waitAsync} from './bridge.js';\n\n// just minifier friendly for Blob Workers' cases\nconst {Int32Array, Map, Uint16Array} = globalThis;\n\n// common constants / utilities for repeated operations\nconst {BYTES_PER_ELEMENT: I32_BYTES} = Int32Array;\nconst {BYTES_PER_ELEMENT: UI16_BYTES} = Uint16Array;\n\nconst waitInterrupt = (sb, delay, handler) => {\n while (wait(sb, 0, 0, delay) === 'timed-out')\n handler();\n};\n\n// retain buffers to transfer\nconst buffers = new WeakSet;\n\n// retain either main threads or workers global context\nconst context = new WeakMap;\n\nconst syncResult = {value: {then: fn => fn()}};\n\n// used to generate a unique `id` per each worker `postMessage` \"transaction\"\nlet uid = 0;\n\n/**\n * @typedef {Object} Interrupt used to sanity-check interrupts while waiting synchronously.\n * @prop {function} [handler] a callback invoked every `delay` milliseconds.\n * @prop {number} [delay=42] define `handler` invokes in terms of milliseconds.\n */\n\n/**\n * Create once a `Proxy` able to orchestrate synchronous `postMessage` out of the box.\n * @param {globalThis | Worker} self the context in which code should run\n * @param {{parse: (serialized: string) => any, stringify: (serializable: any) => string, transform?: (value:any) => any, interrupt?: () => void | Interrupt}} [JSON] an optional `JSON` like interface to `parse` or `stringify` content with extra `transform` ability.\n * @returns {ProxyHandler<globalThis> | ProxyHandler<Worker>}\n */\nconst coincident = (self, {parse = JSON.parse, stringify = JSON.stringify, transform, interrupt} = JSON) => {\n // create a Proxy once for the given context (globalThis or Worker instance)\n if (!context.has(self)) {\n // ensure no SAB gets a chance to pass through this call\n const sendMessage = postPatched || self.postMessage;\n // ensure the CHANNEL and data are posted correctly\n const post = (transfer, ...args) => sendMessage.call(self, {[CHANNEL]: args}, {transfer});\n\n const handler = typeof interrupt === FUNCTION ? interrupt : interrupt?.handler;\n const delay = interrupt?.delay || 42;\n const decoder = new TextDecoder('utf-16');\n\n // automatically uses sync wait (worker -> main)\n // or fallback to async wait (main -> worker)\n const waitFor = (isAsync, sb) => isAsync ?\n waitAsync(sb, 0) :\n ((handler ? waitInterrupt(sb, delay, handler) : wait(sb, 0)), syncResult);\n\n // prevent Harakiri https://github.com/WebReflection/coincident/issues/18\n let seppuku = false;\n\n context.set(self, new Proxy(new Map, {\n // there is very little point in checking prop in proxy for this very specific case\n // and I don't want to orchestrate a whole roundtrip neither, as stuff would fail\n // regardless if from Worker we access non existent Main callback, and vice-versa.\n // This is here mostly to guarantee that if such check is performed, at least the\n // get trap goes through and then it's up to developers guarantee they are accessing\n // stuff that actually exists elsewhere.\n [HAS]: (_, action) => typeof action === 'string' && !action.startsWith('_'),\n\n // worker related: get any utility that should be available on the main thread\n [GET]: (_, action) => action === 'then' ? null : ((...args) => {\n // transaction id\n const id = uid++;\n\n // first contact: just ask for how big the buffer should be\n // the value would be stored at index [1] while [0] is just control\n let sb = new Int32Array(new SharedArrayBuffer(I32_BYTES * 2));\n\n // if a transfer list has been passed, drop it from args\n let transfer = [];\n if (buffers.has(args.at(-1) || transfer))\n buffers.delete(transfer = args.pop());\n\n // ask for invoke with arguments and wait for it\n post(transfer, id, sb, action, transform ? args.map(transform) : args);\n\n // helps deciding how to wait for results\n const isAsync = self !== globalThis;\n\n // warn users about possible deadlock still allowing them\n // to explicitly `proxy.invoke().then(...)` without blocking\n let deadlock = 0;\n if (seppuku && isAsync)\n deadlock = setTimeout(console.warn, 1000, `💀🔒 - Possible deadlock if proxy.${action}(...args) is awaited`);\n\n return waitFor(isAsync, sb).value.then(() => {\n clearTimeout(deadlock);\n\n // commit transaction using the returned / needed buffer length\n const length = sb[1];\n\n // filter undefined results\n if (!length) return;\n\n // calculate the needed ui16 bytes length to store the result string\n const bytes = UI16_BYTES * length;\n\n // round up to the next amount of bytes divided by 4 to allow i32 operations\n sb = new Int32Array(new SharedArrayBuffer(bytes + (bytes % I32_BYTES)));\n\n // ask for results and wait for it\n post([], id, sb);\n return waitFor(isAsync, sb).value.then(() => parse(\n decoder.decode(new Uint16Array(sb.buffer).slice(0, length)))\n );\n });\n }),\n\n // main thread related: react to any utility a worker is asking for\n [SET](actions, action, callback) {\n const type = typeof callback;\n if (type !== FUNCTION)\n throw new Error(`Unable to assign ${action} as ${type}`);\n // lazy event listener and logic handling, triggered once by setters actions\n if (!actions.size) {\n // maps results by `id` as they are asked for\n const results = new Map;\n // add the event listener once (first defined setter, all others work the same)\n self.addEventListener('message', async (event) => {\n // grub the very same library CHANNEL; ignore otherwise\n const details = event.data?.[CHANNEL];\n if (isArray(details)) {\n // if early enough, avoid leaking data to other listeners\n event.stopImmediatePropagation();\n const [id, sb, ...rest] = details;\n let error;\n // action available: it must be defined/known on the main thread\n if (rest.length) {\n const [action, args] = rest;\n if (actions.has(action)) {\n seppuku = true;\n try {\n // await for result either sync or async and serialize it\n const result = await actions.get(action)(...args);\n if (result !== void 0) {\n const serialized = stringify(transform ? transform(result) : result);\n // store the result for \"the very next\" event listener call\n results.set(id, serialized);\n // communicate the required SharedArrayBuffer length out of the\n // resulting serialized string\n sb[1] = serialized.length;\n }\n }\n catch (_) {\n error = _;\n }\n finally {\n seppuku = false;\n }\n }\n // unknown action should be notified as missing on the main thread\n else {\n error = new Error(`Unsupported action: ${action}`);\n }\n // unlock the wait lock later on\n sb[0] = 1;\n }\n // no action means: get results out of the well known `id`\n // wait lock automatically unlocked here as no `0` value would\n // possibly ever land at index `0`\n else {\n const result = results.get(id);\n results.delete(id);\n // populate the SharedArrayBuffer with utf-16 chars code\n for (let ui16a = new Uint16Array(sb.buffer), i = 0; i < result.length; i++)\n ui16a[i] = result.charCodeAt(i);\n }\n // release te worker waiting either the length or the result\n notify(sb, 0);\n if (error) throw error;\n }\n });\n }\n // store this action callback allowing the setter in the process\n return !!actions.set(action, callback);\n }\n }));\n }\n return context.get(self);\n};\n\ncoincident.transfer = (...args) => (buffers.add(args), args);\n\nexport default coincident;\n","// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\nimport { DIR_MODE, SEEK_CUR, SEEK_END, instanceOfStream, } from './emscripten';\nexport const DRIVE_SEPARATOR = ':';\nexport const DRIVE_API_PATH = '/api/drive.v1';\nexport const BLOCK_SIZE = 4096;\nconst encoder = new TextEncoder();\nconst decoder = new TextDecoder('utf-8');\n// Mapping flag -> do we need to overwrite the file upon closing it\nconst flagNeedsWrite = {\n 0 /*O_RDONLY*/: false,\n 1 /*O_WRONLY*/: true,\n 2 /*O_RDWR*/: true,\n 64 /*O_CREAT*/: true,\n 65 /*O_WRONLY|O_CREAT*/: true,\n 66 /*O_RDWR|O_CREAT*/: true,\n 129 /*O_WRONLY|O_EXCL*/: true,\n 193 /*O_WRONLY|O_CREAT|O_EXCL*/: true,\n 514 /*O_RDWR|O_TRUNC*/: true,\n 577 /*O_WRONLY|O_CREAT|O_TRUNC*/: true,\n 578 /*O_CREAT|O_RDWR|O_TRUNC*/: true,\n 705 /*O_WRONLY|O_CREAT|O_EXCL|O_TRUNC*/: true,\n 706 /*O_RDWR|O_CREAT|O_EXCL|O_TRUNC*/: true,\n 1024 /*O_APPEND*/: true,\n 1025 /*O_WRONLY|O_APPEND*/: true,\n 1026 /*O_RDWR|O_APPEND*/: true,\n 1089 /*O_WRONLY|O_CREAT|O_APPEND*/: true,\n 1090 /*O_RDWR|O_CREAT|O_APPEND*/: true,\n 1153 /*O_WRONLY|O_EXCL|O_APPEND*/: true,\n 1154 /*O_RDWR|O_EXCL|O_APPEND*/: true,\n 1217 /*O_WRONLY|O_CREAT|O_EXCL|O_APPEND*/: true,\n 1218 /*O_RDWR|O_CREAT|O_EXCL|O_APPEND*/: true,\n 4096 /*O_RDONLY|O_DSYNC*/: true,\n 4098 /*O_RDWR|O_DSYNC*/: true,\n};\nexport class DriveFSEmscriptenStreamOps {\n constructor(fs) {\n this.fs = fs;\n }\n open(stream) {\n const path = this.fs.realPath(stream.node);\n if (this.fs.FS.isFile(stream.node.mode)) {\n stream.file = this.fs.API.get(path);\n }\n }\n close(stream) {\n if (!this.fs.FS.isFile(stream.node.mode) || !stream.file) {\n return;\n }\n const path = this.fs.realPath(stream.node);\n const flags = stream.flags;\n let parsedFlags = typeof flags === 'string' ? parseInt(flags, 10) : flags;\n parsedFlags &= 0x1fff;\n let needsWrite = true;\n if (parsedFlags in flagNeedsWrite) {\n needsWrite = flagNeedsWrite[parsedFlags];\n }\n if (needsWrite) {\n this.fs.API.put(path, stream.file);\n }\n stream.file = undefined;\n }\n read(stream, buffer, offset, length, position) {\n if (length <= 0 ||\n stream.file === undefined ||\n position >= (stream.file.data.length || 0)) {\n return 0;\n }\n const size = Math.min(stream.file.data.length - position, length);\n buffer.set(stream.file.data.subarray(position, position + size), offset);\n return size;\n }\n write(stream, buffer, offset, length, position) {\n var _a;\n if (length <= 0 || stream.file === undefined) {\n return 0;\n }\n stream.node.timestamp = Date.now();\n if (position + length > (((_a = stream.file) === null || _a === void 0 ? void 0 : _a.data.length) || 0)) {\n const oldData = stream.file.data ? stream.file.data : new Uint8Array();\n stream.file.data = new Uint8Array(position + length);\n stream.file.data.set(oldData);\n }\n stream.file.data.set(buffer.subarray(offset, offset + length), position);\n return length;\n }\n llseek(stream, offset, whence) {\n let position = offset;\n if (whence === SEEK_CUR) {\n position += stream.position;\n }\n else if (whence === SEEK_END) {\n if (this.fs.FS.isFile(stream.node.mode)) {\n if (stream.file !== undefined) {\n position += stream.file.data.length;\n }\n else {\n throw new this.fs.FS.ErrnoError(this.fs.ERRNO_CODES.EPERM);\n }\n }\n }\n if (position < 0) {\n throw new this.fs.FS.ErrnoError(this.fs.ERRNO_CODES.EINVAL);\n }\n return position;\n }\n}\nexport class DriveFSEmscriptenNodeOps {\n constructor(fs) {\n this.fs = fs;\n }\n node(nodeOrStream) {\n if (instanceOfStream(nodeOrStream)) {\n return nodeOrStream.node;\n }\n return nodeOrStream;\n }\n getattr(value) {\n const node = this.node(value);\n return {\n ...this.fs.API.getattr(this.fs.realPath(node)),\n mode: node.mode,\n ino: node.id,\n };\n }\n setattr(value, attr) {\n const node = this.node(value);\n for (const [key, value] of Object.entries(attr)) {\n switch (key) {\n case 'mode':\n node.mode = value;\n break;\n case 'timestamp':\n node.timestamp = value;\n break;\n case 'size': {\n const size = value;\n const path = this.fs.realPath(node);\n if (this.fs.FS.isFile(node.mode) && size >= 0) {\n const file = this.fs.API.get(path);\n const oldData = file.data ? file.data : new Uint8Array();\n if (size !== oldData.length) {\n if (size < oldData.length) {\n file.data = file.data.slice(0, size);\n }\n else {\n file.data = new Uint8Array(size);\n file.data.set(oldData);\n }\n this.fs.API.put(path, file);\n }\n }\n else {\n console.warn('setattr size of', size, 'on', node, 'not yet implemented');\n }\n break;\n }\n default:\n console.warn('setattr', key, 'of', value, 'on', node, 'not yet implemented');\n break;\n }\n }\n }\n lookup(parent, name) {\n const node = this.node(parent);\n const path = this.fs.PATH.join2(this.fs.realPath(node), name);\n const result = this.fs.API.lookup(path);\n if (!result.ok) {\n throw this.fs.FS.genericErrors[this.fs.ERRNO_CODES['ENOENT']];\n }\n return this.fs.createNode(node, name, result.mode, 0);\n }\n mknod(parent, name, mode, dev) {\n const node = this.node(parent);\n const path = this.fs.PATH.join2(this.fs.realPath(node), name);\n this.fs.API.mknod(path, mode);\n return this.fs.createNode(node, name, mode, dev);\n }\n rename(value, newDir, newName) {\n const oldNode = this.node(value);\n const newDirNode = this.node(newDir);\n this.fs.API.rename(oldNode.parent\n ? this.fs.PATH.join2(this.fs.realPath(oldNode.parent), oldNode.name)\n : oldNode.name, this.fs.PATH.join2(this.fs.realPath(newDirNode), newName));\n // Updating the in-memory node\n oldNode.name = newName;\n oldNode.parent = newDirNode;\n }\n unlink(parent, name) {\n this.fs.API.rmdir(this.fs.PATH.join2(this.fs.realPath(this.node(parent)), name));\n }\n rmdir(parent, name) {\n this.fs.API.rmdir(this.fs.PATH.join2(this.fs.realPath(this.node(parent)), name));\n }\n readdir(value) {\n return this.fs.API.readdir(this.fs.realPath(this.node(value)));\n }\n symlink(parent, newName, oldPath) {\n throw new this.fs.FS.ErrnoError(this.fs.ERRNO_CODES['EPERM']);\n }\n readlink(node) {\n throw new this.fs.FS.ErrnoError(this.fs.ERRNO_CODES['EPERM']);\n }\n}\n/**\n * ContentsAPI base class\n */\nexport class ContentsAPI {\n constructor(driveName, mountpoint, FS, ERRNO_CODES) {\n this._driveName = driveName;\n this._mountpoint = mountpoint;\n this.FS = FS;\n this.ERRNO_CODES = ERRNO_CODES;\n }\n lookup(path) {\n return this.request({ method: 'lookup', path: this.normalizePath(path) });\n }\n getmode(path) {\n return this.request({ method: 'getmode', path: this.normalizePath(path) });\n }\n mknod(path, mode) {\n return this.request({\n method: 'mknod',\n path: this.normalizePath(path),\n data: { mode },\n });\n }\n rename(oldPath, newPath) {\n return this.request({\n method: 'rename',\n path: this.normalizePath(oldPath),\n data: { newPath: this.normalizePath(newPath) },\n });\n }\n readdir(path) {\n const dirlist = this.request({\n method: 'readdir',\n path: this.normalizePath(path),\n });\n dirlist.push('.');\n dirlist.push('..');\n return dirlist;\n }\n rmdir(path) {\n return this.request({ method: 'rmdir', path: this.normalizePath(path) });\n }\n get(path) {\n const response = this.request({\n method: 'get',\n path: this.normalizePath(path),\n });\n if (!response) {\n throw new this.FS.ErrnoError(this.ERRNO_CODES['ENOENT']);\n }\n const serializedContent = response.content;\n const format = response.format;\n switch (format) {\n case 'json':\n case 'text':\n return {\n data: encoder.encode(serializedContent),\n format,\n };\n case 'base64': {\n const binString = atob(serializedContent);\n const len = binString.length;\n const data = new Uint8Array(len);\n for (let i = 0; i < len; i++) {\n data[i] = binString.charCodeAt(i);\n }\n return {\n data,\n format,\n };\n }\n default:\n throw new this.FS.ErrnoError(this.ERRNO_CODES['ENOENT']);\n }\n }\n put(path, value) {\n switch (value.format) {\n case 'json':\n case 'text':\n return this.request({\n method: 'put',\n path: this.normalizePath(path),\n data: {\n format: value.format,\n data: decoder.decode(value.data),\n },\n });\n case 'base64': {\n let binary = '';\n for (let i = 0; i < value.data.byteLength; i++) {\n binary += String.fromCharCode(value.data[i]);\n }\n return this.request({\n method: 'put',\n path: this.normalizePath(path),\n data: {\n format: value.format,\n data: btoa(binary),\n },\n });\n }\n }\n }\n getattr(path) {\n const stats = this.request({\n method: 'getattr',\n path: this.normalizePath(path),\n });\n // Turn datetimes into proper objects\n if (stats.atime) {\n stats.atime = new Date(stats.atime);\n }\n if (stats.mtime) {\n stats.mtime = new Date(stats.mtime);\n }\n if (stats.ctime) {\n stats.ctime = new Date(stats.ctime);\n }\n // ensure a non-undefined size (0 isn't great, though)\n stats.size = stats.size || 0;\n return stats;\n }\n /**\n * Normalize a Path by making it compliant for the content manager\n *\n * @param path: the path relatively to the Emscripten drive\n */\n normalizePath(path) {\n // Remove mountpoint prefix\n if (path.startsWith(this._mountpoint)) {\n path = path.slice(this._mountpoint.length);\n }\n // Add JupyterLab drive name\n if (this._driveName) {\n path = `${this._driveName}${DRIVE_SEPARATOR}${path}`;\n }\n return path;\n }\n}\n/**\n * An Emscripten-compatible synchronous Contents API using the service worker.\n */\nexport class ServiceWorkerContentsAPI extends ContentsAPI {\n constructor(baseUrl, driveName, mountpoint, FS, ERRNO_CODES) {\n super(driveName, mountpoint, FS, ERRNO_CODES);\n this._baseUrl = baseUrl;\n }\n request(data) {\n const xhr = new XMLHttpRequest();\n xhr.open('POST', encodeURI(this.endpoint), false);\n try {\n xhr.send(JSON.stringify(data));\n }\n catch (e) {\n console.error(e);\n }\n if (xhr.status >= 400) {\n throw new this.FS.ErrnoError(this.ERRNO_CODES['EINVAL']);\n }\n return JSON.parse(xhr.responseText);\n }\n /**\n * Get the api/drive endpoint\n */\n get endpoint() {\n return `${this._baseUrl}api/drive`;\n }\n}\nexport class DriveFS {\n constructor(options) {\n this.FS = options.FS;\n this.PATH = options.PATH;\n this.ERRNO_CODES = options.ERRNO_CODES;\n this.API = this.createAPI(options);\n this.driveName = options.driveName;\n this.node_ops = new DriveFSEmscriptenNodeOps(this);\n this.stream_ops = new DriveFSEmscriptenStreamOps(this);\n }\n /**\n * Create the ContentsAPI.\n *\n * This is supposed to be overwritten if needed.\n */\n createAPI(options) {\n return new ServiceWorkerContentsAPI(options.baseUrl, options.driveName, options.mountpoint, options.FS, options.ERRNO_CODES);\n }\n mount(mount) {\n return this.createNode(null, mount.mountpoint, DIR_MODE | 511, 0);\n }\n createNode(parent, name, mode, dev) {\n const FS = this.FS;\n if (!FS.isDir(mode) && !FS.isFile(mode)) {\n throw new FS.ErrnoError(this.ERRNO_CODES['EINVAL']);\n }\n const node = FS.createNode(parent, name, mode, dev);\n node.node_ops = this.node_ops;\n node.stream_ops = this.stream_ops;\n return node;\n }\n getMode(path) {\n return this.API.getmode(path);\n }\n realPath(node) {\n const parts = [];\n let currentNode = node;\n parts.push(currentNode.name);\n while (currentNode.parent !== currentNode) {\n currentNode = currentNode.parent;\n parts.push(currentNode.name);\n }\n parts.reverse();\n return this.PATH.join.apply(null, parts);\n }\n}\n//# sourceMappingURL=drivefs.js.map","// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/// <reference path=\"../../../node_modules/@types/emscripten/index.d.ts\" />\nexport const DIR_MODE = 16895; // 040777\nexport const FILE_MODE = 33206; // 100666\nexport const SEEK_CUR = 1;\nexport const SEEK_END = 2;\nexport function instanceOfStream(nodeOrStream) {\n return 'node' in nodeOrStream;\n}\n//# sourceMappingURL=emscripten.js.map","var __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __esm = (fn, res) => function __init() {\n return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;\n};\nvar __commonJS = (cb, mod) => function __require() {\n return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;\n};\nvar __copyProps = (to, from2, except, desc) => {\n if (from2 && typeof from2 === \"object\" || typeof from2 === \"function\") {\n for (let key of __getOwnPropNames(from2))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from2[key], enumerable: !(desc = __getOwnPropDesc(from2, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\n\n// node_modules/@esbuild-plugins/node-globals-polyfill/process.js\nfunction defaultSetTimout() {\n throw new Error(\"setTimeout has not been defined\");\n}\nfunction defaultClearTimeout() {\n throw new Error(\"clearTimeout has not been defined\");\n}\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n return setTimeout(fun, 0);\n }\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n return cachedSetTimeout(fun, 0);\n } catch (e) {\n try {\n return cachedSetTimeout.call(null, fun, 0);\n } catch (e2) {\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n return clearTimeout(marker);\n }\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n return cachedClearTimeout(marker);\n } catch (e) {\n try {\n return cachedClearTimeout.call(null, marker);\n } catch (e2) {\n return cachedClearTimeout.call(this, marker);\n }\n }\n}\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n var len = queue.length;\n while (len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\nfunction nextTick(fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n}\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nfunction noop() {\n}\nfunction binding(name) {\n throw new Error(\"process.binding is not supported\");\n}\nfunction cwd() {\n return \"/\";\n}\nfunction chdir(dir) {\n throw new Error(\"process.chdir is not supported\");\n}\nfunction umask() {\n return 0;\n}\nfunction hrtime(previousTimestamp) {\n var clocktime = performanceNow.call(performance2) * 1e-3;\n var seconds = Math.floor(clocktime);\n var nanoseconds = Math.floor(clocktime % 1 * 1e9);\n if (previousTimestamp) {\n seconds = seconds - previousTimestamp[0];\n nanoseconds = nanoseconds - previousTimestamp[1];\n if (nanoseconds < 0) {\n seconds--;\n nanoseconds += 1e9;\n }\n }\n return [seconds, nanoseconds];\n}\nfunction uptime() {\n var currentTime = /* @__PURE__ */ new Date();\n var dif = currentTime - startTime;\n return dif / 1e3;\n}\nvar cachedSetTimeout, cachedClearTimeout, queue, draining, currentQueue, queueIndex, title, platform, browser, env, argv, version, versions, release, config, on, addListener, once, off, removeListener, removeAllListeners, emit, performance2, performanceNow, startTime, process, defines;\nvar init_process = __esm({\n \"node_modules/@esbuild-plugins/node-globals-polyfill/process.js\"() {\n cachedSetTimeout = defaultSetTimout;\n cachedClearTimeout = defaultClearTimeout;\n if (typeof globalThis.setTimeout === \"function\") {\n cachedSetTimeout = setTimeout;\n }\n if (typeof globalThis.clearTimeout === \"function\") {\n cachedClearTimeout = clearTimeout;\n }\n queue = [];\n draining = false;\n queueIndex = -1;\n Item.prototype.run = function() {\n this.fun.apply(null, this.array);\n };\n title = \"browser\";\n platform = \"browser\";\n browser = true;\n env = {};\n argv = [];\n version = \"\";\n versions = {};\n release = {};\n config = {};\n on = noop;\n addListener = noop;\n once = noop;\n off = noop;\n removeListener = noop;\n removeAllListeners = noop;\n emit = noop;\n performance2 = globalThis.performance || {};\n performanceNow = performance2.now || performance2.mozNow || performance2.msNow || performance2.oNow || performance2.webkitNow || function() {\n return (/* @__PURE__ */ new Date()).getTime();\n };\n startTime = /* @__PURE__ */ new Date();\n process = {\n nextTick,\n title,\n browser,\n env,\n argv,\n version,\n versions,\n on,\n addListener,\n once,\n off,\n removeListener,\n removeAllListeners,\n emit,\n binding,\n cwd,\n chdir,\n umask,\n hrtime,\n platform,\n release,\n config,\n uptime\n };\n defines = {};\n Object.keys(defines).forEach((key) => {\n const segs = key.split(\".\");\n let target = process;\n for (let i = 0; i < segs.length; i++) {\n const seg = segs[i];\n if (i === segs.length - 1) {\n target[seg] = defines[key];\n } else {\n target = target[seg] || (target[seg] = {});\n }\n }\n });\n }\n});\n\n// node_modules/@esbuild-plugins/node-globals-polyfill/Buffer.js\nfunction init() {\n inited = true;\n var code = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n for (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i];\n revLookup[code.charCodeAt(i)] = i;\n }\n revLookup[\"-\".charCodeAt(0)] = 62;\n revLookup[\"_\".charCodeAt(0)] = 63;\n}\nfunction base64toByteArray(b64) {\n if (!inited) {\n init();\n }\n var i, j, l, tmp, placeHolders, arr;\n var len = b64.length;\n if (len % 4 > 0) {\n throw new Error(\"Invalid string. Length must be a multiple of 4\");\n }\n placeHolders = b64[len - 2] === \"=\" ? 2 : b64[len - 1] === \"=\" ? 1 : 0;\n arr = new Arr(len * 3 / 4 - placeHolders);\n l = placeHolders > 0 ? len - 4 : len;\n var L = 0;\n for (i = 0, j = 0; i < l; i += 4, j += 3) {\n tmp = revLookup[b64.charCodeAt(i)] << 18 | revLookup[b64.charCodeAt(i + 1)] << 12 | revLookup[b64.charCodeAt(i + 2)] << 6 | revLookup[b64.charCodeAt(i + 3)];\n arr[L++] = tmp >> 16 & 255;\n arr[L++] = tmp >> 8 & 255;\n arr[L++] = tmp & 255;\n }\n if (placeHolders === 2) {\n tmp = revLookup[b64.charCodeAt(i)] << 2 | revLookup[b64.charCodeAt(i + 1)] >> 4;\n arr[L++] = tmp & 255;\n } else if (placeHolders === 1) {\n tmp = revLookup[b64.charCodeAt(i)] << 10 | revLookup[b64.charCodeAt(i + 1)] << 4 | revLookup[b64.charCodeAt(i + 2)] >> 2;\n arr[L++] = tmp >> 8 & 255;\n arr[L++] = tmp & 255;\n }\n return arr;\n}\nfunction tripletToBase64(num) {\n return lookup[num >> 18 & 63] + lookup[num >> 12 & 63] + lookup[num >> 6 & 63] + lookup[num & 63];\n}\nfunction encodeChunk(uint8, start, end) {\n var tmp;\n var output = [];\n for (var i = start; i < end; i += 3) {\n tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + uint8[i + 2];\n output.push(tripletToBase64(tmp));\n }\n return output.join(\"\");\n}\nfunction base64fromByteArray(uint8) {\n if (!inited) {\n init();\n }\n var tmp;\n var len = uint8.length;\n var extraBytes = len % 3;\n var output = \"\";\n var parts = [];\n var maxChunkLength = 16383;\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(\n encodeChunk(\n uint8,\n i,\n i + maxChunkLength > len2 ? len2 : i + maxChunkLength\n )\n );\n }\n if (extraBytes === 1) {\n tmp = uint8[len - 1];\n output += lookup[tmp >> 2];\n output += lookup[tmp << 4 & 63];\n output += \"==\";\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1];\n output += lookup[tmp >> 10];\n output += lookup[tmp >> 4 & 63];\n output += lookup[tmp << 2 & 63];\n output += \"=\";\n }\n parts.push(output);\n return parts.join(\"\");\n}\nfunction kMaxLength() {\n return Buffer2.TYPED_ARRAY_SUPPORT ? 2147483647 : 1073741823;\n}\nfunction createBuffer(that, length) {\n if (kMaxLength() < length) {\n throw new RangeError(\"Invalid typed array length\");\n }\n if (Buffer2.TYPED_ARRAY_SUPPORT) {\n that = new Uint8Array(length);\n that.__proto__ = Buffer2.prototype;\n } else {\n if (that === null) {\n that = new Buffer2(length);\n }\n that.length = length;\n }\n return that;\n}\nfunction Buffer2(arg, encodingOrOffset, length) {\n if (!Buffer2.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer2)) {\n return new Buffer2(arg, encodingOrOffset, length);\n }\n if (typeof arg === \"number\") {\n if (typeof encodingOrOffset === \"string\") {\n throw new Error(\n \"If encoding is specified then the first argument must be a string\"\n );\n }\n return allocUnsafe(this, arg);\n }\n return from(this, arg, encodingOrOffset, length);\n}\nfunction from(that, value, encodingOrOffset, length) {\n if (typeof value === \"number\") {\n throw new TypeError('\"value\" argument must not be a number');\n }\n if (typeof ArrayBuffer !== \"undefined\" && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length);\n }\n if (typeof value === \"string\") {\n return fromString(that, value, encodingOrOffset);\n }\n return fromObject(that, value);\n}\nfunction assertSize(size) {\n if (typeof size !== \"number\") {\n throw new TypeError('\"size\" argument must be a number');\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative');\n }\n}\nfunction alloc(that, size, fill2, encoding) {\n assertSize(size);\n if (size <= 0) {\n return createBuffer(that, size);\n }\n if (fill2 !== void 0) {\n return typeof encoding === \"string\" ? createBuffer(that, size).fill(fill2, encoding) : createBuffer(that, size).fill(fill2);\n }\n return createBuffer(that, size);\n}\nfunction allocUnsafe(that, size) {\n assertSize(size);\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0);\n if (!Buffer2.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0;\n }\n }\n return that;\n}\nfunction fromString(that, string, encoding) {\n if (typeof encoding !== \"string\" || encoding === \"\") {\n encoding = \"utf8\";\n }\n if (!Buffer2.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding');\n }\n var length = byteLength(string, encoding) | 0;\n that = createBuffer(that, length);\n var actual = that.write(string, encoding);\n if (actual !== length) {\n that = that.slice(0, actual);\n }\n return that;\n}\nfunction fromArrayLike(that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0;\n that = createBuffer(that, length);\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255;\n }\n return that;\n}\nfunction fromArrayBuffer(that, array, byteOffset, length) {\n array.byteLength;\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError(\"'offset' is out of bounds\");\n }\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError(\"'length' is out of bounds\");\n }\n if (byteOffset === void 0 && length === void 0) {\n array = new Uint8Array(array);\n } else if (length === void 0) {\n array = new Uint8Array(array, byteOffset);\n } else {\n array = new Uint8Array(array, byteOffset, length);\n }\n if (Buffer2.TYPED_ARRAY_SUPPORT) {\n that = array;\n that.__proto__ = Buffer2.prototype;\n } else {\n that = fromArrayLike(that, array);\n }\n return that;\n}\nfunction fromObject(that, obj) {\n if (internalIsBuffer(obj)) {\n var len = checked(obj.length) | 0;\n that = createBuffer(that, len);\n if (that.length === 0) {\n return that;\n }\n obj.copy(that, 0, 0, len);\n return that;\n }\n if (obj) {\n if (typeof ArrayBuffer !== \"undefined\" && obj.buffer instanceof ArrayBuffer || \"length\" in obj) {\n if (typeof obj.length !== \"number\" || isnan(obj.length)) {\n return createBuffer(that, 0);\n }\n return fromArrayLike(that, obj);\n }\n if (obj.type === \"Buffer\" && Array.isArray(obj.data)) {\n return fromArrayLike(that, obj.data);\n }\n }\n throw new TypeError(\n \"First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.\"\n );\n}\nfunction checked(length) {\n if (length >= kMaxLength()) {\n throw new RangeError(\n \"Attempt to allocate Buffer larger than maximum size: 0x\" + kMaxLength().toString(16) + \" bytes\"\n );\n }\n return length | 0;\n}\nfunction internalIsBuffer(b) {\n return !!(b != null && b._isBuffer);\n}\nfunction byteLength(string, encoding) {\n if (internalIsBuffer(string)) {\n return string.length;\n }\n if (typeof ArrayBuffer !== \"undefined\" && typeof ArrayBuffer.isView === \"function\" && (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength;\n }\n if (typeof string !== \"string\") {\n string = \"\" + string;\n }\n var len = string.length;\n if (len === 0) return 0;\n var loweredCase = false;\n for (; ; ) {\n switch (encoding) {\n case \"ascii\":\n case \"latin1\":\n case \"binary\":\n return len;\n case \"utf8\":\n case \"utf-8\":\n case void 0:\n return utf8ToBytes(string).length;\n case \"ucs2\":\n case \"ucs-2\":\n case \"utf16le\":\n case \"utf-16le\":\n return len * 2;\n case \"hex\":\n return len >>> 1;\n case \"base64\":\n return base64ToBytes(string).length;\n default:\n if (loweredCase) return utf8ToBytes(string).length;\n encoding = (\"\" + encoding).toLowerCase();\n loweredCase = true;\n }\n }\n}\nfunction slowToString(encoding, start, end) {\n var loweredCase = false;\n if (start === void 0 || start < 0) {\n start = 0;\n }\n if (start > this.length) {\n return \"\";\n }\n if (end === void 0 || end > this.length) {\n end = this.length;\n }\n if (end <= 0) {\n return \"\";\n }\n end >>>= 0;\n start >>>= 0;\n if (end <= start) {\n return \"\";\n }\n if (!encoding) encoding = \"utf8\";\n while (true) {\n switch (encoding) {\n case \"hex\":\n return hexSlice(this, start, end);\n case \"utf8\":\n case \"utf-8\":\n return utf8Slice(this, start, end);\n case \"ascii\":\n return asciiSlice(this, start, end);\n case \"latin1\":\n case \"binary\":\n return latin1Slice(this, start, end);\n case \"base64\":\n return base64Slice(this, start, end);\n case \"ucs2\":\n case \"ucs-2\":\n case \"utf16le\":\n case \"utf-16le\":\n return utf16leSlice(this, start, end);\n default:\n if (loweredCase)\n throw new TypeError(\"Unknown encoding: \" + encoding);\n encoding = (encoding + \"\").toLowerCase();\n loweredCase = true;\n }\n }\n}\nfunction swap(b, n, m) {\n var i = b[n];\n b[n] = b[m];\n b[m] = i;\n}\nfunction bidirectionalIndexOf(buffer, val, byteOffset, encoding, dir) {\n if (buffer.length === 0) return -1;\n if (typeof byteOffset === \"string\") {\n encoding = byteOffset;\n byteOffset = 0;\n } else if (byteOffset > 2147483647) {\n byteOffset = 2147483647;\n } else if (byteOffset < -2147483648) {\n byteOffset = -2147483648;\n }\n byteOffset = +byteOffset;\n if (isNaN(byteOffset)) {\n byteOffset = dir ? 0 : buffer.length - 1;\n }\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset;\n if (byteOffset >= buffer.length) {\n if (dir) return -1;\n else byteOffset = buffer.length - 1;\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0;\n else return -1;\n }\n if (typeof val === \"string\") {\n val = Buffer2.from(val, encoding);\n }\n if (internalIsBuffer(val)) {\n if (val.length === 0) {\n return -1;\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir);\n } else if (typeof val === \"number\") {\n val = val & 255;\n if (Buffer2.TYPED_ARRAY_SUPPORT && typeof Uint8Array.prototype.indexOf === \"function\") {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(\n buffer,\n val,\n byteOffset\n );\n } else {\n return Uint8Array.prototype.lastIndexOf.call(\n buffer,\n val,\n byteOffset\n );\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir);\n }\n throw new TypeError(\"val must be string, number or Buffer\");\n}\nfunction arrayIndexOf(arr, val, byteOffset, encoding, dir) {\n var indexSize = 1;\n var arrLength = arr.length;\n var valLength = val.length;\n if (encoding !== void 0) {\n encoding = String(encoding).toLowerCase();\n if (encoding === \"ucs2\" || encoding === \"ucs-2\" || encoding === \"utf16le\" || encoding === \"utf-16le\") {\n if (arr.length < 2 || val.length < 2) {\n return -1;\n }\n indexSize = 2;\n arrLength /= 2;\n valLength /= 2;\n byteOffset /= 2;\n }\n }\n function read(buf, i2) {\n if (indexSize === 1) {\n return buf[i2];\n } else {\n return buf.readUInt16BE(i2 * indexSize);\n }\n }\n var i;\n if (dir) {\n var foundIndex = -1;\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i;\n if (i - foundIndex + 1 === valLength)\n return foundIndex * indexSize;\n } else {\n if (foundIndex !== -1) i -= i - foundIndex;\n foundIndex = -1;\n }\n }\n } else {\n if (byteOffset + valLength > arrLength)\n byteOffset = arrLength - valLength;\n for (i = byteOffset; i >= 0; i--) {\n var found = true;\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false;\n break;\n }\n }\n if (found) return i;\n }\n }\n return -1;\n}\nfunction hexWrite(buf, string, offset, length) {\n offset = Number(offset) || 0;\n var remaining = buf.length - offset;\n if (!length) {\n length = remaining;\n } else {\n length = Number(length);\n if (length > remaining) {\n length = remaining;\n }\n }\n var strLen = string.length;\n if (strLen % 2 !== 0) throw new TypeError(\"Invalid hex string\");\n if (length > strLen / 2) {\n length = strLen / 2;\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16);\n if (isNaN(parsed)) return i;\n buf[offset + i] = parsed;\n }\n return i;\n}\nfunction utf8Write(buf, string, offset, length) {\n return blitBuffer(\n utf8ToBytes(string, buf.length - offset),\n buf,\n offset,\n length\n );\n}\nfunction asciiWrite(buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length);\n}\nfunction latin1Write(buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length);\n}\nfunction base64Write(buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length);\n}\nfunction ucs2Write(buf, string, offset, length) {\n return blitBuffer(\n utf16leToBytes(string, buf.length - offset),\n buf,\n offset,\n length\n );\n}\nfunction base64Slice(buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64fromByteArray(buf);\n } else {\n return base64fromByteArray(buf.slice(start, end));\n }\n}\nfunction utf8Slice(buf, start, end) {\n end = Math.min(buf.length, end);\n var res = [];\n var i = start;\n while (i < end) {\n var firstByte = buf[i];\n var codePoint = null;\n var bytesPerSequence = firstByte > 239 ? 4 : firstByte > 223 ? 3 : firstByte > 191 ? 2 : 1;\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint;\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 128) {\n codePoint = firstByte;\n }\n break;\n case 2:\n secondByte = buf[i + 1];\n if ((secondByte & 192) === 128) {\n tempCodePoint = (firstByte & 31) << 6 | secondByte & 63;\n if (tempCodePoint > 127) {\n codePoint = tempCodePoint;\n }\n }\n break;\n case 3:\n secondByte = buf[i + 1];\n thirdByte = buf[i + 2];\n if ((secondByte & 192) === 128 && (thirdByte & 192) === 128) {\n tempCodePoint = (firstByte & 15) << 12 | (secondByte & 63) << 6 | thirdByte & 63;\n if (tempCodePoint > 2047 && (tempCodePoint < 55296 || tempCodePoint > 57343)) {\n codePoint = tempCodePoint;\n }\n }\n break;\n case 4:\n secondByte = buf[i + 1];\n thirdByte = buf[i + 2];\n fourthByte = buf[i + 3];\n if ((secondByte & 192) === 128 && (thirdByte & 192) === 128 && (fourthByte & 192) === 128) {\n tempCodePoint = (firstByte & 15) << 18 | (secondByte & 63) << 12 | (thirdByte & 63) << 6 | fourthByte & 63;\n if (tempCodePoint > 65535 && tempCodePoint < 1114112) {\n codePoint = tempCodePoint;\n }\n }\n }\n }\n if (codePoint === null) {\n codePoint = 65533;\n bytesPerSequence = 1;\n } else if (codePoint > 65535) {\n codePoint -= 65536;\n res.push(codePoint >>> 10 & 1023 | 55296);\n codePoint = 56320 | codePoint & 1023;\n }\n res.push(codePoint);\n i += bytesPerSequence;\n }\n return decodeCodePointsArray(res);\n}\nfunction decodeCodePointsArray(codePoints) {\n var len = codePoints.length;\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints);\n }\n var res = \"\";\n var i = 0;\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n );\n }\n return res;\n}\nfunction asciiSlice(buf, start, end) {\n var ret = \"\";\n end = Math.min(buf.length, end);\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 127);\n }\n return ret;\n}\nfunction latin1Slice(buf, start, end) {\n var ret = \"\";\n end = Math.min(buf.length, end);\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i]);\n }\n return ret;\n}\nfunction hexSlice(buf, start, end) {\n var len = buf.length;\n if (!start || start < 0) start = 0;\n if (!end || end < 0 || end > len) end = len;\n var out = \"\";\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i]);\n }\n return out;\n}\nfunction utf16leSlice(buf, start, end) {\n var bytes = buf.slice(start, end);\n var res = \"\";\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256);\n }\n return res;\n}\nfunction checkOffset(offset, ext, length) {\n if (offset % 1 !== 0 || offset < 0)\n throw new RangeError(\"offset is not uint\");\n if (offset + ext > length)\n throw new RangeError(\"Trying to access beyond buffer length\");\n}\nfunction checkInt(buf, value, offset, ext, max, min) {\n if (!internalIsBuffer(buf))\n throw new TypeError('\"buffer\" argument must be a Buffer instance');\n if (value > max || value < min)\n throw new RangeError('\"value\" argument is out of bounds');\n if (offset + ext > buf.length) throw new RangeError(\"Index out of range\");\n}\nfunction objectWriteUInt16(buf, value, offset, littleEndian) {\n if (value < 0) value = 65535 + value + 1;\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & 255 << 8 * (littleEndian ? i : 1 - i)) >>> (littleEndian ? i : 1 - i) * 8;\n }\n}\nfunction objectWriteUInt32(buf, value, offset, littleEndian) {\n if (value < 0) value = 4294967295 + value + 1;\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = value >>> (littleEndian ? i : 3 - i) * 8 & 255;\n }\n}\nfunction checkIEEE754(buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError(\"Index out of range\");\n if (offset < 0) throw new RangeError(\"Index out of range\");\n}\nfunction writeFloat(buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(\n buf,\n value,\n offset,\n 4,\n 34028234663852886e22,\n -34028234663852886e22\n );\n }\n ieee754write(buf, value, offset, littleEndian, 23, 4);\n return offset + 4;\n}\nfunction writeDouble(buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(\n buf,\n value,\n offset,\n 8,\n 17976931348623157e292,\n -17976931348623157e292\n );\n }\n ieee754write(buf, value, offset, littleEndian, 52, 8);\n return offset + 8;\n}\nfunction base64clean(str) {\n str = stringtrim(str).replace(INVALID_BASE64_RE, \"\");\n if (str.length < 2) return \"\";\n while (str.length % 4 !== 0) {\n str = str + \"=\";\n }\n return str;\n}\nfunction stringtrim(str) {\n if (str.trim) return str.trim();\n return str.replace(/^\\s+|\\s+$/g, \"\");\n}\nfunction toHex(n) {\n if (n < 16) return \"0\" + n.toString(16);\n return n.toString(16);\n}\nfunction utf8ToBytes(string, units) {\n units = units || Infinity;\n var codePoint;\n var length = string.length;\n var leadSurrogate = null;\n var bytes = [];\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i);\n if (codePoint > 55295 && codePoint < 57344) {\n if (!leadSurrogate) {\n if (codePoint > 56319) {\n if ((units -= 3) > -1) bytes.push(239, 191, 189);\n continue;\n } else if (i + 1 === length) {\n if ((units -= 3) > -1) bytes.push(239, 191, 189);\n continue;\n }\n leadSurrogate = codePoint;\n continue;\n }\n if (codePoint < 56320) {\n if ((units -= 3) > -1) bytes.push(239, 191, 189);\n leadSurrogate = codePoint;\n continue;\n }\n codePoint = (leadSurrogate - 55296 << 10 | codePoint - 56320) + 65536;\n } else if (leadSurrogate) {\n if ((units -= 3) > -1) bytes.push(239, 191, 189);\n }\n leadSurrogate = null;\n if (codePoint < 128) {\n if ((units -= 1) < 0) break;\n bytes.push(codePoint);\n } else if (codePoint < 2048) {\n if ((units -= 2) < 0) break;\n bytes.push(codePoint >> 6 | 192, codePoint & 63 | 128);\n } else if (codePoint < 65536) {\n if ((units -= 3) < 0) break;\n bytes.push(\n codePoint >> 12 | 224,\n codePoint >> 6 & 63 | 128,\n codePoint & 63 | 128\n );\n } else if (codePoint < 1114112) {\n if ((units -= 4) < 0) break;\n bytes.push(\n codePoint >> 18 | 240,\n codePoint >> 12 & 63 | 128,\n codePoint >> 6 & 63 | 128,\n codePoint & 63 | 128\n );\n } else {\n throw new Error(\"Invalid code point\");\n }\n }\n return bytes;\n}\nfunction asciiToBytes(str) {\n var byteArray = [];\n for (var i = 0; i < str.length; ++i) {\n byteArray.push(str.charCodeAt(i) & 255);\n }\n return byteArray;\n}\nfunction utf16leToBytes(str, units) {\n var c, hi, lo;\n var byteArray = [];\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break;\n c = str.charCodeAt(i);\n hi = c >> 8;\n lo = c % 256;\n byteArray.push(lo);\n byteArray.push(hi);\n }\n return byteArray;\n}\nfunction base64ToBytes(str) {\n return base64toByteArray(base64clean(str));\n}\nfunction blitBuffer(src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if (i + offset >= dst.length || i >= src.length) break;\n dst[i + offset] = src[i];\n }\n return i;\n}\nfunction isnan(val) {\n return val !== val;\n}\nfunction isBuffer(obj) {\n return obj != null && (!!obj._isBuffer || isFastBuffer(obj) || isSlowBuffer(obj));\n}\nfunction isFastBuffer(obj) {\n return !!obj.constructor && typeof obj.constructor.isBuffer === \"function\" && obj.constructor.isBuffer(obj);\n}\nfunction isSlowBuffer(obj) {\n return typeof obj.readFloatLE === \"function\" && typeof obj.slice === \"function\" && isFastBuffer(obj.slice(0, 0));\n}\nfunction ieee754read(buffer, offset, isLE, mLen, nBytes) {\n var e, m;\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var nBits = -7;\n var i = isLE ? nBytes - 1 : 0;\n var d = isLE ? -1 : 1;\n var s = buffer[offset + i];\n i += d;\n e = s & (1 << -nBits) - 1;\n s >>= -nBits;\n nBits += eLen;\n for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {\n }\n m = e & (1 << -nBits) - 1;\n e >>= -nBits;\n nBits += mLen;\n for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {\n }\n if (e === 0) {\n e = 1 - eBias;\n } else if (e === eMax) {\n return m ? NaN : (s ? -1 : 1) * Infinity;\n } else {\n m = m + Math.pow(2, mLen);\n e = e - eBias;\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen);\n}\nfunction ieee754write(buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c;\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var rt = mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0;\n var i = isLE ? 0 : nBytes - 1;\n var d = isLE ? 1 : -1;\n var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;\n value = Math.abs(value);\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0;\n e = eMax;\n } else {\n e = Math.floor(Math.log(value) / Math.LN2);\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--;\n c *= 2;\n }\n if (e + eBias >= 1) {\n value += rt / c;\n } else {\n value += rt * Math.pow(2, 1 - eBias);\n }\n if (value * c >= 2) {\n e++;\n c /= 2;\n }\n if (e + eBias >= eMax) {\n m = 0;\n e = eMax;\n } else if (e + eBias >= 1) {\n m = (value * c - 1) * Math.pow(2, mLen);\n e = e + eBias;\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);\n e = 0;\n }\n }\n for (; mLen >= 8; buffer[offset + i] = m & 255, i += d, m /= 256, mLen -= 8) {\n }\n e = e << mLen | m;\n eLen += mLen;\n for (; eLen > 0; buffer[offset + i] = e & 255, i += d, e /= 256, eLen -= 8) {\n }\n buffer[offset + i - d] |= s * 128;\n}\nvar lookup, revLookup, Arr, inited, MAX_ARGUMENTS_LENGTH, INVALID_BASE64_RE;\nvar init_Buffer = __esm({\n \"node_modules/@esbuild-plugins/node-globals-polyfill/Buffer.js\"() {\n init_process();\n init_buffer();\n lookup = [];\n revLookup = [];\n Arr = typeof Uint8Array !== \"undefined\" ? Uint8Array : Array;\n inited = false;\n Buffer2.TYPED_ARRAY_SUPPORT = globalThis.TYPED_ARRAY_SUPPORT !== void 0 ? globalThis.TYPED_ARRAY_SUPPORT : true;\n Buffer2.poolSize = 8192;\n Buffer2._augment = function(arr) {\n arr.__proto__ = Buffer2.prototype;\n return arr;\n };\n Buffer2.from = function(value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length);\n };\n Buffer2.kMaxLength = kMaxLength();\n if (Buffer2.TYPED_ARRAY_SUPPORT) {\n Buffer2.prototype.__proto__ = Uint8Array.prototype;\n Buffer2.__proto__ = Uint8Array;\n if (typeof Symbol !== \"undefined\" && Symbol.species && Buffer2[Symbol.species] === Buffer2) {\n }\n }\n Buffer2.alloc = function(size, fill2, encoding) {\n return alloc(null, size, fill2, encoding);\n };\n Buffer2.allocUnsafe = function(size) {\n return allocUnsafe(null, size);\n };\n Buffer2.allocUnsafeSlow = function(size) {\n return allocUnsafe(null, size);\n };\n Buffer2.isBuffer = isBuffer;\n Buffer2.compare = function compare(a, b) {\n if (!internalIsBuffer(a) || !internalIsBuffer(b)) {\n throw new TypeError(\"Arguments must be Buffers\");\n }\n if (a === b) return 0;\n var x = a.length;\n var y = b.length;\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i];\n y = b[i];\n break;\n }\n }\n if (x < y) return -1;\n if (y < x) return 1;\n return 0;\n };\n Buffer2.isEncoding = function isEncoding(encoding) {\n switch (String(encoding).toLowerCase()) {\n case \"hex\":\n case \"utf8\":\n case \"utf-8\":\n case \"ascii\":\n case \"latin1\":\n case \"binary\":\n case \"base64\":\n case \"ucs2\":\n case \"ucs-2\":\n case \"utf16le\":\n case \"utf-16le\":\n return true;\n default:\n return false;\n }\n };\n Buffer2.concat = function concat(list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers');\n }\n if (list.length === 0) {\n return Buffer2.alloc(0);\n }\n var i;\n if (length === void 0) {\n length = 0;\n for (i = 0; i < list.length; ++i) {\n length += list[i].length;\n }\n }\n var buffer = Buffer2.allocUnsafe(length);\n var pos = 0;\n for (i = 0; i < list.length; ++i) {\n var buf = list[i];\n if (!internalIsBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers');\n }\n buf.copy(buffer, pos);\n pos += buf.length;\n }\n return buffer;\n };\n Buffer2.byteLength = byteLength;\n Buffer2.prototype._isBuffer = true;\n Buffer2.prototype.swap16 = function swap16() {\n var len = this.length;\n if (len % 2 !== 0) {\n throw new RangeError(\"Buffer size must be a multiple of 16-bits\");\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1);\n }\n return this;\n };\n Buffer2.prototype.swap32 = function swap32() {\n var len = this.length;\n if (len % 4 !== 0) {\n throw new RangeError(\"Buffer size must be a multiple of 32-bits\");\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3);\n swap(this, i + 1, i + 2);\n }\n return this;\n };\n Buffer2.prototype.swap64 = function swap64() {\n var len = this.length;\n if (len % 8 !== 0) {\n throw new RangeError(\"Buffer size must be a multiple of 64-bits\");\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7);\n swap(this, i + 1, i + 6);\n swap(this, i + 2, i + 5);\n swap(this, i + 3, i + 4);\n }\n return this;\n };\n Buffer2.prototype.toString = function toString() {\n var length = this.length | 0;\n if (length === 0) return \"\";\n if (arguments.length === 0) return utf8Slice(this, 0, length);\n return slowToString.apply(this, arguments);\n };\n Buffer2.prototype.equals = function equals(b) {\n if (!internalIsBuffer(b)) throw new TypeError(\"Argument must be a Buffer\");\n if (this === b) return true;\n return Buffer2.compare(this, b) === 0;\n };\n Buffer2.prototype.compare = function compare2(target, start, end, thisStart, thisEnd) {\n if (!internalIsBuffer(target)) {\n throw new TypeError(\"Argument must be a Buffer\");\n }\n if (start === void 0) {\n start = 0;\n }\n if (end === void 0) {\n end = target ? target.length : 0;\n }\n if (thisStart === void 0) {\n thisStart = 0;\n }\n if (thisEnd === void 0) {\n thisEnd = this.length;\n }\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError(\"out of range index\");\n }\n if (thisStart >= thisEnd && start >= end) {\n return 0;\n }\n if (thisStart >= thisEnd) {\n return -1;\n }\n if (start >= end) {\n return 1;\n }\n start >>>= 0;\n end >>>= 0;\n thisStart >>>= 0;\n thisEnd >>>= 0;\n if (this === target) return 0;\n var x = thisEnd - thisStart;\n var y = end - start;\n var len = Math.min(x, y);\n var thisCopy = this.slice(thisStart, thisEnd);\n var targetCopy = target.slice(start, end);\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i];\n y = targetCopy[i];\n break;\n }\n }\n if (x < y) return -1;\n if (y < x) return 1;\n return 0;\n };\n Buffer2.prototype.includes = function includes(val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1;\n };\n Buffer2.prototype.indexOf = function indexOf(val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true);\n };\n Buffer2.prototype.lastIndexOf = function lastIndexOf(val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false);\n };\n Buffer2.prototype.write = function write(string, offset, length, encoding) {\n if (offset === void 0) {\n encoding = \"utf8\";\n length = this.length;\n offset = 0;\n } else if (length === void 0 && typeof offset === \"string\") {\n encoding = offset;\n length = this.length;\n offset = 0;\n } else if (isFinite(offset)) {\n offset = offset | 0;\n if (isFinite(length)) {\n length = length | 0;\n if (encoding === void 0) encoding = \"utf8\";\n } else {\n encoding = length;\n length = void 0;\n }\n } else {\n throw new Error(\n \"Buffer.write(string, encoding, offset[, length]) is no longer supported\"\n );\n }\n var remaining = this.length - offset;\n if (length === void 0 || length > remaining) length = remaining;\n if (string.length > 0 && (length < 0 || offset < 0) || offset > this.length) {\n throw new RangeError(\"Attempt to write outside buffer bounds\");\n }\n if (!encoding) encoding = \"utf8\";\n var loweredCase = false;\n for (; ; ) {\n switch (encoding) {\n case \"hex\":\n return hexWrite(this, string, offset, length);\n case \"utf8\":\n case \"utf-8\":\n return utf8Write(this, string, offset, length);\n case \"ascii\":\n return asciiWrite(this, string, offset, length);\n case \"latin1\":\n case \"binary\":\n return latin1Write(this, string, offset, length);\n case \"base64\":\n return base64Write(this, string, offset, length);\n case \"ucs2\":\n case \"ucs-2\":\n case \"utf16le\":\n case \"utf-16le\":\n return ucs2Write(this, string, offset, length);\n default:\n if (loweredCase)\n throw new TypeError(\"Unknown encoding: \" + encoding);\n encoding = (\"\" + encoding).toLowerCase();\n loweredCase = true;\n }\n }\n };\n Buffer2.prototype.toJSON = function toJSON() {\n return {\n type: \"Buffer\",\n data: Array.prototype.slice.call(this._arr || this, 0)\n };\n };\n MAX_ARGUMENTS_LENGTH = 4096;\n Buffer2.prototype.slice = function slice(start, end) {\n var len = this.length;\n start = ~~start;\n end = end === void 0 ? len : ~~end;\n if (start < 0) {\n start += len;\n if (start < 0) start = 0;\n } else if (start > len) {\n start = len;\n }\n if (end < 0) {\n end += len;\n if (end < 0) end = 0;\n } else if (end > len) {\n end = len;\n }\n if (end < start) end = start;\n var newBuf;\n if (Buffer2.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end);\n newBuf.__proto__ = Buffer2.prototype;\n } else {\n var sliceLen = end - start;\n newBuf = new Buffer2(sliceLen, void 0);\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start];\n }\n }\n return newBuf;\n };\n Buffer2.prototype.readUIntLE = function readUIntLE(offset, byteLength2, noAssert) {\n offset = offset | 0;\n byteLength2 = byteLength2 | 0;\n if (!noAssert) checkOffset(offset, byteLength2, this.length);\n var val = this[offset];\n var mul = 1;\n var i = 0;\n while (++i < byteLength2 && (mul *= 256)) {\n val += this[offset + i] * mul;\n }\n return val;\n };\n Buffer2.prototype.readUIntBE = function readUIntBE(offset, byteLength2, noAssert) {\n offset = offset | 0;\n byteLength2 = byteLength2 | 0;\n if (!noAssert) {\n checkOffset(offset, byteLength2, this.length);\n }\n var val = this[offset + --byteLength2];\n var mul = 1;\n while (byteLength2 > 0 && (mul *= 256)) {\n val += this[offset + --byteLength2] * mul;\n }\n return val;\n };\n Buffer2.prototype.readUInt8 = function readUInt8(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length);\n return this[offset];\n };\n Buffer2.prototype.readUInt16LE = function readUInt16LE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n return this[offset] | this[offset + 1] << 8;\n };\n Buffer2.prototype.readUInt16BE = function readUInt16BE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n return this[offset] << 8 | this[offset + 1];\n };\n Buffer2.prototype.readUInt32LE = function readUInt32LE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return (this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16) + this[offset + 3] * 16777216;\n };\n Buffer2.prototype.readUInt32BE = function readUInt32BE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return this[offset] * 16777216 + (this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3]);\n };\n Buffer2.prototype.readIntLE = function readIntLE(offset, byteLength2, noAssert) {\n offset = offset | 0;\n byteLength2 = byteLength2 | 0;\n if (!noAssert) checkOffset(offset, byteLength2, this.length);\n var val = this[offset];\n var mul = 1;\n var i = 0;\n while (++i < byteLength2 && (mul *= 256)) {\n val += this[offset + i] * mul;\n }\n mul *= 128;\n if (val >= mul) val -= Math.pow(2, 8 * byteLength2);\n return val;\n };\n Buffer2.prototype.readIntBE = function readIntBE(offset, byteLength2, noAssert) {\n offset = offset | 0;\n byteLength2 = byteLength2 | 0;\n if (!noAssert) checkOffset(offset, byteLength2, this.length);\n var i = byteLength2;\n var mul = 1;\n var val = this[offset + --i];\n while (i > 0 && (mul *= 256)) {\n val += this[offset + --i] * mul;\n }\n mul *= 128;\n if (val >= mul) val -= Math.pow(2, 8 * byteLength2);\n return val;\n };\n Buffer2.prototype.readInt8 = function readInt8(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length);\n if (!(this[offset] & 128)) return this[offset];\n return (255 - this[offset] + 1) * -1;\n };\n Buffer2.prototype.readInt16LE = function readInt16LE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n var val = this[offset] | this[offset + 1] << 8;\n return val & 32768 ? val | 4294901760 : val;\n };\n Buffer2.prototype.readInt16BE = function readInt16BE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n var val = this[offset + 1] | this[offset] << 8;\n return val & 32768 ? val | 4294901760 : val;\n };\n Buffer2.prototype.readInt32LE = function readInt32LE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16 | this[offset + 3] << 24;\n };\n Buffer2.prototype.readInt32BE = function readInt32BE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return this[offset] << 24 | this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3];\n };\n Buffer2.prototype.readFloatLE = function readFloatLE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return ieee754read(this, offset, true, 23, 4);\n };\n Buffer2.prototype.readFloatBE = function readFloatBE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return ieee754read(this, offset, false, 23, 4);\n };\n Buffer2.prototype.readDoubleLE = function readDoubleLE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length);\n return ieee754read(this, offset, true, 52, 8);\n };\n Buffer2.prototype.readDoubleBE = function readDoubleBE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length);\n return ieee754read(this, offset, false, 52, 8);\n };\n Buffer2.prototype.writeUIntLE = function writeUIntLE(value, offset, byteLength2, noAssert) {\n value = +value;\n offset = offset | 0;\n byteLength2 = byteLength2 | 0;\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength2) - 1;\n checkInt(this, value, offset, byteLength2, maxBytes, 0);\n }\n var mul = 1;\n var i = 0;\n this[offset] = value & 255;\n while (++i < byteLength2 && (mul *= 256)) {\n this[offset + i] = value / mul & 255;\n }\n return offset + byteLength2;\n };\n Buffer2.prototype.writeUIntBE = function writeUIntBE(value, offset, byteLength2, noAssert) {\n value = +value;\n offset = offset | 0;\n byteLength2 = byteLength2 | 0;\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength2) - 1;\n checkInt(this, value, offset, byteLength2, maxBytes, 0);\n }\n var i = byteLength2 - 1;\n var mul = 1;\n this[offset + i] = value & 255;\n while (--i >= 0 && (mul *= 256)) {\n this[offset + i] = value / mul & 255;\n }\n return offset + byteLength2;\n };\n Buffer2.prototype.writeUInt8 = function writeUInt8(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 1, 255, 0);\n if (!Buffer2.TYPED_ARRAY_SUPPORT) value = Math.floor(value);\n this[offset] = value & 255;\n return offset + 1;\n };\n Buffer2.prototype.writeUInt16LE = function writeUInt16LE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 65535, 0);\n if (Buffer2.TYPED_ARRAY_SUPPORT) {\n this[offset] = value & 255;\n this[offset + 1] = value >>> 8;\n } else {\n objectWriteUInt16(this, value, offset, true);\n }\n return offset + 2;\n };\n Buffer2.prototype.writeUInt16BE = function writeUInt16BE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 65535, 0);\n if (Buffer2.TYPED_ARRAY_SUPPORT) {\n this[offset] = value >>> 8;\n this[offset + 1] = value & 255;\n } else {\n objectWriteUInt16(this, value, offset, false);\n }\n return offset + 2;\n };\n Buffer2.prototype.writeUInt32LE = function writeUInt32LE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 4294967295, 0);\n if (Buffer2.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = value >>> 24;\n this[offset + 2] = value >>> 16;\n this[offset + 1] = value >>> 8;\n this[offset] = value & 255;\n } else {\n objectWriteUInt32(this, value, offset, true);\n }\n return offset + 4;\n };\n Buffer2.prototype.writeUInt32BE = function writeUInt32BE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 4294967295, 0);\n if (Buffer2.TYPED_ARRAY_SUPPORT) {\n this[offset] = value >>> 24;\n this[offset + 1] = value >>> 16;\n this[offset + 2] = value >>> 8;\n this[offset + 3] = value & 255;\n } else {\n objectWriteUInt32(this, value, offset, false);\n }\n return offset + 4;\n };\n Buffer2.prototype.writeIntLE = function writeIntLE(value, offset, byteLength2, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength2 - 1);\n checkInt(this, value, offset, byteLength2, limit - 1, -limit);\n }\n var i = 0;\n var mul = 1;\n var sub = 0;\n this[offset] = value & 255;\n while (++i < byteLength2 && (mul *= 256)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1;\n }\n this[offset + i] = (value / mul >> 0) - sub & 255;\n }\n return offset + byteLength2;\n };\n Buffer2.prototype.writeIntBE = function writeIntBE(value, offset, byteLength2, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength2 - 1);\n checkInt(this, value, offset, byteLength2, limit - 1, -limit);\n }\n var i = byteLength2 - 1;\n var mul = 1;\n var sub = 0;\n this[offset + i] = value & 255;\n while (--i >= 0 && (mul *= 256)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1;\n }\n this[offset + i] = (value / mul >> 0) - sub & 255;\n }\n return offset + byteLength2;\n };\n Buffer2.prototype.writeInt8 = function writeInt8(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 1, 127, -128);\n if (!Buffer2.TYPED_ARRAY_SUPPORT) value = Math.floor(value);\n if (value < 0) value = 255 + value + 1;\n this[offset] = value & 255;\n return offset + 1;\n };\n Buffer2.prototype.writeInt16LE = function writeInt16LE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 32767, -32768);\n if (Buffer2.TYPED_ARRAY_SUPPORT) {\n this[offset] = value & 255;\n this[offset + 1] = value >>> 8;\n } else {\n objectWriteUInt16(this, value, offset, true);\n }\n return offset + 2;\n };\n Buffer2.prototype.writeInt16BE = function writeInt16BE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 32767, -32768);\n if (Buffer2.TYPED_ARRAY_SUPPORT) {\n this[offset] = value >>> 8;\n this[offset + 1] = value & 255;\n } else {\n objectWriteUInt16(this, value, offset, false);\n }\n return offset + 2;\n };\n Buffer2.prototype.writeInt32LE = function writeInt32LE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 2147483647, -2147483648);\n if (Buffer2.TYPED_ARRAY_SUPPORT) {\n this[offset] = value & 255;\n this[offset + 1] = value >>> 8;\n this[offset + 2] = value >>> 16;\n this[offset + 3] = value >>> 24;\n } else {\n objectWriteUInt32(this, value, offset, true);\n }\n return offset + 4;\n };\n Buffer2.prototype.writeInt32BE = function writeInt32BE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 2147483647, -2147483648);\n if (value < 0) value = 4294967295 + value + 1;\n if (Buffer2.TYPED_ARRAY_SUPPORT) {\n this[offset] = value >>> 24;\n this[offset + 1] = value >>> 16;\n this[offset + 2] = value >>> 8;\n this[offset + 3] = value & 255;\n } else {\n objectWriteUInt32(this, value, offset, false);\n }\n return offset + 4;\n };\n Buffer2.prototype.writeFloatLE = function writeFloatLE(value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert);\n };\n Buffer2.prototype.writeFloatBE = function writeFloatBE(value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert);\n };\n Buffer2.prototype.writeDoubleLE = function writeDoubleLE(value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert);\n };\n Buffer2.prototype.writeDoubleBE = function writeDoubleBE(value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert);\n };\n Buffer2.prototype.copy = function copy(target, targetStart, start, end) {\n if (!start) start = 0;\n if (!end && end !== 0) end = this.length;\n if (targetStart >= target.length) targetStart = target.length;\n if (!targetStart) targetStart = 0;\n if (end > 0 && end < start) end = start;\n if (end === start) return 0;\n if (target.length === 0 || this.length === 0) return 0;\n if (targetStart < 0) {\n throw new RangeError(\"targetStart out of bounds\");\n }\n if (start < 0 || start >= this.length)\n throw new RangeError(\"sourceStart out of bounds\");\n if (end < 0) throw new RangeError(\"sourceEnd out of bounds\");\n if (end > this.length) end = this.length;\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start;\n }\n var len = end - start;\n var i;\n if (this === target && start < targetStart && targetStart < end) {\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start];\n }\n } else if (len < 1e3 || !Buffer2.TYPED_ARRAY_SUPPORT) {\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start];\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n );\n }\n return len;\n };\n Buffer2.prototype.fill = function fill(val, start, end, encoding) {\n if (typeof val === \"string\") {\n if (typeof start === \"string\") {\n encoding = start;\n start = 0;\n end = this.length;\n } else if (typeof end === \"string\") {\n encoding = end;\n end = this.length;\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0);\n if (code < 256) {\n val = code;\n }\n }\n if (encoding !== void 0 && typeof encoding !== \"string\") {\n throw new TypeError(\"encoding must be a string\");\n }\n if (typeof encoding === \"string\" && !Buffer2.isEncoding(encoding)) {\n throw new TypeError(\"Unknown encoding: \" + encoding);\n }\n } else if (typeof val === \"number\") {\n val = val & 255;\n }\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError(\"Out of range index\");\n }\n if (end <= start) {\n return this;\n }\n start = start >>> 0;\n end = end === void 0 ? this.length : end >>> 0;\n if (!val) val = 0;\n var i;\n if (typeof val === \"number\") {\n for (i = start; i < end; ++i) {\n this[i] = val;\n }\n } else {\n var bytes = internalIsBuffer(val) ? val : utf8ToBytes(new Buffer2(val, encoding).toString());\n var len = bytes.length;\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len];\n }\n }\n return this;\n };\n INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g;\n }\n});\n\n// node_modules/@esbuild-plugins/node-globals-polyfill/_buffer.js\nvar init_buffer = __esm({\n \"node_modules/@esbuild-plugins/node-globals-polyfill/_buffer.js\"() {\n init_Buffer();\n }\n});\n\n// node_modules/@emscripten-forge/untarjs/lib/unpack.js\nvar require_unpack = __commonJS({\n \"node_modules/@emscripten-forge/untarjs/lib/unpack.js\"(exports, module) {\n init_process();\n init_buffer();\n var Module = (() => {\n var _scriptDir = typeof document !== \"undefined\" && document.currentScript ? document.currentScript.src : void 0;\n return function(moduleArg = {}) {\n var Module2 = moduleArg;\n var readyPromiseResolve, readyPromiseReject;\n Module2[\"ready\"] = new Promise((resolve, reject) => {\n readyPromiseResolve = resolve;\n readyPromiseReject = reject;\n });\n var moduleOverrides = Object.assign({}, Module2);\n var arguments_ = [];\n var thisProgram = \"./this.program\";\n var quit_ = (status, toThrow) => {\n throw toThrow;\n };\n var ENVIRONMENT_IS_WEB = true;\n var ENVIRONMENT_IS_WORKER = false;\n var ENVIRONMENT_IS_NODE = false;\n var scriptDirectory = \"\";\n function locateFile(path) {\n if (Module2[\"locateFile\"]) {\n return Module2[\"locateFile\"](path, scriptDirectory);\n }\n return scriptDirectory + path;\n }\n var read_, readAsync, readBinary, setWindowTitle;\n if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {\n if (ENVIRONMENT_IS_WORKER) {\n scriptDirectory = self.location.href;\n } else if (typeof document != \"undefined\" && document.currentScript) {\n scriptDirectory = document.currentScript.src;\n }\n if (_scriptDir) {\n scriptDirectory = _scriptDir;\n }\n if (scriptDirectory.indexOf(\"blob:\") !== 0) {\n scriptDirectory = scriptDirectory.substr(0, scriptDirectory.replace(/[?#].*/, \"\").lastIndexOf(\"/\") + 1);\n } else {\n scriptDirectory = \"\";\n }\n {\n read_ = (url) => {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n xhr.send(null);\n return xhr.responseText;\n };\n if (ENVIRONMENT_IS_WORKER) {\n readBinary = (url) => {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n xhr.responseType = \"arraybuffer\";\n xhr.send(null);\n return new Uint8Array(xhr.response);\n };\n }\n readAsync = (url, onload, onerror) => {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, true);\n xhr.responseType = \"arraybuffer\";\n xhr.onload = () => {\n if (xhr.status == 200 || xhr.status == 0 && xhr.response) {\n onload(xhr.response);\n return;\n }\n onerror();\n };\n xhr.onerror = onerror;\n xhr.send(null);\n };\n }\n setWindowTitle = (title2) => document.title = title2;\n } else {\n }\n var out = Module2[\"print\"] || console.log.bind(console);\n var err = Module2[\"printErr\"] || console.error.bind(console);\n Object.assign(Module2, moduleOverrides);\n moduleOverrides = null;\n if (Module2[\"arguments\"]) arguments_ = Module2[\"arguments\"];\n if (Module2[\"thisProgram\"]) thisProgram = Module2[\"thisProgram\"];\n if (Module2[\"quit\"]) quit_ = Module2[\"quit\"];\n var wasmBinary;\n if (Module2[\"wasmBinary\"]) wasmBinary = Module2[\"wasmBinary\"];\n var noExitRuntime = Module2[\"noExitRuntime\"] || false;\n if (typeof WebAssembly != \"object\") {\n abort(\"no native wasm support detected\");\n }\n function _asan_js_load_1(ptr) {\n if (runtimeInitialized) return __asan_c_load_1(ptr);\n return HEAP8[ptr];\n }\n function _asan_js_load_2(ptr) {\n if (runtimeInitialized) return __asan_c_load_2(ptr);\n return HEAP16[ptr];\n }\n function _asan_js_load_4(ptr) {\n if (runtimeInitialized) return __asan_c_load_4(ptr);\n return HEAP32[ptr];\n }\n function _asan_js_load_4u(ptr) {\n if (runtimeInitialized) return __asan_c_load_4u(ptr) >>> 0;\n return HEAPU32[ptr];\n }\n function _asan_js_load_f(ptr) {\n if (runtimeInitialized) return __asan_c_load_f(ptr);\n return HEAPF32[ptr];\n }\n function _asan_js_load_d(ptr) {\n if (runtimeInitialized) return __asan_c_load_d(ptr);\n return HEAPF64[ptr];\n }\n function _asan_js_store_1(ptr, val) {\n if (runtimeInitialized) return __asan_c_store_1(ptr, val);\n return HEAP8[ptr] = val;\n }\n function _asan_js_store_2(ptr, val) {\n if (runtimeInitialized) return __asan_c_store_2(ptr, val);\n return HEAP16[ptr] = val;\n }\n function _asan_js_store_4(ptr, val) {\n if (runtimeInitialized) return __asan_c_store_4(ptr, val);\n return HEAP32[ptr] = val;\n }\n function _asan_js_store_4u(ptr, val) {\n if (runtimeInitialized) return __asan_c_store_4u(ptr, val) >>> 0;\n return HEAPU32[ptr] = val;\n }\n var wasmMemory;\n var ABORT = false;\n var EXITSTATUS;\n function assert(condition, text) {\n if (!condition) {\n abort(text);\n }\n }\n var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;\n function updateMemoryViews() {\n var b = wasmMemory.buffer;\n Module2[\"HEAP8\"] = HEAP8 = new Int8Array(b);\n Module2[\"HEAP16\"] = HEAP16 = new Int16Array(b);\n Module2[\"HEAPU8\"] = HEAPU8 = new Uint8Array(b);\n Module2[\"HEAPU16\"] = HEAPU16 = new Uint16Array(b);\n Module2[\"HEAP32\"] = HEAP32 = new Int32Array(b);\n Module2[\"HEAPU32\"] = HEAPU32 = new Uint32Array(b);\n Module2[\"HEAPF32\"] = HEAPF32 = new Float32Array(b);\n Module2[\"HEAPF64\"] = HEAPF64 = new Float64Array(b);\n }\n var wasmTable;\n var __ATPRERUN__ = [];\n var __ATINIT__ = [];\n var __ATEXIT__ = [];\n var __ATPOSTRUN__ = [];\n var runtimeInitialized = false;\n var runtimeExited = false;\n var runtimeKeepaliveCounter = 0;\n function keepRuntimeAlive() {\n return noExitRuntime || runtimeKeepaliveCounter > 0;\n }\n function preRun() {\n if (Module2[\"preRun\"]) {\n if (typeof Module2[\"preRun\"] == \"function\") Module2[\"preRun\"] = [Module2[\"preRun\"]];\n while (Module2[\"preRun\"].length) {\n addOnPreRun(Module2[\"preRun\"].shift());\n }\n }\n callRuntimeCallbacks(__ATPRERUN__);\n }\n function initRuntime() {\n runtimeInitialized = true;\n if (!Module2[\"noFSInit\"] && !FS.init.initialized) FS.init();\n FS.ignorePermissions = false;\n TTY.init();\n PIPEFS.root = FS.mount(PIPEFS, {}, null);\n callRuntimeCallbacks(__ATINIT__);\n }\n function exitRuntime() {\n ___funcs_on_exit();\n callRuntimeCallbacks(__ATEXIT__);\n FS.quit();\n TTY.shutdown();\n runtimeExited = true;\n }\n function postRun() {\n if (Module2[\"postRun\"]) {\n if (typeof Module2[\"postRun\"] == \"function\") Module2[\"postRun\"] = [Module2[\"postRun\"]];\n while (Module2[\"postRun\"].length) {\n addOnPostRun(Module2[\"postRun\"].shift());\n }\n }\n callRuntimeCallbacks(__ATPOSTRUN__);\n }\n function addOnPreRun(cb) {\n __ATPRERUN__.unshift(cb);\n }\n function addOnInit(cb) {\n __ATINIT__.unshift(cb);\n }\n function addOnPostRun(cb) {\n __ATPOSTRUN__.unshift(cb);\n }\n var runDependencies = 0;\n var runDependencyWatcher = null;\n var dependenciesFulfilled = null;\n function getUniqueRunDependency(id) {\n return id;\n }\n function addRunDependency(id) {\n runDependencies++;\n if (Module2[\"monitorRunDependencies\"]) {\n Module2[\"monitorRunDependencies\"](runDependencies);\n }\n }\n function removeRunDependency(id) {\n runDependencies--;\n if (Module2[\"monitorRunDependencies\"]) {\n Module2[\"monitorRunDependencies\"](runDependencies);\n }\n if (runDependencies == 0) {\n if (runDependencyWatcher !== null) {\n clearInterval(runDependencyWatcher);\n runDependencyWatcher = null;\n }\n if (dependenciesFulfilled) {\n var callback = dependenciesFulfilled;\n dependenciesFulfilled = null;\n callback();\n }\n }\n }\n function abort(what) {\n if (Module2[\"onAbort\"]) {\n Module2[\"onAbort\"](what);\n }\n what = \"Aborted(\" + what + \")\";\n err(what);\n ABORT = true;\n EXITSTATUS = 1;\n what += \". Build with -sASSERTIONS for more info.\";\n var e = new WebAssembly.RuntimeError(what);\n readyPromiseReject(e);\n throw e;\n }\n var dataURIPrefix = \"data:application/octet-stream;base64,\";\n function isDataURI(filename) {\n return filename.startsWith(dataURIPrefix);\n }\n var wasmBinaryFile;\n wasmBinaryFile = \"unpack.wasm\";\n if (!isDataURI(wasmBinaryFile)) {\n wasmBinaryFile = locateFile(wasmBinaryFile);\n }\n function getBinarySync(file) {\n if (file == wasmBinaryFile && wasmBinary) {\n return new Uint8Array(wasmBinary);\n }\n if (readBinary) {\n return readBinary(file);\n }\n throw \"both async and sync fetching of the wasm failed\";\n }\n function getBinaryPromise(binaryFile) {\n if (!wasmBinary && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER)) {\n if (typeof fetch == \"function\") {\n return fetch(binaryFile, { credentials: \"same-origin\" }).then((response) => {\n if (!response[\"ok\"]) {\n throw \"failed to load wasm binary file at '\" + binaryFile + \"'\";\n }\n return response[\"arrayBuffer\"]();\n }).catch(() => getBinarySync(binaryFile));\n }\n }\n return Promise.resolve().then(() => getBinarySync(binaryFile));\n }\n var wasmOffsetConverter;\n function WasmOffsetConverter(wasmBytes, wasmModule) {\n var offset = 8;\n var funcidx = 0;\n this.offset_map = {};\n this.func_starts = [];\n this.name_map = {};\n this.import_functions = 0;\n var buffer = wasmBytes;\n function unsignedLEB128() {\n var result = 0;\n var shift = 0;\n do {\n var byte = buffer[offset++];\n result += (byte & 127) << shift;\n shift += 7;\n } while (byte & 128);\n return result;\n }\n function skipLimits() {\n var flags = unsignedLEB128();\n unsignedLEB128();\n var hasMax = (flags & 1) != 0;\n if (hasMax) {\n unsignedLEB128();\n }\n }\n binary_parse: while (offset < buffer.length) {\n var type = buffer[offset++];\n var end = unsignedLEB128() + offset;\n switch (type) {\n case 2:\n var count = unsignedLEB128();\n while (count-- > 0) {\n offset = unsignedLEB128() + offset;\n offset = unsignedLEB128() + offset;\n var kind = buffer[offset++];\n switch (kind) {\n case 0:\n ++funcidx;\n unsignedLEB128();\n break;\n case 1:\n unsignedLEB128();\n skipLimits();\n break;\n case 2:\n skipLimits();\n break;\n case 3:\n offset += 2;\n break;\n case 4:\n ++offset;\n unsignedLEB128();\n break;\n }\n }\n this.import_functions = funcidx;\n break;\n case 10:\n var count = unsignedLEB128();\n while (count-- > 0) {\n var size = unsignedLEB128();\n this.offset_map[funcidx++] = offset;\n this.func_starts.push(offset);\n offset += size;\n }\n break binary_parse;\n }\n offset = end;\n }\n var sections = WebAssembly.Module.customSections(wasmModule, \"name\");\n var nameSection = sections.length ? sections[0] : void 0;\n if (nameSection) {\n buffer = new Uint8Array(nameSection);\n offset = 0;\n while (offset < buffer.length) {\n var subsection_type = buffer[offset++];\n var len = unsignedLEB128();\n if (subsection_type != 1) {\n offset += len;\n continue;\n }\n var count = unsignedLEB128();\n while (count-- > 0) {\n var index = unsignedLEB128();\n var length = unsignedLEB128();\n this.name_map[index] = UTF8ArrayToString(buffer, offset, length);\n offset += length;\n }\n }\n }\n }\n WasmOffsetConverter.prototype.convert = function(funcidx, offset) {\n return this.offset_map[funcidx] + offset;\n };\n WasmOffsetConverter.prototype.getIndex = function(offset) {\n var lo = 0;\n var hi = this.func_starts.length;\n var mid;\n while (lo < hi) {\n mid = Math.floor((lo + hi) / 2);\n if (this.func_starts[mid] > offset) {\n hi = mid;\n } else {\n lo = mid + 1;\n }\n }\n return lo + this.import_functions - 1;\n };\n WasmOffsetConverter.prototype.isSameFunc = function(offset1, offset2) {\n return this.getIndex(offset1) == this.getIndex(offset2);\n };\n WasmOffsetConverter.prototype.getName = function(offset) {\n var index = this.getIndex(offset);\n return this.name_map[index] || \"wasm-function[\" + index + \"]\";\n };\n function instantiateArrayBuffer(binaryFile, imports, receiver) {\n var savedBinary;\n return getBinaryPromise(binaryFile).then((binary) => {\n savedBinary = binary;\n return WebAssembly.instantiate(binary, imports);\n }).then((instance) => {\n wasmOffsetConverter = new WasmOffsetConverter(savedBinary, instance.module);\n return instance;\n }).then(receiver, (reason) => {\n err(`failed to asynchronously prepare wasm: ${reason}`);\n abort(reason);\n });\n }\n function instantiateAsync(binary, binaryFile, imports, callback) {\n if (!binary && typeof WebAssembly.instantiateStreaming == \"function\" && !isDataURI(binaryFile) && typeof fetch == \"function\") {\n return fetch(binaryFile, { credentials: \"same-origin\" }).then((response) => {\n var result = WebAssembly.instantiateStreaming(response, imports);\n var clonedResponsePromise = response.clone().arrayBuffer();\n return result.then(function(instantiationResult) {\n clonedResponsePromise.then((arrayBufferResult) => {\n wasmOffsetConverter = new WasmOffsetConverter(new Uint8Array(arrayBufferResult), instantiationResult.module);\n callback(instantiationResult);\n }, (reason) => err(`failed to initialize offset-converter: ${reason}`));\n }, function(reason) {\n err(`wasm streaming compile failed: ${reason}`);\n err(\"falling back to ArrayBuffer instantiation\");\n return instantiateArrayBuffer(binaryFile, imports, callback);\n });\n });\n }\n return instantiateArrayBuffer(binaryFile, imports, callback);\n }\n function createWasm() {\n var info = { \"a\": wasmImports };\n function receiveInstance(instance, module2) {\n var exports2 = instance.exports;\n wasmExports = exports2;\n wasmMemory = wasmExports[\"Q\"];\n Module2[\"wasmMemory\"] = wasmMemory;\n updateMemoryViews();\n wasmTable = wasmExports[\"W\"];\n addOnInit(wasmExports[\"R\"]);\n removeRunDependency(\"wasm-instantiate\");\n return exports2;\n }\n addRunDependency(\"wasm-instantiate\");\n function receiveInstantiationResult(result) {\n receiveInstance(result[\"instance\"]);\n }\n if (Module2[\"instantiateWasm\"]) {\n try {\n return Module2[\"instantiateWasm\"](info, receiveInstance);\n } catch (e) {\n err(`Module.instantiateWasm callback failed with error: ${e}`);\n readyPromiseReject(e);\n }\n }\n instantiateAsync(wasmBinary, wasmBinaryFile, info, receiveInstantiationResult).catch(readyPromiseReject);\n return {};\n }\n var tempDouble;\n var tempI64;\n function ExitStatus(status) {\n this.name = \"ExitStatus\";\n this.message = `Program terminated with exit(${status})`;\n this.status = status;\n }\n var UTF8Decoder = typeof TextDecoder != \"undefined\" ? new TextDecoder(\"utf8\") : void 0;\n var UTF8ArrayToString = (heapOrArray, idx, maxBytesToRead) => {\n var endIdx = idx + maxBytesToRead;\n var endPtr = idx;\n while (heapOrArray[endPtr] && !(endPtr >= endIdx)) ++endPtr;\n if (endPtr - idx > 16 && heapOrArray.buffer && UTF8Decoder) {\n return UTF8Decoder.decode(heapOrArray.subarray(idx, endPtr));\n }\n var str = \"\";\n while (idx < endPtr) {\n var u0 = heapOrArray[idx++];\n if (!(u0 & 128)) {\n str += String.fromCharCode(u0);\n continue;\n }\n var u1 = heapOrArray[idx++] & 63;\n if ((u0 & 224) == 192) {\n str += String.fromCharCode((u0 & 31) << 6 | u1);\n continue;\n }\n var u2 = heapOrArray[idx++] & 63;\n if ((u0 & 240) == 224) {\n u0 = (u0 & 15) << 12 | u1 << 6 | u2;\n } else {\n u0 = (u0 & 7) << 18 | u1 << 12 | u2 << 6 | heapOrArray[idx++] & 63;\n }\n if (u0 < 65536) {\n str += String.fromCharCode(u0);\n } else {\n var ch = u0 - 65536;\n str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023);\n }\n }\n return str;\n };\n var callRuntimeCallbacks = (callbacks) => {\n while (callbacks.length > 0) {\n callbacks.shift()(Module2);\n }\n };\n function getValue(ptr, type = \"i8\") {\n if (type.endsWith(\"*\")) type = \"*\";\n switch (type) {\n case \"i1\":\n return _asan_js_load_1(ptr >> 0);\n case \"i8\":\n return _asan_js_load_1(ptr >> 0);\n case \"i16\":\n return _asan_js_load_2(ptr >> 1);\n case \"i32\":\n return _asan_js_load_4(ptr >> 2);\n case \"i64\":\n abort(\"to do getValue(i64) use WASM_BIGINT\");\n case \"float\":\n return _asan_js_load_f(ptr >> 2);\n case \"double\":\n return _asan_js_load_d(ptr >> 3);\n case \"*\":\n return _asan_js_load_4u(ptr >> 2);\n default:\n abort(`invalid type for getValue: ${type}`);\n }\n }\n var UTF8ToString = (ptr, maxBytesToRead) => ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : \"\";\n var ___assert_fail = (condition, filename, line, func) => {\n abort(`Assertion failed: ${UTF8ToString(condition)}, at: ` + [filename ? UTF8ToString(filename) : \"unknown filename\", line, func ? UTF8ToString(func) : \"unknown function\"]);\n };\n var PATH = { isAbs: (path) => path.charAt(0) === \"/\", splitPath: (filename) => {\n var splitPathRe = /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\n return splitPathRe.exec(filename).slice(1);\n }, normalizeArray: (parts, allowAboveRoot) => {\n var up = 0;\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n if (last === \".\") {\n parts.splice(i, 1);\n } else if (last === \"..\") {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n if (allowAboveRoot) {\n for (; up; up--) {\n parts.unshift(\"..\");\n }\n }\n return parts;\n }, normalize: (path) => {\n var isAbsolute = PATH.isAbs(path), trailingSlash = path.substr(-1) === \"/\";\n path = PATH.normalizeArray(path.split(\"/\").filter((p) => !!p), !isAbsolute).join(\"/\");\n if (!path && !isAbsolute) {\n path = \".\";\n }\n if (path && trailingSlash) {\n path += \"/\";\n }\n return (isAbsolute ? \"/\" : \"\") + path;\n }, dirname: (path) => {\n var result = PATH.splitPath(path), root = result[0], dir = result[1];\n if (!root && !dir) {\n return \".\";\n }\n if (dir) {\n dir = dir.substr(0, dir.length - 1);\n }\n return root + dir;\n }, basename: (path) => {\n if (path === \"/\") return \"/\";\n path = PATH.normalize(path);\n path = path.replace(/\\/$/, \"\");\n var lastSlash = path.lastIndexOf(\"/\");\n if (lastSlash === -1) return path;\n return path.substr(lastSlash + 1);\n }, join: function() {\n var paths = Array.prototype.slice.call(arguments);\n return PATH.normalize(paths.join(\"/\"));\n }, join2: (l, r) => PATH.normalize(l + \"/\" + r) };\n var initRandomFill = () => {\n if (typeof crypto == \"object\" && typeof crypto[\"getRandomValues\"] == \"function\") {\n return (view) => crypto.getRandomValues(view);\n } else abort(\"initRandomDevice\");\n };\n var randomFill = (view) => (randomFill = initRandomFill())(view);\n var PATH_FS = { resolve: function() {\n var resolvedPath = \"\", resolvedAbsolute = false;\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = i >= 0 ? arguments[i] : FS.cwd();\n if (typeof path != \"string\") {\n throw new TypeError(\"Arguments to path.resolve must be strings\");\n } else if (!path) {\n return \"\";\n }\n resolvedPath = path + \"/\" + resolvedPath;\n resolvedAbsolute = PATH.isAbs(path);\n }\n resolvedPath = PATH.normalizeArray(resolvedPath.split(\"/\").filter((p) => !!p), !resolvedAbsolute).join(\"/\");\n return (resolvedAbsolute ? \"/\" : \"\") + resolvedPath || \".\";\n }, relative: (from2, to) => {\n from2 = PATH_FS.resolve(from2).substr(1);\n to = PATH_FS.resolve(to).substr(1);\n function trim(arr) {\n var start = 0;\n for (; start < arr.length; start++) {\n if (arr[start] !== \"\") break;\n }\n var end = arr.length - 1;\n for (; end >= 0; end--) {\n if (arr[end] !== \"\") break;\n }\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n var fromParts = trim(from2.split(\"/\"));\n var toParts = trim(to.split(\"/\"));\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push(\"..\");\n }\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n return outputParts.join(\"/\");\n } };\n var FS_stdin_getChar_buffer = [];\n var lengthBytesUTF8 = (str) => {\n var len = 0;\n for (var i = 0; i < str.length; ++i) {\n var c = str.charCodeAt(i);\n if (c <= 127) {\n len++;\n } else if (c <= 2047) {\n len += 2;\n } else if (c >= 55296 && c <= 57343) {\n len += 4;\n ++i;\n } else {\n len += 3;\n }\n }\n return len;\n };\n var stringToUTF8Array = (str, heap, outIdx, maxBytesToWrite) => {\n if (!(maxBytesToWrite > 0)) return 0;\n var startIdx = outIdx;\n var endIdx = outIdx + maxBytesToWrite - 1;\n for (var i = 0; i < str.length; ++i) {\n var u = str.charCodeAt(i);\n if (u >= 55296 && u <= 57343) {\n var u1 = str.charCodeAt(++i);\n u = 65536 + ((u & 1023) << 10) | u1 & 1023;\n }\n if (u <= 127) {\n if (outIdx >= endIdx) break;\n heap[outIdx++] = u;\n } else if (u <= 2047) {\n if (outIdx + 1 >= endIdx) break;\n heap[outIdx++] = 192 | u >> 6;\n heap[outIdx++] = 128 | u & 63;\n } else if (u <= 65535) {\n if (outIdx + 2 >= endIdx) break;\n heap[outIdx++] = 224 | u >> 12;\n heap[outIdx++] = 128 | u >> 6 & 63;\n heap[outIdx++] = 128 | u & 63;\n } else {\n if (outIdx + 3 >= endIdx) break;\n heap[outIdx++] = 240 | u >> 18;\n heap[outIdx++] = 128 | u >> 12 & 63;\n heap[outIdx++] = 128 | u >> 6 & 63;\n heap[outIdx++] = 128 | u & 63;\n }\n }\n heap[outIdx] = 0;\n return outIdx - startIdx;\n };\n function intArrayFromString(stringy, dontAddNull, length) {\n var len = length > 0 ? length : lengthBytesUTF8(stringy) + 1;\n var u8array = new Array(len);\n var numBytesWritten = stringToUTF8Array(stringy, u8array, 0, u8array.length);\n if (dontAddNull) u8array.length = numBytesWritten;\n return u8array;\n }\n var FS_stdin_getChar = () => {\n if (!FS_stdin_getChar_buffer.length) {\n var result = null;\n if (typeof window != \"undefined\" && typeof window.prompt == \"function\") {\n result = window.prompt(\"Input: \");\n if (result !== null) {\n result += \"\\n\";\n }\n } else if (typeof readline == \"function\") {\n result = readline();\n if (result !== null) {\n result += \"\\n\";\n }\n }\n if (!result) {\n return null;\n }\n FS_stdin_getChar_buffer = intArrayFromString(result, true);\n }\n return FS_stdin_getChar_buffer.shift();\n };\n var TTY = { ttys: [], init() {\n }, shutdown() {\n }, register(dev, ops) {\n TTY.ttys[dev] = { input: [], output: [], ops };\n FS.registerDevice(dev, TTY.stream_ops);\n }, stream_ops: { open(stream) {\n var tty = TTY.ttys[stream.node.rdev];\n if (!tty) {\n throw new FS.ErrnoError(43);\n }\n stream.tty = tty;\n stream.seekable = false;\n }, close(stream) {\n stream.tty.ops.fsync(stream.tty);\n }, fsync(stream) {\n stream.tty.ops.fsync(stream.tty);\n }, read(stream, buffer, offset, length, pos) {\n if (!stream.tty || !stream.tty.ops.get_char) {\n throw new FS.ErrnoError(60);\n }\n var bytesRead = 0;\n for (var i = 0; i < length; i++) {\n var result;\n try {\n result = stream.tty.ops.get_char(stream.tty);\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (result === void 0 && bytesRead === 0) {\n throw new FS.ErrnoError(6);\n }\n if (result === null || result === void 0) break;\n bytesRead++;\n buffer[offset + i] = result;\n }\n if (bytesRead) {\n stream.node.timestamp = Date.now();\n }\n return bytesRead;\n }, write(stream, buffer, offset, length, pos) {\n if (!stream.tty || !stream.tty.ops.put_char) {\n throw new FS.ErrnoError(60);\n }\n try {\n for (var i = 0; i < length; i++) {\n stream.tty.ops.put_char(stream.tty, buffer[offset + i]);\n }\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (length) {\n stream.node.timestamp = Date.now();\n }\n return i;\n } }, default_tty_ops: { get_char(tty) {\n return FS_stdin_getChar();\n }, put_char(tty, val) {\n if (val === null || val === 10) {\n out(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n } else {\n if (val != 0) tty.output.push(val);\n }\n }, fsync(tty) {\n if (tty.output && tty.output.length > 0) {\n out(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n }\n }, ioctl_tcgets(tty) {\n return { c_iflag: 25856, c_oflag: 5, c_cflag: 191, c_lflag: 35387, c_cc: [3, 28, 127, 21, 4, 0, 1, 0, 17, 19, 26, 0, 18, 15, 23, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] };\n }, ioctl_tcsets(tty, optional_actions, data) {\n return 0;\n }, ioctl_tiocgwinsz(tty) {\n return [24, 80];\n } }, default_tty1_ops: { put_char(tty, val) {\n if (val === null || val === 10) {\n err(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n } else {\n if (val != 0) tty.output.push(val);\n }\n }, fsync(tty) {\n if (tty.output && tty.output.length > 0) {\n err(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n }\n } } };\n var zeroMemory = (address, size) => {\n HEAPU8.fill(0, address, address + size);\n return address;\n };\n var alignMemory = (size, alignment) => Math.ceil(size / alignment) * alignment;\n var mmapAlloc = (size) => {\n size = alignMemory(size, 65536);\n var ptr = _emscripten_builtin_memalign(65536, size);\n if (!ptr) return 0;\n return zeroMemory(ptr, size);\n };\n var MEMFS = { ops_table: null, mount(mount) {\n return MEMFS.createNode(null, \"/\", 16384 | 511, 0);\n }, createNode(parent, name, mode, dev) {\n if (FS.isBlkdev(mode) || FS.isFIFO(mode)) {\n throw new FS.ErrnoError(63);\n }\n if (!MEMFS.ops_table) {\n MEMFS.ops_table = { dir: { node: { getattr: MEMFS.node_ops.getattr, setattr: MEMFS.node_ops.setattr, lookup: MEMFS.node_ops.lookup, mknod: MEMFS.node_ops.mknod, rename: MEMFS.node_ops.rename, unlink: MEMFS.node_ops.unlink, rmdir: MEMFS.node_ops.rmdir, readdir: MEMFS.node_ops.readdir, symlink: MEMFS.node_ops.symlink }, stream: { llseek: MEMFS.stream_ops.llseek } }, file: { node: { getattr: MEMFS.node_ops.getattr, setattr: MEMFS.node_ops.setattr }, stream: { llseek: MEMFS.stream_ops.llseek, read: MEMFS.stream_ops.read, write: MEMFS.stream_ops.write, allocate: MEMFS.stream_ops.allocate, mmap: MEMFS.stream_ops.mmap, msync: MEMFS.stream_ops.msync } }, link: { node: { getattr: MEMFS.node_ops.getattr, setattr: MEMFS.node_ops.setattr, readlink: MEMFS.node_ops.readlink }, stream: {} }, chrdev: { node: { getattr: MEMFS.node_ops.getattr, setattr: MEMFS.node_ops.setattr }, stream: FS.chrdev_stream_ops } };\n }\n var node = FS.createNode(parent, name, mode, dev);\n if (FS.isDir(node.mode)) {\n node.node_ops = MEMFS.ops_table.dir.node;\n node.stream_ops = MEMFS.ops_table.dir.stream;\n node.contents = {};\n } else if (FS.isFile(node.mode)) {\n node.node_ops = MEMFS.ops_table.file.node;\n node.stream_ops = MEMFS.ops_table.file.stream;\n node.usedBytes = 0;\n node.contents = null;\n } else if (FS.isLink(node.mode)) {\n node.node_ops = MEMFS.ops_table.link.node;\n node.stream_ops = MEMFS.ops_table.link.stream;\n } else if (FS.isChrdev(node.mode)) {\n node.node_ops = MEMFS.ops_table.chrdev.node;\n node.stream_ops = MEMFS.ops_table.chrdev.stream;\n }\n node.timestamp = Date.now();\n if (parent) {\n parent.contents[name] = node;\n parent.timestamp = node.timestamp;\n }\n return node;\n }, getFileDataAsTypedArray(node) {\n if (!node.contents) return new Uint8Array(0);\n if (node.contents.subarray) return node.contents.subarray(0, node.usedBytes);\n return new Uint8Array(node.contents);\n }, expandFileStorage(node, newCapacity) {\n var prevCapacity = node.contents ? node.contents.length : 0;\n if (prevCapacity >= newCapacity) return;\n var CAPACITY_DOUBLING_MAX = 1024 * 1024;\n newCapacity = Math.max(newCapacity, prevCapacity * (prevCapacity < CAPACITY_DOUBLING_MAX ? 2 : 1.125) >>> 0);\n if (prevCapacity != 0) newCapacity = Math.max(newCapacity, 256);\n var oldContents = node.contents;\n node.contents = new Uint8Array(newCapacity);\n if (node.usedBytes > 0) node.contents.set(oldContents.subarray(0, node.usedBytes), 0);\n }, resizeFileStorage(node, newSize) {\n if (node.usedBytes == newSize) return;\n if (newSize == 0) {\n node.contents = null;\n node.usedBytes = 0;\n } else {\n var oldContents = node.contents;\n node.contents = new Uint8Array(newSize);\n if (oldContents) {\n node.contents.set(oldContents.subarray(0, Math.min(newSize, node.usedBytes)));\n }\n node.usedBytes = newSize;\n }\n }, node_ops: { getattr(node) {\n var attr = {};\n attr.dev = FS.isChrdev(node.mode) ? node.id : 1;\n attr.ino = node.id;\n attr.mode = node.mode;\n attr.nlink = 1;\n attr.uid = 0;\n attr.gid = 0;\n attr.rdev = node.rdev;\n if (FS.isDir(node.mode)) {\n attr.size = 4096;\n } else if (FS.isFile(node.mode)) {\n attr.size = node.usedBytes;\n } else if (FS.isLink(node.mode)) {\n attr.size = node.link.length;\n } else {\n attr.size = 0;\n }\n attr.atime = new Date(node.timestamp);\n attr.mtime = new Date(node.timestamp);\n attr.ctime = new Date(node.timestamp);\n attr.blksize = 4096;\n attr.blocks = Math.ceil(attr.size / attr.blksize);\n return attr;\n }, setattr(node, attr) {\n if (attr.mode !== void 0) {\n node.mode = attr.mode;\n }\n if (attr.timestamp !== void 0) {\n node.timestamp = attr.timestamp;\n }\n if (attr.size !== void 0) {\n MEMFS.resizeFileStorage(node, attr.size);\n }\n }, lookup(parent, name) {\n throw FS.genericErrors[44];\n }, mknod(parent, name, mode, dev) {\n return MEMFS.createNode(parent, name, mode, dev);\n }, rename(old_node, new_dir, new_name) {\n if (FS.isDir(old_node.mode)) {\n var new_node;\n try {\n new_node = FS.lookupNode(new_dir, new_name);\n } catch (e) {\n }\n if (new_node) {\n for (var i in new_node.contents) {\n throw new FS.ErrnoError(55);\n }\n }\n }\n delete old_node.parent.contents[old_node.name];\n old_node.parent.timestamp = Date.now();\n old_node.name = new_name;\n new_dir.contents[new_name] = old_node;\n new_dir.timestamp = old_node.parent.timestamp;\n old_node.parent = new_dir;\n }, unlink(parent, name) {\n delete parent.contents[name];\n parent.timestamp = Date.now();\n }, rmdir(parent, name) {\n var node = FS.lookupNode(parent, name);\n for (var i in node.contents) {\n throw new FS.ErrnoError(55);\n }\n delete parent.contents[name];\n parent.timestamp = Date.now();\n }, readdir(node) {\n var entries = [\".\", \"..\"];\n for (var key in node.contents) {\n if (!node.contents.hasOwnProperty(key)) {\n continue;\n }\n entries.push(key);\n }\n return entries;\n }, symlink(parent, newname, oldpath) {\n var node = MEMFS.createNode(parent, newname, 511 | 40960, 0);\n node.link = oldpath;\n return node;\n }, readlink(node) {\n if (!FS.isLink(node.mode)) {\n throw new FS.ErrnoError(28);\n }\n return node.link;\n } }, stream_ops: { read(stream, buffer, offset, length, position) {\n var contents = stream.node.contents;\n if (position >= stream.node.usedBytes) return 0;\n var size = Math.min(stream.node.usedBytes - position, length);\n if (size > 8 && contents.subarray) {\n buffer.set(contents.subarray(position, position + size), offset);\n } else {\n for (var i = 0; i < size; i++) buffer[offset + i] = contents[position + i];\n }\n return size;\n }, write(stream, buffer, offset, length, position, canOwn) {\n if (buffer.buffer === HEAP8.buffer) {\n canOwn = false;\n }\n if (!length) return 0;\n var node = stream.node;\n node.timestamp = Date.now();\n if (buffer.subarray && (!node.contents || node.contents.subarray)) {\n if (canOwn) {\n node.contents = buffer.subarray(offset, offset + length);\n node.usedBytes = length;\n return length;\n } else if (node.usedBytes === 0 && position === 0) {\n node.contents = buffer.slice(offset, offset + length);\n node.usedBytes = length;\n return length;\n } else if (position + length <= node.usedBytes) {\n node.contents.set(buffer.subarray(offset, offset + length), position);\n return length;\n }\n }\n MEMFS.expandFileStorage(node, position + length);\n if (node.contents.subarray && buffer.subarray) {\n node.contents.set(buffer.subarray(offset, offset + length), position);\n } else {\n for (var i = 0; i < length; i++) {\n node.contents[position + i] = buffer[offset + i];\n }\n }\n node.usedBytes = Math.max(node.usedBytes, position + length);\n return length;\n }, llseek(stream, offset, whence) {\n var position = offset;\n if (whence === 1) {\n position += stream.position;\n } else if (whence === 2) {\n if (FS.isFile(stream.node.mode)) {\n position += stream.node.usedBytes;\n }\n }\n if (position < 0) {\n throw new FS.ErrnoError(28);\n }\n return position;\n }, allocate(stream, offset, length) {\n MEMFS.expandFileStorage(stream.node, offset + length);\n stream.node.usedBytes = Math.max(stream.node.usedBytes, offset + length);\n }, mmap(stream, length, position, prot, flags) {\n if (!FS.isFile(stream.node.mode)) {\n throw new FS.ErrnoError(43);\n }\n var ptr;\n var allocated;\n var contents = stream.node.contents;\n if (!(flags & 2) && contents.buffer === HEAP8.buffer) {\n allocated = false;\n ptr = contents.byteOffset;\n } else {\n if (position > 0 || position + length < contents.length) {\n if (contents.subarray) {\n contents = contents.subarray(position, position + length);\n } else {\n contents = Array.prototype.slice.call(contents, position, position + length);\n }\n }\n allocated = true;\n ptr = mmapAlloc(length);\n if (!ptr) {\n throw new FS.ErrnoError(48);\n }\n HEAP8.set(contents, ptr);\n }\n return { ptr, allocated };\n }, msync(stream, buffer, offset, length, mmapFlags) {\n MEMFS.stream_ops.write(stream, buffer, 0, length, offset, false);\n return 0;\n } } };\n var asyncLoad = (url, onload, onerror, noRunDep) => {\n var dep = !noRunDep ? getUniqueRunDependency(`al ${url}`) : \"\";\n readAsync(url, (arrayBuffer) => {\n assert(arrayBuffer, `Loading data file \"${url}\" failed (no arrayBuffer).`);\n onload(new Uint8Array(arrayBuffer));\n if (dep) removeRunDependency(dep);\n }, (event) => {\n if (onerror) {\n onerror();\n } else {\n throw `Loading data file \"${url}\" failed.`;\n }\n });\n if (dep) addRunDependency(dep);\n };\n var preloadPlugins = Module2[\"preloadPlugins\"] || [];\n var FS_handledByPreloadPlugin = (byteArray, fullname, finish, onerror) => {\n if (typeof Browser != \"undefined\") Browser.init();\n var handled = false;\n preloadPlugins.forEach((plugin) => {\n if (handled) return;\n if (plugin[\"canHandle\"](fullname)) {\n plugin[\"handle\"](byteArray, fullname, finish, onerror);\n handled = true;\n }\n });\n return handled;\n };\n var FS_createPreloadedFile = (parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn, preFinish) => {\n var fullname = name ? PATH_FS.resolve(PATH.join2(parent, name)) : parent;\n var dep = getUniqueRunDependency(`cp ${fullname}`);\n function processData(byteArray) {\n function finish(byteArray2) {\n if (preFinish) preFinish();\n if (!dontCreateFile) {\n FS.createDataFile(parent, name, byteArray2, canRead, canWrite, canOwn);\n }\n if (onload) onload();\n removeRunDependency(dep);\n }\n if (FS_handledByPreloadPlugin(byteArray, fullname, finish, () => {\n if (onerror) onerror();\n removeRunDependency(dep);\n })) {\n return;\n }\n finish(byteArray);\n }\n addRunDependency(dep);\n if (typeof url == \"string\") {\n asyncLoad(url, (byteArray) => processData(byteArray), onerror);\n } else {\n processData(url);\n }\n };\n var FS_modeStringToFlags = (str) => {\n var flagModes = { \"r\": 0, \"r+\": 2, \"w\": 512 | 64 | 1, \"w+\": 512 | 64 | 2, \"a\": 1024 | 64 | 1, \"a+\": 1024 | 64 | 2 };\n var flags = flagModes[str];\n if (typeof flags == \"undefined\") {\n throw new Error(`Unknown file open mode: ${str}`);\n }\n return flags;\n };\n var FS_getMode = (canRead, canWrite) => {\n var mode = 0;\n if (canRead) mode |= 292 | 73;\n if (canWrite) mode |= 146;\n return mode;\n };\n var FS = { root: null, mounts: [], devices: {}, streams: [], nextInode: 1, nameTable: null, currentPath: \"/\", initialized: false, ignorePermissions: true, ErrnoError: null, genericErrors: {}, filesystems: null, syncFSRequests: 0, lookupPath(path, opts = {}) {\n path = PATH_FS.resolve(path);\n if (!path) return { path: \"\", node: null };\n var defaults = { follow_mount: true, recurse_count: 0 };\n opts = Object.assign(defaults, opts);\n if (opts.recurse_count > 8) {\n throw new FS.ErrnoError(32);\n }\n var parts = path.split(\"/\").filter((p) => !!p);\n var current = FS.root;\n var current_path = \"/\";\n for (var i = 0; i < parts.length; i++) {\n var islast = i === parts.length - 1;\n if (islast && opts.parent) {\n break;\n }\n current = FS.lookupNode(current, parts[i]);\n current_path = PATH.join2(current_path, parts[i]);\n if (FS.isMountpoint(current)) {\n if (!islast || islast && opts.follow_mount) {\n current = current.mounted.root;\n }\n }\n if (!islast || opts.follow) {\n var count = 0;\n while (FS.isLink(current.mode)) {\n var link = FS.readlink(current_path);\n current_path = PATH_FS.resolve(PATH.dirname(current_path), link);\n var lookup2 = FS.lookupPath(current_path, { recurse_count: opts.recurse_count + 1 });\n current = lookup2.node;\n if (count++ > 40) {\n throw new FS.ErrnoError(32);\n }\n }\n }\n }\n return { path: current_path, node: current };\n }, getPath(node) {\n var path;\n while (true) {\n if (FS.isRoot(node)) {\n var mount = node.mount.mountpoint;\n if (!path) return mount;\n return mount[mount.length - 1] !== \"/\" ? `${mount}/${path}` : mount + path;\n }\n path = path ? `${node.name}/${path}` : node.name;\n node = node.parent;\n }\n }, hashName(parentid, name) {\n var hash = 0;\n for (var i = 0; i < name.length; i++) {\n hash = (hash << 5) - hash + name.charCodeAt(i) | 0;\n }\n return (parentid + hash >>> 0) % FS.nameTable.length;\n }, hashAddNode(node) {\n var hash = FS.hashName(node.parent.id, node.name);\n node.name_next = FS.nameTable[hash];\n FS.nameTable[hash] = node;\n }, hashRemoveNode(node) {\n var hash = FS.hashName(node.parent.id, node.name);\n if (FS.nameTable[hash] === node) {\n FS.nameTable[hash] = node.name_next;\n } else {\n var current = FS.nameTable[hash];\n while (current) {\n if (current.name_next === node) {\n current.name_next = node.name_next;\n break;\n }\n current = current.name_next;\n }\n }\n }, lookupNode(parent, name) {\n var errCode = FS.mayLookup(parent);\n if (errCode) {\n throw new FS.ErrnoError(errCode, parent);\n }\n var hash = FS.hashName(parent.id, name);\n for (var node = FS.nameTable[hash]; node; node = node.name_next) {\n var nodeName = node.name;\n if (node.parent.id === parent.id && nodeName === name) {\n return node;\n }\n }\n return FS.lookup(parent, name);\n }, createNode(parent, name, mode, rdev) {\n var node = new FS.FSNode(parent, name, mode, rdev);\n FS.hashAddNode(node);\n return node;\n }, destroyNode(node) {\n FS.hashRemoveNode(node);\n }, isRoot(node) {\n return node === node.parent;\n }, isMountpoint(node) {\n return !!node.mounted;\n }, isFile(mode) {\n return (mode & 61440) === 32768;\n }, isDir(mode) {\n return (mode & 61440) === 16384;\n }, isLink(mode) {\n return (mode & 61440) === 40960;\n }, isChrdev(mode) {\n return (mode & 61440) === 8192;\n }, isBlkdev(mode) {\n return (mode & 61440) === 24576;\n }, isFIFO(mode) {\n return (mode & 61440) === 4096;\n }, isSocket(mode) {\n return (mode & 49152) === 49152;\n }, flagsToPermissionString(flag) {\n var perms = [\"r\", \"w\", \"rw\"][flag & 3];\n if (flag & 512) {\n perms += \"w\";\n }\n return perms;\n }, nodePermissions(node, perms) {\n if (FS.ignorePermissions) {\n return 0;\n }\n if (perms.includes(\"r\") && !(node.mode & 292)) {\n return 2;\n } else if (perms.includes(\"w\") && !(node.mode & 146)) {\n return 2;\n } else if (perms.includes(\"x\") && !(node.mode & 73)) {\n return 2;\n }\n return 0;\n }, mayLookup(dir) {\n var errCode = FS.nodePermissions(dir, \"x\");\n if (errCode) return errCode;\n if (!dir.node_ops.lookup) return 2;\n return 0;\n }, mayCreate(dir, name) {\n try {\n var node = FS.lookupNode(dir, name);\n return 20;\n } catch (e) {\n }\n return FS.nodePermissions(dir, \"wx\");\n }, mayDelete(dir, name, isdir) {\n var node;\n try {\n node = FS.lookupNode(dir, name);\n } catch (e) {\n return e.errno;\n }\n var errCode = FS.nodePermissions(dir, \"wx\");\n if (errCode) {\n return errCode;\n }\n if (isdir) {\n if (!FS.isDir(node.mode)) {\n return 54;\n }\n if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) {\n return 10;\n }\n } else {\n if (FS.isDir(node.mode)) {\n return 31;\n }\n }\n return 0;\n }, mayOpen(node, flags) {\n if (!node) {\n return 44;\n }\n if (FS.isLink(node.mode)) {\n return 32;\n } else if (FS.isDir(node.mode)) {\n if (FS.flagsToPermissionString(flags) !== \"r\" || flags & 512) {\n return 31;\n }\n }\n return FS.nodePermissions(node, FS.flagsToPermissionString(flags));\n }, MAX_OPEN_FDS: 4096, nextfd() {\n for (var fd = 0; fd <= FS.MAX_OPEN_FDS; fd++) {\n if (!FS.streams[fd]) {\n return fd;\n }\n }\n throw new FS.ErrnoError(33);\n }, getStreamChecked(fd) {\n var stream = FS.getStream(fd);\n if (!stream) {\n throw new FS.ErrnoError(8);\n }\n return stream;\n }, getStream: (fd) => FS.streams[fd], createStream(stream, fd = -1) {\n if (!FS.FSStream) {\n FS.FSStream = function() {\n this.shared = {};\n };\n FS.FSStream.prototype = {};\n Object.defineProperties(FS.FSStream.prototype, { object: { get() {\n return this.node;\n }, set(val) {\n this.node = val;\n } }, isRead: { get() {\n return (this.flags & 2097155) !== 1;\n } }, isWrite: { get() {\n return (this.flags & 2097155) !== 0;\n } }, isAppend: { get() {\n return this.flags & 1024;\n } }, flags: { get() {\n return this.shared.flags;\n }, set(val) {\n this.shared.flags = val;\n } }, position: { get() {\n return this.shared.position;\n }, set(val) {\n this.shared.position = val;\n } } });\n }\n stream = Object.assign(new FS.FSStream(), stream);\n if (fd == -1) {\n fd = FS.nextfd();\n }\n stream.fd = fd;\n FS.streams[fd] = stream;\n return stream;\n }, closeStream(fd) {\n FS.streams[fd] = null;\n }, chrdev_stream_ops: { open(stream) {\n var device = FS.getDevice(stream.node.rdev);\n stream.stream_ops = device.stream_ops;\n if (stream.stream_ops.open) {\n stream.stream_ops.open(stream);\n }\n }, llseek() {\n throw new FS.ErrnoError(70);\n } }, major: (dev) => dev >> 8, minor: (dev) => dev & 255, makedev: (ma, mi) => ma << 8 | mi, registerDevice(dev, ops) {\n FS.devices[dev] = { stream_ops: ops };\n }, getDevice: (dev) => FS.devices[dev], getMounts(mount) {\n var mounts = [];\n var check = [mount];\n while (check.length) {\n var m = check.pop();\n mounts.push(m);\n check.push.apply(check, m.mounts);\n }\n return mounts;\n }, syncfs(populate, callback) {\n if (typeof populate == \"function\") {\n callback = populate;\n populate = false;\n }\n FS.syncFSRequests++;\n if (FS.syncFSRequests > 1) {\n err(`warning: ${FS.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);\n }\n var mounts = FS.getMounts(FS.root.mount);\n var completed = 0;\n function doCallback(errCode) {\n FS.syncFSRequests--;\n return callback(errCode);\n }\n function done(errCode) {\n if (errCode) {\n if (!done.errored) {\n done.errored = true;\n return doCallback(errCode);\n }\n return;\n }\n if (++completed >= mounts.length) {\n doCallback(null);\n }\n }\n mounts.forEach((mount) => {\n if (!mount.type.syncfs) {\n return done(null);\n }\n mount.type.syncfs(mount, populate, done);\n });\n }, mount(type, opts, mountpoint) {\n var root = mountpoint === \"/\";\n var pseudo = !mountpoint;\n var node;\n if (root && FS.root) {\n throw new FS.ErrnoError(10);\n } else if (!root && !pseudo) {\n var lookup2 = FS.lookupPath(mountpoint, { follow_mount: false });\n mountpoint = lookup2.path;\n node = lookup2.node;\n if (FS.isMountpoint(node)) {\n throw new FS.ErrnoError(10);\n }\n if (!FS.isDir(node.mode)) {\n throw new FS.ErrnoError(54);\n }\n }\n var mount = { type, opts, mountpoint, mounts: [] };\n var mountRoot = type.mount(mount);\n mountRoot.mount = mount;\n mount.root = mountRoot;\n if (root) {\n FS.root = mountRoot;\n } else if (node) {\n node.mounted = mount;\n if (node.mount) {\n node.mount.mounts.push(mount);\n }\n }\n return mountRoot;\n }, unmount(mountpoint) {\n var lookup2 = FS.lookupPath(mountpoint, { follow_mount: false });\n if (!FS.isMountpoint(lookup2.node)) {\n throw new FS.ErrnoError(28);\n }\n var node = lookup2.node;\n var mount = node.mounted;\n var mounts = FS.getMounts(mount);\n Object.keys(FS.nameTable).forEach((hash) => {\n var current = FS.nameTable[hash];\n while (current) {\n var next = current.name_next;\n if (mounts.includes(current.mount)) {\n FS.destroyNode(current);\n }\n current = next;\n }\n });\n node.mounted = null;\n var idx = node.mount.mounts.indexOf(mount);\n node.mount.mounts.splice(idx, 1);\n }, lookup(parent, name) {\n return parent.node_ops.lookup(parent, name);\n }, mknod(path, mode, dev) {\n var lookup2 = FS.lookupPath(path, { parent: true });\n var parent = lookup2.node;\n var name = PATH.basename(path);\n if (!name || name === \".\" || name === \"..\") {\n throw new FS.ErrnoError(28);\n }\n var errCode = FS.mayCreate(parent, name);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n if (!parent.node_ops.mknod) {\n throw new FS.ErrnoError(63);\n }\n return parent.node_ops.mknod(parent, name, mode, dev);\n }, create(path, mode) {\n mode = mode !== void 0 ? mode : 438;\n mode &= 4095;\n mode |= 32768;\n return FS.mknod(path, mode, 0);\n }, mkdir(path, mode) {\n mode = mode !== void 0 ? mode : 511;\n mode &= 511 | 512;\n mode |= 16384;\n return FS.mknod(path, mode, 0);\n }, mkdirTree(path, mode) {\n var dirs = path.split(\"/\");\n var d = \"\";\n for (var i = 0; i < dirs.length; ++i) {\n if (!dirs[i]) continue;\n d += \"/\" + dirs[i];\n try {\n FS.mkdir(d, mode);\n } catch (e) {\n if (e.errno != 20) throw e;\n }\n }\n }, mkdev(path, mode, dev) {\n if (typeof dev == \"undefined\") {\n dev = mode;\n mode = 438;\n }\n mode |= 8192;\n return FS.mknod(path, mode, dev);\n }, symlink(oldpath, newpath) {\n if (!PATH_FS.resolve(oldpath)) {\n throw new FS.ErrnoError(44);\n }\n var lookup2 = FS.lookupPath(newpath, { parent: true });\n var parent = lookup2.node;\n if (!parent) {\n throw new FS.ErrnoError(44);\n }\n var newname = PATH.basename(newpath);\n var errCode = FS.mayCreate(parent, newname);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n if (!parent.node_ops.symlink) {\n throw new FS.ErrnoError(63);\n }\n return parent.node_ops.symlink(parent, newname, oldpath);\n }, rename(old_path, new_path) {\n var old_dirname = PATH.dirname(old_path);\n var new_dirname = PATH.dirname(new_path);\n var old_name = PATH.basename(old_path);\n var new_name = PATH.basename(new_path);\n var lookup2, old_dir, new_dir;\n lookup2 = FS.lookupPath(old_path, { parent: true });\n old_dir = lookup2.node;\n lookup2 = FS.lookupPath(new_path, { parent: true });\n new_dir = lookup2.node;\n if (!old_dir || !new_dir) throw new FS.ErrnoError(44);\n if (old_dir.mount !== new_dir.mount) {\n throw new FS.ErrnoError(75);\n }\n var old_node = FS.lookupNode(old_dir, old_name);\n var relative = PATH_FS.relative(old_path, new_dirname);\n if (relative.charAt(0) !== \".\") {\n throw new FS.ErrnoError(28);\n }\n relative = PATH_FS.relative(new_path, old_dirname);\n if (relative.charAt(0) !== \".\") {\n throw new FS.ErrnoError(55);\n }\n var new_node;\n try {\n new_node = FS.lookupNode(new_dir, new_name);\n } catch (e) {\n }\n if (old_node === new_node) {\n return;\n }\n var isdir = FS.isDir(old_node.mode);\n var errCode = FS.mayDelete(old_dir, old_name, isdir);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n errCode = new_node ? FS.mayDelete(new_dir, new_name, isdir) : FS.mayCreate(new_dir, new_name);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n if (!old_dir.node_ops.rename) {\n throw new FS.ErrnoError(63);\n }\n if (FS.isMountpoint(old_node) || new_node && FS.isMountpoint(new_node)) {\n throw new FS.ErrnoError(10);\n }\n if (new_dir !== old_dir) {\n errCode = FS.nodePermissions(old_dir, \"w\");\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n }\n FS.hashRemoveNode(old_node);\n try {\n old_dir.node_ops.rename(old_node, new_dir, new_name);\n } catch (e) {\n throw e;\n } finally {\n FS.hashAddNode(old_node);\n }\n }, rmdir(path) {\n var lookup2 = FS.lookupPath(path, { parent: true });\n var parent = lookup2.node;\n var name = PATH.basename(path);\n var node = FS.lookupNode(parent, name);\n var errCode = FS.mayDelete(parent, name, true);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n if (!parent.node_ops.rmdir) {\n throw new FS.ErrnoError(63);\n }\n if (FS.isMountpoint(node)) {\n throw new FS.ErrnoError(10);\n }\n parent.node_ops.rmdir(parent, name);\n FS.destroyNode(node);\n }, readdir(path) {\n var lookup2 = FS.lookupPath(path, { follow: true });\n var node = lookup2.node;\n if (!node.node_ops.readdir) {\n throw new FS.ErrnoError(54);\n }\n return node.node_ops.readdir(node);\n }, unlink(path) {\n var lookup2 = FS.lookupPath(path, { parent: true });\n var parent = lookup2.node;\n if (!parent) {\n throw new FS.ErrnoError(44);\n }\n var name = PATH.basename(path);\n var node = FS.lookupNode(parent, name);\n var errCode = FS.mayDelete(parent, name, false);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n if (!parent.node_ops.unlink) {\n throw new FS.ErrnoError(63);\n }\n if (FS.isMountpoint(node)) {\n throw new FS.ErrnoError(10);\n }\n parent.node_ops.unlink(parent, name);\n FS.destroyNode(node);\n }, readlink(path) {\n var lookup2 = FS.lookupPath(path);\n var link = lookup2.node;\n if (!link) {\n throw new FS.ErrnoError(44);\n }\n if (!link.node_ops.readlink) {\n throw new FS.ErrnoError(28);\n }\n return PATH_FS.resolve(FS.getPath(link.parent), link.node_ops.readlink(link));\n }, stat(path, dontFollow) {\n var lookup2 = FS.lookupPath(path, { follow: !dontFollow });\n var node = lookup2.node;\n if (!node) {\n throw new FS.ErrnoError(44);\n }\n if (!node.node_ops.getattr) {\n throw new FS.ErrnoError(63);\n }\n return node.node_ops.getattr(node);\n }, lstat(path) {\n return FS.stat(path, true);\n }, chmod(path, mode, dontFollow) {\n var node;\n if (typeof path == \"string\") {\n var lookup2 = FS.lookupPath(path, { follow: !dontFollow });\n node = lookup2.node;\n } else {\n node = path;\n }\n if (!node.node_ops.setattr) {\n throw new FS.ErrnoError(63);\n }\n node.node_ops.setattr(node, { mode: mode & 4095 | node.mode & ~4095, timestamp: Date.now() });\n }, lchmod(path, mode) {\n FS.chmod(path, mode, true);\n }, fchmod(fd, mode) {\n var stream = FS.getStreamChecked(fd);\n FS.chmod(stream.node, mode);\n }, chown(path, uid, gid, dontFollow) {\n var node;\n if (typeof path == \"string\") {\n var lookup2 = FS.lookupPath(path, { follow: !dontFollow });\n node = lookup2.node;\n } else {\n node = path;\n }\n if (!node.node_ops.setattr) {\n throw new FS.ErrnoError(63);\n }\n node.node_ops.setattr(node, { timestamp: Date.now() });\n }, lchown(path, uid, gid) {\n FS.chown(path, uid, gid, true);\n }, fchown(fd, uid, gid) {\n var stream = FS.getStreamChecked(fd);\n FS.chown(stream.node, uid, gid);\n }, truncate(path, len) {\n if (len < 0) {\n throw new FS.ErrnoError(28);\n }\n var node;\n if (typeof path == \"string\") {\n var lookup2 = FS.lookupPath(path, { follow: true });\n node = lookup2.node;\n } else {\n node = path;\n }\n if (!node.node_ops.setattr) {\n throw new FS.ErrnoError(63);\n }\n if (FS.isDir(node.mode)) {\n throw new FS.ErrnoError(31);\n }\n if (!FS.isFile(node.mode)) {\n throw new FS.ErrnoError(28);\n }\n var errCode = FS.nodePermissions(node, \"w\");\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n node.node_ops.setattr(node, { size: len, timestamp: Date.now() });\n }, ftruncate(fd, len) {\n var stream = FS.getStreamChecked(fd);\n if ((stream.flags & 2097155) === 0) {\n throw new FS.ErrnoError(28);\n }\n FS.truncate(stream.node, len);\n }, utime(path, atime, mtime) {\n var lookup2 = FS.lookupPath(path, { follow: true });\n var node = lookup2.node;\n node.node_ops.setattr(node, { timestamp: Math.max(atime, mtime) });\n }, open(path, flags, mode) {\n if (path === \"\") {\n throw new FS.ErrnoError(44);\n }\n flags = typeof flags == \"string\" ? FS_modeStringToFlags(flags) : flags;\n mode = typeof mode == \"undefined\" ? 438 : mode;\n if (flags & 64) {\n mode = mode & 4095 | 32768;\n } else {\n mode = 0;\n }\n var node;\n if (typeof path == \"object\") {\n node = path;\n } else {\n path = PATH.normalize(path);\n try {\n var lookup2 = FS.lookupPath(path, { follow: !(flags & 131072) });\n node = lookup2.node;\n } catch (e) {\n }\n }\n var created = false;\n if (flags & 64) {\n if (node) {\n if (flags & 128) {\n throw new FS.ErrnoError(20);\n }\n } else {\n node = FS.mknod(path, mode, 0);\n created = true;\n }\n }\n if (!node) {\n throw new FS.ErrnoError(44);\n }\n if (FS.isChrdev(node.mode)) {\n flags &= ~512;\n }\n if (flags & 65536 && !FS.isDir(node.mode)) {\n throw new FS.ErrnoError(54);\n }\n if (!created) {\n var errCode = FS.mayOpen(node, flags);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n }\n if (flags & 512 && !created) {\n FS.truncate(node, 0);\n }\n flags &= ~(128 | 512 | 131072);\n var stream = FS.createStream({ node, path: FS.getPath(node), flags, seekable: true, position: 0, stream_ops: node.stream_ops, ungotten: [], error: false });\n if (stream.stream_ops.open) {\n stream.stream_ops.open(stream);\n }\n if (Module2[\"logReadFiles\"] && !(flags & 1)) {\n if (!FS.readFiles) FS.readFiles = {};\n if (!(path in FS.readFiles)) {\n FS.readFiles[path] = 1;\n }\n }\n return stream;\n }, close(stream) {\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n if (stream.getdents) stream.getdents = null;\n try {\n if (stream.stream_ops.close) {\n stream.stream_ops.close(stream);\n }\n } catch (e) {\n throw e;\n } finally {\n FS.closeStream(stream.fd);\n }\n stream.fd = null;\n }, isClosed(stream) {\n return stream.fd === null;\n }, llseek(stream, offset, whence) {\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n if (!stream.seekable || !stream.stream_ops.llseek) {\n throw new FS.ErrnoError(70);\n }\n if (whence != 0 && whence != 1 && whence != 2) {\n throw new FS.ErrnoError(28);\n }\n stream.position = stream.stream_ops.llseek(stream, offset, whence);\n stream.ungotten = [];\n return stream.position;\n }, read(stream, buffer, offset, length, position) {\n if (length < 0 || position < 0) {\n throw new FS.ErrnoError(28);\n }\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n if ((stream.flags & 2097155) === 1) {\n throw new FS.ErrnoError(8);\n }\n if (FS.isDir(stream.node.mode)) {\n throw new FS.ErrnoError(31);\n }\n if (!stream.stream_ops.read) {\n throw new FS.ErrnoError(28);\n }\n var seeking = typeof position != \"undefined\";\n if (!seeking) {\n position = stream.position;\n } else if (!stream.seekable) {\n throw new FS.ErrnoError(70);\n }\n var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position);\n if (!seeking) stream.position += bytesRead;\n return bytesRead;\n }, write(stream, buffer, offset, length, position, canOwn) {\n if (length < 0 || position < 0) {\n throw new FS.ErrnoError(28);\n }\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n if ((stream.flags & 2097155) === 0) {\n throw new FS.ErrnoError(8);\n }\n if (FS.isDir(stream.node.mode)) {\n throw new FS.ErrnoError(31);\n }\n if (!stream.stream_ops.write) {\n throw new FS.ErrnoError(28);\n }\n if (stream.seekable && stream.flags & 1024) {\n FS.llseek(stream, 0, 2);\n }\n var seeking = typeof position != \"undefined\";\n if (!seeking) {\n position = stream.position;\n } else if (!stream.seekable) {\n throw new FS.ErrnoError(70);\n }\n var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn);\n if (!seeking) stream.position += bytesWritten;\n return bytesWritten;\n }, allocate(stream, offset, length) {\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n if (offset < 0 || length <= 0) {\n throw new FS.ErrnoError(28);\n }\n if ((stream.flags & 2097155) === 0) {\n throw new FS.ErrnoError(8);\n }\n if (!FS.isFile(stream.node.mode) && !FS.isDir(stream.node.mode)) {\n throw new FS.ErrnoError(43);\n }\n if (!stream.stream_ops.allocate) {\n throw new FS.ErrnoError(138);\n }\n stream.stream_ops.allocate(stream, offset, length);\n }, mmap(stream, length, position, prot, flags) {\n if ((prot & 2) !== 0 && (flags & 2) === 0 && (stream.flags & 2097155) !== 2) {\n throw new FS.ErrnoError(2);\n }\n if ((stream.flags & 2097155) === 1) {\n throw new FS.ErrnoError(2);\n }\n if (!stream.stream_ops.mmap) {\n throw new FS.ErrnoError(43);\n }\n return stream.stream_ops.mmap(stream, length, position, prot, flags);\n }, msync(stream, buffer, offset, length, mmapFlags) {\n if (!stream.stream_ops.msync) {\n return 0;\n }\n return stream.stream_ops.msync(stream, buffer, offset, length, mmapFlags);\n }, munmap: (stream) => 0, ioctl(stream, cmd, arg) {\n if (!stream.stream_ops.ioctl) {\n throw new FS.ErrnoError(59);\n }\n return stream.stream_ops.ioctl(stream, cmd, arg);\n }, readFile(path, opts = {}) {\n opts.flags = opts.flags || 0;\n opts.encoding = opts.encoding || \"binary\";\n if (opts.encoding !== \"utf8\" && opts.encoding !== \"binary\") {\n throw new Error(`Invalid encoding type \"${opts.encoding}\"`);\n }\n var ret;\n var stream = FS.open(path, opts.flags);\n var stat = FS.stat(path);\n var length = stat.size;\n var buf = new Uint8Array(length);\n FS.read(stream, buf, 0, length, 0);\n if (opts.encoding === \"utf8\") {\n ret = UTF8ArrayToString(buf, 0);\n } else if (opts.encoding === \"binary\") {\n ret = buf;\n }\n FS.close(stream);\n return ret;\n }, writeFile(path, data, opts = {}) {\n opts.flags = opts.flags || 577;\n var stream = FS.open(path, opts.flags, opts.mode);\n if (typeof data == \"string\") {\n var buf = new Uint8Array(lengthBytesUTF8(data) + 1);\n var actualNumBytes = stringToUTF8Array(data, buf, 0, buf.length);\n FS.write(stream, buf, 0, actualNumBytes, void 0, opts.canOwn);\n } else if (ArrayBuffer.isView(data)) {\n FS.write(stream, data, 0, data.byteLength, void 0, opts.canOwn);\n } else {\n throw new Error(\"Unsupported data type\");\n }\n FS.close(stream);\n }, cwd: () => FS.currentPath, chdir(path) {\n var lookup2 = FS.lookupPath(path, { follow: true });\n if (lookup2.node === null) {\n throw new FS.ErrnoError(44);\n }\n if (!FS.isDir(lookup2.node.mode)) {\n throw new FS.ErrnoError(54);\n }\n var errCode = FS.nodePermissions(lookup2.node, \"x\");\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n FS.currentPath = lookup2.path;\n }, createDefaultDirectories() {\n FS.mkdir(\"/tmp\");\n FS.mkdir(\"/home\");\n FS.mkdir(\"/home/web_user\");\n }, createDefaultDevices() {\n FS.mkdir(\"/dev\");\n FS.registerDevice(FS.makedev(1, 3), { read: () => 0, write: (stream, buffer, offset, length, pos) => length });\n FS.mkdev(\"/dev/null\", FS.makedev(1, 3));\n TTY.register(FS.makedev(5, 0), TTY.default_tty_ops);\n TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops);\n FS.mkdev(\"/dev/tty\", FS.makedev(5, 0));\n FS.mkdev(\"/dev/tty1\", FS.makedev(6, 0));\n var randomBuffer = new Uint8Array(1024), randomLeft = 0;\n var randomByte = () => {\n if (randomLeft === 0) {\n randomLeft = randomFill(randomBuffer).byteLength;\n }\n return randomBuffer[--randomLeft];\n };\n FS.createDevice(\"/dev\", \"random\", randomByte);\n FS.createDevice(\"/dev\", \"urandom\", randomByte);\n FS.mkdir(\"/dev/shm\");\n FS.mkdir(\"/dev/shm/tmp\");\n }, createSpecialDirectories() {\n FS.mkdir(\"/proc\");\n var proc_self = FS.mkdir(\"/proc/self\");\n FS.mkdir(\"/proc/self/fd\");\n FS.mount({ mount() {\n var node = FS.createNode(proc_self, \"fd\", 16384 | 511, 73);\n node.node_ops = { lookup(parent, name) {\n var fd = +name;\n var stream = FS.getStreamChecked(fd);\n var ret = { parent: null, mount: { mountpoint: \"fake\" }, node_ops: { readlink: () => stream.path } };\n ret.parent = ret;\n return ret;\n } };\n return node;\n } }, {}, \"/proc/self/fd\");\n }, createStandardStreams() {\n if (Module2[\"stdin\"]) {\n FS.createDevice(\"/dev\", \"stdin\", Module2[\"stdin\"]);\n } else {\n FS.symlink(\"/dev/tty\", \"/dev/stdin\");\n }\n if (Module2[\"stdout\"]) {\n FS.createDevice(\"/dev\", \"stdout\", null, Module2[\"stdout\"]);\n } else {\n FS.symlink(\"/dev/tty\", \"/dev/stdout\");\n }\n if (Module2[\"stderr\"]) {\n FS.createDevice(\"/dev\", \"stderr\", null, Module2[\"stderr\"]);\n } else {\n FS.symlink(\"/dev/tty1\", \"/dev/stderr\");\n }\n var stdin = FS.open(\"/dev/stdin\", 0);\n var stdout = FS.open(\"/dev/stdout\", 1);\n var stderr = FS.open(\"/dev/stderr\", 1);\n }, ensureErrnoError() {\n if (FS.ErrnoError) return;\n FS.ErrnoError = function ErrnoError(errno, node) {\n this.name = \"ErrnoError\";\n this.node = node;\n this.setErrno = function(errno2) {\n this.errno = errno2;\n };\n this.setErrno(errno);\n this.message = \"FS error\";\n };\n FS.ErrnoError.prototype = new Error();\n FS.ErrnoError.prototype.constructor = FS.ErrnoError;\n [44].forEach((code) => {\n FS.genericErrors[code] = new FS.ErrnoError(code);\n FS.genericErrors[code].stack = \"<generic error, no stack>\";\n });\n }, staticInit() {\n FS.ensureErrnoError();\n FS.nameTable = new Array(4096);\n FS.mount(MEMFS, {}, \"/\");\n FS.createDefaultDirectories();\n FS.createDefaultDevices();\n FS.createSpecialDirectories();\n FS.filesystems = { \"MEMFS\": MEMFS };\n }, init(input, output, error) {\n FS.init.initialized = true;\n FS.ensureErrnoError();\n Module2[\"stdin\"] = input || Module2[\"stdin\"];\n Module2[\"stdout\"] = output || Module2[\"stdout\"];\n Module2[\"stderr\"] = error || Module2[\"stderr\"];\n FS.createStandardStreams();\n }, quit() {\n FS.init.initialized = false;\n for (var i = 0; i < FS.streams.length; i++) {\n var stream = FS.streams[i];\n if (!stream) {\n continue;\n }\n FS.close(stream);\n }\n }, findObject(path, dontResolveLastLink) {\n var ret = FS.analyzePath(path, dontResolveLastLink);\n if (!ret.exists) {\n return null;\n }\n return ret.object;\n }, analyzePath(path, dontResolveLastLink) {\n try {\n var lookup2 = FS.lookupPath(path, { follow: !dontResolveLastLink });\n path = lookup2.path;\n } catch (e) {\n }\n var ret = { isRoot: false, exists: false, error: 0, name: null, path: null, object: null, parentExists: false, parentPath: null, parentObject: null };\n try {\n var lookup2 = FS.lookupPath(path, { parent: true });\n ret.parentExists = true;\n ret.parentPath = lookup2.path;\n ret.parentObject = lookup2.node;\n ret.name = PATH.basename(path);\n lookup2 = FS.lookupPath(path, { follow: !dontResolveLastLink });\n ret.exists = true;\n ret.path = lookup2.path;\n ret.object = lookup2.node;\n ret.name = lookup2.node.name;\n ret.isRoot = lookup2.path === \"/\";\n } catch (e) {\n ret.error = e.errno;\n }\n return ret;\n }, createPath(parent, path, canRead, canWrite) {\n parent = typeof parent == \"string\" ? parent : FS.getPath(parent);\n var parts = path.split(\"/\").reverse();\n while (parts.length) {\n var part = parts.pop();\n if (!part) continue;\n var current = PATH.join2(parent, part);\n try {\n FS.mkdir(current);\n } catch (e) {\n }\n parent = current;\n }\n return current;\n }, createFile(parent, name, properties, canRead, canWrite) {\n var path = PATH.join2(typeof parent == \"string\" ? parent : FS.getPath(parent), name);\n var mode = FS_getMode(canRead, canWrite);\n return FS.create(path, mode);\n }, createDataFile(parent, name, data, canRead, canWrite, canOwn) {\n var path = name;\n if (parent) {\n parent = typeof parent == \"string\" ? parent : FS.getPath(parent);\n path = name ? PATH.join2(parent, name) : parent;\n }\n var mode = FS_getMode(canRead, canWrite);\n var node = FS.create(path, mode);\n if (data) {\n if (typeof data == \"string\") {\n var arr = new Array(data.length);\n for (var i = 0, len = data.length; i < len; ++i) arr[i] = data.charCodeAt(i);\n data = arr;\n }\n FS.chmod(node, mode | 146);\n var stream = FS.open(node, 577);\n FS.write(stream, data, 0, data.length, 0, canOwn);\n FS.close(stream);\n FS.chmod(node, mode);\n }\n return node;\n }, createDevice(parent, name, input, output) {\n var path = PATH.join2(typeof parent == \"string\" ? parent : FS.getPath(parent), name);\n var mode = FS_getMode(!!input, !!output);\n if (!FS.createDevice.major) FS.createDevice.major = 64;\n var dev = FS.makedev(FS.createDevice.major++, 0);\n FS.registerDevice(dev, { open(stream) {\n stream.seekable = false;\n }, close(stream) {\n if (output && output.buffer && output.buffer.length) {\n output(10);\n }\n }, read(stream, buffer, offset, length, pos) {\n var bytesRead = 0;\n for (var i = 0; i < length; i++) {\n var result;\n try {\n result = input();\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (result === void 0 && bytesRead === 0) {\n throw new FS.ErrnoError(6);\n }\n if (result === null || result === void 0) break;\n bytesRead++;\n buffer[offset + i] = result;\n }\n if (bytesRead) {\n stream.node.timestamp = Date.now();\n }\n return bytesRead;\n }, write(stream, buffer, offset, length, pos) {\n for (var i = 0; i < length; i++) {\n try {\n output(buffer[offset + i]);\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n }\n if (length) {\n stream.node.timestamp = Date.now();\n }\n return i;\n } });\n return FS.mkdev(path, mode, dev);\n }, forceLoadFile(obj) {\n if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true;\n if (typeof XMLHttpRequest != \"undefined\") {\n throw new Error(\"Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.\");\n } else if (read_) {\n try {\n obj.contents = intArrayFromString(read_(obj.url), true);\n obj.usedBytes = obj.contents.length;\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n } else {\n throw new Error(\"Cannot load without read() or XMLHttpRequest.\");\n }\n }, createLazyFile(parent, name, url, canRead, canWrite) {\n function LazyUint8Array() {\n this.lengthKnown = false;\n this.chunks = [];\n }\n LazyUint8Array.prototype.get = function LazyUint8Array_get(idx) {\n if (idx > this.length - 1 || idx < 0) {\n return void 0;\n }\n var chunkOffset = idx % this.chunkSize;\n var chunkNum = idx / this.chunkSize | 0;\n return this.getter(chunkNum)[chunkOffset];\n };\n LazyUint8Array.prototype.setDataGetter = function LazyUint8Array_setDataGetter(getter) {\n this.getter = getter;\n };\n LazyUint8Array.prototype.cacheLength = function LazyUint8Array_cacheLength() {\n var xhr = new XMLHttpRequest();\n xhr.open(\"HEAD\", url, false);\n xhr.send(null);\n if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error(\"Couldn't load \" + url + \". Status: \" + xhr.status);\n var datalength = Number(xhr.getResponseHeader(\"Content-length\"));\n var header;\n var hasByteServing = (header = xhr.getResponseHeader(\"Accept-Ranges\")) && header === \"bytes\";\n var usesGzip = (header = xhr.getResponseHeader(\"Content-Encoding\")) && header === \"gzip\";\n var chunkSize = 1024 * 1024;\n if (!hasByteServing) chunkSize = datalength;\n var doXHR = (from2, to) => {\n if (from2 > to) throw new Error(\"invalid range (\" + from2 + \", \" + to + \") or no bytes requested!\");\n if (to > datalength - 1) throw new Error(\"only \" + datalength + \" bytes available! programmer error!\");\n var xhr2 = new XMLHttpRequest();\n xhr2.open(\"GET\", url, false);\n if (datalength !== chunkSize) xhr2.setRequestHeader(\"Range\", \"bytes=\" + from2 + \"-\" + to);\n xhr2.responseType = \"arraybuffer\";\n if (xhr2.overrideMimeType) {\n xhr2.overrideMimeType(\"text/plain; charset=x-user-defined\");\n }\n xhr2.send(null);\n if (!(xhr2.status >= 200 && xhr2.status < 300 || xhr2.status === 304)) throw new Error(\"Couldn't load \" + url + \". Status: \" + xhr2.status);\n if (xhr2.response !== void 0) {\n return new Uint8Array(xhr2.response || []);\n }\n return intArrayFromString(xhr2.responseText || \"\", true);\n };\n var lazyArray2 = this;\n lazyArray2.setDataGetter((chunkNum) => {\n var start = chunkNum * chunkSize;\n var end = (chunkNum + 1) * chunkSize - 1;\n end = Math.min(end, datalength - 1);\n if (typeof lazyArray2.chunks[chunkNum] == \"undefined\") {\n lazyArray2.chunks[chunkNum] = doXHR(start, end);\n }\n if (typeof lazyArray2.chunks[chunkNum] == \"undefined\") throw new Error(\"doXHR failed!\");\n return lazyArray2.chunks[chunkNum];\n });\n if (usesGzip || !datalength) {\n chunkSize = datalength = 1;\n datalength = this.getter(0).length;\n chunkSize = datalength;\n out(\"LazyFiles on gzip forces download of the whole file when length is accessed\");\n }\n this._length = datalength;\n this._chunkSize = chunkSize;\n this.lengthKnown = true;\n };\n if (typeof XMLHttpRequest != \"undefined\") {\n if (!ENVIRONMENT_IS_WORKER) throw \"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc\";\n var lazyArray = new LazyUint8Array();\n Object.defineProperties(lazyArray, { length: { get: function() {\n if (!this.lengthKnown) {\n this.cacheLength();\n }\n return this._length;\n } }, chunkSize: { get: function() {\n if (!this.lengthKnown) {\n this.cacheLength();\n }\n return this._chunkSize;\n } } });\n var properties = { isDevice: false, contents: lazyArray };\n } else {\n var properties = { isDevice: false, url };\n }\n var node = FS.createFile(parent, name, properties, canRead, canWrite);\n if (properties.contents) {\n node.contents = properties.contents;\n } else if (properties.url) {\n node.contents = null;\n node.url = properties.url;\n }\n Object.defineProperties(node, { usedBytes: { get: function() {\n return this.contents.length;\n } } });\n var stream_ops = {};\n var keys = Object.keys(node.stream_ops);\n keys.forEach((key) => {\n var fn = node.stream_ops[key];\n stream_ops[key] = function forceLoadLazyFile() {\n FS.forceLoadFile(node);\n return fn.apply(null, arguments);\n };\n });\n function writeChunks(stream, buffer, offset, length, position) {\n var contents = stream.node.contents;\n if (position >= contents.length) return 0;\n var size = Math.min(contents.length - position, length);\n if (contents.slice) {\n for (var i = 0; i < size; i++) {\n buffer[offset + i] = contents[position + i];\n }\n } else {\n for (var i = 0; i < size; i++) {\n buffer[offset + i] = contents.get(position + i);\n }\n }\n return size;\n }\n stream_ops.read = (stream, buffer, offset, length, position) => {\n FS.forceLoadFile(node);\n return writeChunks(stream, buffer, offset, length, position);\n };\n stream_ops.mmap = (stream, length, position, prot, flags) => {\n FS.forceLoadFile(node);\n var ptr = mmapAlloc(length);\n if (!ptr) {\n throw new FS.ErrnoError(48);\n }\n writeChunks(stream, HEAP8, ptr, length, position);\n return { ptr, allocated: true };\n };\n node.stream_ops = stream_ops;\n return node;\n } };\n var SYSCALLS = { DEFAULT_POLLMASK: 5, calculateAt(dirfd, path, allowEmpty) {\n if (PATH.isAbs(path)) {\n return path;\n }\n var dir;\n if (dirfd === -100) {\n dir = FS.cwd();\n } else {\n var dirstream = SYSCALLS.getStreamFromFD(dirfd);\n dir = dirstream.path;\n }\n if (path.length == 0) {\n if (!allowEmpty) {\n throw new FS.ErrnoError(44);\n }\n return dir;\n }\n return PATH.join2(dir, path);\n }, doStat(func, path, buf) {\n try {\n var stat = func(path);\n } catch (e) {\n if (e && e.node && PATH.normalize(path) !== PATH.normalize(FS.getPath(e.node))) {\n return -54;\n }\n throw e;\n }\n _asan_js_store_4(buf >> 2, stat.dev);\n _asan_js_store_4(buf + 4 >> 2, stat.mode);\n _asan_js_store_4u(buf + 8 >> 2, stat.nlink);\n _asan_js_store_4(buf + 12 >> 2, stat.uid);\n _asan_js_store_4(buf + 16 >> 2, stat.gid);\n _asan_js_store_4(buf + 20 >> 2, stat.rdev);\n tempI64 = [stat.size >>> 0, (tempDouble = stat.size, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], _asan_js_store_4(buf + 24 >> 2, tempI64[0]), _asan_js_store_4(buf + 28 >> 2, tempI64[1]);\n _asan_js_store_4(buf + 32 >> 2, 4096);\n _asan_js_store_4(buf + 36 >> 2, stat.blocks);\n var atime = stat.atime.getTime();\n var mtime = stat.mtime.getTime();\n var ctime = stat.ctime.getTime();\n tempI64 = [Math.floor(atime / 1e3) >>> 0, (tempDouble = Math.floor(atime / 1e3), +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], _asan_js_store_4(buf + 40 >> 2, tempI64[0]), _asan_js_store_4(buf + 44 >> 2, tempI64[1]);\n _asan_js_store_4u(buf + 48 >> 2, atime % 1e3 * 1e3);\n tempI64 = [Math.floor(mtime / 1e3) >>> 0, (tempDouble = Math.floor(mtime / 1e3), +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], _asan_js_store_4(buf + 56 >> 2, tempI64[0]), _asan_js_store_4(buf + 60 >> 2, tempI64[1]);\n _asan_js_store_4u(buf + 64 >> 2, mtime % 1e3 * 1e3);\n tempI64 = [Math.floor(ctime / 1e3) >>> 0, (tempDouble = Math.floor(ctime / 1e3), +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], _asan_js_store_4(buf + 72 >> 2, tempI64[0]), _asan_js_store_4(buf + 76 >> 2, tempI64[1]);\n _asan_js_store_4u(buf + 80 >> 2, ctime % 1e3 * 1e3);\n tempI64 = [stat.ino >>> 0, (tempDouble = stat.ino, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], _asan_js_store_4(buf + 88 >> 2, tempI64[0]), _asan_js_store_4(buf + 92 >> 2, tempI64[1]);\n return 0;\n }, doMsync(addr, stream, len, flags, offset) {\n if (!FS.isFile(stream.node.mode)) {\n throw new FS.ErrnoError(43);\n }\n if (flags & 2) {\n return 0;\n }\n var buffer = HEAPU8.slice(addr, addr + len);\n FS.msync(stream, buffer, offset, len, flags);\n }, varargs: void 0, get() {\n var ret = _asan_js_load_4(SYSCALLS.varargs >> 2);\n SYSCALLS.varargs += 4;\n return ret;\n }, getp() {\n return SYSCALLS.get();\n }, getStr(ptr) {\n var ret = UTF8ToString(ptr);\n return ret;\n }, getStreamFromFD(fd) {\n var stream = FS.getStreamChecked(fd);\n return stream;\n } };\n function ___syscall_dup(fd) {\n try {\n var old = SYSCALLS.getStreamFromFD(fd);\n return FS.createStream(old).fd;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n var setErrNo = (value) => {\n _asan_js_store_4(___errno_location() >> 2, value);\n return value;\n };\n function ___syscall_fcntl64(fd, cmd, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n switch (cmd) {\n case 0: {\n var arg = SYSCALLS.get();\n if (arg < 0) {\n return -28;\n }\n while (FS.streams[arg]) {\n arg++;\n }\n var newStream;\n newStream = FS.createStream(stream, arg);\n return newStream.fd;\n }\n case 1:\n case 2:\n return 0;\n case 3:\n return stream.flags;\n case 4: {\n var arg = SYSCALLS.get();\n stream.flags |= arg;\n return 0;\n }\n case 5: {\n var arg = SYSCALLS.getp();\n var offset = 0;\n _asan_js_store_2(arg + offset >> 1, 2);\n return 0;\n }\n case 6:\n case 7:\n return 0;\n case 16:\n case 8:\n return -28;\n case 9:\n setErrNo(28);\n return -1;\n default: {\n return -28;\n }\n }\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_fstat64(fd, buf) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n return SYSCALLS.doStat(FS.stat, stream.path, buf);\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_lstat64(path, buf) {\n try {\n path = SYSCALLS.getStr(path);\n return SYSCALLS.doStat(FS.lstat, path, buf);\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_mkdirat(dirfd, path, mode) {\n try {\n path = SYSCALLS.getStr(path);\n path = SYSCALLS.calculateAt(dirfd, path);\n path = PATH.normalize(path);\n if (path[path.length - 1] === \"/\") path = path.substr(0, path.length - 1);\n FS.mkdir(path, mode, 0);\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_newfstatat(dirfd, path, buf, flags) {\n try {\n path = SYSCALLS.getStr(path);\n var nofollow = flags & 256;\n var allowEmpty = flags & 4096;\n flags = flags & ~6400;\n path = SYSCALLS.calculateAt(dirfd, path, allowEmpty);\n return SYSCALLS.doStat(nofollow ? FS.lstat : FS.stat, path, buf);\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_openat(dirfd, path, flags, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n path = SYSCALLS.getStr(path);\n path = SYSCALLS.calculateAt(dirfd, path);\n var mode = varargs ? SYSCALLS.get() : 0;\n return FS.open(path, flags, mode).fd;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n var PIPEFS = { BUCKET_BUFFER_SIZE: 8192, mount(mount) {\n return FS.createNode(null, \"/\", 16384 | 511, 0);\n }, createPipe() {\n var pipe = { buckets: [], refcnt: 2 };\n pipe.buckets.push({ buffer: new Uint8Array(PIPEFS.BUCKET_BUFFER_SIZE), offset: 0, roffset: 0 });\n var rName = PIPEFS.nextname();\n var wName = PIPEFS.nextname();\n var rNode = FS.createNode(PIPEFS.root, rName, 4096, 0);\n var wNode = FS.createNode(PIPEFS.root, wName, 4096, 0);\n rNode.pipe = pipe;\n wNode.pipe = pipe;\n var readableStream = FS.createStream({ path: rName, node: rNode, flags: 0, seekable: false, stream_ops: PIPEFS.stream_ops });\n rNode.stream = readableStream;\n var writableStream = FS.createStream({ path: wName, node: wNode, flags: 1, seekable: false, stream_ops: PIPEFS.stream_ops });\n wNode.stream = writableStream;\n return { readable_fd: readableStream.fd, writable_fd: writableStream.fd };\n }, stream_ops: { poll(stream) {\n var pipe = stream.node.pipe;\n if ((stream.flags & 2097155) === 1) {\n return 256 | 4;\n }\n if (pipe.buckets.length > 0) {\n for (var i = 0; i < pipe.buckets.length; i++) {\n var bucket = pipe.buckets[i];\n if (bucket.offset - bucket.roffset > 0) {\n return 64 | 1;\n }\n }\n }\n return 0;\n }, ioctl(stream, request, varargs) {\n return 28;\n }, fsync(stream) {\n return 28;\n }, read(stream, buffer, offset, length, position) {\n var pipe = stream.node.pipe;\n var currentLength = 0;\n for (var i = 0; i < pipe.buckets.length; i++) {\n var bucket = pipe.buckets[i];\n currentLength += bucket.offset - bucket.roffset;\n }\n var data = buffer.subarray(offset, offset + length);\n if (length <= 0) {\n return 0;\n }\n if (currentLength == 0) {\n throw new FS.ErrnoError(6);\n }\n var toRead = Math.min(currentLength, length);\n var totalRead = toRead;\n var toRemove = 0;\n for (var i = 0; i < pipe.buckets.length; i++) {\n var currBucket = pipe.buckets[i];\n var bucketSize = currBucket.offset - currBucket.roffset;\n if (toRead <= bucketSize) {\n var tmpSlice = currBucket.buffer.subarray(currBucket.roffset, currBucket.offset);\n if (toRead < bucketSize) {\n tmpSlice = tmpSlice.subarray(0, toRead);\n currBucket.roffset += toRead;\n } else {\n toRemove++;\n }\n data.set(tmpSlice);\n break;\n } else {\n var tmpSlice = currBucket.buffer.subarray(currBucket.roffset, currBucket.offset);\n data.set(tmpSlice);\n data = data.subarray(tmpSlice.byteLength);\n toRead -= tmpSlice.byteLength;\n toRemove++;\n }\n }\n if (toRemove && toRemove == pipe.buckets.length) {\n toRemove--;\n pipe.buckets[toRemove].offset = 0;\n pipe.buckets[toRemove].roffset = 0;\n }\n pipe.buckets.splice(0, toRemove);\n return totalRead;\n }, write(stream, buffer, offset, length, position) {\n var pipe = stream.node.pipe;\n var data = buffer.subarray(offset, offset + length);\n var dataLen = data.byteLength;\n if (dataLen <= 0) {\n return 0;\n }\n var currBucket = null;\n if (pipe.buckets.length == 0) {\n currBucket = { buffer: new Uint8Array(PIPEFS.BUCKET_BUFFER_SIZE), offset: 0, roffset: 0 };\n pipe.buckets.push(currBucket);\n } else {\n currBucket = pipe.buckets[pipe.buckets.length - 1];\n }\n assert(currBucket.offset <= PIPEFS.BUCKET_BUFFER_SIZE);\n var freeBytesInCurrBuffer = PIPEFS.BUCKET_BUFFER_SIZE - currBucket.offset;\n if (freeBytesInCurrBuffer >= dataLen) {\n currBucket.buffer.set(data, currBucket.offset);\n currBucket.offset += dataLen;\n return dataLen;\n } else if (freeBytesInCurrBuffer > 0) {\n currBucket.buffer.set(data.subarray(0, freeBytesInCurrBuffer), currBucket.offset);\n currBucket.offset += freeBytesInCurrBuffer;\n data = data.subarray(freeBytesInCurrBuffer, data.byteLength);\n }\n var numBuckets = data.byteLength / PIPEFS.BUCKET_BUFFER_SIZE | 0;\n var remElements = data.byteLength % PIPEFS.BUCKET_BUFFER_SIZE;\n for (var i = 0; i < numBuckets; i++) {\n var newBucket = { buffer: new Uint8Array(PIPEFS.BUCKET_BUFFER_SIZE), offset: PIPEFS.BUCKET_BUFFER_SIZE, roffset: 0 };\n pipe.buckets.push(newBucket);\n newBucket.buffer.set(data.subarray(0, PIPEFS.BUCKET_BUFFER_SIZE));\n data = data.subarray(PIPEFS.BUCKET_BUFFER_SIZE, data.byteLength);\n }\n if (remElements > 0) {\n var newBucket = { buffer: new Uint8Array(PIPEFS.BUCKET_BUFFER_SIZE), offset: data.byteLength, roffset: 0 };\n pipe.buckets.push(newBucket);\n newBucket.buffer.set(data);\n }\n return dataLen;\n }, close(stream) {\n var pipe = stream.node.pipe;\n pipe.refcnt--;\n if (pipe.refcnt === 0) {\n pipe.buckets = null;\n }\n } }, nextname() {\n if (!PIPEFS.nextname.current) {\n PIPEFS.nextname.current = 0;\n }\n return \"pipe[\" + PIPEFS.nextname.current++ + \"]\";\n } };\n function ___syscall_pipe(fdPtr) {\n try {\n if (fdPtr == 0) {\n throw new FS.ErrnoError(21);\n }\n var res = PIPEFS.createPipe();\n _asan_js_store_4(fdPtr >> 2, res.readable_fd);\n _asan_js_store_4(fdPtr + 4 >> 2, res.writable_fd);\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_poll(fds, nfds, timeout) {\n try {\n var nonzero = 0;\n for (var i = 0; i < nfds; i++) {\n var pollfd = fds + 8 * i;\n var fd = _asan_js_load_4(pollfd >> 2);\n var events = _asan_js_load_2(pollfd + 4 >> 1);\n var mask = 32;\n var stream = FS.getStream(fd);\n if (stream) {\n mask = SYSCALLS.DEFAULT_POLLMASK;\n if (stream.stream_ops.poll) {\n mask = stream.stream_ops.poll(stream, -1);\n }\n }\n mask &= events | 8 | 16;\n if (mask) nonzero++;\n _asan_js_store_2(pollfd + 6 >> 1, mask);\n }\n return nonzero;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_stat64(path, buf) {\n try {\n path = SYSCALLS.getStr(path);\n return SYSCALLS.doStat(FS.stat, path, buf);\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n var nowIsMonotonic = true;\n var __emscripten_get_now_is_monotonic = () => nowIsMonotonic;\n var withBuiltinMalloc = (func) => {\n var prev_malloc = typeof _malloc != \"undefined\" ? _malloc : void 0;\n var prev_memalign = typeof _memalign != \"undefined\" ? _memalign : void 0;\n var prev_free = typeof _free != \"undefined\" ? _free : void 0;\n _malloc = _emscripten_builtin_malloc;\n _memalign = _emscripten_builtin_memalign;\n _free = _emscripten_builtin_free;\n try {\n return func();\n } finally {\n _malloc = prev_malloc;\n _memalign = prev_memalign;\n _free = prev_free;\n }\n };\n var stringToUTF8 = (str, outPtr, maxBytesToWrite) => stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite);\n var stringToNewUTF8 = (str) => {\n var size = lengthBytesUTF8(str) + 1;\n var ret = _malloc(size);\n if (ret) stringToUTF8(str, ret, size);\n return ret;\n };\n var __emscripten_sanitizer_get_option = (name) => withBuiltinMalloc(() => stringToNewUTF8(Module2[UTF8ToString(name)] || \"\"));\n var __emscripten_sanitizer_use_colors = () => {\n var setting = Module2[\"printWithColors\"];\n if (setting !== void 0) {\n return setting;\n }\n return ENVIRONMENT_IS_NODE && process.stderr.isTTY;\n };\n var isLeapYear = (year) => year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n var MONTH_DAYS_LEAP_CUMULATIVE = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335];\n var MONTH_DAYS_REGULAR_CUMULATIVE = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334];\n var ydayFromDate = (date) => {\n var leap = isLeapYear(date.getFullYear());\n var monthDaysCumulative = leap ? MONTH_DAYS_LEAP_CUMULATIVE : MONTH_DAYS_REGULAR_CUMULATIVE;\n var yday = monthDaysCumulative[date.getMonth()] + date.getDate() - 1;\n return yday;\n };\n var convertI32PairToI53Checked = (lo, hi) => hi + 2097152 >>> 0 < 4194305 - !!lo ? (lo >>> 0) + hi * 4294967296 : NaN;\n function __localtime_js(time_low, time_high, tmPtr) {\n var time = convertI32PairToI53Checked(time_low, time_high);\n var date = new Date(time * 1e3);\n _asan_js_store_4(tmPtr >> 2, date.getSeconds());\n _asan_js_store_4(tmPtr + 4 >> 2, date.getMinutes());\n _asan_js_store_4(tmPtr + 8 >> 2, date.getHours());\n _asan_js_store_4(tmPtr + 12 >> 2, date.getDate());\n _asan_js_store_4(tmPtr + 16 >> 2, date.getMonth());\n _asan_js_store_4(tmPtr + 20 >> 2, date.getFullYear() - 1900);\n _asan_js_store_4(tmPtr + 24 >> 2, date.getDay());\n var yday = ydayFromDate(date) | 0;\n _asan_js_store_4(tmPtr + 28 >> 2, yday);\n _asan_js_store_4(tmPtr + 36 >> 2, -(date.getTimezoneOffset() * 60));\n var start = new Date(date.getFullYear(), 0, 1);\n var summerOffset = new Date(date.getFullYear(), 6, 1).getTimezoneOffset();\n var winterOffset = start.getTimezoneOffset();\n var dst = (summerOffset != winterOffset && date.getTimezoneOffset() == Math.min(winterOffset, summerOffset)) | 0;\n _asan_js_store_4(tmPtr + 32 >> 2, dst);\n }\n var __mktime_js = function(tmPtr) {\n var ret = (() => {\n var date = new Date(_asan_js_load_4(tmPtr + 20 >> 2) + 1900, _asan_js_load_4(tmPtr + 16 >> 2), _asan_js_load_4(tmPtr + 12 >> 2), _asan_js_load_4(tmPtr + 8 >> 2), _asan_js_load_4(tmPtr + 4 >> 2), _asan_js_load_4(tmPtr >> 2), 0);\n var dst = _asan_js_load_4(tmPtr + 32 >> 2);\n var guessedOffset = date.getTimezoneOffset();\n var start = new Date(date.getFullYear(), 0, 1);\n var summerOffset = new Date(date.getFullYear(), 6, 1).getTimezoneOffset();\n var winterOffset = start.getTimezoneOffset();\n var dstOffset = Math.min(winterOffset, summerOffset);\n if (dst < 0) {\n _asan_js_store_4(tmPtr + 32 >> 2, Number(summerOffset != winterOffset && dstOffset == guessedOffset));\n } else if (dst > 0 != (dstOffset == guessedOffset)) {\n var nonDstOffset = Math.max(winterOffset, summerOffset);\n var trueOffset = dst > 0 ? dstOffset : nonDstOffset;\n date.setTime(date.getTime() + (trueOffset - guessedOffset) * 6e4);\n }\n _asan_js_store_4(tmPtr + 24 >> 2, date.getDay());\n var yday = ydayFromDate(date) | 0;\n _asan_js_store_4(tmPtr + 28 >> 2, yday);\n _asan_js_store_4(tmPtr >> 2, date.getSeconds());\n _asan_js_store_4(tmPtr + 4 >> 2, date.getMinutes());\n _asan_js_store_4(tmPtr + 8 >> 2, date.getHours());\n _asan_js_store_4(tmPtr + 12 >> 2, date.getDate());\n _asan_js_store_4(tmPtr + 16 >> 2, date.getMonth());\n _asan_js_store_4(tmPtr + 20 >> 2, date.getYear());\n return date.getTime() / 1e3;\n })();\n return setTempRet0((tempDouble = ret, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)), ret >>> 0;\n };\n function __mmap_js(len, prot, flags, fd, offset_low, offset_high, allocated, addr) {\n var offset = convertI32PairToI53Checked(offset_low, offset_high);\n try {\n if (isNaN(offset)) return 61;\n var stream = SYSCALLS.getStreamFromFD(fd);\n var res = FS.mmap(stream, len, offset, prot, flags);\n var ptr = res.ptr;\n _asan_js_store_4(allocated >> 2, res.allocated);\n _asan_js_store_4u(addr >> 2, ptr);\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function __munmap_js(addr, len, prot, flags, fd, offset_low, offset_high) {\n var offset = convertI32PairToI53Checked(offset_low, offset_high);\n try {\n if (isNaN(offset)) return 61;\n var stream = SYSCALLS.getStreamFromFD(fd);\n if (prot & 2) {\n SYSCALLS.doMsync(addr, stream, len, flags, offset);\n }\n FS.munmap(stream);\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n var __timegm_js = function(tmPtr) {\n var ret = (() => {\n var time = Date.UTC(_asan_js_load_4(tmPtr + 20 >> 2) + 1900, _asan_js_load_4(tmPtr + 16 >> 2), _asan_js_load_4(tmPtr + 12 >> 2), _asan_js_load_4(tmPtr + 8 >> 2), _asan_js_load_4(tmPtr + 4 >> 2), _asan_js_load_4(tmPtr >> 2), 0);\n var date = new Date(time);\n _asan_js_store_4(tmPtr + 24 >> 2, date.getUTCDay());\n var start = Date.UTC(date.getUTCFullYear(), 0, 1, 0, 0, 0, 0);\n var yday = (date.getTime() - start) / (1e3 * 60 * 60 * 24) | 0;\n _asan_js_store_4(tmPtr + 28 >> 2, yday);\n return date.getTime() / 1e3;\n })();\n return setTempRet0((tempDouble = ret, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)), ret >>> 0;\n };\n var __tzset_js = (timezone, daylight, tzname) => {\n var currentYear = (/* @__PURE__ */ new Date()).getFullYear();\n var winter = new Date(currentYear, 0, 1);\n var summer = new Date(currentYear, 6, 1);\n var winterOffset = winter.getTimezoneOffset();\n var summerOffset = summer.getTimezoneOffset();\n var stdTimezoneOffset = Math.max(winterOffset, summerOffset);\n _asan_js_store_4u(timezone >> 2, stdTimezoneOffset * 60);\n _asan_js_store_4(daylight >> 2, Number(winterOffset != summerOffset));\n function extractZone(date) {\n var match = date.toTimeString().match(/\\(([A-Za-z ]+)\\)$/);\n return match ? match[1] : \"GMT\";\n }\n var winterName = extractZone(winter);\n var summerName = extractZone(summer);\n var winterNamePtr = stringToNewUTF8(winterName);\n var summerNamePtr = stringToNewUTF8(summerName);\n if (summerOffset < winterOffset) {\n _asan_js_store_4u(tzname >> 2, winterNamePtr);\n _asan_js_store_4u(tzname + 4 >> 2, summerNamePtr);\n } else {\n _asan_js_store_4u(tzname >> 2, summerNamePtr);\n _asan_js_store_4u(tzname + 4 >> 2, winterNamePtr);\n }\n };\n var _abort = () => {\n abort(\"\");\n };\n var _emscripten_date_now = () => Date.now();\n var getHeapMax = () => 2147483648;\n var _emscripten_get_heap_max = () => getHeapMax();\n var _emscripten_get_module_name = (buf, length) => stringToUTF8(wasmBinaryFile, buf, length);\n var _emscripten_get_now;\n _emscripten_get_now = () => performance.now();\n var UNWIND_CACHE = {};\n var convertFrameToPC = (frame) => {\n var match;\n if (match = /\\bwasm-function\\[\\d+\\]:(0x[0-9a-f]+)/.exec(frame)) {\n return +match[1];\n } else if (match = /\\bwasm-function\\[(\\d+)\\]:(\\d+)/.exec(frame)) {\n return wasmOffsetConverter.convert(+match[1], +match[2]);\n } else if (match = /:(\\d+):\\d+(?:\\)|$)/.exec(frame)) {\n return 2147483648 | +match[1];\n }\n return 0;\n };\n var convertPCtoSourceLocation = (pc) => {\n if (UNWIND_CACHE.last_get_source_pc == pc) return UNWIND_CACHE.last_source;\n var match;\n var source;\n if (!source) {\n var frame = UNWIND_CACHE[pc];\n if (!frame) return null;\n if (match = /\\((.*):(\\d+):(\\d+)\\)$/.exec(frame)) {\n source = { file: match[1], line: match[2], column: match[3] };\n } else if (match = /@(.*):(\\d+):(\\d+)/.exec(frame)) {\n source = { file: match[1], line: match[2], column: match[3] };\n }\n }\n UNWIND_CACHE.last_get_source_pc = pc;\n UNWIND_CACHE.last_source = source;\n return source;\n };\n var _emscripten_pc_get_column = (pc) => {\n var result = convertPCtoSourceLocation(pc);\n return result ? result.column || 0 : 0;\n };\n var _emscripten_pc_get_file = (pc) => withBuiltinMalloc(() => {\n var result = convertPCtoSourceLocation(pc);\n if (!result) return 0;\n if (_emscripten_pc_get_file.ret) _free(_emscripten_pc_get_file.ret);\n _emscripten_pc_get_file.ret = stringToNewUTF8(result.file);\n return _emscripten_pc_get_file.ret;\n });\n var _emscripten_pc_get_function = (pc) => withBuiltinMalloc(() => {\n var name;\n if (pc & 2147483648) {\n var frame = UNWIND_CACHE[pc];\n if (!frame) return 0;\n var match;\n if (match = /^\\s+at (.*) \\(.*\\)$/.exec(frame)) {\n name = match[1];\n } else if (match = /^(.+?)@/.exec(frame)) {\n name = match[1];\n } else {\n return 0;\n }\n } else {\n name = wasmOffsetConverter.getName(pc);\n }\n if (_emscripten_pc_get_function.ret) _free(_emscripten_pc_get_function.ret);\n _emscripten_pc_get_function.ret = stringToNewUTF8(name);\n return _emscripten_pc_get_function.ret;\n });\n var _emscripten_pc_get_line = (pc) => {\n var result = convertPCtoSourceLocation(pc);\n return result ? result.line : 0;\n };\n var growMemory = (size) => {\n var b = wasmMemory.buffer;\n var pages = (size - b.byteLength + 65535) / 65536;\n try {\n wasmMemory.grow(pages);\n updateMemoryViews();\n return 1;\n } catch (e) {\n }\n };\n var _emscripten_resize_heap = (requestedSize) => {\n var oldSize = HEAPU8.length;\n requestedSize >>>= 0;\n var maxHeapSize = getHeapMax();\n if (requestedSize > maxHeapSize) {\n return false;\n }\n var alignUp = (x, multiple) => x + (multiple - x % multiple) % multiple;\n for (var cutDown = 1; cutDown <= 4; cutDown *= 2) {\n var overGrownHeapSize = oldSize * (1 + 0.2 / cutDown);\n overGrownHeapSize = Math.min(overGrownHeapSize, requestedSize + 100663296);\n var newSize = Math.min(maxHeapSize, alignUp(Math.max(requestedSize, overGrownHeapSize), 65536));\n var replacement = growMemory(newSize);\n if (replacement) {\n return true;\n }\n }\n return false;\n };\n function jsStackTrace() {\n var error = new Error();\n if (!error.stack) {\n try {\n throw new Error();\n } catch (e) {\n error = e;\n }\n if (!error.stack) {\n return \"(no stack trace available)\";\n }\n }\n return error.stack.toString();\n }\n var _emscripten_return_address = (level) => {\n var callstack = jsStackTrace().split(\"\\n\");\n if (callstack[0] == \"Error\") {\n callstack.shift();\n }\n var caller = callstack[level + 3];\n return convertFrameToPC(caller);\n };\n var saveInUnwindCache = (callstack) => {\n callstack.forEach((frame) => {\n var pc = convertFrameToPC(frame);\n if (pc) {\n UNWIND_CACHE[pc] = frame;\n }\n });\n };\n function _emscripten_stack_snapshot() {\n var callstack = jsStackTrace().split(\"\\n\");\n if (callstack[0] == \"Error\") {\n callstack.shift();\n }\n saveInUnwindCache(callstack);\n UNWIND_CACHE.last_addr = convertFrameToPC(callstack[3]);\n UNWIND_CACHE.last_stack = callstack;\n return UNWIND_CACHE.last_addr;\n }\n var _emscripten_stack_unwind_buffer = (addr, buffer, count) => {\n var stack;\n if (UNWIND_CACHE.last_addr == addr) {\n stack = UNWIND_CACHE.last_stack;\n } else {\n stack = jsStackTrace().split(\"\\n\");\n if (stack[0] == \"Error\") {\n stack.shift();\n }\n saveInUnwindCache(stack);\n }\n var offset = 3;\n while (stack[offset] && convertFrameToPC(stack[offset]) != addr) {\n ++offset;\n }\n for (var i = 0; i < count && stack[i + offset]; ++i) {\n _asan_js_store_4(buffer + i * 4 >> 2, convertFrameToPC(stack[i + offset]));\n }\n return i;\n };\n var ENV = {};\n var getExecutableName = () => thisProgram || \"./this.program\";\n var getEnvStrings = () => {\n if (!getEnvStrings.strings) {\n var lang = (typeof navigator == \"object\" && navigator.languages && navigator.languages[0] || \"C\").replace(\"-\", \"_\") + \".UTF-8\";\n var env2 = { \"USER\": \"web_user\", \"LOGNAME\": \"web_user\", \"PATH\": \"/\", \"PWD\": \"/\", \"HOME\": \"/home/web_user\", \"LANG\": lang, \"_\": getExecutableName() };\n for (var x in ENV) {\n if (ENV[x] === void 0) delete env2[x];\n else env2[x] = ENV[x];\n }\n var strings = [];\n for (var x in env2) {\n strings.push(`${x}=${env2[x]}`);\n }\n getEnvStrings.strings = strings;\n }\n return getEnvStrings.strings;\n };\n var stringToAscii = (str, buffer) => {\n for (var i = 0; i < str.length; ++i) {\n _asan_js_store_1(buffer++ >> 0, str.charCodeAt(i));\n }\n _asan_js_store_1(buffer >> 0, 0);\n };\n var _environ_get = (__environ, environ_buf) => {\n var bufSize = 0;\n getEnvStrings().forEach((string, i) => {\n var ptr = environ_buf + bufSize;\n _asan_js_store_4u(__environ + i * 4 >> 2, ptr);\n stringToAscii(string, ptr);\n bufSize += string.length + 1;\n });\n return 0;\n };\n var _environ_sizes_get = (penviron_count, penviron_buf_size) => {\n var strings = getEnvStrings();\n _asan_js_store_4u(penviron_count >> 2, strings.length);\n var bufSize = 0;\n strings.forEach((string) => bufSize += string.length + 1);\n _asan_js_store_4u(penviron_buf_size >> 2, bufSize);\n return 0;\n };\n var _proc_exit = (code) => {\n EXITSTATUS = code;\n if (!keepRuntimeAlive()) {\n if (Module2[\"onExit\"]) Module2[\"onExit\"](code);\n ABORT = true;\n }\n quit_(code, new ExitStatus(code));\n };\n var exitJS = (status, implicit) => {\n EXITSTATUS = status;\n if (!keepRuntimeAlive()) {\n exitRuntime();\n }\n _proc_exit(status);\n };\n var _exit = exitJS;\n function _fd_close(fd) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n FS.close(stream);\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n }\n function _fd_fdstat_get(fd, pbuf) {\n try {\n var rightsBase = 0;\n var rightsInheriting = 0;\n var flags = 0;\n {\n var stream = SYSCALLS.getStreamFromFD(fd);\n var type = stream.tty ? 2 : FS.isDir(stream.mode) ? 3 : FS.isLink(stream.mode) ? 7 : 4;\n }\n _asan_js_store_1(pbuf >> 0, type);\n _asan_js_store_2(pbuf + 2 >> 1, flags);\n tempI64 = [rightsBase >>> 0, (tempDouble = rightsBase, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], _asan_js_store_4(pbuf + 8 >> 2, tempI64[0]), _asan_js_store_4(pbuf + 12 >> 2, tempI64[1]);\n tempI64 = [rightsInheriting >>> 0, (tempDouble = rightsInheriting, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], _asan_js_store_4(pbuf + 16 >> 2, tempI64[0]), _asan_js_store_4(pbuf + 20 >> 2, tempI64[1]);\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n }\n var doReadv = (stream, iov, iovcnt, offset) => {\n var ret = 0;\n for (var i = 0; i < iovcnt; i++) {\n var ptr = _asan_js_load_4u(iov >> 2);\n var len = _asan_js_load_4u(iov + 4 >> 2);\n iov += 8;\n var curr = FS.read(stream, HEAP8, ptr, len, offset);\n if (curr < 0) return -1;\n ret += curr;\n if (curr < len) break;\n if (typeof offset !== \"undefined\") {\n offset += curr;\n }\n }\n return ret;\n };\n function _fd_read(fd, iov, iovcnt, pnum) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n var num = doReadv(stream, iov, iovcnt);\n _asan_js_store_4u(pnum >> 2, num);\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n }\n function _fd_seek(fd, offset_low, offset_high, whence, newOffset) {\n var offset = convertI32PairToI53Checked(offset_low, offset_high);\n try {\n if (isNaN(offset)) return 61;\n var stream = SYSCALLS.getStreamFromFD(fd);\n FS.llseek(stream, offset, whence);\n tempI64 = [stream.position >>> 0, (tempDouble = stream.position, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], _asan_js_store_4(newOffset >> 2, tempI64[0]), _asan_js_store_4(newOffset + 4 >> 2, tempI64[1]);\n if (stream.getdents && offset === 0 && whence === 0) stream.getdents = null;\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n }\n var doWritev = (stream, iov, iovcnt, offset) => {\n var ret = 0;\n for (var i = 0; i < iovcnt; i++) {\n var ptr = _asan_js_load_4u(iov >> 2);\n var len = _asan_js_load_4u(iov + 4 >> 2);\n iov += 8;\n var curr = FS.write(stream, HEAP8, ptr, len, offset);\n if (curr < 0) return -1;\n ret += curr;\n if (typeof offset !== \"undefined\") {\n offset += curr;\n }\n }\n return ret;\n };\n function _fd_write(fd, iov, iovcnt, pnum) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n var num = doWritev(stream, iov, iovcnt);\n _asan_js_store_4u(pnum >> 2, num);\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n }\n var getCFunc = (ident) => {\n var func = Module2[\"_\" + ident];\n return func;\n };\n var writeArrayToMemory = (array, buffer) => {\n HEAP8.set(array, buffer);\n };\n var stringToUTF8OnStack = (str) => {\n var size = lengthBytesUTF8(str) + 1;\n var ret = stackAlloc(size);\n stringToUTF8(str, ret, size);\n return ret;\n };\n var ccall = (ident, returnType, argTypes, args, opts) => {\n var toC = { \"string\": (str) => {\n var ret2 = 0;\n if (str !== null && str !== void 0 && str !== 0) {\n ret2 = stringToUTF8OnStack(str);\n }\n return ret2;\n }, \"array\": (arr) => {\n var ret2 = stackAlloc(arr.length);\n writeArrayToMemory(arr, ret2);\n return ret2;\n } };\n function convertReturnValue(ret2) {\n if (returnType === \"string\") {\n return UTF8ToString(ret2);\n }\n if (returnType === \"boolean\") return Boolean(ret2);\n return ret2;\n }\n var func = getCFunc(ident);\n var cArgs = [];\n var stack = 0;\n if (args) {\n for (var i = 0; i < args.length; i++) {\n var converter = toC[argTypes[i]];\n if (converter) {\n if (stack === 0) stack = stackSave();\n cArgs[i] = converter(args[i]);\n } else {\n cArgs[i] = args[i];\n }\n }\n }\n var ret = func.apply(null, cArgs);\n function onDone(ret2) {\n if (stack !== 0) stackRestore(stack);\n return convertReturnValue(ret2);\n }\n ret = onDone(ret);\n return ret;\n };\n var cwrap = (ident, returnType, argTypes, opts) => {\n var numericArgs = !argTypes || argTypes.every((type) => type === \"number\" || type === \"boolean\");\n var numericRet = returnType !== \"string\";\n if (numericRet && numericArgs && !opts) {\n return getCFunc(ident);\n }\n return function() {\n return ccall(ident, returnType, argTypes, arguments, opts);\n };\n };\n var FSNode = function(parent, name, mode, rdev) {\n if (!parent) {\n parent = this;\n }\n this.parent = parent;\n this.mount = parent.mount;\n this.mounted = null;\n this.id = FS.nextInode++;\n this.name = name;\n this.mode = mode;\n this.node_ops = {};\n this.stream_ops = {};\n this.rdev = rdev;\n };\n var readMode = 292 | 73;\n var writeMode = 146;\n Object.defineProperties(FSNode.prototype, { read: { get: function() {\n return (this.mode & readMode) === readMode;\n }, set: function(val) {\n val ? this.mode |= readMode : this.mode &= ~readMode;\n } }, write: { get: function() {\n return (this.mode & writeMode) === writeMode;\n }, set: function(val) {\n val ? this.mode |= writeMode : this.mode &= ~writeMode;\n } }, isFolder: { get: function() {\n return FS.isDir(this.mode);\n } }, isDevice: { get: function() {\n return FS.isChrdev(this.mode);\n } } });\n FS.FSNode = FSNode;\n FS.createPreloadedFile = FS_createPreloadedFile;\n FS.staticInit();\n var wasmImports = { E: ___assert_fail, p: ___syscall_dup, c: ___syscall_fcntl64, P: ___syscall_fstat64, N: ___syscall_lstat64, D: ___syscall_mkdirat, O: ___syscall_newfstatat, l: ___syscall_openat, K: ___syscall_pipe, J: ___syscall_poll, i: ___syscall_stat64, L: __emscripten_get_now_is_monotonic, g: __emscripten_sanitizer_get_option, e: __emscripten_sanitizer_use_colors, t: __localtime_js, u: __mktime_js, r: __mmap_js, s: __munmap_js, v: __timegm_js, H: __tzset_js, a: _abort, M: _emscripten_date_now, I: _emscripten_get_heap_max, k: _emscripten_get_module_name, h: _emscripten_get_now, x: _emscripten_pc_get_column, z: _emscripten_pc_get_file, A: _emscripten_pc_get_function, y: _emscripten_pc_get_line, F: _emscripten_resize_heap, b: _emscripten_return_address, C: _emscripten_stack_snapshot, B: _emscripten_stack_unwind_buffer, n: _environ_get, o: _environ_sizes_get, m: _exit, f: _fd_close, G: _fd_fdstat_get, j: _fd_read, w: _fd_seek, d: _fd_write, q: _proc_exit };\n var wasmExports = createWasm();\n var ___wasm_call_ctors = () => (___wasm_call_ctors = wasmExports[\"R\"])();\n var _extract_archive = Module2[\"_extract_archive\"] = (a0, a1, a2) => (_extract_archive = Module2[\"_extract_archive\"] = wasmExports[\"S\"])(a0, a1, a2);\n var _malloc = Module2[\"_malloc\"] = (a0) => (_malloc = Module2[\"_malloc\"] = wasmExports[\"T\"])(a0);\n var _free = Module2[\"_free\"] = (a0) => (_free = Module2[\"_free\"] = wasmExports[\"U\"])(a0);\n var _free_extracted_archive = Module2[\"_free_extracted_archive\"] = (a0) => (_free_extracted_archive = Module2[\"_free_extracted_archive\"] = wasmExports[\"V\"])(a0);\n var ___errno_location = () => (___errno_location = wasmExports[\"X\"])();\n var ___funcs_on_exit = () => (___funcs_on_exit = wasmExports[\"Y\"])();\n var _emscripten_builtin_malloc = (a0) => (_emscripten_builtin_malloc = wasmExports[\"Z\"])(a0);\n var _memalign = (a0, a1) => (_memalign = wasmExports[\"_\"])(a0, a1);\n var _emscripten_builtin_free = (a0) => (_emscripten_builtin_free = wasmExports[\"$\"])(a0);\n var _emscripten_builtin_memalign = (a0, a1) => (_emscripten_builtin_memalign = wasmExports[\"aa\"])(a0, a1);\n var setTempRet0 = (a0) => (setTempRet0 = wasmExports[\"ba\"])(a0);\n var stackSave = () => (stackSave = wasmExports[\"ca\"])();\n var stackRestore = (a0) => (stackRestore = wasmExports[\"da\"])(a0);\n var stackAlloc = (a0) => (stackAlloc = wasmExports[\"ea\"])(a0);\n var __ZN6__asan9FakeStack17AddrIsInFakeStackEm = Module2[\"__ZN6__asan9FakeStack17AddrIsInFakeStackEm\"] = (a0, a1) => (__ZN6__asan9FakeStack17AddrIsInFakeStackEm = Module2[\"__ZN6__asan9FakeStack17AddrIsInFakeStackEm\"] = wasmExports[\"fa\"])(a0, a1);\n var __ZN6__asan9FakeStack8AllocateEmmm = Module2[\"__ZN6__asan9FakeStack8AllocateEmmm\"] = (a0, a1, a2, a3) => (__ZN6__asan9FakeStack8AllocateEmmm = Module2[\"__ZN6__asan9FakeStack8AllocateEmmm\"] = wasmExports[\"ga\"])(a0, a1, a2, a3);\n var __asan_c_load_1 = (a0) => (__asan_c_load_1 = wasmExports[\"ha\"])(a0);\n var __asan_c_load_1u = (a0) => (__asan_c_load_1u = wasmExports[\"_asan_c_load_1u\"])(a0);\n var __asan_c_load_2 = (a0) => (__asan_c_load_2 = wasmExports[\"ia\"])(a0);\n var __asan_c_load_2u = (a0) => (__asan_c_load_2u = wasmExports[\"_asan_c_load_2u\"])(a0);\n var __asan_c_load_4 = (a0) => (__asan_c_load_4 = wasmExports[\"ja\"])(a0);\n var __asan_c_load_4u = (a0) => (__asan_c_load_4u = wasmExports[\"ka\"])(a0);\n var __asan_c_load_f = (a0) => (__asan_c_load_f = wasmExports[\"la\"])(a0);\n var __asan_c_load_d = (a0) => (__asan_c_load_d = wasmExports[\"ma\"])(a0);\n var __asan_c_store_1 = (a0, a1) => (__asan_c_store_1 = wasmExports[\"na\"])(a0, a1);\n var __asan_c_store_1u = (a0, a1) => (__asan_c_store_1u = wasmExports[\"_asan_c_store_1u\"])(a0, a1);\n var __asan_c_store_2 = (a0, a1) => (__asan_c_store_2 = wasmExports[\"oa\"])(a0, a1);\n var __asan_c_store_2u = (a0, a1) => (__asan_c_store_2u = wasmExports[\"_asan_c_store_2u\"])(a0, a1);\n var __asan_c_store_4 = (a0, a1) => (__asan_c_store_4 = wasmExports[\"pa\"])(a0, a1);\n var __asan_c_store_4u = (a0, a1) => (__asan_c_store_4u = wasmExports[\"qa\"])(a0, a1);\n var __asan_c_store_f = (a0, a1) => (__asan_c_store_f = wasmExports[\"_asan_c_store_f\"])(a0, a1);\n var __asan_c_store_d = (a0, a1) => (__asan_c_store_d = wasmExports[\"_asan_c_store_d\"])(a0, a1);\n Module2[\"wasmMemory\"] = wasmMemory;\n Module2[\"ccall\"] = ccall;\n Module2[\"cwrap\"] = cwrap;\n Module2[\"getValue\"] = getValue;\n Module2[\"UTF8ToString\"] = UTF8ToString;\n var calledRun;\n dependenciesFulfilled = function runCaller() {\n if (!calledRun) run();\n if (!calledRun) dependenciesFulfilled = runCaller;\n };\n function run() {\n if (runDependencies > 0) {\n return;\n }\n preRun();\n if (runDependencies > 0) {\n return;\n }\n function doRun() {\n if (calledRun) return;\n calledRun = true;\n Module2[\"calledRun\"] = true;\n if (ABORT) return;\n initRuntime();\n readyPromiseResolve(Module2);\n if (Module2[\"onRuntimeInitialized\"]) Module2[\"onRuntimeInitialized\"]();\n postRun();\n }\n if (Module2[\"setStatus\"]) {\n Module2[\"setStatus\"](\"Running...\");\n setTimeout(function() {\n setTimeout(function() {\n Module2[\"setStatus\"](\"\");\n }, 1);\n doRun();\n }, 1);\n } else {\n doRun();\n }\n }\n if (Module2[\"preInit\"]) {\n if (typeof Module2[\"preInit\"] == \"function\") Module2[\"preInit\"] = [Module2[\"preInit\"]];\n while (Module2[\"preInit\"].length > 0) {\n Module2[\"preInit\"].pop()();\n }\n }\n run();\n return moduleArg.ready;\n };\n })();\n if (typeof exports === \"object\" && typeof module === \"object\")\n module.exports = Module;\n else if (typeof define === \"function\" && define[\"amd\"])\n define([], () => Module);\n }\n});\n\n// src/index.ts\ninit_process();\ninit_buffer();\n\n// node_modules/@emscripten-forge/untarjs/lib/index.js\ninit_process();\ninit_buffer();\n\n// node_modules/@emscripten-forge/untarjs/lib/helper.js\ninit_process();\ninit_buffer();\nvar import_unpack = __toESM(require_unpack());\n\n// node_modules/@emscripten-forge/untarjs/lib/unpack.wasm\nvar unpack_default = \"./unpack-UWASHBVL.wasm\";\n\n// node_modules/@emscripten-forge/untarjs/lib/helper.js\nvar initializeWasm = async () => {\n const wasmModule = await (0, import_unpack.default)({\n locateFile(path) {\n if (path.endsWith(\".wasm\")) {\n return unpack_default;\n }\n return path;\n }\n });\n return wasmModule;\n};\nvar helper_default = initializeWasm;\n\n// node_modules/@emscripten-forge/untarjs/lib/types.js\ninit_process();\ninit_buffer();\n\n// node_modules/@emscripten-forge/untarjs/lib/index.js\nvar fetchByteArray = async (url) => {\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n const arrayBuffer = await response.arrayBuffer();\n return new Uint8Array(arrayBuffer);\n};\nvar initUntarJS = async () => {\n const wasmModule = await helper_default();\n const extractData = async (data, decompressionOnly = false) => {\n let inputPtr = wasmModule._malloc(data.length);\n wasmModule.HEAPU8.set(data, inputPtr);\n let resultPtr = wasmModule._extract_archive(inputPtr, data.length, decompressionOnly);\n const files = {};\n let statusPtr = wasmModule.getValue(resultPtr + 8, \"i32\");\n let errorMessagePtr = resultPtr + 12;\n if (statusPtr !== 1) {\n const errorMessage = wasmModule.UTF8ToString(errorMessagePtr);\n console.error(\"Extraction failed with status:\", statusPtr, \"Error:\", errorMessage);\n wasmModule._free(inputPtr);\n wasmModule._free_extracted_archive(resultPtr);\n inputPtr = null;\n resultPtr = null;\n errorMessagePtr = null;\n throw new Error(errorMessage);\n }\n const filesPtr = wasmModule.getValue(resultPtr, \"i32\");\n const fileCount = wasmModule.getValue(resultPtr + 4, \"i32\");\n for (let i = 0; i < fileCount; i++) {\n const fileDataPtr = filesPtr + i * 12;\n const filenamePtr = wasmModule.getValue(fileDataPtr, \"i32\");\n const dataSize = wasmModule.getValue(fileDataPtr + 8, \"i32\");\n const dataPtr = wasmModule.getValue(fileDataPtr + 4, \"i32\");\n const filename = wasmModule.UTF8ToString(filenamePtr);\n const fileData = new Uint8Array(wasmModule.HEAPU8.buffer, dataPtr, dataSize);\n const fileDataCopy = fileData.slice(0);\n files[filename] = fileDataCopy;\n }\n wasmModule._free(inputPtr);\n wasmModule._free_extracted_archive(resultPtr);\n inputPtr = null;\n resultPtr = null;\n errorMessagePtr = null;\n return files;\n };\n const extract = async (url) => {\n let isArchive = checkIsArchive(url);\n const data = await fetchByteArray(url);\n return extractData(data, !isArchive);\n };\n const checkIsArchive = (url) => {\n let isArchive = false;\n let archiveExtArr = [\".conda\", \"tar.bz2\", \"tar.gz\"];\n archiveExtArr.forEach((type) => {\n if (url.toLowerCase().endsWith(type)) {\n isArchive = true;\n }\n });\n return isArchive;\n };\n return {\n extract,\n extractData\n };\n};\n\n// src/helper.ts\ninit_process();\ninit_buffer();\nfunction getParentDirectory(filePath) {\n return filePath.substring(0, filePath.lastIndexOf(\"/\"));\n}\nfunction getSharedLibs(files, prefix) {\n let sharedLibs = [];\n Object.keys(files).map((file) => {\n if ((file.endsWith(\".so\") || file.includes(\".so.\")) && checkWasmMagicNumber(files[file])) {\n sharedLibs.push(`${prefix}/${file}`);\n }\n });\n return sharedLibs;\n}\nfunction checkWasmMagicNumber(uint8Array) {\n const WASM_MAGIC_NUMBER = [0, 97, 115, 109];\n return uint8Array[0] === WASM_MAGIC_NUMBER[0] && uint8Array[1] === WASM_MAGIC_NUMBER[1] && uint8Array[2] === WASM_MAGIC_NUMBER[2] && uint8Array[3] === WASM_MAGIC_NUMBER[3];\n}\nfunction isCondaMeta(files) {\n let isCondaMetaFile = false;\n Object.keys(files).forEach((filename) => {\n let regexp = \"conda-meta\";\n if (filename.match(regexp)) {\n isCondaMetaFile = true;\n }\n });\n return isCondaMetaFile;\n}\nfunction saveFiles(FS, files, prefix) {\n try {\n Object.keys(files).forEach((filename) => {\n const dir = getParentDirectory(filename);\n if (!FS.analyzePath(dir).exists) {\n FS.mkdirTree(dir);\n }\n FS.writeFile(`${prefix}/${filename}`, files[filename]);\n });\n } catch (error) {\n throw new Error(error?.message);\n }\n}\nasync function installCondaPackage(prefix, url, FS, untarjs, verbose = false, generateCondaMeta = false) {\n if (!url) {\n throw new Error(`There is no file in ${url}`);\n }\n let files = await untarjs.extract(url);\n let installedFiles = void 0;\n let newPrefix = prefix;\n if (Object.keys(files).length !== 0) {\n if (prefix === \"/\") {\n newPrefix = \"\";\n }\n if (url.toLowerCase().endsWith(\".conda\")) {\n let condaPackage = new Uint8Array();\n let packageInfo = new Uint8Array();\n Object.keys(files).map((file) => {\n if (file.startsWith(\"pkg-\")) {\n condaPackage = files[file];\n } else if (file.startsWith(\"info-\")) {\n packageInfo = files[file];\n }\n });\n if (condaPackage && condaPackage.byteLength === 0 || packageInfo && packageInfo.byteLength === 0) {\n throw new Error(`Invalid .conda package ${url}`);\n }\n const condaFiles = await untarjs.extractData(condaPackage);\n const packageInfoFiles = await untarjs.extractData(packageInfo);\n generateCondaMeta && saveCondaMetaFile(packageInfoFiles, newPrefix, FS, verbose);\n saveFiles(FS, { ...condaFiles, ...packageInfoFiles }, newPrefix);\n installedFiles = condaFiles;\n } else {\n generateCondaMeta && saveCondaMetaFile(files, newPrefix, FS, verbose);\n saveFiles(FS, files, newPrefix);\n installedFiles = files;\n }\n }\n if (!installedFiles) {\n throw new Error(`There is no file in ${url}`);\n }\n if (prefix === \"/\") {\n newPrefix = \"\";\n }\n if (Object.keys(installedFiles).length !== 0) {\n return getSharedLibs(installedFiles, newPrefix);\n }\n return [];\n}\nfunction saveCondaMetaFile(files, prefix, FS, verbose) {\n let infoData = new Uint8Array();\n let isCondaMetaFile = isCondaMeta(files);\n if (!isCondaMetaFile) {\n if (verbose) {\n console.log(`Creating and saving conda-meta json`);\n }\n Object.keys(files).map((filename) => {\n let regexp = \"index.json\";\n if (filename.match(regexp)) {\n infoData = files[filename];\n }\n });\n if (infoData.byteLength !== 0) {\n let info = new TextDecoder(\"utf-8\").decode(infoData);\n try {\n let condaPackageInfo = JSON.parse(info);\n const condaMetaDir = `${prefix}/conda-meta`;\n const path = `${condaMetaDir}/${condaPackageInfo.name}-${condaPackageInfo.version}-${condaPackageInfo.build}.json`;\n const pkgCondaMeta = {\n name: condaPackageInfo.name,\n version: condaPackageInfo.version,\n build: condaPackageInfo.build,\n build_number: condaPackageInfo.build_number\n };\n if (!FS.analyzePath(`${condaMetaDir}`).exists) {\n FS.mkdirTree(`${condaMetaDir}`);\n }\n if (verbose) {\n console.log(\n `Creating conda-meta file for ${condaPackageInfo.name}-${condaPackageInfo.version}-${condaPackageInfo.build} package`\n );\n }\n FS.writeFile(path, JSON.stringify(pkgCondaMeta));\n } catch (error) {\n throw new Error(error?.message);\n }\n } else if (verbose) {\n console.log(\n \"There is no info folder, imposibly to create a conda meta json file\"\n );\n }\n } else {\n let condaMetaFileData = new Uint8Array();\n let path = \"\";\n Object.keys(files).forEach((filename) => {\n let regexp = \"conda-meta\";\n if (filename.match(regexp)) {\n condaMetaFileData = files[filename];\n path = filename;\n }\n });\n let condaMetaDir = `${prefix}/conda-meta`;\n if (!FS.analyzePath(`${condaMetaDir}`).exists) {\n FS.mkdirTree(`${condaMetaDir}`);\n }\n if (verbose) {\n console.log(`Saving conda-meta file ${path}`);\n }\n const json = JSON.stringify(condaMetaFileData);\n const condaMetaFile = new TextEncoder().encode(json);\n FS.writeFile(`${prefix}/${path}`, condaMetaFile);\n }\n}\n\n// src/dynload/dynload.js\ninit_process();\ninit_buffer();\nvar memoize = (fn) => {\n let cache = {};\n return (...args) => {\n let n = args[0];\n if (n in cache) {\n return cache[n];\n } else {\n let result = fn(n);\n cache[n] = result;\n return result;\n }\n };\n};\nfunction createLock() {\n let _lock = Promise.resolve();\n async function acquireLock() {\n const old_lock = _lock;\n let releaseLock = () => {\n };\n _lock = new Promise((resolve) => releaseLock = resolve);\n await old_lock;\n return releaseLock;\n }\n return acquireLock;\n}\nfunction isInSharedLibraryPath(prefix, libPath) {\n if (libPath.startsWith(\"/\")) {\n const dirname = libPath.substring(0, libPath.lastIndexOf(\"/\"));\n if (prefix == \"/\") {\n return dirname == `/lib`;\n } else {\n return dirname == `${prefix}/lib`;\n }\n } else {\n return false;\n }\n}\nasync function loadDynlibsFromPackage(prefix, pkgName, dynlibPaths, Module) {\n if (prefix == \"/\") {\n var sitepackages = `/lib/python3.11/site-packages`;\n } else {\n var sitepackages = `${prefix}/lib/python3.11/site-packages`;\n }\n const auditWheelLibDir = `${sitepackages}/${pkgName}.libs`;\n const readFileMemoized = memoize(Module.FS.readFile);\n let dynlibs = [];\n const globalLibs = calculateGlobalLibs(\n dynlibPaths,\n readFileMemoized,\n Module\n );\n dynlibs = dynlibPaths.map((path) => {\n const global2 = globalLibs.has(Module.PATH.basename(path));\n return {\n path,\n global: global2 || isInSharedLibraryPath(prefix, path) || path.startsWith(auditWheelLibDir)\n };\n });\n dynlibs.sort((lib1, lib2) => Number(lib2.global) - Number(lib1.global));\n for (const { path, global: global2 } of dynlibs) {\n try {\n await loadDynlib(prefix, path, global2, [auditWheelLibDir], readFileMemoized, Module);\n } catch (e) {\n console.error(`Failed to load dynlib ${path}`, e);\n }\n }\n}\nfunction createDynlibFS(prefix, lib, searchDirs, readFileFunc, Module) {\n const dirname = lib.substring(0, lib.lastIndexOf(\"/\"));\n let _searchDirs = searchDirs || [];\n if (prefix == \"/\") {\n _searchDirs = _searchDirs.concat([dirname], [`/lib`]);\n } else {\n _searchDirs = _searchDirs.concat([dirname], [`${prefix}/lib`]);\n }\n const resolvePath = (path) => {\n if (Module.PATH.basename(path) !== Module.PATH.basename(lib)) {\n }\n for (const dir of _searchDirs) {\n const fullPath = Module.PATH.join2(dir, path);\n if (Module.FS.findObject(fullPath) !== null) {\n return fullPath;\n }\n }\n return path;\n };\n let readFile = (path) => Module.FS.readFile(resolvePath(path));\n if (readFileFunc !== void 0) {\n readFile = (path) => readFileFunc(resolvePath(path));\n }\n const fs = {\n findObject: (path, dontResolveLastLink) => {\n let obj = Module.FS.findObject(resolvePath(path), dontResolveLastLink);\n if (obj === null) {\n console.debug(`Failed to find a library: ${resolvePath(path)}`);\n }\n return obj;\n },\n readFile\n };\n return fs;\n}\nfunction calculateGlobalLibs(libs, readFileFunc, Module) {\n let readFile = Module.FS.readFile;\n if (readFileFunc !== void 0) {\n readFile = readFileFunc;\n }\n const globalLibs = /* @__PURE__ */ new Set();\n libs.map((lib) => {\n const binary = readFile(lib);\n const needed = Module.getDylinkMetadata(binary).neededDynlibs;\n needed.forEach((lib2) => {\n globalLibs.add(lib2);\n });\n });\n return globalLibs;\n}\nvar acquireDynlibLock = createLock();\nasync function loadDynlib(prefix, lib, global2, searchDirs, readFileFunc, Module) {\n if (searchDirs === void 0) {\n searchDirs = [];\n }\n const releaseDynlibLock = await acquireDynlibLock();\n try {\n const fs = createDynlibFS(prefix, lib, searchDirs, readFileFunc, Module);\n const libName = Module.PATH.basename(lib);\n await Module.loadDynamicLibrary(libName, {\n loadAsync: true,\n nodelete: true,\n allowUndefined: true,\n global: global2,\n fs\n });\n const dsoOnlyLibName = Module.LDSO.loadedLibsByName[libName];\n const dsoFullLib = Module.LDSO.loadedLibsByName[lib];\n if (!dsoOnlyLibName && !dsoFullLib) {\n console.execption(`Failed to load ${libName} from ${lib} LDSO not found`);\n }\n if (!dsoOnlyLibName) {\n Module.LDSO.loadedLibsByName[libName] = dsoFullLib;\n }\n if (!dsoFullLib) {\n Module.LDSO.loadedLibsByName[lib] = dsoOnlyLibName;\n }\n } catch (error) {\n throw new Error(error?.message);\n } finally {\n releaseDynlibLock();\n }\n}\n\n// src/index.ts\nfunction getPythonVersion(packages) {\n let pythonPackage = void 0;\n for (let i = 0; i < packages.length; i++) {\n if (packages[i].name == \"python\") {\n pythonPackage = packages[i];\n break;\n }\n }\n if (pythonPackage) {\n return pythonPackage.version.split(\".\").map((x) => parseInt(x));\n }\n}\nvar bootstrapEmpackPackedEnvironment = async (options) => {\n const { empackEnvMeta, pkgRootUrl, Module, verbose, generateCondaMeta } = options;\n let untarjs;\n if (options.untarjs) {\n untarjs = options.untarjs;\n } else {\n const untarjsReady = initUntarJS();\n untarjs = await untarjsReady;\n }\n const sharedLibsMap = {};\n if (empackEnvMeta.packages.length) {\n await Promise.all(\n empackEnvMeta.packages.map(async (pkg) => {\n const packageUrl = pkg?.url ?? `${pkgRootUrl}/${pkg.filename}`;\n if (verbose) {\n console.log(`Install ${pkg.filename} taken from ${packageUrl}`);\n }\n sharedLibsMap[pkg.name] = await installCondaPackage(\n empackEnvMeta.prefix,\n packageUrl,\n Module.FS,\n untarjs,\n !!verbose,\n !!generateCondaMeta\n );\n })\n );\n await waitRunDependencies(Module);\n }\n return sharedLibsMap;\n};\nasync function bootstrapPython(options) {\n await options.Module.init_phase_1(\n options.prefix,\n options.pythonVersion,\n options.verbose\n );\n options.Module.init_phase_2(\n options.prefix,\n options.pythonVersion,\n options.verbose\n );\n}\nasync function loadShareLibs(options) {\n const { sharedLibs, prefix, Module } = options;\n const sharedLibsLoad = [];\n for (const pkgName of Object.keys(sharedLibs)) {\n const packageShareLibs = sharedLibs[pkgName];\n if (packageShareLibs) {\n sharedLibsLoad.push(\n loadDynlibsFromPackage(prefix, pkgName, packageShareLibs, Module)\n );\n }\n }\n return await Promise.all(sharedLibsLoad);\n}\nasync function waitRunDependencies(Module) {\n const promise = new Promise((r) => {\n Module.monitorRunDependencies = (n) => {\n if (n === 0) {\n r();\n }\n };\n });\n Module.addRunDependency(\"dummy\");\n Module.removeRunDependency(\"dummy\");\n return promise;\n}\nexport {\n bootstrapEmpackPackedEnvironment,\n bootstrapPython,\n checkWasmMagicNumber,\n getParentDirectory,\n getPythonVersion,\n getSharedLibs,\n installCondaPackage,\n isCondaMeta,\n loadShareLibs,\n saveCondaMetaFile,\n saveFiles,\n waitRunDependencies\n};\n/*! Bundled license information:\n\n@esbuild-plugins/node-globals-polyfill/Buffer.js:\n (*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>\n * @license MIT\n *)\n*/\n","// Copyright (c) Thorsten Beier\n// Copyright (c) JupyterLite Contributors\n// Distributed under the terms of the Modified BSD License.\nimport { URLExt } from '@jupyterlab/coreutils';\nimport { bootstrapEmpackPackedEnvironment, bootstrapPython, getPythonVersion, loadShareLibs, waitRunDependencies } from '@emscripten-forge/mambajs';\nglobalThis.Module = {};\n// when a toplevel cell uses an await, the cell is implicitly\n// wrapped in a async function. Since the webloop - eventloop\n// implementation does not support `eventloop.run_until_complete(f)`\n// we need to convert the toplevel future in a javascript Promise\n// this `toplevel` promise is then awaited before we\n// execute the next cell. After the promise is awaited we need\n// to do some cleanup and delete the python proxy\n// (ie a js-wrapped python object) to avoid memory leaks\nglobalThis.toplevel_promise = null;\nglobalThis.toplevel_promise_py_proxy = null;\nlet resolveInputReply;\nlet kernelReady;\nlet rawXKernel;\nlet rawXServer;\nasync function get_stdin() {\n const replyPromise = new Promise(resolve => {\n resolveInputReply = resolve;\n });\n return replyPromise;\n}\nasync function fetchJson(url) {\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n const json = await response.json();\n return json;\n}\nself.get_stdin = get_stdin;\nglobalThis.ready = new Promise(resolve => {\n kernelReady = resolve;\n});\nexport class XeusRemoteKernel {\n constructor(options = {}) {\n this._sendWorkerMessage = () => { };\n }\n async ready() {\n return await globalThis.ready;\n }\n async cd(path) {\n if (!path || !globalThis.Module.FS) {\n return;\n }\n globalThis.Module.FS.chdir(path);\n }\n async isDir(path) {\n try {\n const lookup = globalThis.Module.FS.lookupPath(path);\n return globalThis.Module.FS.isDir(lookup.node.mode);\n }\n catch (e) {\n return false;\n }\n }\n async processMessage(event) {\n const msg_type = event.msg.header.msg_type;\n await globalThis.ready;\n if (globalThis.toplevel_promise !== null &&\n globalThis.toplevel_promise_py_proxy !== null) {\n await globalThis.toplevel_promise;\n globalThis.toplevel_promise_py_proxy.delete();\n globalThis.toplevel_promise_py_proxy = null;\n globalThis.toplevel_promise = null;\n }\n if (msg_type === 'input_reply') {\n resolveInputReply(event.msg);\n }\n else {\n rawXServer.notify_listener(event.msg);\n }\n }\n async initialize(options) {\n const { baseUrl, kernelSpec, empackEnvMetaLink } = options;\n // location of the kernel binary on the server\n const binary_js = URLExt.join(baseUrl, kernelSpec.argv[0]);\n const binary_wasm = binary_js.replace('.js', '.wasm');\n const binary_data = binary_js.replace('.js', '.data');\n const kernel_root_url = URLExt.join(baseUrl, 'xeus', 'kernels', kernelSpec.dir);\n const sharedLibs = kernelSpec.metadata && kernelSpec.metadata.shared\n ? kernelSpec.metadata.shared\n : {};\n importScripts(binary_js);\n globalThis.Module = await createXeusModule({\n locateFile: (file) => {\n if (file in sharedLibs) {\n return URLExt.join(kernel_root_url, file);\n }\n if (file.endsWith('.wasm')) {\n return binary_wasm;\n }\n else if (file.endsWith('.data')) {\n // Handle the .data file if it exists\n return binary_data;\n }\n return file;\n }\n });\n try {\n await waitRunDependencies(globalThis.Module);\n if (globalThis.Module.FS !== undefined &&\n globalThis.Module.loadDynamicLibrary !== undefined) {\n const empackEnvMetaLocation = empackEnvMetaLink || kernel_root_url;\n const packagesJsonUrl = `${empackEnvMetaLocation}/empack_env_meta.json`;\n const pkgRootUrl = URLExt.join(baseUrl, 'xeus/kernel_packages');\n const empackEnvMeta = (await fetchJson(packagesJsonUrl));\n const sharedLibs = await bootstrapEmpackPackedEnvironment({\n empackEnvMeta,\n pkgRootUrl,\n Module: globalThis.Module,\n verbose: true\n });\n // Bootstrap Python, if it's xeus-python\n if (kernelSpec.name === 'xpython') {\n const pythonVersion = getPythonVersion(empackEnvMeta.packages);\n if (!pythonVersion) {\n throw new Error('Failed to load Python!');\n }\n await bootstrapPython({\n prefix: empackEnvMeta.prefix,\n pythonVersion: pythonVersion,\n Module: globalThis.Module\n });\n }\n // Load shared libs\n await loadShareLibs({\n sharedLibs,\n prefix: empackEnvMeta.prefix,\n Module: globalThis.Module\n });\n }\n rawXKernel = new globalThis.Module.xkernel();\n rawXServer = rawXKernel.get_server();\n if (!rawXServer) {\n console.error('Failed to start kernel!');\n }\n rawXKernel.start();\n }\n catch (e) {\n if (typeof e === 'number') {\n const msg = globalThis.Module.get_exception_message(e);\n throw new Error(msg);\n }\n else {\n throw e;\n }\n }\n kernelReady(1);\n }\n /**\n * Register the callback function to send messages from the worker back to the main thread.\n * @param callback the callback to register\n */\n registerCallback(callback) {\n this._sendWorkerMessage = callback;\n }\n}\n","// Copyright (c) Thorsten Beier\n// Copyright (c) JupyterLite Contributors\n// Distributed under the terms of the Modified BSD License.\nimport coincident from 'coincident';\nimport { ContentsAPI, DriveFS } from '@jupyterlite/contents';\nimport { XeusRemoteKernel } from './worker';\nconst workerAPI = coincident(self);\n/**\n * An Emscripten-compatible synchronous Contents API using shared array buffers.\n */\nexport class SharedBufferContentsAPI extends ContentsAPI {\n request(data) {\n return workerAPI.processDriveRequest(data);\n }\n}\n/**\n * A custom drive implementation which uses shared array buffers (via coincident) if available\n */\nclass XeusDriveFS extends DriveFS {\n createAPI(options) {\n return new SharedBufferContentsAPI(options.driveName, options.mountpoint, options.FS, options.ERRNO_CODES);\n }\n}\nexport class XeusCoincidentKernel extends XeusRemoteKernel {\n /**\n * Setup custom Emscripten FileSystem\n */\n async mount(driveName, mountpoint, baseUrl) {\n const { FS, PATH, ERRNO_CODES } = globalThis.Module;\n if (!FS) {\n return;\n }\n const drive = new XeusDriveFS({\n FS,\n PATH,\n ERRNO_CODES,\n baseUrl,\n driveName,\n mountpoint\n });\n FS.mkdir(mountpoint);\n FS.mount(drive, {}, mountpoint);\n FS.chdir(mountpoint);\n }\n}\nconst worker = new XeusCoincidentKernel();\nworkerAPI.initialize = worker.initialize.bind(worker);\nworkerAPI.mount = worker.mount.bind(worker);\nworkerAPI.ready = worker.ready.bind(worker);\nworkerAPI.cd = worker.cd.bind(worker);\nworkerAPI.isDir = worker.isDir.bind(worker);\nworkerAPI.processMessage = worker.processMessage.bind(worker);\n"],"names":["Object","defineProperty","exports","value","ActivityMonitor","signaling_1","constructor","options","this","_timer","_timeout","_isDisposed","_activityStopped","Signal","signal","connect","_onSignalFired","timeout","activityStopped","isDisposed","dispose","clearData","sender","args","clearTimeout","_sender","_args","setTimeout","emit","__createBinding","create","o","m","k","k2","undefined","desc","getOwnPropertyDescriptor","__esModule","writable","configurable","enumerable","get","__exportStar","p","prototype","hasOwnProperty","call","LruCache","_map","Map","_maxSize","maxSize","size","clear","key","item","delete","set","keys","next","MarkdownCodeBlocks","CODE_BLOCK_MARKER","markdownExtensions","MarkdownCodeBlock","startLine","code","endLine","isMarkdown","extension","indexOf","findMarkdownCodeBlocks","text","lines","split","codeBlocks","currentBlock","lineIndex","length","line","lineContainsMarker","constructingBlock","push","firstIndex","lastIndex","lastIndexOf","substring","__importDefault","mod","PageConfig","coreutils_1","minimist_1","url_1","getOption","name","configData","getBodyData","found","document","el","getElementById","JSON","parse","textContent","process","argv","cli","default","slice","path","fullPath","resolve","env","eval","e","console","error","JSONExt","isObject","stringify","setOption","last","getBaseUrl","URLExt","normalize","getTreeUrl","join","getShareUrl","getTreeShareUrl","getUrl","_a","_b","_c","_d","toShare","mode","workspace","labOrDoc","defaultWorkspace","encodeURIComponent","treePath","encodeParts","getWsUrl","baseUrl","wsUrl","getNBConvertURL","format","download","notebookPath","url","getToken","getNotebookVersion","notebookVersion","Extension","body","val","dataset","decodeURIComponent","populate","raw","warn","deferred","disabled","isDeferred","id","separatorIndex","extName","some","isDisabled","PathExt","path_1","removeSlash","paths","posix","joinWithLeadingSlash","basename","ext","dirname","dir","extname","parts","relative","from","to","normalizeExtension","signalToPromise","waitForSignal","PromiseDelegate","cleanup","disconnect","slot","reject","promise","Text","jsIndexToCharIndex","jsIdx","charIndexToJsIndex","charIdx","camelCase","str","upper","replace","match","p1","p2","toUpperCase","toLowerCase","titleCase","map","word","charAt","Time","UNITS","milliseconds","formatHuman","lang","documentElement","formatter","Intl","RelativeTimeFormat","numeric","style","delta","Date","getTime","now","unit","amount","Math","ceil","DateTimeFormat","dateStyle","timeStyle","url_parse_1","a","createElement","href","u","isSchemaLess","protocol","slashes","prefix","auth","host","pathname","getHostName","hostname","toString","objectToQueryString","filter","content","String","queryStringToObject","reduce","acc","isLocal","allowRoot","ArrayExt","Private","StringExt","chain","objects","object","empty","enumerate","start","fn","index","find","findIndex","min","result","max","minmax","vmin","vmax","toArray","Array","toObject","each","every","range","stop","step","rangeLength","initial","it","Symbol","iterator","first","done","TypeError","accumulator","second","repeat","count","once","retro","topologicSort","edges","sorted","visited","Set","graph","edge","addEdge","visit","fromNode","toNode","children","node","has","add","child","stride","take","zip","iters","obj","tuple","firstIndexOf","array","span","n","i","j","findFirstIndex","findLastIndex","d","reverse","b","removeAt","findFirstValue","findLastValue","lowerBound","begin","half","middle","upperBound","shallowEqual","Error","floor","move","fromIndex","toIndex","rotate","pivot","fill","insert","removeFirstOf","removeLastOf","removeAllOf","removeFirstWhere","removeLastWhere","removeAllWhere","Infinity","findIndices","source","query","indices","matchSumOfSquares","score","matchSumOfDeltas","highlight","cmp","algorithm","isPrimitive","isArray","deepEqual","a1","a2","deepArrayEqual","firstValue","secondValue","deepObjectEqual","deepCopy","deepArrayCopy","subvalue","deepObjectCopy","emptyObject","freeze","emptyArray","PluginData","plugin","_activated","_promise","_service","description","activate","deactivate","provides","autoStart","requires","optional","activated","service","s","createPluginData","ensureNoCycle","plugins","services","dependencies","token","trace","pop","ReferenceError","findDependents","dep","newEdges","oldSize","previousSize","packagesOfInterest","poi","forEach","includes","candidate","collectStartupPlugins","collection","startPlugins","ignorePlugins","fallbackRandomValues","buffer","random","Random","getRandomValues","crypto","window","msCrypto","UUID","uuid4","bytes","Uint8Array","lut","uuid4Factory","MimeData","_types","_values","types","hasData","mime","getData","setData","data","splice","PluginRegistry","_application","_validatePlugin","_plugins","_services","validatePlugin","info","application","v","deferredPlugins","getPluginDescription","hasPlugin","isPluginActivated","listPlugins","registerPlugin","registerPlugins","deregisterPlugin","force","activatePlugin","required","t","resolveRequiredService","resolveOptionalService","Promise","all","then","apply","catch","activatePlugins","kind","promises","pluginId","async","deactivatePlugin","manifest","downstream","reason","_resolve","_reject","Token","_tokenStructuralPropertyT","factory","thisArg","disconnectBetween","receiver","disconnectSender","disconnectReceiver","disconnectAll","getExceptionHandler","exceptionHandler","setExceptionHandler","handler","old","Stream","super","arguments","_pending","asyncIterator","pending","_","receivers","receiversForSender","connection","scheduleCleanup","sendersForReceiver","senders","err","findConnection","invokeSlot","WeakMap","dirtySet","schedule","requestAnimationFrame","setImmediate","connections","cleanupDirtySet","cleanupConnections","isDeadConnection","isNumber","x","test","isConstructorOrProto","module","opts","flags","bools","strings","unknownFn","unknown","boolean","allBools","concat","Boolean","aliases","aliasIsBoolean","alias","y","string","defaults","setKey","Number","lastKey","setArg","arg","argDefined","notFlags","letters","broken","stopEarly","assertPath","normalizeStringPosix","allowAboveRoot","res","lastSegmentLength","lastSlash","dots","charCodeAt","lastSlashIndex","cwd","resolvedPath","resolvedAbsolute","isAbsolute","trailingSeparator","joined","fromStart","fromEnd","fromLen","toStart","toLen","lastCommonSep","fromCode","out","_makeLong","hasRoot","end","matchedSlash","extIdx","firstNonSlashEnd","startDot","startPart","preDotState","pathObject","sep","root","base","_format","ret","delimiter","win32","decode","input","encode","pairs","isNaN","part","parser","exec","port","qs","controlOrWhitespace","CRHTLF","protocolre","windowsDriveLetter","trimLeft","rules","address","isSpecial","NaN","ignore","hash","lolcation","loc","location","g","self","finaldestination","type","Url","unescape","scheme","extractProtocol","rest","forwardSlashes","otherSlashes","slashesCount","extracted","instruction","instructions","unshift","up","username","password","origin","char","ins","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","amdO","getter","definition","globalThis","Function","prop","r","toStringTag","SharedArrayBuffer","notify","Atomics","onmessage","w","Worker","postMessage","ArrayBuffer","ids","resolvers","listener","event","details","stopImmediatePropagation","sb","addEventListener","buff","as","Int32Array","BYTES_PER_ELEMENT","WeakSet","transform","interrupt","sendMessage","post","transfer","delay","decoder","TextDecoder","waitFor","isAsync","seppuku","Proxy","action","startsWith","at","deadlock","actions","callback","results","serialized","ui16a","TextEncoder","fs","open","stream","realPath","FS","isFile","file","API","close","parsedFlags","parseInt","needsWrite","put","read","offset","position","subarray","write","timestamp","oldData","llseek","whence","ErrnoError","ERRNO_CODES","EPERM","EINVAL","nodeOrStream","getattr","ino","setattr","attr","entries","lookup","parent","PATH","join2","ok","genericErrors","createNode","mknod","dev","rename","newDir","newName","oldNode","newDirNode","unlink","rmdir","readdir","symlink","oldPath","readlink","driveName","mountpoint","_driveName","_mountpoint","request","method","normalizePath","getmode","newPath","dirlist","response","serializedContent","binString","atob","len","binary","byteLength","fromCharCode","btoa","stats","atime","mtime","ctime","_baseUrl","xhr","XMLHttpRequest","encodeURI","endpoint","send","status","responseText","createAPI","node_ops","stream_ops","mount","isDir","getMode","currentNode","getOwnPropertyNames","getPrototypeOf","fun","e2","run","marker","previousTimestamp","clocktime","seconds","nanoseconds","performance","mozNow","msNow","oNow","webkitNow","nextTick","title","browser","version","versions","on","addListener","off","removeListener","removeAllListeners","binding","chdir","umask","hrtime","platform","release","config","uptime","segs","target","seg","uint8","tmp","num","output","extraBytes","maxChunkLength","len2","TYPED_ARRAY_SUPPORT","that","RangeError","__proto__","encodingOrOffset","byteOffset","encoding","isEncoding","actual","copy","_isBuffer","isView","loweredCase","arr","indexSize","arrLength","valLength","buf","i2","readUInt16BE","foundIndex","remaining","strLen","parsed","substr","byteArray","units","c","hi","lo","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","littleEndian","noAssert","leadSurrogate","b64","l","placeHolders","L","trim","src","dst","readFloatLE","isBuffer","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","pow","rt","abs","log","LN2","cb","poolSize","_augment","kMaxLength","species","alloc","fill2","allocUnsafe","allocUnsafeSlow","compare","list","pos","swap16","swap32","swap64","equals","thisStart","thisEnd","thisCopy","targetCopy","isFinite","toJSON","_arr","newBuf","sliceLen","readUIntLE","byteLength2","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","_scriptDir","Module","currentScript","moduleArg","readyPromiseResolve","readyPromiseReject","Module2","read_","readAsync","moduleOverrides","assign","thisProgram","quit_","toThrow","scriptDirectory","onload","onerror","responseType","wasmBinary","bind","wasmMemory","noExitRuntime","_asan_js_load_2","ptr","runtimeInitialized","__asan_c_load_2","HEAP16","_asan_js_load_4","__asan_c_load_4","HEAP32","_asan_js_load_4u","__asan_c_load_4u","HEAPU32","_asan_js_store_1","__asan_c_store_1","HEAP8","_asan_js_store_2","__asan_c_store_2","_asan_js_store_4","__asan_c_store_4","_asan_js_store_4u","__asan_c_store_4u","WebAssembly","abort","HEAPU8","HEAPF32","HEAPF64","ABORT","assert","condition","updateMemoryViews","Int8Array","Int16Array","Uint16Array","Uint32Array","Float32Array","Float64Array","__ATPRERUN__","__ATINIT__","__ATEXIT__","__ATPOSTRUN__","keepRuntimeAlive","runtimeKeepaliveCounter","wasmBinaryFile","wasmOffsetConverter","tempDouble","tempI64","runDependencies","runDependencyWatcher","dependenciesFulfilled","addRunDependency","removeRunDependency","clearInterval","what","RuntimeError","isDataURI","filename","getBinarySync","WasmOffsetConverter","wasmBytes","wasmModule","funcidx","offset_map","func_starts","name_map","import_functions","unsignedLEB128","shift","byte","skipLimits","binary_parse","sections","customSections","nameSection","subsection_type","UTF8ArrayToString","instantiateArrayBuffer","binaryFile","imports","savedBinary","fetch","credentials","getBinaryPromise","instantiate","instance","ExitStatus","message","convert","getIndex","mid","isSameFunc","offset1","offset2","getName","UTF8Decoder","heapOrArray","idx","maxBytesToRead","endIdx","endPtr","u0","u1","u2","ch","callRuntimeCallbacks","callbacks","UTF8ToString","isAbs","splitPath","normalizeArray","trailingSlash","randomFill","view","initRandomFill","PATH_FS","from2","fromParts","toParts","samePartsLength","outputParts","FS_stdin_getChar_buffer","lengthBytesUTF8","stringToUTF8Array","heap","outIdx","maxBytesToWrite","startIdx","intArrayFromString","stringy","dontAddNull","u8array","numBytesWritten","_emscripten_get_now","TTY","ttys","init","shutdown","register","ops","registerDevice","tty","rdev","seekable","fsync","get_char","bytesRead","put_char","default_tty_ops","prompt","readline","FS_stdin_getChar","ioctl_tcgets","c_iflag","c_oflag","c_cflag","c_lflag","c_cc","ioctl_tcsets","optional_actions","ioctl_tiocgwinsz","default_tty1_ops","mmapAlloc","alignMemory","_emscripten_builtin_memalign","zeroMemory","MEMFS","ops_table","isBlkdev","isFIFO","allocate","mmap","msync","link","chrdev","chrdev_stream_ops","contents","usedBytes","isLink","isChrdev","getFileDataAsTypedArray","expandFileStorage","newCapacity","prevCapacity","oldContents","resizeFileStorage","newSize","nlink","uid","gid","blksize","blocks","old_node","new_dir","new_name","new_node","lookupNode","newname","oldpath","canOwn","prot","allocated","mmapFlags","preloadPlugins","FS_getMode","canRead","canWrite","mounts","devices","streams","nextInode","nameTable","currentPath","initialized","ignorePermissions","filesystems","syncFSRequests","lookupPath","follow_mount","recurse_count","current","current_path","islast","isMountpoint","mounted","follow","getPath","isRoot","hashName","parentid","hashAddNode","name_next","hashRemoveNode","errCode","mayLookup","nodeName","FSNode","destroyNode","isSocket","flagsToPermissionString","flag","perms","nodePermissions","mayCreate","mayDelete","isdir","errno","mayOpen","MAX_OPEN_FDS","nextfd","fd","getStreamChecked","getStream","createStream","FSStream","shared","defineProperties","isRead","isWrite","isAppend","closeStream","device","getDevice","major","minor","makedev","ma","mi","getMounts","check","syncfs","completed","doCallback","errored","pseudo","lookup2","mountRoot","unmount","mkdir","mkdirTree","dirs","mkdev","newpath","old_path","new_path","old_dir","old_dirname","new_dirname","old_name","stat","dontFollow","lstat","chmod","lchmod","fchmod","chown","lchown","fchown","truncate","ftruncate","utime","FS_modeStringToFlags","created","ungotten","readFiles","isClosed","getdents","seeking","bytesWritten","munmap","ioctl","cmd","readFile","writeFile","actualNumBytes","createDefaultDirectories","createDefaultDevices","randomBuffer","randomLeft","randomByte","createDevice","createSpecialDirectories","proc_self","createStandardStreams","ensureErrnoError","setErrno","errno2","stack","staticInit","quit","findObject","dontResolveLastLink","analyzePath","exists","parentExists","parentPath","parentObject","createPath","createFile","properties","createDataFile","forceLoadFile","isDevice","isFolder","createLazyFile","LazyUint8Array","lengthKnown","chunks","chunkOffset","chunkSize","chunkNum","setDataGetter","cacheLength","header","datalength","getResponseHeader","hasByteServing","usesGzip","lazyArray2","xhr2","setRequestHeader","overrideMimeType","doXHR","_length","_chunkSize","writeChunks","SYSCALLS","DEFAULT_POLLMASK","calculateAt","dirfd","allowEmpty","getStreamFromFD","doStat","func","doMsync","addr","varargs","getp","getStr","PIPEFS","BUCKET_BUFFER_SIZE","createPipe","pipe","buckets","refcnt","roffset","rName","nextname","wName","rNode","wNode","readableStream","writableStream","readable_fd","writable_fd","poll","bucket","currentLength","toRead","totalRead","toRemove","currBucket","bucketSize","tmpSlice","dataLen","freeBytesInCurrBuffer","numBuckets","remElements","newBucket","withBuiltinMalloc","prev_malloc","_malloc","prev_memalign","_memalign","prev_free","_free","_emscripten_builtin_malloc","_emscripten_builtin_free","stringToUTF8","outPtr","stringToNewUTF8","MONTH_DAYS_LEAP_CUMULATIVE","MONTH_DAYS_REGULAR_CUMULATIVE","ydayFromDate","date","year","getFullYear","getMonth","getDate","convertI32PairToI53Checked","UNWIND_CACHE","convertFrameToPC","frame","convertPCtoSourceLocation","pc","last_get_source_pc","last_source","column","_emscripten_pc_get_file","_emscripten_pc_get_function","growMemory","pages","grow","jsStackTrace","saveInUnwindCache","callstack","ENV","getEnvStrings","env2","navigator","languages","_proc_exit","getCFunc","ident","ccall","returnType","argTypes","toC","ret2","stackAlloc","stringToUTF8OnStack","cArgs","converter","stackSave","stackRestore","convertReturnValue","createPreloadedFile","dontCreateFile","preFinish","fullname","processData","finish","byteArray2","Browser","handled","FS_handledByPreloadPlugin","arrayBuffer","asyncLoad","calledRun","wasmImports","E","___errno_location","P","N","D","O","nofollow","K","fdPtr","J","fds","nfds","nonzero","pollfd","events","mask","setting","time_low","time_high","tmPtr","time","getSeconds","getMinutes","getHours","getDay","getTimezoneOffset","summerOffset","winterOffset","guessedOffset","dstOffset","nonDstOffset","trueOffset","setTime","yday","getYear","setTempRet0","offset_low","offset_high","UTC","getUTCDay","getUTCFullYear","H","timezone","daylight","tzname","currentYear","winter","summer","extractZone","toTimeString","winterName","summerName","winterNamePtr","summerNamePtr","M","I","h","z","A","F","requestedSize","maxHeapSize","cutDown","overGrownHeapSize","level","caller","C","last_addr","last_stack","B","__environ","environ_buf","bufSize","stringToAscii","penviron_count","penviron_buf_size","implicit","___funcs_on_exit","f","G","pbuf","rightsBase","rightsInheriting","iov","iovcnt","pnum","curr","doReadv","newOffset","doWritev","q","wasmExports","receiveInstance","module2","exports2","instantiateStreaming","clonedResponsePromise","clone","instantiationResult","arrayBufferResult","createWasm","a0","__asan_c_load_1","a3","__asan_c_load_f","__asan_c_load_d","doRun","postRun","preRun","numericArgs","endsWith","_asan_js_load_1","_asan_js_load_f","_asan_js_load_d","runCaller","ready","define","isNodeMode","except","locateFile","extractData","decompressionOnly","inputPtr","resultPtr","_extract_archive","files","statusPtr","getValue","errorMessagePtr","errorMessage","_free_extracted_archive","filesPtr","fileCount","fileDataPtr","filenamePtr","dataSize","dataPtr","fileDataCopy","extract","isArchive","checkIsArchive","filePath","verbose","infoData","isCondaMetaFile","condaMetaFileData","condaMetaDir","json","condaMetaFile","condaPackageInfo","build","pkgCondaMeta","build_number","libPath","pkgName","dynlibPaths","sitepackages","auditWheelLibDir","readFileMemoized","cache","dynlibs","globalLibs","libs","readFileFunc","lib","getDylinkMetadata","neededDynlibs","lib2","global","sort","lib1","global2","_lock","old_lock","releaseLock","searchDirs","releaseDynlibLock","_searchDirs","resolvePath","debug","libName","loadDynamicLibrary","loadAsync","nodelete","allowUndefined","dsoOnlyLibName","LDSO","loadedLibsByName","dsoFullLib","execption","monitorRunDependencies","toplevel_promise","toplevel_promise_py_proxy","get_stdin","_sendWorkerMessage","cd","processMessage","msg_type","msg","notify_listener","initialize","kernelSpec","empackEnvMetaLink","binary_js","binary_wasm","binary_data","kernel_root_url","sharedLibs","metadata","importScripts","createXeusModule","packagesJsonUrl","pkgRootUrl","empackEnvMeta","generateCondaMeta","untarjs","untarjsReady","sharedLibsMap","packages","pkg","packageUrl","installedFiles","newPrefix","condaPackage","packageInfo","condaFiles","packageInfoFiles","uint8Array","WASM_MAGIC_NUMBER","pythonVersion","pythonPackage","init_phase_1","init_phase_2","sharedLibsLoad","packageShareLibs","xkernel","get_server","get_exception_message","registerCallback","processDriveRequest","drive"],"sourceRoot":""}